From ef9f18c70254ddb84bc682358efde8fdfa91304a Mon Sep 17 00:00:00 2001 From: kimi <47579703+kimi-p@users.noreply.github.com> Date: Mon, 27 Jun 2022 15:32:50 -0400 Subject: [PATCH 001/403] Send errors metrics for 5xx response from API Gateway, Lambda Function URL, or ALB (#229) --- datadog_lambda/tracing.py | 9 +++++++ datadog_lambda/wrapper.py | 7 +++-- tests/test_tracing.py | 26 +++++++++++++++++- tests/test_wrapper.py | 55 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 94 insertions(+), 3 deletions(-) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index b5324b1e0..2147a9571 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -10,6 +10,8 @@ from datetime import datetime, timezone from typing import Optional, Dict +from datadog_lambda.metric import submit_errors_metric + try: from typing import Literal except ImportError: @@ -959,6 +961,13 @@ def create_function_execution_span( return span +def mark_trace_as_error_for_5xx_responses(context, status_code, span): + if len(status_code) == 3 and status_code.startswith("5"): + submit_errors_metric(context) + if span: + span.error = 1 + + class InferredSpanInfo(object): BASE_NAME = "_inferred_span" SYNCHRONICITY = f"{BASE_NAME}.synchronicity" diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index cf2efaa92..0033e93c4 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -11,8 +11,8 @@ from datadog_lambda.extension import should_use_extension, flush_extension from datadog_lambda.cold_start import set_cold_start, is_cold_start from datadog_lambda.constants import ( - XraySubsegment, TraceContextSource, + XraySubsegment, ) from datadog_lambda.metric import ( flush_stats, @@ -26,6 +26,7 @@ create_dd_dummy_metadata_subsegment, inject_correlation_ids, dd_tracing_enabled, + mark_trace_as_error_for_5xx_responses, set_correlation_ids, set_dd_trace_py_root, create_function_execution_span, @@ -151,7 +152,7 @@ def __call__(self, event, context, **kwargs): def _before(self, event, context): try: - + self.response = None set_cold_start() submit_invocations_metric(context) self.trigger_tags = extract_trigger_tags(event, context) @@ -190,6 +191,8 @@ def _after(self, event, context): status_code = extract_http_status_code_tag(self.trigger_tags, self.response) if status_code: self.trigger_tags["http.status_code"] = status_code + mark_trace_as_error_for_5xx_responses(context, status_code, self.span) + # Create a new dummy Datadog subsegment for function trigger tags so we # can attach them to X-Ray spans when hybrid tracing is used if self.trigger_tags: diff --git a/tests/test_tracing.py b/tests/test_tracing.py index be52697e8..5fda28513 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -2,8 +2,10 @@ import json import os -from unittest.mock import MagicMock, patch, call +from unittest.mock import MagicMock, Mock, patch, call +import ddtrace +from ddtrace.constants import ERROR_MSG, ERROR_TYPE from ddtrace.helpers import get_correlation_ids from ddtrace.context import Context @@ -18,6 +20,7 @@ create_dd_dummy_metadata_subsegment, create_function_execution_span, get_dd_trace_context, + mark_trace_as_error_for_5xx_responses, set_correlation_ids, set_dd_trace_py_root, _convert_xray_trace_id, @@ -1191,3 +1194,24 @@ def test_create_inferred_span_from_api_gateway_event_no_apiid(self): self.assertEqual(span.span_type, "http") self.assertEqual(span.get_tag(InferredSpanInfo.TAG_SOURCE), "self") self.assertEqual(span.get_tag(InferredSpanInfo.SYNCHRONICITY), "sync") + + @patch("datadog_lambda.tracing.submit_errors_metric") + def test_mark_trace_as_error_for_5xx_responses_getting_400_response_code( + self, mock_submit_errors_metric + ): + mark_trace_as_error_for_5xx_responses( + context="fake_context", status_code="400", span="empty_span" + ) + mock_submit_errors_metric.assert_not_called() + + @patch("datadog_lambda.tracing.submit_errors_metric") + def test_mark_trace_as_error_for_5xx_responses_sends_error_metric_and_set_error_tags( + self, mock_submit_errors_metric + ): + mock_span = Mock(ddtrace.span.Span) + status_code = "500" + mark_trace_as_error_for_5xx_responses( + context="fake_context", status_code=status_code, span=mock_span + ) + mock_submit_errors_metric.assert_called_once() + self.assertEqual(1, mock_span.error) diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index 325405534..a78cddfc9 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -275,6 +275,61 @@ def lambda_handler(event, context): ] ) + @patch("datadog_lambda.wrapper.extract_trigger_tags") + def test_5xx_sends_errors_metric_and_set_tags(self, mock_extract_trigger_tags): + mock_extract_trigger_tags.return_value = { + "function_trigger.event_source": "api-gateway", + "function_trigger.event_source_arn": "arn:aws:apigateway:us-west-1::/restapis/1234567890/stages/prod", + "http.url": "70ixmpl4fl.execute-api.us-east-2.amazonaws.com", + "http.url_details.path": "/prod/path/to/resource", + "http.method": "GET", + } + + @datadog_lambda_wrapper + def lambda_handler(event, context): + return {"statusCode": 500, "body": "fake response body"} + + lambda_event = {} + + lambda_handler(lambda_event, get_mock_context()) + + self.mock_write_metric_point_to_stdout.assert_has_calls( + [ + call( + "aws.lambda.enhanced.invocations", + 1, + tags=[ + "region:us-west-1", + "account_id:123457598159", + "functionname:python-layer-test", + "resource:python-layer-test:1", + "cold_start:true", + "memorysize:256", + "runtime:python3.9", + "datadog_lambda:v6.6.6", + "dd_lambda_layer:datadog-python39_X.X.X", + ], + timestamp=None, + ), + call( + "aws.lambda.enhanced.errors", + 1, + tags=[ + "region:us-west-1", + "account_id:123457598159", + "functionname:python-layer-test", + "resource:python-layer-test:1", + "cold_start:true", + "memorysize:256", + "runtime:python3.9", + "datadog_lambda:v6.6.6", + "dd_lambda_layer:datadog-python39_X.X.X", + ], + timestamp=None, + ), + ] + ) + def test_enhanced_metrics_cold_start_tag(self): @datadog_lambda_wrapper def lambda_handler(event, context): From b36ab473e47925ad52814d1341ec93acb3ae6294 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Mon, 27 Jun 2022 16:21:34 -0400 Subject: [PATCH 002/403] fix: type check event before treating it as a dict (#233) * fix: type check event before treating it as a dict * fix: Use doublequotes for binary string --- datadog_lambda/tracing.py | 2 +- tests/test_tracing.py | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 2147a9571..637563ebf 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -334,7 +334,7 @@ def extract_dd_trace_context(event, lambda_context, extractor=None): parent_id, sampling_priority, ) = extract_context_custom_extractor(extractor, event, lambda_context) - elif "headers" in event: + elif isinstance(event, (list, dict)) and "headers" in event: ( trace_id, parent_id, diff --git a/tests/test_tracing.py b/tests/test_tracing.py index 5fda28513..7456911cb 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -104,6 +104,28 @@ def test_without_datadog_trace_headers(self): {}, ) + def test_with_non_object_event(self): + lambda_ctx = get_mock_context() + ctx, source = extract_dd_trace_context(b"", lambda_ctx) + self.assertEqual(source, "xray") + self.assertDictEqual( + ctx, + { + "trace-id": fake_xray_header_value_root_decimal, + "parent-id": fake_xray_header_value_parent_decimal, + "sampling-priority": "2", + }, + ) + self.assertDictEqual( + get_dd_trace_context(), + { + TraceHeader.TRACE_ID: fake_xray_header_value_root_decimal, + TraceHeader.PARENT_ID: fake_xray_header_value_parent_decimal, + TraceHeader.SAMPLING_PRIORITY: "2", + }, + {}, + ) + def test_with_incomplete_datadog_trace_headers(self): lambda_ctx = get_mock_context() ctx, source = extract_dd_trace_context( From 8c6ffecdd11254c3d992c80420b378b7704ce3a7 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Mon, 27 Jun 2022 16:52:13 -0400 Subject: [PATCH 003/403] feat: Replace list with set (#236) --- datadog_lambda/tracing.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 637563ebf..cd12c4a6f 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -334,7 +334,7 @@ def extract_dd_trace_context(event, lambda_context, extractor=None): parent_id, sampling_priority, ) = extract_context_custom_extractor(extractor, event, lambda_context) - elif isinstance(event, (list, dict)) and "headers" in event: + elif isinstance(event, (set, dict)) and "headers" in event: ( trace_id, parent_id, From 603e268dd723f4e4c03c3b823273bec2842dff5e Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Mon, 27 Jun 2022 18:00:26 -0400 Subject: [PATCH 004/403] v3.60.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 196da24ad..e4b5ba8db 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "3.59.0" +version = "3.60.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From a76b0c4e6dc6c4294e39d517225c360a18b0b8bb Mon Sep 17 00:00:00 2001 From: Andy Lindeman Date: Tue, 28 Jun 2022 15:56:10 -0400 Subject: [PATCH 005/403] Relax datadog version requirement (#231) Because the datadog package version is 0.x.y, `^0.41.0` is equivalent to `>= 0.41.0 <0.42.0` [1]. This currently locks the version to `0.41.y`. Newer versions of `datadog` have been released with minor changes (currently 0.44.0), but depending on this project prevents pulling them in. [1]: https://python-poetry.org/docs/dependency-specification/ --- poetry.lock | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/poetry.lock b/poetry.lock index 6bff7a8ab..d2e35553c 100644 --- a/poetry.lock +++ b/poetry.lock @@ -356,7 +356,7 @@ dev = ["boto3", "requests", "nose2", "flake8", "httpretty"] [metadata] lock-version = "1.1" python-versions = ">=3.6.0,<4" -content-hash = "48c6e38b716b2ce193af0ffb0430a159c6ba7e0acce29be0a07289a91adeea73" +content-hash = "ca4755fbb4131d3113797f829d9b3423e7d4b44bf756d5aed1fe3af2d475c376" [metadata.files] attrs = [ diff --git a/pyproject.toml b/pyproject.toml index e4b5ba8db..e5cb89f18 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -24,7 +24,7 @@ classifiers = [ [tool.poetry.dependencies] python = ">=3.6.0,<4" -datadog = "^0.41.0" +datadog = "^0.41" wrapt = "^1.11.2" ddtrace = "^0.61.1" importlib_metadata = {version = "^1.0", python = "<3.8"} From bb49c80092c65a3eff2919f5a727acd7ff269da8 Mon Sep 17 00:00:00 2001 From: Tian Chu Date: Wed, 6 Jul 2022 11:47:35 -0400 Subject: [PATCH 006/403] Add debugging log for metric sent to extension (#238) * Update metric.py * lint --- datadog_lambda/metric.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/datadog_lambda/metric.py b/datadog_lambda/metric.py index c3e39c973..ca23ed963 100644 --- a/datadog_lambda/metric.py +++ b/datadog_lambda/metric.py @@ -53,6 +53,9 @@ def lambda_metric(metric_name, value, timestamp=None, tags=None, force_async=Fal tags = tag_dd_lambda_layer(tags) if should_use_extension: + logger.debug( + "Sending metric %s value %s to Datadog via extension", metric_name, value + ) lambda_stats.distribution(metric_name, value, tags=tags, timestamp=timestamp) else: if flush_to_logs or force_async: From ff0c82c88786e496a28be16352e38d4c30165245 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Tue, 23 Aug 2022 10:02:41 -0400 Subject: [PATCH 007/403] breaking: bump dd trace to 1.2.1 (#237) * breaking: bump dd trace to 1.2.1 * feat: Add major version notes * fix: readme header size * fix: Fix test using old method. Describe change in changes list * fix: use tracer instead of correlation ids --- README.md | 7 ++ datadog_lambda/tracing.py | 6 +- poetry.lock | 183 ++++++++++++++++++++++---------------- pyproject.toml | 2 +- tests/test_tracing.py | 8 +- 5 files changed, 120 insertions(+), 86 deletions(-) diff --git a/README.md b/README.md index 5e03ca542..9b8d7ced3 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,13 @@ When opening an issue, include the Datadog Lambda Library version, Python versio You can also open an issue for a feature request. +## Major Version Notes + +### 4.x + +- `dd-trace` upgraded from 0.61 to 1.2, full release notes are available [here](https://ddtrace.readthedocs.io/en/stable/release_notes.html#v1-0-0) + - `get_correlation_ids()` has been changed to `get_log_correlation_context()`, which now returns a dictionary containing the active `span_id`, `trace_id`, as well as `service` and `env`. + ## Contributing If you find an issue with this package and have a fix, please feel free to open a pull request following the [procedures](CONTRIBUTING.md). diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index cd12c4a6f..d0136e931 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -427,7 +427,7 @@ def get_dd_trace_context(): def set_correlation_ids(): """ Create a dummy span, and overrides its trace_id and span_id, to make - ddtrace.helpers.get_correlation_ids() return the correct ids for both + ddtrace.helpers.get_log_correlation_context() return a dict containing the correct ids for both auto and manual log correlations. TODO: Remove me when Datadog tracer is natively supported in Lambda. @@ -453,8 +453,8 @@ def inject_correlation_ids(): Override the formatter of LambdaLoggerHandler to inject datadog trace and span id for log correlation. - For manual injections to custom log handlers, use `ddtrace.helpers.get_correlation_ids` - to retrieve correlation ids (trace_id, span_id). + For manual injections to custom log handlers, use `ddtrace.helpers.get_log_correlation_context` + to retrieve a dict containing correlation ids (trace_id, span_id). """ # Override the log format of the AWS provided LambdaLoggerHandler root_logger = logging.getLogger() diff --git a/poetry.lock b/poetry.lock index d2e35553c..1c2515edc 100644 --- a/poetry.lock +++ b/poetry.lock @@ -7,10 +7,10 @@ optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" [package.extras] -dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit", "cloudpickle"] docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"] tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "cloudpickle"] tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "cloudpickle"] +dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit", "cloudpickle"] [[package]] name = "boto3" @@ -44,6 +44,14 @@ urllib3 = ">=1.25.4,<1.27" [package.extras] crt = ["awscrt (==0.13.8)"] +[[package]] +name = "bytecode" +version = "0.13.0" +description = "Python module to generate and modify bytecode" +category = "main" +optional = false +python-versions = ">=3.6" + [[package]] name = "certifi" version = "2022.6.15" @@ -86,9 +94,24 @@ python-versions = "*" decorator = ">=3.3.2" requests = ">=2.6.0" +[[package]] +name = "ddsketch" +version = "2.0.3" +description = "Distributed quantile sketches" +category = "main" +optional = false +python-versions = ">=2.7" + +[package.dependencies] +protobuf = [ + {version = ">=3.0.0,<4.21.0", markers = "python_version < \"3.7\""}, + {version = ">=3.0.0", markers = "python_version >= \"3.7\""}, +] +six = "*" + [[package]] name = "ddtrace" -version = "0.61.1" +version = "1.2.1" description = "Datadog APM client library" category = "main" optional = false @@ -96,11 +119,19 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" [package.dependencies] attrs = ">=19.2.0" +bytecode = [ + {version = ">=0.13.0,<0.14.0", markers = "python_version == \"3.6\" or python_version == \"3.7\""}, + {version = "*", markers = "python_version >= \"3.8\""}, +] +ddsketch = ">=2.0.1" packaging = ">=17.1" -pep562 = {version = "*", markers = "python_version < \"3.7\""} -protobuf = {version = ">=3,<4", markers = "python_version >= \"3.6\""} +protobuf = [ + {version = ">=3,<4.0", markers = "python_version == \"3.6\""}, + {version = ">=3", markers = "python_version >= \"3.7\""}, +] six = ">=1.12.0" tenacity = ">=5" +typing-extensions = {version = "*", markers = "python_version < \"3.8\""} [package.extras] opentracing = ["opentracing (>=2.0.0)"] @@ -190,8 +221,8 @@ coverage = ">=4.4.1" six = ">=1.7" [package.extras] -coverage_plugin = ["coverage (>=4.4.1)"] doc = ["Sphinx (>=1.6.5)", "sphinx-rtd-theme", "mock"] +coverage_plugin = ["coverage (>=4.4.1)"] [[package]] name = "packaging" @@ -204,14 +235,6 @@ python-versions = ">=3.6" [package.dependencies] pyparsing = ">=2.0.2,<3.0.5 || >3.0.5" -[[package]] -name = "pep562" -version = "1.1" -description = "Backport of PEP 562." -category = "main" -optional = false -python-versions = "*" - [[package]] name = "protobuf" version = "3.19.4" @@ -273,8 +296,8 @@ idna = {version = ">=2.5,<4", markers = "python_version >= \"3\""} urllib3 = ">=1.21.1,<1.27" [package.extras] -socks = ["PySocks (>=1.5.6,!=1.5.7)", "win-inet-pton"] use_chardet_on_py3 = ["chardet (>=3.0.2,<5)"] +socks = ["PySocks (>=1.5.6,!=1.5.7)", "win-inet-pton"] [[package]] name = "s3transfer" @@ -356,7 +379,7 @@ dev = ["boto3", "requests", "nose2", "flake8", "httpretty"] [metadata] lock-version = "1.1" python-versions = ">=3.6.0,<4" -content-hash = "ca4755fbb4131d3113797f829d9b3423e7d4b44bf756d5aed1fe3af2d475c376" +content-hash = "f5e44a4e13bf8f5b8541468e7be7ba3349aa5663fc7675fc6f2cdee4435eb9ae" [metadata.files] attrs = [ @@ -371,6 +394,10 @@ botocore = [ {file = "botocore-1.26.10-py3-none-any.whl", hash = "sha256:8a4a984bf901ccefe40037da11ba2abd1ddbcb3b490a492b7f218509c99fc12f"}, {file = "botocore-1.26.10.tar.gz", hash = "sha256:5df2cf7ebe34377470172bd0bbc582cf98c5cbd02da0909a14e9e2885ab3ae9c"}, ] +bytecode = [ + {file = "bytecode-0.13.0-py3-none-any.whl", hash = "sha256:e69f92e7d27f99d5d7d76e6a824bd3d9ff857c72b59927aaf87e1a620f67fe50"}, + {file = "bytecode-0.13.0.tar.gz", hash = "sha256:6af3c2f0a31ce05dce41f7eea5cc380e33f5e8fbb7dcee3b52467a00acd52fcd"}, +] certifi = [ {file = "certifi-2022.6.15-py3-none-any.whl", hash = "sha256:fe86415d55e84719d75f8b69414f6438ac3547d2078ab91b67e779ef69378412"}, {file = "certifi-2022.6.15.tar.gz", hash = "sha256:84c85a9078b11105f04f3036a9482ae10e4621616db313fe045dd24743a0820d"}, @@ -432,66 +459,70 @@ datadog = [ {file = "datadog-0.41.0-py2.py3-none-any.whl", hash = "sha256:ab79ed38fb09ff1942c341e32849c4eeaf8b2e4d467b9e6bb1c6071808f454d6"}, {file = "datadog-0.41.0.tar.gz", hash = "sha256:3de1a43b8a8d5f6b19d162ec1b482dc5ab2636c59cf65e60589702304510a689"}, ] +ddsketch = [ + {file = "ddsketch-2.0.3-py3-none-any.whl", hash = "sha256:a5fd40785aa70ae45c240c769aab9158c2046da91ddb44ac0c42e4d4930ce302"}, + {file = "ddsketch-2.0.3.tar.gz", hash = "sha256:464469f53380aa878eb1dd4dc644086341e0d2a54b19dfca7d7a4645c8353ac6"}, +] ddtrace = [ - {file = "ddtrace-0.61.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:e63cb1193ab0478423af4552ad939507218d890d6dc831f425c7c0ed146a8b92"}, - {file = "ddtrace-0.61.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:30055688787a4b38dc1904e1f2e6f20ba2130ca15ed0ef1c9718c28df0970682"}, - {file = "ddtrace-0.61.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:f547df4896d9b03c06aa0242501e75920e033bd5c5454f294b0e21fa8399efb0"}, - {file = "ddtrace-0.61.1-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:a41eadeb4d0b379b2c1a8a9e494d4cf735138e1c8e39814a723c00a887c6bdd0"}, - {file = "ddtrace-0.61.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:5c781643478092afa7313d27869c8d3570b4cb102c87f4921363dcf0c9d5966c"}, - {file = "ddtrace-0.61.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:18ef09d67c633266673fa4214a345e0b0deee50eea61a0ee21a715e31ff6abcf"}, - {file = "ddtrace-0.61.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5ef7c85b4e33e648ef71141ddb27b89837300dc41d768d556a4aecb89393c811"}, - {file = "ddtrace-0.61.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1bb89564800ed0e6dde12bbf3e4c4537bcad721ad7869b1da4bbd934ed016be"}, - {file = "ddtrace-0.61.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3d48cfab7fb297cbb34ffd0d9819343b1d094a2ea43c308b5278edc48b1d1a9c"}, - {file = "ddtrace-0.61.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a04b7ddf08f483cb27e4785582bb9ac43f5a1a35319979ca0ce29fcfb7f64648"}, - {file = "ddtrace-0.61.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:02441583cbf8491bb72d49829a8d13d9afe839173b31b4f7e7b7571967d33a10"}, - {file = "ddtrace-0.61.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:23019aa09b313c96349e3b872a3466c7af2199a71fa63f78591ffa2dcf2d9190"}, - {file = "ddtrace-0.61.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:eefb455300a47e11fa801aff48070919e41cfc636010a253b2be295c47d065f4"}, - {file = "ddtrace-0.61.1-cp310-cp310-win32.whl", hash = "sha256:4c093cf27cd2e760a1ff7e50598cdf7b3445a4b0c25220ee3ff5a229b059feed"}, - {file = "ddtrace-0.61.1-cp310-cp310-win_amd64.whl", hash = "sha256:c2a24d08089df4b26401fa52f72a8885c15a1bf89fbd3ec1f193dd7a63d9a404"}, - {file = "ddtrace-0.61.1-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:d9b4a3ea865d497418cde6d9600e81be677b8f68601c3328e6e990968d394193"}, - {file = "ddtrace-0.61.1-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:7205d649eb197d7370453ea4e79d2ce1f2f01ed95c379eb71430d17a387a239d"}, - {file = "ddtrace-0.61.1-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:89d60c2519641e3ed5e22c05ecf6ad6405e097bfac338955c2f5e34c40192845"}, - {file = "ddtrace-0.61.1-cp35-cp35m-win32.whl", hash = "sha256:5ae8dbdca153d9fcc713a203b733833121cd0dc60c0feeb1c84e5340a4d936e6"}, - {file = "ddtrace-0.61.1-cp35-cp35m-win_amd64.whl", hash = "sha256:a1e19445beaf8ba8667bfaacd4545354891ee1109a4df70a6c793dd0c8aecd4f"}, - {file = "ddtrace-0.61.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:a5b71cb112c04343f4a3d2db6d2fa89a00a49a4eb7f211579bc667089eb21883"}, - {file = "ddtrace-0.61.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:61c33e619df1b29865774d96f4d90b8a8fdc09ebb48bad610db40842d2bf6e61"}, - {file = "ddtrace-0.61.1-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6b909355a6d6702212142d7fcbec5054a9c87e377da02b67ecec9f52f8360035"}, - {file = "ddtrace-0.61.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fde3f454e989bb9bf5b71ab6a4501fd6966524ed8326735a3d46d526f19293a1"}, - {file = "ddtrace-0.61.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:7363b3e216044a8a21f7b57100dc7430ed8db396d32a3073e6ba6fda4bc66aad"}, - {file = "ddtrace-0.61.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:9590a4c5c446763eac1a04624c1895b5a7f97ca0e36586eca0031d107d9913ce"}, - {file = "ddtrace-0.61.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:a92d1ce36009f2624b265263ddccd0203b1a2e6afb7c5c0684bf1c1d92163e8a"}, - {file = "ddtrace-0.61.1-cp36-cp36m-win32.whl", hash = "sha256:d54c956fbae48a9c1ef75ec78ef60f2385b62737bb3fc401b73200fea71b2faa"}, - {file = "ddtrace-0.61.1-cp36-cp36m-win_amd64.whl", hash = "sha256:0c7c3957490bb2cd553cce1c421ffbd8eea91a2938b5f46388aaac2bf13a74ed"}, - {file = "ddtrace-0.61.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:2ffce5ca14d3a6eb149d2b8900021bdd7d071e593a7a280171c2e845407860a2"}, - {file = "ddtrace-0.61.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f726aca2688218d579bee2058226ca0c32f793689f726e052882af512b43806"}, - {file = "ddtrace-0.61.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea2da3f115ae3afa5e35f38332b14ae70e75be5ca777fd67bf04b9054817ac50"}, - {file = "ddtrace-0.61.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5043249fd0dc1c6a37e8df608a7fac732946aa9e18f939e3b15bfe32597d51d9"}, - {file = "ddtrace-0.61.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:396732a3afceb56a8feeef2b12c98178b787626b5ae7557d6dafc7ac0182787b"}, - {file = "ddtrace-0.61.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:7a5d842a6829b29507025d2db63bc32d02def6c8dc445bd3a0abeaa4dd5c5854"}, - {file = "ddtrace-0.61.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:7aee90b9801c72924d316047a235cd8d305a409ed87499a8597ac8a8b8795e54"}, - {file = "ddtrace-0.61.1-cp37-cp37m-win32.whl", hash = "sha256:bb7f71ddc60b2c413d5561b952e60d4384de4e0a67396f4206c31adf19b28ed0"}, - {file = "ddtrace-0.61.1-cp37-cp37m-win_amd64.whl", hash = "sha256:0696e4780438a953403a8efc6fc4b5afaf1f2c9cfe891b3d7aa82dc1088a19c5"}, - {file = "ddtrace-0.61.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:693e48255a672a7a2ff8b1a7a07f9a07bd75a305dc40fffdecbeaa566e903f03"}, - {file = "ddtrace-0.61.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24975ae5910b1478a129c85b1266bb34063eefaabe996a54b8fbec9574b0fc12"}, - {file = "ddtrace-0.61.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b158c8d04e54b588035d583d16eb1c85ef34b930dc4e0321fd27d9f3f849ac8f"}, - {file = "ddtrace-0.61.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:76f730a72f57023a84075da9f0856af39cd9f711423d058df5c5f2db29f94607"}, - {file = "ddtrace-0.61.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86e547d6a09f26401437b3d6b94c6416c6e1ec5552820101489131523c5bbffb"}, - {file = "ddtrace-0.61.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9444b47687f7bda2603ad8a5a3a2786d69b3fcf46bfdb00ba98bb412d28248b9"}, - {file = "ddtrace-0.61.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:eed79d449c3051c02a1d5572262a4a452af76f070b59db71398569888c40694a"}, - {file = "ddtrace-0.61.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:39258c3f28c4cf53ac1345859867776ed347b2c7811593918b184bbb11ba8aaa"}, - {file = "ddtrace-0.61.1-cp38-cp38-win32.whl", hash = "sha256:fdb01cacb77aed54f4d6fb4b9bfd38d10334f17f4d8fbe77c9b8c81f069f4f43"}, - {file = "ddtrace-0.61.1-cp38-cp38-win_amd64.whl", hash = "sha256:680186a161701a90a659ea659c97ce90131666570cfdc6ba0979598beda5b5da"}, - {file = "ddtrace-0.61.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5cb39bbd4ee4d8ee8378fd09ebc45cb16b8eaa4756b1e483bac1501252c8224e"}, - {file = "ddtrace-0.61.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8dc7bd5e6dba9bfcde2cf9937b4be1c57e0e049e6c252181f0466a6ce41f7354"}, - {file = "ddtrace-0.61.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b549eb059601a1a5c7561d83c4c59a57388076d0252e8c80c27f2f677f2dbc48"}, - {file = "ddtrace-0.61.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7a5a2d872cc7f9a7bc00a82d6dde738b01608addb998dee412e93b5a0880e735"}, - {file = "ddtrace-0.61.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:344b82e3a0103938705c6c53ab8c79aa456caae9daa9744776d0d9d082124019"}, - {file = "ddtrace-0.61.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:05a79448910c258f6a8b59ba7afc6b9cca2e9ce450c2634ab345ea4766f3896c"}, - {file = "ddtrace-0.61.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:1d81f65ba6aad573e7ffdd082adb9b05db8485ef733efef5ba01bc1e14271936"}, - {file = "ddtrace-0.61.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9ecc1bab2a1c06672e7fc6eee076169db9d15ca2131b3ad0eb2f62cf9e981659"}, - {file = "ddtrace-0.61.1-cp39-cp39-win32.whl", hash = "sha256:171c143a6e34f7562160c40451fc116a8f0e45afdd20127d967c7022e5a8ccf1"}, - {file = "ddtrace-0.61.1-cp39-cp39-win_amd64.whl", hash = "sha256:c802366b2919d5267f0f17de866dac33d7b5e5f0974b76b7a2b58741af3de443"}, - {file = "ddtrace-0.61.1.tar.gz", hash = "sha256:8c727f21b7c495f7c8d6ed52ac08814c378727f308fa9214f14b10c3f2d70bf5"}, + {file = "ddtrace-1.2.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:4741a9002b90b42a9e59666c89d52656a69eb53b29f9e2c7f4057d721a97d928"}, + {file = "ddtrace-1.2.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:7d292271cfb432111fc9c12b9e6a00e95c3ca134ac6b13e4a77be8e97491aab3"}, + {file = "ddtrace-1.2.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:420aae88a6c2bb0ccdb46e4e3d9434c9b1552cfa9228943ab4cdf706ac06a69a"}, + {file = "ddtrace-1.2.1-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:fcf3d2407a64278d3df581f3bf52d3947ee60df08bf419c5855990df0fb32643"}, + {file = "ddtrace-1.2.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:ca1d91abd9afd6c266f81da57b279ceae16991da1eabc2d90ef3212a69177d59"}, + {file = "ddtrace-1.2.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7b048c756e75559604e9cb21d0d7a972da701854c94ac9a4bc827e2bd2d965fe"}, + {file = "ddtrace-1.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:baa7250e48c9987c7062c5683f5af239e52507f5b3b8f7635f78f51571f6003c"}, + {file = "ddtrace-1.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:16ac9d507176700a4cef9714708e276275fae39da32f118fb8e0e18d39a3c15f"}, + {file = "ddtrace-1.2.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fa7bef80eff996c192493746c19cfe4cc0fb709edf4cfc6b95b1ae6cea957a23"}, + {file = "ddtrace-1.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0754c09e8f00cc2b7c29c086c7b9989546e1dc2bc9b30a471796f5cae7d3852"}, + {file = "ddtrace-1.2.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:283ce85e6de396103944fff15eafcabe262f8fce467110bdd118e76bdceb356d"}, + {file = "ddtrace-1.2.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:4f01ebae47a54eb2a10b5bd5dac9bbc052f28f6b8c2d23c91314fa427cae6fd0"}, + {file = "ddtrace-1.2.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6e4da69cf3d114f1b26627360bd1a202d46a8b27e66c37835dc9c43d9d011ba6"}, + {file = "ddtrace-1.2.1-cp310-cp310-win32.whl", hash = "sha256:2b266f362bd0f4499cc01015de5aa1d1e73e51764727cbadee4f6669b49ff1d5"}, + {file = "ddtrace-1.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:71bf0f042dab6ff660092afd89e016c34b46019ee6730f3f420b724dd2c5498f"}, + {file = "ddtrace-1.2.1-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:409e2f790bddfe7980728694b99893e42c484392376668a6862be325dbbd6839"}, + {file = "ddtrace-1.2.1-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:a346355261be37e8eda7a295abd006d8feed9c2cd18dec885edef885c61de2ce"}, + {file = "ddtrace-1.2.1-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:da3715742b02c4093530ffb7b15944d526ac29d4acde596fda471dc965ae5961"}, + {file = "ddtrace-1.2.1-cp35-cp35m-win32.whl", hash = "sha256:8f8c7ab254ebd147cb74cd41971d7194ceb68892302b9c427dfd8543682c2204"}, + {file = "ddtrace-1.2.1-cp35-cp35m-win_amd64.whl", hash = "sha256:fcbedab36e39070e55e5e5fa1c3a2049b24fdb929ee7e93217c8d9ac6f0321c7"}, + {file = "ddtrace-1.2.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:c06f80931f8cc69674e15e083ef97f41a9185051d49339b0477ce5e9a7381538"}, + {file = "ddtrace-1.2.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:31b6661ebbf886b599ed0612b8d22f722f6b02e7b0d6c09a8e9997702f792e4b"}, + {file = "ddtrace-1.2.1-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:81dd6535ab7d3a7a311e40778cbcae978073a6a48fc572268086a7c803a441e6"}, + {file = "ddtrace-1.2.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e8e1d94cc99dd3e9f49cce6f2a78f429f408613bd2c80386c2481390d9645b19"}, + {file = "ddtrace-1.2.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:e04fead25d7e75e669662255fcfee048a5ea5d8b1155020b690d8ced5ec2b59d"}, + {file = "ddtrace-1.2.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:0c5ae39e3da5535f3b9dadca2ef0fde734688e64eba6bf961ba669c4b7578fea"}, + {file = "ddtrace-1.2.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:0c6b26e66a8d9387973f42440b57c3cff76243388aa38a65d21ab9b23a8d1446"}, + {file = "ddtrace-1.2.1-cp36-cp36m-win32.whl", hash = "sha256:b3c856bfe71bb3e8932e48b80c8c8f48eb4c966a4ecbeb507d067b7aa0e1506a"}, + {file = "ddtrace-1.2.1-cp36-cp36m-win_amd64.whl", hash = "sha256:f0989b70185b00b1bf692f832e0aaea5b693994c54002faa65b6cd60cf146cb5"}, + {file = "ddtrace-1.2.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:1efd71b73e399237ba14bd54f31d5b37ca817d337f0715a602d2eb0c3af51052"}, + {file = "ddtrace-1.2.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:241d63c31ab48155e56855f7f55639ae41980efc3a8e53f4bcce9b9034e8f535"}, + {file = "ddtrace-1.2.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b94cf79c72228090290550b502576e08cf0ff01a8e3e5c596ee67c8a45a3211e"}, + {file = "ddtrace-1.2.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:255c3cb9b5d0adde9d608cb91428051d1cf1f94ada5b86b0a4cc8bd498258997"}, + {file = "ddtrace-1.2.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:e419d279d1f25ab360423e0c86632e7f869e783f2950de245c8764b1094f0b1b"}, + {file = "ddtrace-1.2.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:1cae4ec2c8ac91b09e169742629ff4598a9fb09ca4e380904f110b533c0ac758"}, + {file = "ddtrace-1.2.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:34aea3fee9ba3f9fbad5fc43289d4b6028826652a5136d1fb6613c463dedbdca"}, + {file = "ddtrace-1.2.1-cp37-cp37m-win32.whl", hash = "sha256:29bdd28c657e0e7f539863a84307feb96f3fabdb72e184c3e2fcbfaef1b56ba6"}, + {file = "ddtrace-1.2.1-cp37-cp37m-win_amd64.whl", hash = "sha256:2a7eda27bfbc27ddc632b93c6239bcfd155c4e83586a216bb8896003b8ca9822"}, + {file = "ddtrace-1.2.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:dbf6252efabd070aa97b55bfd55da2a5939849dc201c7fa5c67c4bf0a953fb5d"}, + {file = "ddtrace-1.2.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f3dc8e84000018d8d6d50371e55cfa4ba94c5002414ce4f6b60bf21d2f768409"}, + {file = "ddtrace-1.2.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3b35bdbc2c8afd91b1d2013777274eb0346f0a34bab456e3f3ed4f8432c19151"}, + {file = "ddtrace-1.2.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7259f54f3fc4b4d43fa5dd61f2be242316f5df49d7a016a3ac28dd2db6e4d17f"}, + {file = "ddtrace-1.2.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b68aebf717b1e611d6aadd0f8023fa354d0042b80c40949348408df25633b33"}, + {file = "ddtrace-1.2.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6031a208dc3bb817e2237a08d60baa1f09de3b7457e52f0fa950060925bb661b"}, + {file = "ddtrace-1.2.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:0f02b1ac848b42d901cc88a39bc86d1182073e449f0ef10a2a86a36b70474591"}, + {file = "ddtrace-1.2.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b3d9e3ad04dd26136862456da9e16595cd9b6326c78e94220d990e9852af3d57"}, + {file = "ddtrace-1.2.1-cp38-cp38-win32.whl", hash = "sha256:12c5424b42fc8a605e90fd55243313636704fb9675d49898fe0f76b5bf269619"}, + {file = "ddtrace-1.2.1-cp38-cp38-win_amd64.whl", hash = "sha256:bd51aa6824bd84847410bf85a4543ed3d29a4039f9d9f793c10ea89f56907b70"}, + {file = "ddtrace-1.2.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:71560d0259064b4ca646cf8a035bdac347b3f17f353152bb68acd40b0224b2a1"}, + {file = "ddtrace-1.2.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0bda7417db3baea5e7b63d6596c26821391376a86a76e1828d771b3a14c3ff39"}, + {file = "ddtrace-1.2.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8ab92abb93b4d8e70b68b0894d3be2f93b96411429dee1df30ee0c3f1aecbe2f"}, + {file = "ddtrace-1.2.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d344fac2a732c76ac3a0963c5bde869b73dde633f3c0cc7e4ea1e0ba01e2207f"}, + {file = "ddtrace-1.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a0c6e7d17bc44f0c54282e94146299e0e8bd7ccc277795d5ebde9818cbbbad2"}, + {file = "ddtrace-1.2.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4417f001cdc03370fe3b5d26695a68df82db68214d3a51df3fb6ea56b56c3f46"}, + {file = "ddtrace-1.2.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f83d21f67ab2be5537c719f9316f8f6b174976bde03726d97aea2468d7bd01d0"}, + {file = "ddtrace-1.2.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:67d8a2de42b2b2bf8effd1d1903a57ba58c07ed814a603f4ba2f422ee48d15e6"}, + {file = "ddtrace-1.2.1-cp39-cp39-win32.whl", hash = "sha256:d11e204b2d95e173873742facdd3fb4276f35de51411adb965421147a57bcdfc"}, + {file = "ddtrace-1.2.1-cp39-cp39-win_amd64.whl", hash = "sha256:33554dc3444e6c9739a69ed4fb6093c63766abb81320d6a5aa74d0faaf12a12c"}, + {file = "ddtrace-1.2.1.tar.gz", hash = "sha256:979c2932db900fb08a7080f7d9dde117a6435c9d648bafbad0d7d5eb1af830ee"}, ] decorator = [ {file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"}, @@ -528,10 +559,6 @@ packaging = [ {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"}, {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"}, ] -pep562 = [ - {file = "pep562-1.1-py2.py3-none-any.whl", hash = "sha256:ff2308f21f1fcdf0a539b1af4d5a070c5baf47a07f51ff95f5d311f0c60390a4"}, - {file = "pep562-1.1.tar.gz", hash = "sha256:f8bc94a273dd45bd81a06a57c04bc57fd46f9c054c1354fa056044ceba2f0605"}, -] protobuf = [ {file = "protobuf-3.19.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f51d5a9f137f7a2cec2d326a74b6e3fc79d635d69ffe1b036d39fc7d75430d37"}, {file = "protobuf-3.19.4-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:09297b7972da685ce269ec52af761743714996b4381c085205914c41fcab59fb"}, diff --git a/pyproject.toml b/pyproject.toml index e5cb89f18..38bf19fc1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -26,7 +26,7 @@ classifiers = [ python = ">=3.6.0,<4" datadog = "^0.41" wrapt = "^1.11.2" -ddtrace = "^0.61.1" +ddtrace = "^1.2.1" importlib_metadata = {version = "^1.0", python = "<3.8"} boto3 = { version = "^1.10.33", optional = true } typing_extensions = {version = "^4.0", python = "<3.8"} diff --git a/tests/test_tracing.py b/tests/test_tracing.py index 7456911cb..c578de070 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -6,7 +6,7 @@ import ddtrace from ddtrace.constants import ERROR_MSG, ERROR_TYPE -from ddtrace.helpers import get_correlation_ids +from ddtrace import tracer from ddtrace.context import Context from datadog_lambda.constants import ( @@ -477,9 +477,9 @@ def setUp(self): def test_set_correlation_ids(self): set_correlation_ids() - trace_id, span_id = get_correlation_ids() - self.assertEqual(trace_id, 123) - self.assertEqual(span_id, 456) + span = tracer.current_span() + self.assertEqual(span.trace_id, 123) + self.assertEqual(span.span_id, 456) class TestFunctionSpanTags(unittest.TestCase): From 6809a11cf3013ba4c65a84cc0db2108cc25274ba Mon Sep 17 00:00:00 2001 From: Maxime David Date: Tue, 23 Aug 2022 13:28:24 -0400 Subject: [PATCH 008/403] Remove python 3.6 support (#243) * bump github actions * bump actions * bump * remove python36 * revert workflow files * update workflow file --- .github/workflows/build.yml | 4 +- README.md | 2 +- pyproject.toml | 3 +- scripts/add_new_region.sh | 4 +- scripts/build_layers.sh | 2 +- scripts/check_layer_size.sh | 2 +- scripts/list_layers.sh | 2 +- scripts/publish_layers.sh | 6 +- scripts/run_integration_tests.sh | 5 +- scripts/run_tests.sh | 2 +- scripts/sign_layers.sh | 1 - .../snapshots/logs/async-metrics_python36.log | 1353 --------------- .../snapshots/logs/sync-metrics_python36.log | 1470 ----------------- 13 files changed, 15 insertions(+), 2841 deletions(-) delete mode 100644 tests/integration/snapshots/logs/async-metrics_python36.log delete mode 100644 tests/integration/snapshots/logs/sync-metrics_python36.log diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 007ca3d8f..46cec885b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -41,7 +41,7 @@ jobs: strategy: max-parallel: 4 matrix: - python-version: [3.6, 3.7, 3.8, 3.9] + python-version: [3.7, 3.8, 3.9] steps: - name: Checkout @@ -68,7 +68,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - runtime-param: [3.6, 3.7, 3.8, 3.9] + runtime-param: [3.7, 3.8, 3.9] steps: - name: Checkout uses: actions/checkout@v2 diff --git a/README.md b/README.md index 9b8d7ced3..4613fd050 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ [![Slack](https://chat.datadoghq.com/badge.svg?bg=632CA6)](https://chat.datadoghq.com/) [![License](https://img.shields.io/badge/license-Apache--2.0-blue)](https://github.com/DataDog/datadog-lambda-python/blob/main/LICENSE) -Datadog Lambda Library for Python (3.6, 3.7, 3.8, and 3.9) enables [enhanced Lambda metrics](https://docs.datadoghq.com/serverless/enhanced_lambda_metrics), [distributed tracing](https://docs.datadoghq.com/serverless/distributed_tracing), and [custom metric submission](https://docs.datadoghq.com/serverless/custom_metrics) from AWS Lambda functions. +Datadog Lambda Library for Python (3.7, 3.8, and 3.9) enables [enhanced Lambda metrics](https://docs.datadoghq.com/serverless/enhanced_lambda_metrics), [distributed tracing](https://docs.datadoghq.com/serverless/distributed_tracing), and [custom metric submission](https://docs.datadoghq.com/serverless/custom_metrics) from AWS Lambda functions. ## Installation diff --git a/pyproject.toml b/pyproject.toml index 38bf19fc1..77d2db5e8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -16,14 +16,13 @@ packages = [ { include = "datadog_lambda" } ] classifiers = [ - "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", ] [tool.poetry.dependencies] -python = ">=3.6.0,<4" +python = ">=3.7.0,<4" datadog = "^0.41" wrapt = "^1.11.2" ddtrace = "^1.2.1" diff --git a/scripts/add_new_region.sh b/scripts/add_new_region.sh index 6384319f9..005c8616a 100755 --- a/scripts/add_new_region.sh +++ b/scripts/add_new_region.sh @@ -12,8 +12,8 @@ set -e OLD_REGION='us-east-1' -PYTHON_VERSIONS_FOR_AWS_CLI=("python3.6" "python3.7" "python3.8" "python3.9") -LAYER_NAMES=("Datadog-Python36" "Datadog-Python37" "Datadog-Python38" "Datadog-Python39") +PYTHON_VERSIONS_FOR_AWS_CLI=("python3.7" "python3.8" "python3.9") +LAYER_NAMES=("Datadog-Python37" "Datadog-Python38" "Datadog-Python39") NEW_REGION=$1 publish_layer() { diff --git a/scripts/build_layers.sh b/scripts/build_layers.sh index f2c70ff90..0bf67f493 100755 --- a/scripts/build_layers.sh +++ b/scripts/build_layers.sh @@ -14,7 +14,7 @@ set -e LAYER_DIR=".layers" LAYER_FILES_PREFIX="datadog_lambda_py" -AVAILABLE_PYTHON_VERSIONS=("3.6" "3.7" "3.8" "3.9") +AVAILABLE_PYTHON_VERSIONS=("3.7" "3.8" "3.9") # Determine which Python versions to build layers for if [ -z "$PYTHON_VERSION" ]; then diff --git a/scripts/check_layer_size.sh b/scripts/check_layer_size.sh index c213d4969..d788dd3a2 100755 --- a/scripts/check_layer_size.sh +++ b/scripts/check_layer_size.sh @@ -14,7 +14,7 @@ MAX_LAYER_UNCOMPRESSED_SIZE_KB=$(expr 16 \* 1024) LAYER_FILES_PREFIX="datadog_lambda_py" LAYER_DIR=".layers" -VERSIONS=("3.6" "3.7" "3.8" "3.9") +VERSIONS=("3.7" "3.8" "3.9") for version in "${VERSIONS[@]}" do diff --git a/scripts/list_layers.sh b/scripts/list_layers.sh index 8a845edd8..2835187e9 100755 --- a/scripts/list_layers.sh +++ b/scripts/list_layers.sh @@ -10,7 +10,7 @@ set -e -LAYER_NAMES=("Datadog-Python36" "Datadog-Python37" "Datadog-Python38" "Datadog-Python38-ARM" "Datadog-Python39" "Datadog-Python39-ARM") +LAYER_NAMES=("Datadog-Python37" "Datadog-Python38" "Datadog-Python38-ARM" "Datadog-Python39" "Datadog-Python39-ARM") AVAILABLE_REGIONS=$(aws ec2 describe-regions | jq -r '.[] | .[] | .RegionName') LAYERS_MISSING_REGIONS=() diff --git a/scripts/publish_layers.sh b/scripts/publish_layers.sh index f3c790d71..d7d12ea45 100755 --- a/scripts/publish_layers.sh +++ b/scripts/publish_layers.sh @@ -13,9 +13,9 @@ set -e # Makes sure any subprocesses will be terminated with this process trap "pkill -P $$; exit 1;" INT -PYTHON_VERSIONS_FOR_AWS_CLI=("python3.6" "python3.7" "python3.8" "python3.8" "python3.9" "python3.9") -LAYER_PATHS=(".layers/datadog_lambda_py-amd64-3.6.zip" ".layers/datadog_lambda_py-amd64-3.7.zip" ".layers/datadog_lambda_py-amd64-3.8.zip" ".layers/datadog_lambda_py-arm64-3.8.zip" ".layers/datadog_lambda_py-amd64-3.9.zip" ".layers/datadog_lambda_py-arm64-3.9.zip") -AVAILABLE_LAYERS=("Datadog-Python36" "Datadog-Python37" "Datadog-Python38" "Datadog-Python38-ARM" "Datadog-Python39" "Datadog-Python39-ARM") +PYTHON_VERSIONS_FOR_AWS_CLI=("python3.7" "python3.8" "python3.8" "python3.9" "python3.9") +LAYER_PATHS=(".layers/datadog_lambda_py-amd64-3.7.zip" ".layers/datadog_lambda_py-amd64-3.8.zip" ".layers/datadog_lambda_py-arm64-3.8.zip" ".layers/datadog_lambda_py-amd64-3.9.zip" ".layers/datadog_lambda_py-arm64-3.9.zip") +AVAILABLE_LAYERS=("Datadog-Python37" "Datadog-Python38" "Datadog-Python38-ARM" "Datadog-Python39" "Datadog-Python39-ARM") ARCHS=("amd64" "amd64" "amd64""amd64" "amd64" "arm64") AVAILABLE_REGIONS=$(aws ec2 describe-regions | jq -r '.[] | .[] | .RegionName') diff --git a/scripts/run_integration_tests.sh b/scripts/run_integration_tests.sh index 62936ede4..895a9e502 100755 --- a/scripts/run_integration_tests.sh +++ b/scripts/run_integration_tests.sh @@ -11,7 +11,7 @@ set -e # These values need to be in sync with serverless.yml, where there needs to be a function # defined for every handler_runtime combination LAMBDA_HANDLERS=("async-metrics" "sync-metrics") -RUNTIMES=("python36" "python37" "python38" "python39") +RUNTIMES=("python37" "python38" "python39") LOGS_WAIT_SECONDS=20 @@ -28,12 +28,11 @@ mismatch_found=false # [0]: serverless runtime name # [1]: python version # [2]: random 8-character ID to avoid collisions with other runs -python36=("python3.6" "3.6" $(xxd -l 4 -c 4 -p < /dev/random)) python37=("python3.7" "3.7" $(xxd -l 4 -c 4 -p < /dev/random)) python38=("python3.8" "3.8" $(xxd -l 4 -c 4 -p < /dev/random)) python39=("python3.9" "3.9" $(xxd -l 4 -c 4 -p < /dev/random)) -PARAMETERS_SETS=("python36" "python37" "python38" "python39") +PARAMETERS_SETS=("python37" "python38" "python39") if [ -z "$RUNTIME_PARAM" ]; then echo "Python version not specified, running for all python versions." diff --git a/scripts/run_tests.sh b/scripts/run_tests.sh index 9b5e87dec..9d667cd9e 100755 --- a/scripts/run_tests.sh +++ b/scripts/run_tests.sh @@ -8,7 +8,7 @@ # Run unit tests in Docker set -e -PYTHON_VERSIONS=("3.6" "3.7" "3.8" "3.9") +PYTHON_VERSIONS=("3.7" "3.8" "3.9") for python_version in "${PYTHON_VERSIONS[@]}" do diff --git a/scripts/sign_layers.sh b/scripts/sign_layers.sh index 679f3f27e..56337dd1f 100755 --- a/scripts/sign_layers.sh +++ b/scripts/sign_layers.sh @@ -9,7 +9,6 @@ set -e LAYER_DIR=".layers" LAYER_FILES=( - "datadog_lambda_py-amd64-3.6.zip" "datadog_lambda_py-amd64-3.7.zip" "datadog_lambda_py-amd64-3.8.zip" "datadog_lambda_py-arm64-3.8.zip" diff --git a/tests/integration/snapshots/logs/async-metrics_python36.log b/tests/integration/snapshots/logs/async-metrics_python36.log deleted file mode 100644 index f63f20e64..000000000 --- a/tests/integration/snapshots/logs/async-metrics_python36.log +++ /dev/null @@ -1,1353 +0,0 @@ -START -{ - "m": "aws.lambda.enhanced.invocations", - "v": 1, - "e": XXXX, - "t": [ - "region:sa-east-1", - "account_id:XXXX", - "functionname:integration-tests-python-XXXX-async-metrics_python36", - "resource:integration-tests-python-XXXX-async-metrics_python36", - "cold_start:true", - "memorysize:1024", - "runtime:python3.6", - "datadog_lambda:vXX", - "dd_lambda_layer:datadog-python36_X.X.X" - ] -} -{ - "m": "hello.dog", - "v": 1, - "e": XXXX, - "t": [ - "team:serverless", - "role:hello", - "dd_lambda_layer:datadog-python36_X.X.X" - ] -} -{ - "m": "tests.integration.count", - "v": 21, - "e": XXXX, - "t": [ - "test:integration", - "role:hello", - "dd_lambda_layer:datadog-python36_X.X.X" - ] -} -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "XXXX.execute-api.us-east-2.amazonaws.com", - "resource": "GET /", - "name": "aws.apigateway", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "operation_name": "aws.apigateway.rest", - "http.url": "XXXX.execute-api.us-east-2.amazonaws.com/", - "endpoint": "/", - "http.method": "GET", - "resource_names": "GET /", - "apiid": "XXXX", - "apiname": "XXXX", - "stage": "Prod", - "request_id": "XXXX", - "_inferred_span.synchronicity": "sync", - "_inferred_span.tag_source": "self", - "http.status_code": "200" - }, - "metrics": { - "_dd.agent_psr": 1, - "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-async-metrics_python36", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "true", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-async-metrics_python36", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python36", - "functionname": "integration-tests-python-XXXX-async-metrics_python36", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "api-gateway", - "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", - "http.url_details.path": "/Prod/", - "http.method": "GET", - "http.status_code": "200" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "http.method": "GET", - "http.url": "https://datadoghq.com/", - "http.status_code": "200" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "http.method": "GET", - "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - } - ] - ] -} -END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB -START -{ - "m": "aws.lambda.enhanced.invocations", - "v": 1, - "e": XXXX, - "t": [ - "region:sa-east-1", - "account_id:XXXX", - "functionname:integration-tests-python-XXXX-async-metrics_python36", - "resource:integration-tests-python-XXXX-async-metrics_python36", - "cold_start:false", - "memorysize:1024", - "runtime:python3.6", - "datadog_lambda:vXX", - "dd_lambda_layer:datadog-python36_X.X.X" - ] -} -{ - "m": "hello.dog", - "v": 1, - "e": XXXX, - "t": [ - "team:serverless", - "role:hello", - "dd_lambda_layer:datadog-python36_X.X.X" - ] -} -{ - "m": "tests.integration.count", - "v": 21, - "e": XXXX, - "t": [ - "test:integration", - "role:hello", - "dd_lambda_layer:datadog-python36_X.X.X" - ] -} -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "dynamodb", - "resource": "ExampleTableWithStream", - "name": "aws.dynamodb", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "operation_name": "aws.dynamodb", - "resource_names": "ExampleTableWithStream", - "tablename": "ExampleTableWithStream", - "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", - "event_id": "XXXX", - "event_name": "INSERT", - "event_version": "1.1", - "stream_view_type": "NEW_AND_OLD_IMAGES", - "size_bytes": "26", - "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self" - }, - "metrics": { - "_dd.agent_psr": 1, - "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 - }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-async-metrics_python36", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-async-metrics_python36", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python36", - "functionname": "integration-tests-python-XXXX-async-metrics_python36", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "http.method": "GET", - "http.url": "https://datadoghq.com/", - "http.status_code": "200" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "http.method": "GET", - "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - } - ] - ] -} -END Duration: XXXX ms Memory Used: XXXX MB -START -{ - "m": "aws.lambda.enhanced.invocations", - "v": 1, - "e": XXXX, - "t": [ - "region:sa-east-1", - "account_id:XXXX", - "functionname:integration-tests-python-XXXX-async-metrics_python36", - "resource:integration-tests-python-XXXX-async-metrics_python36", - "cold_start:false", - "memorysize:1024", - "runtime:python3.6", - "datadog_lambda:vXX", - "dd_lambda_layer:datadog-python36_X.X.X" - ] -} -{ - "m": "hello.dog", - "v": 1, - "e": XXXX, - "t": [ - "team:serverless", - "role:hello", - "dd_lambda_layer:datadog-python36_X.X.X" - ] -} -{ - "m": "tests.integration.count", - "v": 21, - "e": XXXX, - "t": [ - "test:integration", - "role:hello", - "dd_lambda_layer:datadog-python36_X.X.X" - ] -} -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "eventbridge", - "resource": "eventbridge.custom.event.sender", - "name": "aws.eventbridge", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "operation_name": "aws.eventbridge", - "resource_names": "eventbridge.custom.event.sender", - "detail_type": "testdetail", - "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self" - }, - "metrics": { - "_dd.agent_psr": 1, - "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 - }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-async-metrics_python36", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-async-metrics_python36", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python36", - "functionname": "integration-tests-python-XXXX-async-metrics_python36", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "eventbridge" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "http.method": "GET", - "http.url": "https://datadoghq.com/", - "http.status_code": "200" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "http.method": "GET", - "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - } - ] - ] -} -END Duration: XXXX ms Memory Used: XXXX MB -START -{ - "m": "aws.lambda.enhanced.invocations", - "v": 1, - "e": XXXX, - "t": [ - "region:sa-east-1", - "account_id:XXXX", - "functionname:integration-tests-python-XXXX-async-metrics_python36", - "resource:integration-tests-python-XXXX-async-metrics_python36", - "cold_start:false", - "memorysize:1024", - "runtime:python3.6", - "datadog_lambda:vXX", - "dd_lambda_layer:datadog-python36_X.X.X" - ] -} -{ - "m": "hello.dog", - "v": 1, - "e": XXXX, - "t": [ - "team:serverless", - "role:hello", - "dd_lambda_layer:datadog-python36_X.X.X" - ] -} -{ - "m": "tests.integration.count", - "v": 21, - "e": XXXX, - "t": [ - "test:integration", - "role:hello", - "dd_lambda_layer:datadog-python36_X.X.X" - ] -} -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "XXXX.execute-api.sa-east-1.amazonaws.com", - "resource": "GET /httpapi/get", - "name": "aws.httpapi", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "operation_name": "aws.httpapi", - "endpoint": "/httpapi/get", - "http.url": "XXXX.execute-api.sa-east-1.amazonaws.com/httpapi/get", - "http.method": "GET", - "http.protocol": "HTTP/1.1", - "http.source_ip": "XXXX", - "http.user_agent": "XXXX/7.64.1", - "resource_names": "GET /httpapi/get", - "request_id": "XXXX", - "apiid": "XXXX", - "apiname": "XXXX", - "stage": "$default", - "_inferred_span.synchronicity": "sync", - "_inferred_span.tag_source": "self", - "http.status_code": "200" - }, - "metrics": { - "_dd.agent_psr": 1, - "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-async-metrics_python36", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-async-metrics_python36", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python36", - "functionname": "integration-tests-python-XXXX-async-metrics_python36", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "api-gateway", - "function_trigger.event_source_arn": "XXXX$default", - "http.url": "XXXX.execute-api.sa-east-1.amazonaws.com", - "http.url_details.path": "/httpapi/get", - "http.method": "GET", - "http.status_code": "200" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "http.method": "GET", - "http.url": "https://datadoghq.com/", - "http.status_code": "200" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "http.method": "GET", - "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - } - ] - ] -} -END Duration: XXXX ms Memory Used: XXXX MB -START -{ - "m": "aws.lambda.enhanced.invocations", - "v": 1, - "e": XXXX, - "t": [ - "region:sa-east-1", - "account_id:XXXX", - "functionname:integration-tests-python-XXXX-async-metrics_python36", - "resource:integration-tests-python-XXXX-async-metrics_python36", - "cold_start:false", - "memorysize:1024", - "runtime:python3.6", - "datadog_lambda:vXX", - "dd_lambda_layer:datadog-python36_X.X.X" - ] -} -{ - "m": "hello.dog", - "v": 1, - "e": XXXX, - "t": [ - "team:serverless", - "role:hello", - "dd_lambda_layer:datadog-python36_X.X.X" - ] -} -{ - "m": "tests.integration.count", - "v": 21, - "e": XXXX, - "t": [ - "test:integration", - "role:hello", - "dd_lambda_layer:datadog-python36_X.X.X" - ] -} -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "kinesis", - "resource": "EXAMPLE", - "name": "aws.kinesis", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "operation_name": "aws.kinesis", - "resource_names": "EXAMPLE", - "streamname": "EXAMPLE", - "shardid": "shardId-XXXX", - "event_source_arn": "arn:aws:kinesis:EXAMPLE", - "event_id": "XXXX", - "event_name": "aws:kinesis:record", - "event_version": "1.0", - "partition_key": "XXXX", - "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self" - }, - "metrics": { - "_dd.agent_psr": 1, - "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 - }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-async-metrics_python36", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-async-metrics_python36", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python36", - "functionname": "integration-tests-python-XXXX-async-metrics_python36", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "http.method": "GET", - "http.url": "https://datadoghq.com/", - "http.status_code": "200" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "http.method": "GET", - "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - } - ] - ] -} -END Duration: XXXX ms Memory Used: XXXX MB -START -{ - "m": "aws.lambda.enhanced.invocations", - "v": 1, - "e": XXXX, - "t": [ - "region:sa-east-1", - "account_id:XXXX", - "functionname:integration-tests-python-XXXX-async-metrics_python36", - "resource:integration-tests-python-XXXX-async-metrics_python36", - "cold_start:false", - "memorysize:1024", - "runtime:python3.6", - "datadog_lambda:vXX", - "dd_lambda_layer:datadog-python36_X.X.X" - ] -} -{ - "m": "hello.dog", - "v": 1, - "e": XXXX, - "t": [ - "team:serverless", - "role:hello", - "dd_lambda_layer:datadog-python36_X.X.X" - ] -} -{ - "m": "tests.integration.count", - "v": 21, - "e": XXXX, - "t": [ - "test:integration", - "role:hello", - "dd_lambda_layer:datadog-python36_X.X.X" - ] -} -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "s3", - "resource": "example-bucket", - "name": "aws.s3", - "error": 0, - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "operation_name": "aws.s3", - "resource_names": "example-bucket", - "event_name": "ObjectCreated:Put", - "bucketname": "example-bucket", - "bucket_arn": "arn:aws:s3:::example-bucket", - "object_key": "test/key", - "object_size": "1024", - "object_etag": "XXXX", - "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self" - }, - "metrics": { - "_dd.agent_psr": 1, - "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 - }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-async-metrics_python36", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-async-metrics_python36", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python36", - "functionname": "integration-tests-python-XXXX-async-metrics_python36", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "http.method": "GET", - "http.url": "https://datadoghq.com/", - "http.status_code": "200" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "http.method": "GET", - "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - } - ] - ] -} -END Duration: XXXX ms Memory Used: XXXX MB -START -{ - "m": "aws.lambda.enhanced.invocations", - "v": 1, - "e": XXXX, - "t": [ - "region:sa-east-1", - "account_id:XXXX", - "functionname:integration-tests-python-XXXX-async-metrics_python36", - "resource:integration-tests-python-XXXX-async-metrics_python36", - "cold_start:false", - "memorysize:1024", - "runtime:python3.6", - "datadog_lambda:vXX", - "dd_lambda_layer:datadog-python36_X.X.X" - ] -} -{ - "m": "hello.dog", - "v": 1, - "e": XXXX, - "t": [ - "team:serverless", - "role:hello", - "dd_lambda_layer:datadog-python36_X.X.X" - ] -} -{ - "m": "tests.integration.count", - "v": 21, - "e": XXXX, - "t": [ - "test:integration", - "role:hello", - "dd_lambda_layer:datadog-python36_X.X.X" - ] -} -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "sns", - "resource": "sns-lambda", - "name": "aws.sns", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "operation_name": "aws.sns", - "resource_names": "sns-lambda", - "topicname": "sns-lambda", - "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", - "message_id": "XXXX", - "type": "Notification", - "subject": "TestInvoke", - "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self" - }, - "metrics": { - "_dd.agent_psr": 1, - "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 - }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-async-metrics_python36", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-async-metrics_python36", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python36", - "functionname": "integration-tests-python-XXXX-async-metrics_python36", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "http.method": "GET", - "http.url": "https://datadoghq.com/", - "http.status_code": "200" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "http.method": "GET", - "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - } - ] - ] -} -END Duration: XXXX ms Memory Used: XXXX MB -START -{ - "m": "aws.lambda.enhanced.invocations", - "v": 1, - "e": XXXX, - "t": [ - "region:sa-east-1", - "account_id:XXXX", - "functionname:integration-tests-python-XXXX-async-metrics_python36", - "resource:integration-tests-python-XXXX-async-metrics_python36", - "cold_start:false", - "memorysize:1024", - "runtime:python3.6", - "datadog_lambda:vXX", - "dd_lambda_layer:datadog-python36_X.X.X" - ] -} -{ - "m": "hello.dog", - "v": 1, - "e": XXXX, - "t": [ - "team:serverless", - "role:hello", - "dd_lambda_layer:datadog-python36_X.X.X" - ] -} -{ - "m": "tests.integration.count", - "v": 21, - "e": XXXX, - "t": [ - "test:integration", - "role:hello", - "dd_lambda_layer:datadog-python36_X.X.X" - ] -} -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "sqs", - "resource": "my-queue", - "name": "aws.sqs", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "operation_name": "aws.sqs", - "resource_names": "my-queue", - "queuename": "my-queue", - "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", - "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", - "sender_id": "AIDAIENQZJOLO23YVJ4VO", - "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self" - }, - "metrics": { - "_dd.agent_psr": 1, - "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 - }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-async-metrics_python36", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-async-metrics_python36", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python36", - "functionname": "integration-tests-python-XXXX-async-metrics_python36", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "http.method": "GET", - "http.url": "https://datadoghq.com/", - "http.status_code": "200" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "http.method": "GET", - "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - } - ] - ] -} -END Duration: XXXX ms Memory Used: XXXX MB -START -{ - "m": "aws.lambda.enhanced.invocations", - "v": 1, - "e": XXXX, - "t": [ - "region:sa-east-1", - "account_id:XXXX", - "functionname:integration-tests-python-XXXX-async-metrics_python36", - "resource:integration-tests-python-XXXX-async-metrics_python36", - "cold_start:false", - "memorysize:1024", - "runtime:python3.6", - "datadog_lambda:vXX", - "dd_lambda_layer:datadog-python36_X.X.X" - ] -} -{ - "m": "hello.dog", - "v": 1, - "e": XXXX, - "t": [ - "team:serverless", - "role:hello", - "dd_lambda_layer:datadog-python36_X.X.X" - ] -} -{ - "m": "tests.integration.count", - "v": 21, - "e": XXXX, - "t": [ - "test:integration", - "role:hello", - "dd_lambda_layer:datadog-python36_X.X.X" - ] -} -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "XXXX.execute-api.sa-east-1.amazonaws.com", - "resource": "$default", - "name": "aws.apigateway.websocket", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "operation_name": "aws.apigateway.websocket", - "http.url": "XXXX.execute-api.sa-east-1.amazonaws.com$default", - "endpoint": "$default", - "resource_names": "$default", - "apiid": "XXXX", - "apiname": "XXXX", - "stage": "dev", - "request_id": "XXXX", - "connection_id": "XXXX=", - "event_type": "MESSAGE", - "message_direction": "IN", - "_inferred_span.synchronicity": "sync", - "_inferred_span.tag_source": "self", - "http.status_code": "200" - }, - "metrics": { - "_dd.agent_psr": 1, - "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 - }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-async-metrics_python36", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-async-metrics_python36", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python36", - "functionname": "integration-tests-python-XXXX-async-metrics_python36", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "api-gateway", - "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.sa-east-1.amazonaws.com", - "http.status_code": "200" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "http.method": "GET", - "http.url": "https://datadoghq.com/", - "http.status_code": "200" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "http.method": "GET", - "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - } - ] - ] -} -END Duration: XXXX ms Memory Used: XXXX MB diff --git a/tests/integration/snapshots/logs/sync-metrics_python36.log b/tests/integration/snapshots/logs/sync-metrics_python36.log deleted file mode 100644 index c537ee28a..000000000 --- a/tests/integration/snapshots/logs/sync-metrics_python36.log +++ /dev/null @@ -1,1470 +0,0 @@ -START -{ - "m": "aws.lambda.enhanced.invocations", - "v": 1, - "e": XXXX, - "t": [ - "region:sa-east-1", - "account_id:XXXX", - "functionname:integration-tests-python-XXXX-sync-metrics_python36", - "resource:integration-tests-python-XXXX-sync-metrics_python36", - "cold_start:true", - "memorysize:1024", - "runtime:python3.6", - "datadog_lambda:vXX", - "dd_lambda_layer:datadog-python36_X.X.X" - ] -} -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "XXXX.execute-api.us-east-2.amazonaws.com", - "resource": "GET /", - "name": "aws.apigateway", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "operation_name": "aws.apigateway.rest", - "http.url": "XXXX.execute-api.us-east-2.amazonaws.com/", - "endpoint": "/", - "http.method": "GET", - "resource_names": "GET /", - "apiid": "XXXX", - "apiname": "XXXX", - "stage": "Prod", - "request_id": "XXXX", - "_inferred_span.synchronicity": "sync", - "_inferred_span.tag_source": "self", - "http.status_code": "200" - }, - "metrics": { - "_dd.agent_psr": 1, - "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-sync-metrics_python36", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "true", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-sync-metrics_python36", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python36", - "functionname": "integration-tests-python-XXXX-sync-metrics_python36", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "api-gateway", - "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", - "http.url_details.path": "/Prod/", - "http.method": "GET", - "http.status_code": "200" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "http.method": "GET", - "http.url": "https://datadoghq.com/", - "http.status_code": "200" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "http.method": "GET", - "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - } - ] - ] -} -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python36_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python36_X.X.X"], "interval": 10}]} -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "http.status_code": "202" - }, - "metrics": { - "_dd.agent_psr": 1, - "system.pid": "XXXX", - "_dd.measured": 1, - "_sampling_priority_v1": 1, - "_dd.top_level": 1 - }, - "type": "http" - } - ] - ] -} -END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB -START -{ - "m": "aws.lambda.enhanced.invocations", - "v": 1, - "e": XXXX, - "t": [ - "region:sa-east-1", - "account_id:XXXX", - "functionname:integration-tests-python-XXXX-sync-metrics_python36", - "resource:integration-tests-python-XXXX-sync-metrics_python36", - "cold_start:false", - "memorysize:1024", - "runtime:python3.6", - "datadog_lambda:vXX", - "dd_lambda_layer:datadog-python36_X.X.X" - ] -} -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "dynamodb", - "resource": "ExampleTableWithStream", - "name": "aws.dynamodb", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "operation_name": "aws.dynamodb", - "resource_names": "ExampleTableWithStream", - "tablename": "ExampleTableWithStream", - "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", - "event_id": "XXXX", - "event_name": "INSERT", - "event_version": "1.1", - "stream_view_type": "NEW_AND_OLD_IMAGES", - "size_bytes": "26", - "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self" - }, - "metrics": { - "_dd.agent_psr": 1, - "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 - }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-sync-metrics_python36", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-sync-metrics_python36", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python36", - "functionname": "integration-tests-python-XXXX-sync-metrics_python36", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "http.method": "GET", - "http.url": "https://datadoghq.com/", - "http.status_code": "200" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "http.method": "GET", - "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - } - ] - ] -} -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python36_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python36_X.X.X"], "interval": 10}]} -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "http.status_code": "202" - }, - "metrics": { - "_dd.agent_psr": 1, - "system.pid": "XXXX", - "_dd.measured": 1, - "_sampling_priority_v1": 1, - "_dd.top_level": 1 - }, - "type": "http" - } - ] - ] -} -END Duration: XXXX ms Memory Used: XXXX MB -START -{ - "m": "aws.lambda.enhanced.invocations", - "v": 1, - "e": XXXX, - "t": [ - "region:sa-east-1", - "account_id:XXXX", - "functionname:integration-tests-python-XXXX-sync-metrics_python36", - "resource:integration-tests-python-XXXX-sync-metrics_python36", - "cold_start:false", - "memorysize:1024", - "runtime:python3.6", - "datadog_lambda:vXX", - "dd_lambda_layer:datadog-python36_X.X.X" - ] -} -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "eventbridge", - "resource": "eventbridge.custom.event.sender", - "name": "aws.eventbridge", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "operation_name": "aws.eventbridge", - "resource_names": "eventbridge.custom.event.sender", - "detail_type": "testdetail", - "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self" - }, - "metrics": { - "_dd.agent_psr": 1, - "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 - }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-sync-metrics_python36", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-sync-metrics_python36", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python36", - "functionname": "integration-tests-python-XXXX-sync-metrics_python36", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "eventbridge" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "http.method": "GET", - "http.url": "https://datadoghq.com/", - "http.status_code": "200" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "http.method": "GET", - "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - } - ] - ] -} -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python36_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python36_X.X.X"], "interval": 10}]} -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "http.status_code": "202" - }, - "metrics": { - "_dd.agent_psr": 1, - "system.pid": "XXXX", - "_dd.measured": 1, - "_sampling_priority_v1": 1, - "_dd.top_level": 1 - }, - "type": "http" - } - ] - ] -} -END Duration: XXXX ms Memory Used: XXXX MB -START -{ - "m": "aws.lambda.enhanced.invocations", - "v": 1, - "e": XXXX, - "t": [ - "region:sa-east-1", - "account_id:XXXX", - "functionname:integration-tests-python-XXXX-sync-metrics_python36", - "resource:integration-tests-python-XXXX-sync-metrics_python36", - "cold_start:false", - "memorysize:1024", - "runtime:python3.6", - "datadog_lambda:vXX", - "dd_lambda_layer:datadog-python36_X.X.X" - ] -} -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "XXXX.execute-api.sa-east-1.amazonaws.com", - "resource": "GET /httpapi/get", - "name": "aws.httpapi", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "operation_name": "aws.httpapi", - "endpoint": "/httpapi/get", - "http.url": "XXXX.execute-api.sa-east-1.amazonaws.com/httpapi/get", - "http.method": "GET", - "http.protocol": "HTTP/1.1", - "http.source_ip": "XXXX", - "http.user_agent": "XXXX/7.64.1", - "resource_names": "GET /httpapi/get", - "request_id": "XXXX", - "apiid": "XXXX", - "apiname": "XXXX", - "stage": "$default", - "_inferred_span.synchronicity": "sync", - "_inferred_span.tag_source": "self", - "http.status_code": "200" - }, - "metrics": { - "_dd.agent_psr": 1, - "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-sync-metrics_python36", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-sync-metrics_python36", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python36", - "functionname": "integration-tests-python-XXXX-sync-metrics_python36", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "api-gateway", - "function_trigger.event_source_arn": "XXXX$default", - "http.url": "XXXX.execute-api.sa-east-1.amazonaws.com", - "http.url_details.path": "/httpapi/get", - "http.method": "GET", - "http.status_code": "200" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "http.method": "GET", - "http.url": "https://datadoghq.com/", - "http.status_code": "200" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "http.method": "GET", - "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - } - ] - ] -} -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python36_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python36_X.X.X"], "interval": 10}]} -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "http.status_code": "202" - }, - "metrics": { - "_dd.agent_psr": 1, - "system.pid": "XXXX", - "_dd.measured": 1, - "_sampling_priority_v1": 1, - "_dd.top_level": 1 - }, - "type": "http" - } - ] - ] -} -END Duration: XXXX ms Memory Used: XXXX MB -START -{ - "m": "aws.lambda.enhanced.invocations", - "v": 1, - "e": XXXX, - "t": [ - "region:sa-east-1", - "account_id:XXXX", - "functionname:integration-tests-python-XXXX-sync-metrics_python36", - "resource:integration-tests-python-XXXX-sync-metrics_python36", - "cold_start:false", - "memorysize:1024", - "runtime:python3.6", - "datadog_lambda:vXX", - "dd_lambda_layer:datadog-python36_X.X.X" - ] -} -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "kinesis", - "resource": "EXAMPLE", - "name": "aws.kinesis", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "operation_name": "aws.kinesis", - "resource_names": "EXAMPLE", - "streamname": "EXAMPLE", - "shardid": "shardId-XXXX", - "event_source_arn": "arn:aws:kinesis:EXAMPLE", - "event_id": "XXXX", - "event_name": "aws:kinesis:record", - "event_version": "1.0", - "partition_key": "XXXX", - "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self" - }, - "metrics": { - "_dd.agent_psr": 1, - "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 - }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-sync-metrics_python36", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-sync-metrics_python36", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python36", - "functionname": "integration-tests-python-XXXX-sync-metrics_python36", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "http.method": "GET", - "http.url": "https://datadoghq.com/", - "http.status_code": "200" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "http.method": "GET", - "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - } - ] - ] -} -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python36_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python36_X.X.X"], "interval": 10}]} -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "http.status_code": "202" - }, - "metrics": { - "_dd.agent_psr": 1, - "system.pid": "XXXX", - "_dd.measured": 1, - "_sampling_priority_v1": 1, - "_dd.top_level": 1 - }, - "type": "http" - } - ] - ] -} -END Duration: XXXX ms Memory Used: XXXX MB -START -{ - "m": "aws.lambda.enhanced.invocations", - "v": 1, - "e": XXXX, - "t": [ - "region:sa-east-1", - "account_id:XXXX", - "functionname:integration-tests-python-XXXX-sync-metrics_python36", - "resource:integration-tests-python-XXXX-sync-metrics_python36", - "cold_start:false", - "memorysize:1024", - "runtime:python3.6", - "datadog_lambda:vXX", - "dd_lambda_layer:datadog-python36_X.X.X" - ] -} -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "s3", - "resource": "example-bucket", - "name": "aws.s3", - "error": 0, - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "operation_name": "aws.s3", - "resource_names": "example-bucket", - "event_name": "ObjectCreated:Put", - "bucketname": "example-bucket", - "bucket_arn": "arn:aws:s3:::example-bucket", - "object_key": "test/key", - "object_size": "1024", - "object_etag": "XXXX", - "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self" - }, - "metrics": { - "_dd.agent_psr": 1, - "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 - }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-sync-metrics_python36", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-sync-metrics_python36", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python36", - "functionname": "integration-tests-python-XXXX-sync-metrics_python36", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "http.method": "GET", - "http.url": "https://datadoghq.com/", - "http.status_code": "200" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "http.method": "GET", - "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - } - ] - ] -} -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python36_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python36_X.X.X"], "interval": 10}]} -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "http.status_code": "202" - }, - "metrics": { - "_dd.agent_psr": 1, - "system.pid": "XXXX", - "_dd.measured": 1, - "_sampling_priority_v1": 1, - "_dd.top_level": 1 - }, - "type": "http" - } - ] - ] -} -END Duration: XXXX ms Memory Used: XXXX MB -START -{ - "m": "aws.lambda.enhanced.invocations", - "v": 1, - "e": XXXX, - "t": [ - "region:sa-east-1", - "account_id:XXXX", - "functionname:integration-tests-python-XXXX-sync-metrics_python36", - "resource:integration-tests-python-XXXX-sync-metrics_python36", - "cold_start:false", - "memorysize:1024", - "runtime:python3.6", - "datadog_lambda:vXX", - "dd_lambda_layer:datadog-python36_X.X.X" - ] -} -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "sns", - "resource": "sns-lambda", - "name": "aws.sns", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "operation_name": "aws.sns", - "resource_names": "sns-lambda", - "topicname": "sns-lambda", - "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", - "message_id": "XXXX", - "type": "Notification", - "subject": "TestInvoke", - "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self" - }, - "metrics": { - "_dd.agent_psr": 1, - "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 - }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-sync-metrics_python36", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-sync-metrics_python36", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python36", - "functionname": "integration-tests-python-XXXX-sync-metrics_python36", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "http.method": "GET", - "http.url": "https://datadoghq.com/", - "http.status_code": "200" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "http.method": "GET", - "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - } - ] - ] -} -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python36_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python36_X.X.X"], "interval": 10}]} -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "http.status_code": "202" - }, - "metrics": { - "_dd.agent_psr": 1, - "system.pid": "XXXX", - "_dd.measured": 1, - "_sampling_priority_v1": 1, - "_dd.top_level": 1 - }, - "type": "http" - } - ] - ] -} -END Duration: XXXX ms Memory Used: XXXX MB -START -{ - "m": "aws.lambda.enhanced.invocations", - "v": 1, - "e": XXXX, - "t": [ - "region:sa-east-1", - "account_id:XXXX", - "functionname:integration-tests-python-XXXX-sync-metrics_python36", - "resource:integration-tests-python-XXXX-sync-metrics_python36", - "cold_start:false", - "memorysize:1024", - "runtime:python3.6", - "datadog_lambda:vXX", - "dd_lambda_layer:datadog-python36_X.X.X" - ] -} -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "sqs", - "resource": "my-queue", - "name": "aws.sqs", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "operation_name": "aws.sqs", - "resource_names": "my-queue", - "queuename": "my-queue", - "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", - "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", - "sender_id": "AIDAIENQZJOLO23YVJ4VO", - "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self" - }, - "metrics": { - "_dd.agent_psr": 1, - "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 - }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-sync-metrics_python36", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-sync-metrics_python36", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python36", - "functionname": "integration-tests-python-XXXX-sync-metrics_python36", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "http.method": "GET", - "http.url": "https://datadoghq.com/", - "http.status_code": "200" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "http.method": "GET", - "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - } - ] - ] -} -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python36_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python36_X.X.X"], "interval": 10}]} -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "http.status_code": "202" - }, - "metrics": { - "_dd.agent_psr": 1, - "system.pid": "XXXX", - "_dd.measured": 1, - "_sampling_priority_v1": 1, - "_dd.top_level": 1 - }, - "type": "http" - } - ] - ] -} -END Duration: XXXX ms Memory Used: XXXX MB -START -{ - "m": "aws.lambda.enhanced.invocations", - "v": 1, - "e": XXXX, - "t": [ - "region:sa-east-1", - "account_id:XXXX", - "functionname:integration-tests-python-XXXX-sync-metrics_python36", - "resource:integration-tests-python-XXXX-sync-metrics_python36", - "cold_start:false", - "memorysize:1024", - "runtime:python3.6", - "datadog_lambda:vXX", - "dd_lambda_layer:datadog-python36_X.X.X" - ] -} -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "XXXX.execute-api.sa-east-1.amazonaws.com", - "resource": "$default", - "name": "aws.apigateway.websocket", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "operation_name": "aws.apigateway.websocket", - "http.url": "XXXX.execute-api.sa-east-1.amazonaws.com$default", - "endpoint": "$default", - "resource_names": "$default", - "apiid": "XXXX", - "apiname": "XXXX", - "stage": "dev", - "request_id": "XXXX", - "connection_id": "XXXX=", - "event_type": "MESSAGE", - "message_direction": "IN", - "_inferred_span.synchronicity": "sync", - "_inferred_span.tag_source": "self", - "http.status_code": "200" - }, - "metrics": { - "_dd.agent_psr": 1, - "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 - }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-sync-metrics_python36", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-sync-metrics_python36", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python36", - "functionname": "integration-tests-python-XXXX-sync-metrics_python36", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "api-gateway", - "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.sa-east-1.amazonaws.com", - "http.status_code": "200" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "http.method": "GET", - "http.url": "https://datadoghq.com/", - "http.status_code": "200" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "http.method": "GET", - "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - } - ] - ] -} -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python36_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python36_X.X.X"], "interval": 10}]} -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "http.status_code": "202" - }, - "metrics": { - "_dd.agent_psr": 1, - "system.pid": "XXXX", - "_dd.measured": 1, - "_sampling_priority_v1": 1, - "_dd.top_level": 1 - }, - "type": "http" - } - ] - ] -} -END Duration: XXXX ms Memory Used: XXXX MB From 96eecdce0428cb28cc45035626d751582133d8e7 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Tue, 23 Aug 2022 15:33:50 -0400 Subject: [PATCH 009/403] [beta] Python Profiling support (#244) * feat: Python Profiler WIP * feat: start on cold start, stop never * breaking: bump dd trace to 1.2.1 * feat: Add major version notes * fix: readme header size * fix: Fix test using old method. Describe change in changes list * fix: use tracer instead of correlation ids * feat: Add the profiler * fix: remove debug * feat: Remove profiling comment line * feat: Go to ddtrace 1.4. Conditionally import profiler. * fix: remove duplicate declaration of profiling_env_var * feat: Black, with the right version * feat: Readme on profiler beta period * fix: Remove dev changes used to package dd-trace locally * feat: Remove == from if True * feat: Bump layer size maximums * feat: Remove python36 integration tests, as we can no longer create stacks with this version of python * feat: Update snapshots * feat: More python 3.6 deprecation * feat: Readme update - dropping python36 --- Dockerfile | 4 - README.md | 9 +- datadog_lambda/wrapper.py | 12 +- poetry.lock | 2 +- scripts/check_layer_size.sh | 6 +- .../snapshots/logs/async-metrics_python37.log | 99 +++++----- .../snapshots/logs/async-metrics_python38.log | 99 +++++----- .../snapshots/logs/async-metrics_python39.log | 99 +++++----- .../snapshots/logs/sync-metrics_python37.log | 180 ++++++++++-------- .../snapshots/logs/sync-metrics_python38.log | 180 ++++++++++-------- .../snapshots/logs/sync-metrics_python39.log | 180 ++++++++++-------- 11 files changed, 480 insertions(+), 390 deletions(-) diff --git a/Dockerfile b/Dockerfile index 5955a2958..277bac103 100644 --- a/Dockerfile +++ b/Dockerfile @@ -17,7 +17,3 @@ RUN find ./python/lib/$runtime/site-packages -name \*.pyc -delete # Remove botocore (40MB) to reduce package size. aws-xray-sdk # installs it, while it's already provided by the Lambda Runtime. RUN rm -rf ./python/lib/$runtime/site-packages/botocore* - -# Remove profiling (7MB) to reduce package size. -# Continous profiling is not yet supported anyway. -RUN rm -rf ./python/lib/$runtime/site-packages/ddtrace/profiling \ No newline at end of file diff --git a/README.md b/README.md index 4613fd050..957246eb5 100644 --- a/README.md +++ b/README.md @@ -24,11 +24,16 @@ When opening an issue, include the Datadog Lambda Library version, Python versio You can also open an issue for a feature request. +## Lambda Profiling Beta + +Datadog's Continuous Profiler is now available in beta for Python. This optional feature is enabled by setting the `DD_PROFILING_ENABLED` environment variable to `True`. During the beta period, profiling is available at no cost. + ## Major Version Notes -### 4.x +### 4.x / Layer version 61+ -- `dd-trace` upgraded from 0.61 to 1.2, full release notes are available [here](https://ddtrace.readthedocs.io/en/stable/release_notes.html#v1-0-0) +- Python3.6 support has been [deprecated](https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html) by AWS, and support removed from this library. +- `dd-trace` upgraded from 0.61 to 1.4, full release notes are available [here](https://ddtrace.readthedocs.io/en/stable/release_notes.html#v1-0-0) - `get_correlation_ids()` has been changed to `get_log_correlation_context()`, which now returns a dictionary containing the active `span_id`, `trace_id`, as well as `service` and `env`. ## Contributing diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 0033e93c4..88508ab33 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -36,11 +36,17 @@ from datadog_lambda.trigger import extract_trigger_tags, extract_http_status_code_tag from datadog_lambda.tag_object import tag_object +profiling_env_var = os.environ.get("DD_PROFILING_ENABLED", "false").lower() == "true" +if profiling_env_var: + from ddtrace.profiling import profiler + logger = logging.getLogger(__name__) dd_capture_lambda_payload_enabled = ( os.environ.get("DD_CAPTURE_LAMBDA_PAYLOAD", "false").lower() == "true" ) +service_env_var = os.environ.get("DD_SERVICE", "DefaultServiceName") +env_env_var = os.environ.get("DD_ENV", None) """ Usage: @@ -111,7 +117,8 @@ def __init__(self, func): os.environ.get("DD_TRACE_MANAGED_SERVICES", "true").lower() == "true" ) self.response = None - + if profiling_env_var: + self.prof = profiler.Profiler(env=env_env_var, service=service_env_var) if self.extractor_env: extractor_parts = self.extractor_env.rsplit(".", 1) if len(extractor_parts) == 2: @@ -181,7 +188,8 @@ def _before(self, event, context): ) else: set_correlation_ids() - + if profiling_env_var and is_cold_start(): + self.prof.start(stop_on_exit=False, profile_children=True) logger.debug("datadog_lambda_wrapper _before() done") except Exception: traceback.print_exc() diff --git a/poetry.lock b/poetry.lock index 1c2515edc..66c4e2923 100644 --- a/poetry.lock +++ b/poetry.lock @@ -111,7 +111,7 @@ six = "*" [[package]] name = "ddtrace" -version = "1.2.1" +version = "1.4.0" description = "Datadog APM client library" category = "main" optional = false diff --git a/scripts/check_layer_size.sh b/scripts/check_layer_size.sh index d788dd3a2..8c4f05e6f 100755 --- a/scripts/check_layer_size.sh +++ b/scripts/check_layer_size.sh @@ -7,9 +7,9 @@ # Compares layer size to threshold, and fails if below that threshold -# 5 mb size limit -MAX_LAYER_COMPRESSED_SIZE_KB=$(expr 5 \* 1024) -MAX_LAYER_UNCOMPRESSED_SIZE_KB=$(expr 16 \* 1024) +# 6 mb size limit +MAX_LAYER_COMPRESSED_SIZE_KB=$(expr 6 \* 1024) +MAX_LAYER_UNCOMPRESSED_SIZE_KB=$(expr 24 \* 1024) LAYER_FILES_PREFIX="datadog_lambda_py" diff --git a/tests/integration/snapshots/logs/async-metrics_python37.log b/tests/integration/snapshots/logs/async-metrics_python37.log index d45c21a7b..206525fba 100644 --- a/tests/integration/snapshots/logs/async-metrics_python37.log +++ b/tests/integration/snapshots/logs/async-metrics_python37.log @@ -35,8 +35,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -64,13 +64,14 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "request_id": "XXXX", "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", - "http.status_code": "200" + "http.status_code": "200", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "http" }, @@ -190,8 +191,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -218,13 +219,14 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "stream_view_type": "NEW_AND_OLD_IMAGES", "size_bytes": "26", "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self" + "_inferred_span.tag_source": "self", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -340,8 +342,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -362,13 +364,14 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "resource_names": "eventbridge.custom.event.sender", "detail_type": "testdetail", "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self" + "_inferred_span.tag_source": "self", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -483,8 +486,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -515,13 +518,14 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "stage": "$default", "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", - "http.status_code": "200" + "http.status_code": "200", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "http" }, @@ -641,8 +645,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -669,13 +673,14 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "event_version": "1.0", "partition_key": "XXXX", "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self" + "_inferred_span.tag_source": "self", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -791,8 +796,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -816,13 +821,14 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "object_size": "1024", "object_etag": "XXXX", "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self" + "_inferred_span.tag_source": "self", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -938,8 +944,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -964,13 +970,14 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "type": "Notification", "subject": "TestInvoke", "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self" + "_inferred_span.tag_source": "self", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1086,8 +1093,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -1111,13 +1118,14 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", "sender_id": "AIDAIENQZJOLO23YVJ4VO", "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self" + "_inferred_span.tag_source": "self", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1233,8 +1241,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -1264,13 +1272,14 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "message_direction": "IN", "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", - "http.status_code": "200" + "http.status_code": "200", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "web" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python38.log b/tests/integration/snapshots/logs/async-metrics_python38.log index 7faf53460..f85c9bdf1 100644 --- a/tests/integration/snapshots/logs/async-metrics_python38.log +++ b/tests/integration/snapshots/logs/async-metrics_python38.log @@ -35,8 +35,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -64,13 +64,14 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "request_id": "XXXX", "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", - "http.status_code": "200" + "http.status_code": "200", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "http" }, @@ -190,8 +191,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -218,13 +219,14 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "stream_view_type": "NEW_AND_OLD_IMAGES", "size_bytes": "26", "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self" + "_inferred_span.tag_source": "self", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -340,8 +342,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -362,13 +364,14 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "resource_names": "eventbridge.custom.event.sender", "detail_type": "testdetail", "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self" + "_inferred_span.tag_source": "self", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -483,8 +486,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -515,13 +518,14 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "stage": "$default", "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", - "http.status_code": "200" + "http.status_code": "200", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "http" }, @@ -641,8 +645,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -669,13 +673,14 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "event_version": "1.0", "partition_key": "XXXX", "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self" + "_inferred_span.tag_source": "self", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -791,8 +796,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -816,13 +821,14 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "object_size": "1024", "object_etag": "XXXX", "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self" + "_inferred_span.tag_source": "self", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -938,8 +944,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -964,13 +970,14 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "type": "Notification", "subject": "TestInvoke", "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self" + "_inferred_span.tag_source": "self", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1086,8 +1093,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -1111,13 +1118,14 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", "sender_id": "AIDAIENQZJOLO23YVJ4VO", "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self" + "_inferred_span.tag_source": "self", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1233,8 +1241,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -1264,13 +1272,14 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "message_direction": "IN", "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", - "http.status_code": "200" + "http.status_code": "200", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "web" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python39.log b/tests/integration/snapshots/logs/async-metrics_python39.log index 2617e3412..5b0708983 100644 --- a/tests/integration/snapshots/logs/async-metrics_python39.log +++ b/tests/integration/snapshots/logs/async-metrics_python39.log @@ -35,8 +35,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -64,13 +64,14 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "request_id": "XXXX", "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", - "http.status_code": "200" + "http.status_code": "200", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "http" }, @@ -190,8 +191,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -218,13 +219,14 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "stream_view_type": "NEW_AND_OLD_IMAGES", "size_bytes": "26", "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self" + "_inferred_span.tag_source": "self", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -340,8 +342,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -362,13 +364,14 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "resource_names": "eventbridge.custom.event.sender", "detail_type": "testdetail", "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self" + "_inferred_span.tag_source": "self", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -483,8 +486,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -515,13 +518,14 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "stage": "$default", "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", - "http.status_code": "200" + "http.status_code": "200", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "http" }, @@ -641,8 +645,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -669,13 +673,14 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "event_version": "1.0", "partition_key": "XXXX", "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self" + "_inferred_span.tag_source": "self", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -791,8 +796,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -816,13 +821,14 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "object_size": "1024", "object_etag": "XXXX", "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self" + "_inferred_span.tag_source": "self", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -938,8 +944,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -964,13 +970,14 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "type": "Notification", "subject": "TestInvoke", "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self" + "_inferred_span.tag_source": "self", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1086,8 +1093,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -1111,13 +1118,14 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", "sender_id": "AIDAIENQZJOLO23YVJ4VO", "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self" + "_inferred_span.tag_source": "self", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1233,8 +1241,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -1264,13 +1272,14 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "message_direction": "IN", "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", - "http.status_code": "200" + "http.status_code": "200", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "web" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python37.log b/tests/integration/snapshots/logs/sync-metrics_python37.log index 7c0d88114..423e6860a 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python37.log +++ b/tests/integration/snapshots/logs/sync-metrics_python37.log @@ -15,8 +15,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -44,13 +44,14 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "request_id": "XXXX", "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", - "http.status_code": "200" + "http.status_code": "200", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "http" }, @@ -132,7 +133,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -151,14 +152,15 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "http.status_code": "202" + "http.status_code": "202", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", "_dd.measured": 1, - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "http" } @@ -183,8 +185,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -211,13 +213,14 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "stream_view_type": "NEW_AND_OLD_IMAGES", "size_bytes": "26", "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self" + "_inferred_span.tag_source": "self", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -295,7 +298,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -314,14 +317,15 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "http.status_code": "202" + "http.status_code": "202", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", "_dd.measured": 1, - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "http" } @@ -346,8 +350,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -368,13 +372,14 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "resource_names": "eventbridge.custom.event.sender", "detail_type": "testdetail", "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self" + "_inferred_span.tag_source": "self", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -451,7 +456,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -470,14 +475,15 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "http.status_code": "202" + "http.status_code": "202", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", "_dd.measured": 1, - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "http" } @@ -502,8 +508,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -534,13 +540,14 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "stage": "$default", "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", - "http.status_code": "200" + "http.status_code": "200", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "http" }, @@ -622,7 +629,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -641,14 +648,15 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "http.status_code": "202" + "http.status_code": "202", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", "_dd.measured": 1, - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "http" } @@ -673,8 +681,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -701,13 +709,14 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "event_version": "1.0", "partition_key": "XXXX", "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self" + "_inferred_span.tag_source": "self", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -785,7 +794,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -804,14 +813,15 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "http.status_code": "202" + "http.status_code": "202", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", "_dd.measured": 1, - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "http" } @@ -836,8 +846,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -861,13 +871,14 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "object_size": "1024", "object_etag": "XXXX", "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self" + "_inferred_span.tag_source": "self", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -945,7 +956,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -964,14 +975,15 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "http.status_code": "202" + "http.status_code": "202", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", "_dd.measured": 1, - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "http" } @@ -996,8 +1008,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -1022,13 +1034,14 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "type": "Notification", "subject": "TestInvoke", "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self" + "_inferred_span.tag_source": "self", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1106,7 +1119,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -1125,14 +1138,15 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "http.status_code": "202" + "http.status_code": "202", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", "_dd.measured": 1, - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "http" } @@ -1157,8 +1171,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -1182,13 +1196,14 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", "sender_id": "AIDAIENQZJOLO23YVJ4VO", "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self" + "_inferred_span.tag_source": "self", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1266,7 +1281,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -1285,14 +1300,15 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "http.status_code": "202" + "http.status_code": "202", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", "_dd.measured": 1, - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "http" } @@ -1317,8 +1333,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -1348,13 +1364,14 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "message_direction": "IN", "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", - "http.status_code": "200" + "http.status_code": "200", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1434,7 +1451,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -1453,14 +1470,15 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "http.status_code": "202" + "http.status_code": "202", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", "_dd.measured": 1, - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "http" } diff --git a/tests/integration/snapshots/logs/sync-metrics_python38.log b/tests/integration/snapshots/logs/sync-metrics_python38.log index bd13b3a2e..cc9c3d088 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python38.log +++ b/tests/integration/snapshots/logs/sync-metrics_python38.log @@ -15,8 +15,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -44,13 +44,14 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "request_id": "XXXX", "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", - "http.status_code": "200" + "http.status_code": "200", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "http" }, @@ -132,7 +133,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -151,14 +152,15 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "http.status_code": "202" + "http.status_code": "202", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", "_dd.measured": 1, - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "http" } @@ -183,8 +185,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -211,13 +213,14 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "stream_view_type": "NEW_AND_OLD_IMAGES", "size_bytes": "26", "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self" + "_inferred_span.tag_source": "self", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -295,7 +298,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -314,14 +317,15 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "http.status_code": "202" + "http.status_code": "202", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", "_dd.measured": 1, - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "http" } @@ -346,8 +350,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -368,13 +372,14 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "resource_names": "eventbridge.custom.event.sender", "detail_type": "testdetail", "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self" + "_inferred_span.tag_source": "self", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -451,7 +456,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -470,14 +475,15 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "http.status_code": "202" + "http.status_code": "202", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", "_dd.measured": 1, - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "http" } @@ -502,8 +508,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -534,13 +540,14 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "stage": "$default", "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", - "http.status_code": "200" + "http.status_code": "200", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "http" }, @@ -622,7 +629,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -641,14 +648,15 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "http.status_code": "202" + "http.status_code": "202", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", "_dd.measured": 1, - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "http" } @@ -673,8 +681,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -701,13 +709,14 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "event_version": "1.0", "partition_key": "XXXX", "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self" + "_inferred_span.tag_source": "self", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -785,7 +794,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -804,14 +813,15 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "http.status_code": "202" + "http.status_code": "202", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", "_dd.measured": 1, - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "http" } @@ -836,8 +846,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -861,13 +871,14 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "object_size": "1024", "object_etag": "XXXX", "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self" + "_inferred_span.tag_source": "self", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -945,7 +956,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -964,14 +975,15 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "http.status_code": "202" + "http.status_code": "202", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", "_dd.measured": 1, - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "http" } @@ -996,8 +1008,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -1022,13 +1034,14 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "type": "Notification", "subject": "TestInvoke", "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self" + "_inferred_span.tag_source": "self", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1106,7 +1119,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -1125,14 +1138,15 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "http.status_code": "202" + "http.status_code": "202", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", "_dd.measured": 1, - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "http" } @@ -1157,8 +1171,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -1182,13 +1196,14 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", "sender_id": "AIDAIENQZJOLO23YVJ4VO", "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self" + "_inferred_span.tag_source": "self", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1266,7 +1281,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -1285,14 +1300,15 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "http.status_code": "202" + "http.status_code": "202", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", "_dd.measured": 1, - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "http" } @@ -1317,8 +1333,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -1348,13 +1364,14 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "message_direction": "IN", "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", - "http.status_code": "200" + "http.status_code": "200", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1434,7 +1451,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -1453,14 +1470,15 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "http.status_code": "202" + "http.status_code": "202", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", "_dd.measured": 1, - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "http" } diff --git a/tests/integration/snapshots/logs/sync-metrics_python39.log b/tests/integration/snapshots/logs/sync-metrics_python39.log index 26dc28e26..89ee22fd9 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -15,8 +15,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -44,13 +44,14 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "request_id": "XXXX", "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", - "http.status_code": "200" + "http.status_code": "200", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "http" }, @@ -132,7 +133,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -151,14 +152,15 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "http.status_code": "202" + "http.status_code": "202", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", "_dd.measured": 1, - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "http" } @@ -183,8 +185,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -211,13 +213,14 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "stream_view_type": "NEW_AND_OLD_IMAGES", "size_bytes": "26", "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self" + "_inferred_span.tag_source": "self", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -295,7 +298,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -314,14 +317,15 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "http.status_code": "202" + "http.status_code": "202", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", "_dd.measured": 1, - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "http" } @@ -346,8 +350,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -368,13 +372,14 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "resource_names": "eventbridge.custom.event.sender", "detail_type": "testdetail", "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self" + "_inferred_span.tag_source": "self", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -451,7 +456,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -470,14 +475,15 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "http.status_code": "202" + "http.status_code": "202", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", "_dd.measured": 1, - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "http" } @@ -502,8 +508,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -534,13 +540,14 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "stage": "$default", "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", - "http.status_code": "200" + "http.status_code": "200", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "http" }, @@ -622,7 +629,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -641,14 +648,15 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "http.status_code": "202" + "http.status_code": "202", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", "_dd.measured": 1, - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "http" } @@ -673,8 +681,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -701,13 +709,14 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "event_version": "1.0", "partition_key": "XXXX", "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self" + "_inferred_span.tag_source": "self", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -785,7 +794,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -804,14 +813,15 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "http.status_code": "202" + "http.status_code": "202", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", "_dd.measured": 1, - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "http" } @@ -836,8 +846,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -861,13 +871,14 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "object_size": "1024", "object_etag": "XXXX", "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self" + "_inferred_span.tag_source": "self", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -945,7 +956,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -964,14 +975,15 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "http.status_code": "202" + "http.status_code": "202", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", "_dd.measured": 1, - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "http" } @@ -996,8 +1008,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -1022,13 +1034,14 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "type": "Notification", "subject": "TestInvoke", "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self" + "_inferred_span.tag_source": "self", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1106,7 +1119,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -1125,14 +1138,15 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "http.status_code": "202" + "http.status_code": "202", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", "_dd.measured": 1, - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "http" } @@ -1157,8 +1171,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -1182,13 +1196,14 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", "sender_id": "AIDAIENQZJOLO23YVJ4VO", "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self" + "_inferred_span.tag_source": "self", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1266,7 +1281,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -1285,14 +1300,15 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "http.status_code": "202" + "http.status_code": "202", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", "_dd.measured": 1, - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "http" } @@ -1317,8 +1333,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -1348,13 +1364,14 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "message_direction": "IN", "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", - "http.status_code": "200" + "http.status_code": "200", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1434,7 +1451,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -1453,14 +1470,15 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "http.status_code": "202" + "http.status_code": "202", + "_dd.p.dm": "-0" }, "metrics": { "_dd.agent_psr": 1, "system.pid": "XXXX", "_dd.measured": 1, - "_sampling_priority_v1": 1, - "_dd.top_level": 1 + "_dd.top_level": 1, + "_sampling_priority_v1": 1 }, "type": "http" } From fcfa91e6abf83f6df2a7060f54af588bc636cad4 Mon Sep 17 00:00:00 2001 From: Maxime David Date: Thu, 25 Aug 2022 09:51:14 -0400 Subject: [PATCH 010/403] bump github action versions (#242) * bump github actions * bump actions * bump --- .github/workflows/build.yml | 18 +++++++++--------- .github/workflows/check-size.yml | 4 ++-- .github/workflows/codeql-analysis.yml | 8 ++++---- .github/workflows/update_deps.yml | 4 ++-- 4 files changed, 17 insertions(+), 17 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 46cec885b..0cc6b753b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -12,10 +12,10 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Set up Python - uses: actions/setup-python@v2 + uses: actions/setup-python@v3 with: python-version: 3.9 @@ -45,10 +45,10 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 + uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} @@ -71,22 +71,22 @@ jobs: runtime-param: [3.7, 3.8, 3.9] steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Set up Node 14 - uses: actions/setup-node@v1 + uses: actions/setup-node@v3 with: node-version: 14 - name: Cache Node modules id: cache-node-modules - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: "**/node_modules" key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }} - name: Set up Python - uses: actions/setup-python@v2 + uses: actions/setup-python@v4 with: python-version: 3.9 @@ -129,7 +129,7 @@ jobs: if: always() && (needs.integration-test.result == 'failure') steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Send a failure metric env: DD_API_KEY: ${{ secrets.DD_API_KEY }} diff --git a/.github/workflows/check-size.yml b/.github/workflows/check-size.yml index 1c247e66d..c056d09bc 100644 --- a/.github/workflows/check-size.yml +++ b/.github/workflows/check-size.yml @@ -7,10 +7,10 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Set up Python - uses: actions/setup-python@v2 + uses: actions/setup-python@v4 with: python-version: 3.7 diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 338afa078..985f09f22 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -38,11 +38,11 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v2 + uses: actions/checkout@v3 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@v1 + uses: github/codeql-action/init@v2 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -53,7 +53,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@v1 + uses: github/codeql-action/autobuild@v2 # ℹ️ Command-line programs to run using the OS shell. # 📚 https://git.io/JvXDl @@ -67,4 +67,4 @@ jobs: # make release - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v1 + uses: github/codeql-action/analyze@v2 diff --git a/.github/workflows/update_deps.yml b/.github/workflows/update_deps.yml index 0c2197557..31025402f 100644 --- a/.github/workflows/update_deps.yml +++ b/.github/workflows/update_deps.yml @@ -8,12 +8,12 @@ jobs: check: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: ssh-key: ${{ secrets.SSH_PRIVATE_KEY }} - name: Set up Python - uses: actions/setup-python@v2 + uses: actions/setup-python@v4 with: python-version: 3.7 From 9a5d852efa10853c34072b8838d8c70f4d63d797 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 25 Aug 2022 09:51:55 -0400 Subject: [PATCH 011/403] update dependencies (#239) Co-authored-by: jcstorms1 --- poetry.lock | 420 +++++++++++++++++++++++++--------------------------- 1 file changed, 203 insertions(+), 217 deletions(-) diff --git a/poetry.lock b/poetry.lock index 66c4e2923..6512193de 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,40 +1,40 @@ [[package]] name = "attrs" -version = "21.4.0" +version = "22.1.0" description = "Classes Without Boilerplate" category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +python-versions = ">=3.5" [package.extras] -docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"] -tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "cloudpickle"] -tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "cloudpickle"] -dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit", "cloudpickle"] +dev = ["cloudpickle", "coverage[toml] (>=5.0.2)", "furo", "hypothesis", "mypy (>=0.900,!=0.940)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "sphinx", "sphinx-notfound-page", "zope.interface"] +docs = ["furo", "sphinx", "sphinx-notfound-page", "zope.interface"] +tests = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "zope.interface"] +tests_no_zope = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins"] [[package]] name = "boto3" -version = "1.23.10" +version = "1.24.59" description = "The AWS SDK for Python" category = "main" optional = true -python-versions = ">= 3.6" +python-versions = ">= 3.7" [package.dependencies] -botocore = ">=1.26.10,<1.27.0" +botocore = ">=1.27.59,<1.28.0" jmespath = ">=0.7.1,<2.0.0" -s3transfer = ">=0.5.0,<0.6.0" +s3transfer = ">=0.6.0,<0.7.0" [package.extras] crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.26.10" +version = "1.27.59" description = "Low-level, data-driven core of boto 3." category = "main" optional = true -python-versions = ">= 3.6" +python-versions = ">= 3.7" [package.dependencies] jmespath = ">=0.7.1,<2.0.0" @@ -42,7 +42,7 @@ python-dateutil = ">=2.1,<3.0.0" urllib3 = ">=1.25.4,<1.27" [package.extras] -crt = ["awscrt (==0.13.8)"] +crt = ["awscrt (==0.14.0)"] [[package]] name = "bytecode" @@ -62,22 +62,22 @@ python-versions = ">=3.6" [[package]] name = "charset-normalizer" -version = "2.0.12" +version = "2.1.1" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." category = "main" optional = false -python-versions = ">=3.5.0" +python-versions = ">=3.6.0" [package.extras] unicode_backport = ["unicodedata2"] [[package]] name = "coverage" -version = "6.2" +version = "6.4.4" description = "Code coverage measurement for Python" category = "main" optional = true -python-versions = ">=3.6" +python-versions = ">=3.7" [package.extras] toml = ["tomli"] @@ -96,22 +96,19 @@ requests = ">=2.6.0" [[package]] name = "ddsketch" -version = "2.0.3" +version = "2.0.4" description = "Distributed quantile sketches" category = "main" optional = false python-versions = ">=2.7" [package.dependencies] -protobuf = [ - {version = ">=3.0.0,<4.21.0", markers = "python_version < \"3.7\""}, - {version = ">=3.0.0", markers = "python_version >= \"3.7\""}, -] +protobuf = {version = ">=3.0.0", markers = "python_version >= \"3.7\""} six = "*" [[package]] name = "ddtrace" -version = "1.4.0" +version = "1.4.1" description = "Datadog APM client library" category = "main" optional = false @@ -120,18 +117,16 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" [package.dependencies] attrs = ">=19.2.0" bytecode = [ - {version = ">=0.13.0,<0.14.0", markers = "python_version == \"3.6\" or python_version == \"3.7\""}, + {version = ">=0.13.0,<0.14.0", markers = "python_version == \"3.7\""}, {version = "*", markers = "python_version >= \"3.8\""}, ] ddsketch = ">=2.0.1" +importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} packaging = ">=17.1" -protobuf = [ - {version = ">=3,<4.0", markers = "python_version == \"3.6\""}, - {version = ">=3", markers = "python_version >= \"3.7\""}, -] +protobuf = {version = ">=3", markers = "python_version >= \"3.7\""} six = ">=1.12.0" tenacity = ">=5" -typing-extensions = {version = "*", markers = "python_version < \"3.8\""} +typing-extensions = "*" [package.extras] opentracing = ["opentracing (>=2.0.0)"] @@ -189,16 +184,16 @@ python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" zipp = ">=0.5" [package.extras] -docs = ["sphinx", "rst.linker"] -testing = ["packaging", "pep517", "importlib-resources (>=1.3)"] +docs = ["rst.linker", "sphinx"] +testing = ["importlib-resources (>=1.3)", "packaging", "pep517"] [[package]] name = "jmespath" -version = "0.10.0" +version = "1.0.1" description = "JSON Matching Expressions" category = "main" optional = true -python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" +python-versions = ">=3.7" [[package]] name = "mccabe" @@ -221,8 +216,8 @@ coverage = ">=4.4.1" six = ">=1.7" [package.extras] -doc = ["Sphinx (>=1.6.5)", "sphinx-rtd-theme", "mock"] coverage_plugin = ["coverage (>=4.4.1)"] +doc = ["Sphinx (>=1.6.5)", "mock", "sphinx-rtd-theme"] [[package]] name = "packaging" @@ -237,11 +232,11 @@ pyparsing = ">=2.0.2,<3.0.5 || >3.0.5" [[package]] name = "protobuf" -version = "3.19.4" -description = "Protocol Buffers" +version = "4.21.5" +description = "" category = "main" optional = false -python-versions = ">=3.5" +python-versions = ">=3.7" [[package]] name = "pycodestyle" @@ -261,11 +256,11 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" [[package]] name = "pyparsing" -version = "3.0.7" -description = "Python parsing module" +version = "3.0.9" +description = "pyparsing module - Classes and methods to define and execute parsing grammars" category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.6.8" [package.extras] diagrams = ["jinja2", "railroad-diagrams"] @@ -283,29 +278,29 @@ six = ">=1.5" [[package]] name = "requests" -version = "2.27.1" +version = "2.28.1" description = "Python HTTP for Humans." category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" +python-versions = ">=3.7, <4" [package.dependencies] certifi = ">=2017.4.17" -charset-normalizer = {version = ">=2.0.0,<2.1.0", markers = "python_version >= \"3\""} -idna = {version = ">=2.5,<4", markers = "python_version >= \"3\""} +charset-normalizer = ">=2,<3" +idna = ">=2.5,<4" urllib3 = ">=1.21.1,<1.27" [package.extras] -use_chardet_on_py3 = ["chardet (>=3.0.2,<5)"] -socks = ["PySocks (>=1.5.6,!=1.5.7)", "win-inet-pton"] +socks = ["PySocks (>=1.5.6,!=1.5.7)"] +use_chardet_on_py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "s3transfer" -version = "0.5.2" +version = "0.6.0" description = "An Amazon S3 Transfer Manager" category = "main" optional = true -python-versions = ">= 3.6" +python-versions = ">= 3.7" [package.dependencies] botocore = ">=1.12.36,<2.0a.0" @@ -334,23 +329,23 @@ doc = ["reno", "sphinx", "tornado (>=4.5)"] [[package]] name = "typing-extensions" -version = "4.1.1" -description = "Backported and Experimental Type Hints for Python 3.6+" +version = "4.3.0" +description = "Backported and Experimental Type Hints for Python 3.7+" category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" [[package]] name = "urllib3" -version = "1.26.9" +version = "1.26.12" description = "HTTP library with thread-safe connection pooling, file post, and more." category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <4" [package.extras] -brotli = ["brotlicffi (>=0.8.0)", "brotli (>=1.0.9)", "brotlipy (>=0.6.0)"] -secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"] +secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] [[package]] @@ -363,36 +358,36 @@ python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" [[package]] name = "zipp" -version = "3.6.0" +version = "3.8.1" description = "Backport of pathlib-compatible object wrapper for zip files" category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" [package.extras] -docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"] -testing = ["pytest (>=4.6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy"] +docs = ["jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx"] +testing = ["func-timeout", "jaraco.itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] [extras] dev = ["boto3", "requests", "nose2", "flake8", "httpretty"] [metadata] lock-version = "1.1" -python-versions = ">=3.6.0,<4" -content-hash = "f5e44a4e13bf8f5b8541468e7be7ba3349aa5663fc7675fc6f2cdee4435eb9ae" +python-versions = ">=3.7.0,<4" +content-hash = "17c304edf3fd51cda8afdc56af6a4e3c949dbad836204fe49f0a825d65d5ae6b" [metadata.files] attrs = [ - {file = "attrs-21.4.0-py2.py3-none-any.whl", hash = "sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4"}, - {file = "attrs-21.4.0.tar.gz", hash = "sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd"}, + {file = "attrs-22.1.0-py2.py3-none-any.whl", hash = "sha256:86efa402f67bf2df34f51a335487cf46b1ec130d02b8d39fd248abfd30da551c"}, + {file = "attrs-22.1.0.tar.gz", hash = "sha256:29adc2665447e5191d0e7c568fde78b21f9672d344281d0c6e1ab085429b22b6"}, ] boto3 = [ - {file = "boto3-1.23.10-py3-none-any.whl", hash = "sha256:40d08614f17a69075e175c02c5d5aab69a6153fd50e40fa7057b913ac7bf40e7"}, - {file = "boto3-1.23.10.tar.gz", hash = "sha256:2a4395e3241c20eef441d7443a5e6eaa0ee3f7114653fb9d9cef41587526f7bd"}, + {file = "boto3-1.24.59-py3-none-any.whl", hash = "sha256:34ab44146a2c4e7f4e72737f4b27e6eb5e0a7855c2f4599e3d9199b6a0a2d575"}, + {file = "boto3-1.24.59.tar.gz", hash = "sha256:a50b4323f9579cfe22fcf5531fbd40b567d4d74c1adce06aeb5c95fce2a6fb40"}, ] botocore = [ - {file = "botocore-1.26.10-py3-none-any.whl", hash = "sha256:8a4a984bf901ccefe40037da11ba2abd1ddbcb3b490a492b7f218509c99fc12f"}, - {file = "botocore-1.26.10.tar.gz", hash = "sha256:5df2cf7ebe34377470172bd0bbc582cf98c5cbd02da0909a14e9e2885ab3ae9c"}, + {file = "botocore-1.27.59-py3-none-any.whl", hash = "sha256:69d756791fc024bda54f6c53f71ae34e695ee41bbbc1743d9179c4837a4929da"}, + {file = "botocore-1.27.59.tar.gz", hash = "sha256:eda4aed6ee719a745d1288eaf1beb12f6f6448ad1fa12f159405db14ba9c92cf"}, ] bytecode = [ {file = "bytecode-0.13.0-py3-none-any.whl", hash = "sha256:e69f92e7d27f99d5d7d76e6a824bd3d9ff857c72b59927aaf87e1a620f67fe50"}, @@ -403,126 +398,129 @@ certifi = [ {file = "certifi-2022.6.15.tar.gz", hash = "sha256:84c85a9078b11105f04f3036a9482ae10e4621616db313fe045dd24743a0820d"}, ] charset-normalizer = [ - {file = "charset-normalizer-2.0.12.tar.gz", hash = "sha256:2857e29ff0d34db842cd7ca3230549d1a697f96ee6d3fb071cfa6c7393832597"}, - {file = "charset_normalizer-2.0.12-py3-none-any.whl", hash = "sha256:6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df"}, + {file = "charset-normalizer-2.1.1.tar.gz", hash = "sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845"}, + {file = "charset_normalizer-2.1.1-py3-none-any.whl", hash = "sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f"}, ] coverage = [ - {file = "coverage-6.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6dbc1536e105adda7a6312c778f15aaabe583b0e9a0b0a324990334fd458c94b"}, - {file = "coverage-6.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:174cf9b4bef0db2e8244f82059a5a72bd47e1d40e71c68ab055425172b16b7d0"}, - {file = "coverage-6.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:92b8c845527eae547a2a6617d336adc56394050c3ed8a6918683646328fbb6da"}, - {file = "coverage-6.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c7912d1526299cb04c88288e148c6c87c0df600eca76efd99d84396cfe00ef1d"}, - {file = "coverage-6.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d5d2033d5db1d58ae2d62f095e1aefb6988af65b4b12cb8987af409587cc0739"}, - {file = "coverage-6.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:3feac4084291642165c3a0d9eaebedf19ffa505016c4d3db15bfe235718d4971"}, - {file = "coverage-6.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:276651978c94a8c5672ea60a2656e95a3cce2a3f31e9fb2d5ebd4c215d095840"}, - {file = "coverage-6.2-cp310-cp310-win32.whl", hash = "sha256:f506af4f27def639ba45789fa6fde45f9a217da0be05f8910458e4557eed020c"}, - {file = "coverage-6.2-cp310-cp310-win_amd64.whl", hash = "sha256:3f7c17209eef285c86f819ff04a6d4cbee9b33ef05cbcaae4c0b4e8e06b3ec8f"}, - {file = "coverage-6.2-cp311-cp311-macosx_10_14_x86_64.whl", hash = "sha256:13362889b2d46e8d9f97c421539c97c963e34031ab0cb89e8ca83a10cc71ac76"}, - {file = "coverage-6.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:22e60a3ca5acba37d1d4a2ee66e051f5b0e1b9ac950b5b0cf4aa5366eda41d47"}, - {file = "coverage-6.2-cp311-cp311-win_amd64.whl", hash = "sha256:b637c57fdb8be84e91fac60d9325a66a5981f8086c954ea2772efe28425eaf64"}, - {file = "coverage-6.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f467bbb837691ab5a8ca359199d3429a11a01e6dfb3d9dcc676dc035ca93c0a9"}, - {file = "coverage-6.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2641f803ee9f95b1f387f3e8f3bf28d83d9b69a39e9911e5bfee832bea75240d"}, - {file = "coverage-6.2-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:1219d760ccfafc03c0822ae2e06e3b1248a8e6d1a70928966bafc6838d3c9e48"}, - {file = "coverage-6.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:9a2b5b52be0a8626fcbffd7e689781bf8c2ac01613e77feda93d96184949a98e"}, - {file = "coverage-6.2-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:8e2c35a4c1f269704e90888e56f794e2d9c0262fb0c1b1c8c4ee44d9b9e77b5d"}, - {file = "coverage-6.2-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:5d6b09c972ce9200264c35a1d53d43ca55ef61836d9ec60f0d44273a31aa9f17"}, - {file = "coverage-6.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:e3db840a4dee542e37e09f30859f1612da90e1c5239a6a2498c473183a50e781"}, - {file = "coverage-6.2-cp36-cp36m-win32.whl", hash = "sha256:4e547122ca2d244f7c090fe3f4b5a5861255ff66b7ab6d98f44a0222aaf8671a"}, - {file = "coverage-6.2-cp36-cp36m-win_amd64.whl", hash = "sha256:01774a2c2c729619760320270e42cd9e797427ecfddd32c2a7b639cdc481f3c0"}, - {file = "coverage-6.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:fb8b8ee99b3fffe4fd86f4c81b35a6bf7e4462cba019997af2fe679365db0c49"}, - {file = "coverage-6.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:619346d57c7126ae49ac95b11b0dc8e36c1dd49d148477461bb66c8cf13bb521"}, - {file = "coverage-6.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0a7726f74ff63f41e95ed3a89fef002916c828bb5fcae83b505b49d81a066884"}, - {file = "coverage-6.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cfd9386c1d6f13b37e05a91a8583e802f8059bebfccde61a418c5808dea6bbfa"}, - {file = "coverage-6.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:17e6c11038d4ed6e8af1407d9e89a2904d573be29d51515f14262d7f10ef0a64"}, - {file = "coverage-6.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c254b03032d5a06de049ce8bca8338a5185f07fb76600afff3c161e053d88617"}, - {file = "coverage-6.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:dca38a21e4423f3edb821292e97cec7ad38086f84313462098568baedf4331f8"}, - {file = "coverage-6.2-cp37-cp37m-win32.whl", hash = "sha256:600617008aa82032ddeace2535626d1bc212dfff32b43989539deda63b3f36e4"}, - {file = "coverage-6.2-cp37-cp37m-win_amd64.whl", hash = "sha256:bf154ba7ee2fd613eb541c2bc03d3d9ac667080a737449d1a3fb342740eb1a74"}, - {file = "coverage-6.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f9afb5b746781fc2abce26193d1c817b7eb0e11459510fba65d2bd77fe161d9e"}, - {file = "coverage-6.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:edcada2e24ed68f019175c2b2af2a8b481d3d084798b8c20d15d34f5c733fa58"}, - {file = "coverage-6.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:a9c8c4283e17690ff1a7427123ffb428ad6a52ed720d550e299e8291e33184dc"}, - {file = "coverage-6.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f614fc9956d76d8a88a88bb41ddc12709caa755666f580af3a688899721efecd"}, - {file = "coverage-6.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9365ed5cce5d0cf2c10afc6add145c5037d3148585b8ae0e77cc1efdd6aa2953"}, - {file = "coverage-6.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8bdfe9ff3a4ea37d17f172ac0dff1e1c383aec17a636b9b35906babc9f0f5475"}, - {file = "coverage-6.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:63c424e6f5b4ab1cf1e23a43b12f542b0ec2e54f99ec9f11b75382152981df57"}, - {file = "coverage-6.2-cp38-cp38-win32.whl", hash = "sha256:49dbff64961bc9bdd2289a2bda6a3a5a331964ba5497f694e2cbd540d656dc1c"}, - {file = "coverage-6.2-cp38-cp38-win_amd64.whl", hash = "sha256:9a29311bd6429be317c1f3fe4bc06c4c5ee45e2fa61b2a19d4d1d6111cb94af2"}, - {file = "coverage-6.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:03b20e52b7d31be571c9c06b74746746d4eb82fc260e594dc662ed48145e9efd"}, - {file = "coverage-6.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:215f8afcc02a24c2d9a10d3790b21054b58d71f4b3c6f055d4bb1b15cecce685"}, - {file = "coverage-6.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:a4bdeb0a52d1d04123b41d90a4390b096f3ef38eee35e11f0b22c2d031222c6c"}, - {file = "coverage-6.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c332d8f8d448ded473b97fefe4a0983265af21917d8b0cdcb8bb06b2afe632c3"}, - {file = "coverage-6.2-cp39-cp39-win32.whl", hash = "sha256:6e1394d24d5938e561fbeaa0cd3d356207579c28bd1792f25a068743f2d5b282"}, - {file = "coverage-6.2-cp39-cp39-win_amd64.whl", hash = "sha256:86f2e78b1eff847609b1ca8050c9e1fa3bd44ce755b2ec30e70f2d3ba3844644"}, - {file = "coverage-6.2-pp36.pp37.pp38-none-any.whl", hash = "sha256:5829192582c0ec8ca4a2532407bc14c2f338d9878a10442f5d03804a95fac9de"}, - {file = "coverage-6.2.tar.gz", hash = "sha256:e2cad8093172b7d1595b4ad66f24270808658e11acf43a8f95b41276162eb5b8"}, + {file = "coverage-6.4.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e7b4da9bafad21ea45a714d3ea6f3e1679099e420c8741c74905b92ee9bfa7cc"}, + {file = "coverage-6.4.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fde17bc42e0716c94bf19d92e4c9f5a00c5feb401f5bc01101fdf2a8b7cacf60"}, + {file = "coverage-6.4.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cdbb0d89923c80dbd435b9cf8bba0ff55585a3cdb28cbec65f376c041472c60d"}, + {file = "coverage-6.4.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:67f9346aeebea54e845d29b487eb38ec95f2ecf3558a3cffb26ee3f0dcc3e760"}, + {file = "coverage-6.4.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42c499c14efd858b98c4e03595bf914089b98400d30789511577aa44607a1b74"}, + {file = "coverage-6.4.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:c35cca192ba700979d20ac43024a82b9b32a60da2f983bec6c0f5b84aead635c"}, + {file = "coverage-6.4.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:9cc4f107009bca5a81caef2fca843dbec4215c05e917a59dec0c8db5cff1d2aa"}, + {file = "coverage-6.4.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5f444627b3664b80d078c05fe6a850dd711beeb90d26731f11d492dcbadb6973"}, + {file = "coverage-6.4.4-cp310-cp310-win32.whl", hash = "sha256:66e6df3ac4659a435677d8cd40e8eb1ac7219345d27c41145991ee9bf4b806a0"}, + {file = "coverage-6.4.4-cp310-cp310-win_amd64.whl", hash = "sha256:35ef1f8d8a7a275aa7410d2f2c60fa6443f4a64fae9be671ec0696a68525b875"}, + {file = "coverage-6.4.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c1328d0c2f194ffda30a45f11058c02410e679456276bfa0bbe0b0ee87225fac"}, + {file = "coverage-6.4.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:61b993f3998ee384935ee423c3d40894e93277f12482f6e777642a0141f55782"}, + {file = "coverage-6.4.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d5dd4b8e9cd0deb60e6fcc7b0647cbc1da6c33b9e786f9c79721fd303994832f"}, + {file = "coverage-6.4.4-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7026f5afe0d1a933685d8f2169d7c2d2e624f6255fb584ca99ccca8c0e966fd7"}, + {file = "coverage-6.4.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:9c7b9b498eb0c0d48b4c2abc0e10c2d78912203f972e0e63e3c9dc21f15abdaa"}, + {file = "coverage-6.4.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:ee2b2fb6eb4ace35805f434e0f6409444e1466a47f620d1d5763a22600f0f892"}, + {file = "coverage-6.4.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:ab066f5ab67059d1f1000b5e1aa8bbd75b6ed1fc0014559aea41a9eb66fc2ce0"}, + {file = "coverage-6.4.4-cp311-cp311-win32.whl", hash = "sha256:9d6e1f3185cbfd3d91ac77ea065d85d5215d3dfa45b191d14ddfcd952fa53796"}, + {file = "coverage-6.4.4-cp311-cp311-win_amd64.whl", hash = "sha256:e3d3c4cc38b2882f9a15bafd30aec079582b819bec1b8afdbde8f7797008108a"}, + {file = "coverage-6.4.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a095aa0a996ea08b10580908e88fbaf81ecf798e923bbe64fb98d1807db3d68a"}, + {file = "coverage-6.4.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ef6f44409ab02e202b31a05dd6666797f9de2aa2b4b3534e9d450e42dea5e817"}, + {file = "coverage-6.4.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4b7101938584d67e6f45f0015b60e24a95bf8dea19836b1709a80342e01b472f"}, + {file = "coverage-6.4.4-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14a32ec68d721c3d714d9b105c7acf8e0f8a4f4734c811eda75ff3718570b5e3"}, + {file = "coverage-6.4.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:6a864733b22d3081749450466ac80698fe39c91cb6849b2ef8752fd7482011f3"}, + {file = "coverage-6.4.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:08002f9251f51afdcc5e3adf5d5d66bb490ae893d9e21359b085f0e03390a820"}, + {file = "coverage-6.4.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:a3b2752de32c455f2521a51bd3ffb53c5b3ae92736afde67ce83477f5c1dd928"}, + {file = "coverage-6.4.4-cp37-cp37m-win32.whl", hash = "sha256:f855b39e4f75abd0dfbcf74a82e84ae3fc260d523fcb3532786bcbbcb158322c"}, + {file = "coverage-6.4.4-cp37-cp37m-win_amd64.whl", hash = "sha256:ee6ae6bbcac0786807295e9687169fba80cb0617852b2fa118a99667e8e6815d"}, + {file = "coverage-6.4.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:564cd0f5b5470094df06fab676c6d77547abfdcb09b6c29c8a97c41ad03b103c"}, + {file = "coverage-6.4.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cbbb0e4cd8ddcd5ef47641cfac97d8473ab6b132dd9a46bacb18872828031685"}, + {file = "coverage-6.4.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6113e4df2fa73b80f77663445be6d567913fb3b82a86ceb64e44ae0e4b695de1"}, + {file = "coverage-6.4.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8d032bfc562a52318ae05047a6eb801ff31ccee172dc0d2504614e911d8fa83e"}, + {file = "coverage-6.4.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e431e305a1f3126477abe9a184624a85308da8edf8486a863601d58419d26ffa"}, + {file = "coverage-6.4.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:cf2afe83a53f77aec067033199797832617890e15bed42f4a1a93ea24794ae3e"}, + {file = "coverage-6.4.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:783bc7c4ee524039ca13b6d9b4186a67f8e63d91342c713e88c1865a38d0892a"}, + {file = "coverage-6.4.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:ff934ced84054b9018665ca3967fc48e1ac99e811f6cc99ea65978e1d384454b"}, + {file = "coverage-6.4.4-cp38-cp38-win32.whl", hash = "sha256:e1fabd473566fce2cf18ea41171d92814e4ef1495e04471786cbc943b89a3781"}, + {file = "coverage-6.4.4-cp38-cp38-win_amd64.whl", hash = "sha256:4179502f210ebed3ccfe2f78bf8e2d59e50b297b598b100d6c6e3341053066a2"}, + {file = "coverage-6.4.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:98c0b9e9b572893cdb0a00e66cf961a238f8d870d4e1dc8e679eb8bdc2eb1b86"}, + {file = "coverage-6.4.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fc600f6ec19b273da1d85817eda339fb46ce9eef3e89f220055d8696e0a06908"}, + {file = "coverage-6.4.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7a98d6bf6d4ca5c07a600c7b4e0c5350cd483c85c736c522b786be90ea5bac4f"}, + {file = "coverage-6.4.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:01778769097dbd705a24e221f42be885c544bb91251747a8a3efdec6eb4788f2"}, + {file = "coverage-6.4.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dfa0b97eb904255e2ab24166071b27408f1f69c8fbda58e9c0972804851e0558"}, + {file = "coverage-6.4.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:fcbe3d9a53e013f8ab88734d7e517eb2cd06b7e689bedf22c0eb68db5e4a0a19"}, + {file = "coverage-6.4.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:15e38d853ee224e92ccc9a851457fb1e1f12d7a5df5ae44544ce7863691c7a0d"}, + {file = "coverage-6.4.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6913dddee2deff8ab2512639c5168c3e80b3ebb0f818fed22048ee46f735351a"}, + {file = "coverage-6.4.4-cp39-cp39-win32.whl", hash = "sha256:354df19fefd03b9a13132fa6643527ef7905712109d9c1c1903f2133d3a4e145"}, + {file = "coverage-6.4.4-cp39-cp39-win_amd64.whl", hash = "sha256:1238b08f3576201ebf41f7c20bf59baa0d05da941b123c6656e42cdb668e9827"}, + {file = "coverage-6.4.4-pp36.pp37.pp38-none-any.whl", hash = "sha256:f67cf9f406cf0d2f08a3515ce2db5b82625a7257f88aad87904674def6ddaec1"}, + {file = "coverage-6.4.4.tar.gz", hash = "sha256:e16c45b726acb780e1e6f88b286d3c10b3914ab03438f32117c4aa52d7f30d58"}, ] datadog = [ {file = "datadog-0.41.0-py2.py3-none-any.whl", hash = "sha256:ab79ed38fb09ff1942c341e32849c4eeaf8b2e4d467b9e6bb1c6071808f454d6"}, {file = "datadog-0.41.0.tar.gz", hash = "sha256:3de1a43b8a8d5f6b19d162ec1b482dc5ab2636c59cf65e60589702304510a689"}, ] ddsketch = [ - {file = "ddsketch-2.0.3-py3-none-any.whl", hash = "sha256:a5fd40785aa70ae45c240c769aab9158c2046da91ddb44ac0c42e4d4930ce302"}, - {file = "ddsketch-2.0.3.tar.gz", hash = "sha256:464469f53380aa878eb1dd4dc644086341e0d2a54b19dfca7d7a4645c8353ac6"}, + {file = "ddsketch-2.0.4-py3-none-any.whl", hash = "sha256:3227a270fd686a29d3a7128f9352ccf852314410380fc11384356f1ae2a75938"}, + {file = "ddsketch-2.0.4.tar.gz", hash = "sha256:32f7314077fec8747d4faebaec2c854b5ffc399c5f552f73fa94024f48d74d64"}, ] ddtrace = [ - {file = "ddtrace-1.2.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:4741a9002b90b42a9e59666c89d52656a69eb53b29f9e2c7f4057d721a97d928"}, - {file = "ddtrace-1.2.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:7d292271cfb432111fc9c12b9e6a00e95c3ca134ac6b13e4a77be8e97491aab3"}, - {file = "ddtrace-1.2.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:420aae88a6c2bb0ccdb46e4e3d9434c9b1552cfa9228943ab4cdf706ac06a69a"}, - {file = "ddtrace-1.2.1-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:fcf3d2407a64278d3df581f3bf52d3947ee60df08bf419c5855990df0fb32643"}, - {file = "ddtrace-1.2.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:ca1d91abd9afd6c266f81da57b279ceae16991da1eabc2d90ef3212a69177d59"}, - {file = "ddtrace-1.2.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7b048c756e75559604e9cb21d0d7a972da701854c94ac9a4bc827e2bd2d965fe"}, - {file = "ddtrace-1.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:baa7250e48c9987c7062c5683f5af239e52507f5b3b8f7635f78f51571f6003c"}, - {file = "ddtrace-1.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:16ac9d507176700a4cef9714708e276275fae39da32f118fb8e0e18d39a3c15f"}, - {file = "ddtrace-1.2.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fa7bef80eff996c192493746c19cfe4cc0fb709edf4cfc6b95b1ae6cea957a23"}, - {file = "ddtrace-1.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0754c09e8f00cc2b7c29c086c7b9989546e1dc2bc9b30a471796f5cae7d3852"}, - {file = "ddtrace-1.2.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:283ce85e6de396103944fff15eafcabe262f8fce467110bdd118e76bdceb356d"}, - {file = "ddtrace-1.2.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:4f01ebae47a54eb2a10b5bd5dac9bbc052f28f6b8c2d23c91314fa427cae6fd0"}, - {file = "ddtrace-1.2.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6e4da69cf3d114f1b26627360bd1a202d46a8b27e66c37835dc9c43d9d011ba6"}, - {file = "ddtrace-1.2.1-cp310-cp310-win32.whl", hash = "sha256:2b266f362bd0f4499cc01015de5aa1d1e73e51764727cbadee4f6669b49ff1d5"}, - {file = "ddtrace-1.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:71bf0f042dab6ff660092afd89e016c34b46019ee6730f3f420b724dd2c5498f"}, - {file = "ddtrace-1.2.1-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:409e2f790bddfe7980728694b99893e42c484392376668a6862be325dbbd6839"}, - {file = "ddtrace-1.2.1-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:a346355261be37e8eda7a295abd006d8feed9c2cd18dec885edef885c61de2ce"}, - {file = "ddtrace-1.2.1-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:da3715742b02c4093530ffb7b15944d526ac29d4acde596fda471dc965ae5961"}, - {file = "ddtrace-1.2.1-cp35-cp35m-win32.whl", hash = "sha256:8f8c7ab254ebd147cb74cd41971d7194ceb68892302b9c427dfd8543682c2204"}, - {file = "ddtrace-1.2.1-cp35-cp35m-win_amd64.whl", hash = "sha256:fcbedab36e39070e55e5e5fa1c3a2049b24fdb929ee7e93217c8d9ac6f0321c7"}, - {file = "ddtrace-1.2.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:c06f80931f8cc69674e15e083ef97f41a9185051d49339b0477ce5e9a7381538"}, - {file = "ddtrace-1.2.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:31b6661ebbf886b599ed0612b8d22f722f6b02e7b0d6c09a8e9997702f792e4b"}, - {file = "ddtrace-1.2.1-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:81dd6535ab7d3a7a311e40778cbcae978073a6a48fc572268086a7c803a441e6"}, - {file = "ddtrace-1.2.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e8e1d94cc99dd3e9f49cce6f2a78f429f408613bd2c80386c2481390d9645b19"}, - {file = "ddtrace-1.2.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:e04fead25d7e75e669662255fcfee048a5ea5d8b1155020b690d8ced5ec2b59d"}, - {file = "ddtrace-1.2.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:0c5ae39e3da5535f3b9dadca2ef0fde734688e64eba6bf961ba669c4b7578fea"}, - {file = "ddtrace-1.2.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:0c6b26e66a8d9387973f42440b57c3cff76243388aa38a65d21ab9b23a8d1446"}, - {file = "ddtrace-1.2.1-cp36-cp36m-win32.whl", hash = "sha256:b3c856bfe71bb3e8932e48b80c8c8f48eb4c966a4ecbeb507d067b7aa0e1506a"}, - {file = "ddtrace-1.2.1-cp36-cp36m-win_amd64.whl", hash = "sha256:f0989b70185b00b1bf692f832e0aaea5b693994c54002faa65b6cd60cf146cb5"}, - {file = "ddtrace-1.2.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:1efd71b73e399237ba14bd54f31d5b37ca817d337f0715a602d2eb0c3af51052"}, - {file = "ddtrace-1.2.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:241d63c31ab48155e56855f7f55639ae41980efc3a8e53f4bcce9b9034e8f535"}, - {file = "ddtrace-1.2.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b94cf79c72228090290550b502576e08cf0ff01a8e3e5c596ee67c8a45a3211e"}, - {file = "ddtrace-1.2.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:255c3cb9b5d0adde9d608cb91428051d1cf1f94ada5b86b0a4cc8bd498258997"}, - {file = "ddtrace-1.2.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:e419d279d1f25ab360423e0c86632e7f869e783f2950de245c8764b1094f0b1b"}, - {file = "ddtrace-1.2.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:1cae4ec2c8ac91b09e169742629ff4598a9fb09ca4e380904f110b533c0ac758"}, - {file = "ddtrace-1.2.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:34aea3fee9ba3f9fbad5fc43289d4b6028826652a5136d1fb6613c463dedbdca"}, - {file = "ddtrace-1.2.1-cp37-cp37m-win32.whl", hash = "sha256:29bdd28c657e0e7f539863a84307feb96f3fabdb72e184c3e2fcbfaef1b56ba6"}, - {file = "ddtrace-1.2.1-cp37-cp37m-win_amd64.whl", hash = "sha256:2a7eda27bfbc27ddc632b93c6239bcfd155c4e83586a216bb8896003b8ca9822"}, - {file = "ddtrace-1.2.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:dbf6252efabd070aa97b55bfd55da2a5939849dc201c7fa5c67c4bf0a953fb5d"}, - {file = "ddtrace-1.2.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f3dc8e84000018d8d6d50371e55cfa4ba94c5002414ce4f6b60bf21d2f768409"}, - {file = "ddtrace-1.2.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3b35bdbc2c8afd91b1d2013777274eb0346f0a34bab456e3f3ed4f8432c19151"}, - {file = "ddtrace-1.2.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7259f54f3fc4b4d43fa5dd61f2be242316f5df49d7a016a3ac28dd2db6e4d17f"}, - {file = "ddtrace-1.2.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b68aebf717b1e611d6aadd0f8023fa354d0042b80c40949348408df25633b33"}, - {file = "ddtrace-1.2.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6031a208dc3bb817e2237a08d60baa1f09de3b7457e52f0fa950060925bb661b"}, - {file = "ddtrace-1.2.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:0f02b1ac848b42d901cc88a39bc86d1182073e449f0ef10a2a86a36b70474591"}, - {file = "ddtrace-1.2.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b3d9e3ad04dd26136862456da9e16595cd9b6326c78e94220d990e9852af3d57"}, - {file = "ddtrace-1.2.1-cp38-cp38-win32.whl", hash = "sha256:12c5424b42fc8a605e90fd55243313636704fb9675d49898fe0f76b5bf269619"}, - {file = "ddtrace-1.2.1-cp38-cp38-win_amd64.whl", hash = "sha256:bd51aa6824bd84847410bf85a4543ed3d29a4039f9d9f793c10ea89f56907b70"}, - {file = "ddtrace-1.2.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:71560d0259064b4ca646cf8a035bdac347b3f17f353152bb68acd40b0224b2a1"}, - {file = "ddtrace-1.2.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0bda7417db3baea5e7b63d6596c26821391376a86a76e1828d771b3a14c3ff39"}, - {file = "ddtrace-1.2.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8ab92abb93b4d8e70b68b0894d3be2f93b96411429dee1df30ee0c3f1aecbe2f"}, - {file = "ddtrace-1.2.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d344fac2a732c76ac3a0963c5bde869b73dde633f3c0cc7e4ea1e0ba01e2207f"}, - {file = "ddtrace-1.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a0c6e7d17bc44f0c54282e94146299e0e8bd7ccc277795d5ebde9818cbbbad2"}, - {file = "ddtrace-1.2.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4417f001cdc03370fe3b5d26695a68df82db68214d3a51df3fb6ea56b56c3f46"}, - {file = "ddtrace-1.2.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f83d21f67ab2be5537c719f9316f8f6b174976bde03726d97aea2468d7bd01d0"}, - {file = "ddtrace-1.2.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:67d8a2de42b2b2bf8effd1d1903a57ba58c07ed814a603f4ba2f422ee48d15e6"}, - {file = "ddtrace-1.2.1-cp39-cp39-win32.whl", hash = "sha256:d11e204b2d95e173873742facdd3fb4276f35de51411adb965421147a57bcdfc"}, - {file = "ddtrace-1.2.1-cp39-cp39-win_amd64.whl", hash = "sha256:33554dc3444e6c9739a69ed4fb6093c63766abb81320d6a5aa74d0faaf12a12c"}, - {file = "ddtrace-1.2.1.tar.gz", hash = "sha256:979c2932db900fb08a7080f7d9dde117a6435c9d648bafbad0d7d5eb1af830ee"}, + {file = "ddtrace-1.4.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:9424c65419741e3876a40528cfc229d7b272e76fef6cd1472181efa6c51e5266"}, + {file = "ddtrace-1.4.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:efa75a693a0244f7bb70dc60cb967b91ed2b2ea04c9f5eed048cd401efc50a05"}, + {file = "ddtrace-1.4.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:180204495d8e0b82478e0737b5cb4e69413e30b3103913545fcad05ac3999361"}, + {file = "ddtrace-1.4.1-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:c660326cbdd65977519ce8c3d7a6d45b36fcf39f2a36121b21b4d4f89c5dd923"}, + {file = "ddtrace-1.4.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:a5b4f0ae120a66cabdc34e398a442388360c5cdfc6749c8e07861f069ad410c2"}, + {file = "ddtrace-1.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:fe518aa67c157e66dcf228bdd83fcf5668981d5b9dbb7277d9aff9c31ffa3494"}, + {file = "ddtrace-1.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:cd45412f75e76f627d60d4b71c660005286a0aa0746e8902dc8fd8f746a51c39"}, + {file = "ddtrace-1.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:600a2776190920fa49805940da988a3b2216507165e804c145991324dfbbb140"}, + {file = "ddtrace-1.4.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ec6ab706b95f903cbec42ae45f26968507be005637cd8973f16c18d356442452"}, + {file = "ddtrace-1.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6cdaead1b426167de77a1fb0debc0032db2ce356de9a99bcc1f2f9aeac519f48"}, + {file = "ddtrace-1.4.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:29e7c97d36b51d25078102911105e8db1669c4e24a1baab56c844bfe6424a5e8"}, + {file = "ddtrace-1.4.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:ee94aec8a5bfc319735ea384942ba6319df50dcc88cf0ae7bdd3d1cabcd2552d"}, + {file = "ddtrace-1.4.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:90d78cadb6f14d2f0dddca8781172e6cf88d661eb89931e2ca8f14879d9dccfb"}, + {file = "ddtrace-1.4.1-cp310-cp310-win32.whl", hash = "sha256:202f7f7018cc87fd7304b1f2f2ae8b366021d50563fda6c8801571a51cefa052"}, + {file = "ddtrace-1.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:03286e4a58da73cf54079903b699a49c3c9598160ae6f0f279b9e616a3cd3283"}, + {file = "ddtrace-1.4.1-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:b103aee89861ba55a1759cd2e93b873ef1ca108929599d42f8b9c82ac655f1e9"}, + {file = "ddtrace-1.4.1-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:ecf7b580885221861ee47382ad5f712bf472a542d9f9385dfda7f731a4f8927a"}, + {file = "ddtrace-1.4.1-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:226698e193c5065022c9b5a753cc269b00f5f9a3aeaf3c1a8a18d5b47184e26f"}, + {file = "ddtrace-1.4.1-cp35-cp35m-win32.whl", hash = "sha256:5accb5814b3b87800f62cfbb34e0335ec59fde7c25bda70a06f3d279c6c4ac1e"}, + {file = "ddtrace-1.4.1-cp35-cp35m-win_amd64.whl", hash = "sha256:e0630674292c01d52ac0a0128c6b89c8f1e9ce29650d5003e68c6630c6b06b75"}, + {file = "ddtrace-1.4.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:8ca0745bd8550e105beca9e3600c7665b8c573b3c1c0dfa06400bb6c6b6a54df"}, + {file = "ddtrace-1.4.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ceba339f33f15fa9499ddf2280b9722147f1f599587dbb11d142657467e3c8eb"}, + {file = "ddtrace-1.4.1-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:216dd934b1be281d2c5d63b98e0ec8c0b9e65bb6dad4f957d835d940a4d2b52d"}, + {file = "ddtrace-1.4.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e81cf84c9e674e42684e1b0a9afb476f4f6fc783ca398a09bd74b469ffa4798"}, + {file = "ddtrace-1.4.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:fbe530bba7ac9d9fe9ea40bbaedadf427e1804e56f6d1c624e4291cae2ce79e4"}, + {file = "ddtrace-1.4.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:802ffc4f86e30dd0ed99191130eacefbc3b7009b66c60f89a39e21d2953fe65b"}, + {file = "ddtrace-1.4.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:3fcb0cfb9dcf7495fedfaf2a8bb28be302e60e22b7a2dc132459de819f7eefd3"}, + {file = "ddtrace-1.4.1-cp36-cp36m-win32.whl", hash = "sha256:5560d3cf6a4c2034c63d43c75d34f1948e17dbd0f8ca0d1a29398b6b672e0432"}, + {file = "ddtrace-1.4.1-cp36-cp36m-win_amd64.whl", hash = "sha256:86524e8d5da8169bc3bb6c0e44185881ad9d18093d69cdcebbff8cb21f8bbafd"}, + {file = "ddtrace-1.4.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:2858e6204685e9d3fe43e8ae8d1a7fb458dcfc400a489b45329126902342f6d2"}, + {file = "ddtrace-1.4.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cf7164b768f99d8a8e3e0e61be2a495c968fb23fbf93922d2e35e4b1261664a"}, + {file = "ddtrace-1.4.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d2feab1265003cbdb6b25f1d7894c3ae408213c4822581ebb98c3a3501934544"}, + {file = "ddtrace-1.4.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:505e6de72c961fa59a8af57901801826d924ed28aa7e4b0a9ad45652bca1845a"}, + {file = "ddtrace-1.4.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:461cae0b3b955f3e76bd23085455561229a6b358b32b348edee1f24c288b4e00"}, + {file = "ddtrace-1.4.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:e6ef83e0e8af7b291a79e8c848f754d113231bb64a5db259f54b7487e20d4b17"}, + {file = "ddtrace-1.4.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:6b8231c68414053b10b2ef1422cb0de4b8b3c22e027172bd8a07157874a43155"}, + {file = "ddtrace-1.4.1-cp37-cp37m-win32.whl", hash = "sha256:035ff434164f6c5380d799e40e67be1e93ee8fe4524e7e9ff80e71251267b180"}, + {file = "ddtrace-1.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:7aa470568ac9ef29c67ad9c5280a0f80d51280cc4045eb5b551ebf06558dc1ad"}, + {file = "ddtrace-1.4.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6a80b171d38680b9ab981ce430a800f8886915a6b23e332fa142f08ed9c66933"}, + {file = "ddtrace-1.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d79a0a6484cb725470c0ee833c501c0a5e0337ba7f26dbc30b0b1e61ad79eadc"}, + {file = "ddtrace-1.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0c2091372ce5effe98bc2b7fdb0a9f0a353a3ff25299102348b551634b0caf6"}, + {file = "ddtrace-1.4.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e9f6e3eee25e3e0e0db5898aa4081fd4bd08d7dd8b37c28dfc18ec032619f2c4"}, + {file = "ddtrace-1.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:237b53fb6fbac7ed1481bffcfb33006e8c7f6c17a496986c230b84504f8ec001"}, + {file = "ddtrace-1.4.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b206ace7fb92ca729ebbcee327b6696eb359f5884ca24663e018b491924df086"}, + {file = "ddtrace-1.4.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:04fab7a4f1cedbe6aac92dd4e4a7d54b066cb13b01c558ce4732413b4a01e734"}, + {file = "ddtrace-1.4.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b87f7108de4a58fd3fea14d49c093f0b0714075a1483679cd48c330f8165cd3b"}, + {file = "ddtrace-1.4.1-cp38-cp38-win32.whl", hash = "sha256:8c6876e700880ccdf877413416d7b68bd78300c6ac80c0d3f1b715c5d0a5a367"}, + {file = "ddtrace-1.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:6201399d9dd5b0a7faaef6552b4944c8a106ccff72c6109be9beaeb15438ad3d"}, + {file = "ddtrace-1.4.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:d2e9529975355e84684cc1a71d7535b3df11bcb0ee4db1a1a4ad67c914a4006e"}, + {file = "ddtrace-1.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:705f5c4228e2115c5d854cfe5362420d6ce49ff1698e4a75d9e36b35ac6adfd7"}, + {file = "ddtrace-1.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d2a3ba14691125eba7873c4894e70b297725e6f77bfdbb21231597dd457f9e3"}, + {file = "ddtrace-1.4.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2ebd8eef0fb0e58e3576e4830f4531c99211da60bf1bd7661abc626ab6abd88e"}, + {file = "ddtrace-1.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd2f1124f38d06b25289e65b20cafd794191a407ee0a23b9379d783a9f42c76f"}, + {file = "ddtrace-1.4.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:518e5101bdbb7ca5f0bef35ae1a2823a9b3cf6da1ca032c579419937ccee0fbc"}, + {file = "ddtrace-1.4.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:2ea08f50b21fc7823a74765ebad89731e4f594cae63c06d345734e78de986cfb"}, + {file = "ddtrace-1.4.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a262f8fc9bc037aefc4d2bb3fd17799e75bdd191a160026ecbb31eeb6e5fdf8c"}, + {file = "ddtrace-1.4.1-cp39-cp39-win32.whl", hash = "sha256:d30c71839cd8098114ce9bcb4a3a0d67a8fff610134f69427e9d0f2e8797670f"}, + {file = "ddtrace-1.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:901fc64e9c8ac651b40297686d62ed8aa17978c3e5b572dc52bb39d16da34475"}, + {file = "ddtrace-1.4.1.tar.gz", hash = "sha256:a6f2a6ea0e8e35fcf21949024e8c9f2b696c166f528b757817a8f6e2a6d61395"}, ] decorator = [ {file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"}, @@ -544,8 +542,8 @@ importlib-metadata = [ {file = "importlib_metadata-1.7.0.tar.gz", hash = "sha256:90bb658cdbbf6d1735b6341ce708fc7024a3e14e99ffdc5783edea9f9b077f83"}, ] jmespath = [ - {file = "jmespath-0.10.0-py2.py3-none-any.whl", hash = "sha256:cdf6525904cc597730141d61b36f2e4b8ecc257c420fa2f4549bac2c2d0cb72f"}, - {file = "jmespath-0.10.0.tar.gz", hash = "sha256:b85d0567b8666149a93172712e68920734333c0ce7e89b78b3e987f71e5ed4f9"}, + {file = "jmespath-1.0.1-py3-none-any.whl", hash = "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980"}, + {file = "jmespath-1.0.1.tar.gz", hash = "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe"}, ] mccabe = [ {file = "mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42"}, @@ -560,32 +558,20 @@ packaging = [ {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"}, ] protobuf = [ - {file = "protobuf-3.19.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f51d5a9f137f7a2cec2d326a74b6e3fc79d635d69ffe1b036d39fc7d75430d37"}, - {file = "protobuf-3.19.4-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:09297b7972da685ce269ec52af761743714996b4381c085205914c41fcab59fb"}, - {file = "protobuf-3.19.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:072fbc78d705d3edc7ccac58a62c4c8e0cec856987da7df8aca86e647be4e35c"}, - {file = "protobuf-3.19.4-cp310-cp310-win32.whl", hash = "sha256:7bb03bc2873a2842e5ebb4801f5c7ff1bfbdf426f85d0172f7644fcda0671ae0"}, - {file = "protobuf-3.19.4-cp310-cp310-win_amd64.whl", hash = "sha256:f358aa33e03b7a84e0d91270a4d4d8f5df6921abe99a377828839e8ed0c04e07"}, - {file = "protobuf-3.19.4-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:1c91ef4110fdd2c590effb5dca8fdbdcb3bf563eece99287019c4204f53d81a4"}, - {file = "protobuf-3.19.4-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c438268eebb8cf039552897d78f402d734a404f1360592fef55297285f7f953f"}, - {file = "protobuf-3.19.4-cp36-cp36m-win32.whl", hash = "sha256:835a9c949dc193953c319603b2961c5c8f4327957fe23d914ca80d982665e8ee"}, - {file = "protobuf-3.19.4-cp36-cp36m-win_amd64.whl", hash = "sha256:4276cdec4447bd5015453e41bdc0c0c1234eda08420b7c9a18b8d647add51e4b"}, - {file = "protobuf-3.19.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:6cbc312be5e71869d9d5ea25147cdf652a6781cf4d906497ca7690b7b9b5df13"}, - {file = "protobuf-3.19.4-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:54a1473077f3b616779ce31f477351a45b4fef8c9fd7892d6d87e287a38df368"}, - {file = "protobuf-3.19.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:435bb78b37fc386f9275a7035fe4fb1364484e38980d0dd91bc834a02c5ec909"}, - {file = "protobuf-3.19.4-cp37-cp37m-win32.whl", hash = "sha256:16f519de1313f1b7139ad70772e7db515b1420d208cb16c6d7858ea989fc64a9"}, - {file = "protobuf-3.19.4-cp37-cp37m-win_amd64.whl", hash = "sha256:cdc076c03381f5c1d9bb1abdcc5503d9ca8b53cf0a9d31a9f6754ec9e6c8af0f"}, - {file = "protobuf-3.19.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:69da7d39e39942bd52848438462674c463e23963a1fdaa84d88df7fbd7e749b2"}, - {file = "protobuf-3.19.4-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:48ed3877fa43e22bcacc852ca76d4775741f9709dd9575881a373bd3e85e54b2"}, - {file = "protobuf-3.19.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd95d1dfb9c4f4563e6093a9aa19d9c186bf98fa54da5252531cc0d3a07977e7"}, - {file = "protobuf-3.19.4-cp38-cp38-win32.whl", hash = "sha256:b38057450a0c566cbd04890a40edf916db890f2818e8682221611d78dc32ae26"}, - {file = "protobuf-3.19.4-cp38-cp38-win_amd64.whl", hash = "sha256:7ca7da9c339ca8890d66958f5462beabd611eca6c958691a8fe6eccbd1eb0c6e"}, - {file = "protobuf-3.19.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:36cecbabbda242915529b8ff364f2263cd4de7c46bbe361418b5ed859677ba58"}, - {file = "protobuf-3.19.4-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:c1068287025f8ea025103e37d62ffd63fec8e9e636246b89c341aeda8a67c934"}, - {file = "protobuf-3.19.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96bd766831596d6014ca88d86dc8fe0fb2e428c0b02432fd9db3943202bf8c5e"}, - {file = "protobuf-3.19.4-cp39-cp39-win32.whl", hash = "sha256:84123274d982b9e248a143dadd1b9815049f4477dc783bf84efe6250eb4b836a"}, - {file = "protobuf-3.19.4-cp39-cp39-win_amd64.whl", hash = "sha256:3112b58aac3bac9c8be2b60a9daf6b558ca3f7681c130dcdd788ade7c9ffbdca"}, - {file = "protobuf-3.19.4-py2.py3-none-any.whl", hash = "sha256:8961c3a78ebfcd000920c9060a262f082f29838682b1f7201889300c1fbe0616"}, - {file = "protobuf-3.19.4.tar.gz", hash = "sha256:9df0c10adf3e83015ced42a9a7bd64e13d06c4cf45c340d2c63020ea04499d0a"}, + {file = "protobuf-4.21.5-cp310-abi3-win32.whl", hash = "sha256:5310cbe761e87f0c1decce019d23f2101521d4dfff46034f8a12a53546036ec7"}, + {file = "protobuf-4.21.5-cp310-abi3-win_amd64.whl", hash = "sha256:e5c5a2886ae48d22a9d32fbb9b6636a089af3cd26b706750258ce1ca96cc0116"}, + {file = "protobuf-4.21.5-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:ee04f5823ed98bb9a8c3b1dc503c49515e0172650875c3f76e225b223793a1f2"}, + {file = "protobuf-4.21.5-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:b04484d6f42f48c57dd2737a72692f4c6987529cdd148fb5b8e5f616862a2e37"}, + {file = "protobuf-4.21.5-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:5e0b272217aad8971763960238c1a1e6a65d50ef7824e23300da97569a251c55"}, + {file = "protobuf-4.21.5-cp37-cp37m-win32.whl", hash = "sha256:5eb0724615e90075f1d763983e708e1cef08e66b1891d8b8b6c33bc3b2f1a02b"}, + {file = "protobuf-4.21.5-cp37-cp37m-win_amd64.whl", hash = "sha256:011c0f267e85f5d73750b6c25f0155d5db1e9443cd3590ab669a6221dd8fcdb0"}, + {file = "protobuf-4.21.5-cp38-cp38-win32.whl", hash = "sha256:7b6f22463e2d1053d03058b7b4ceca6e4ed4c14f8c286c32824df751137bf8e7"}, + {file = "protobuf-4.21.5-cp38-cp38-win_amd64.whl", hash = "sha256:b52e7a522911a40445a5f588bd5b5e584291bfc5545e09b7060685e4b2ff814f"}, + {file = "protobuf-4.21.5-cp39-cp39-win32.whl", hash = "sha256:a7faa62b183d6a928e3daffd06af843b4287d16ef6e40f331575ecd236a7974d"}, + {file = "protobuf-4.21.5-cp39-cp39-win_amd64.whl", hash = "sha256:5e0ce02418ef03d7657a420ae8fd6fec4995ac713a3cb09164e95f694dbcf085"}, + {file = "protobuf-4.21.5-py2.py3-none-any.whl", hash = "sha256:bf711b451212dc5b0fa45ae7dada07d8e71a4b0ff0bc8e4783ee145f47ac4f82"}, + {file = "protobuf-4.21.5-py3-none-any.whl", hash = "sha256:3ec6f5b37935406bb9df9b277e79f8ed81d697146e07ef2ba8a5a272fb24b2c9"}, + {file = "protobuf-4.21.5.tar.gz", hash = "sha256:eb1106e87e095628e96884a877a51cdb90087106ee693925ec0a300468a9be3a"}, ] pycodestyle = [ {file = "pycodestyle-2.7.0-py2.py3-none-any.whl", hash = "sha256:514f76d918fcc0b55c6680472f0a37970994e07bbb80725808c17089be302068"}, @@ -596,20 +582,20 @@ pyflakes = [ {file = "pyflakes-2.3.1.tar.gz", hash = "sha256:f5bc8ecabc05bb9d291eb5203d6810b49040f6ff446a756326104746cc00c1db"}, ] pyparsing = [ - {file = "pyparsing-3.0.7-py3-none-any.whl", hash = "sha256:a6c06a88f252e6c322f65faf8f418b16213b51bdfaece0524c1c1bc30c63c484"}, - {file = "pyparsing-3.0.7.tar.gz", hash = "sha256:18ee9022775d270c55187733956460083db60b37d0d0fb357445f3094eed3eea"}, + {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"}, + {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"}, ] python-dateutil = [ {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, ] requests = [ - {file = "requests-2.27.1-py2.py3-none-any.whl", hash = "sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d"}, - {file = "requests-2.27.1.tar.gz", hash = "sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61"}, + {file = "requests-2.28.1-py3-none-any.whl", hash = "sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349"}, + {file = "requests-2.28.1.tar.gz", hash = "sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983"}, ] s3transfer = [ - {file = "s3transfer-0.5.2-py3-none-any.whl", hash = "sha256:7a6f4c4d1fdb9a2b640244008e142cbc2cd3ae34b386584ef044dd0f27101971"}, - {file = "s3transfer-0.5.2.tar.gz", hash = "sha256:95c58c194ce657a5f4fb0b9e60a84968c808888aed628cd98ab8771fe1db98ed"}, + {file = "s3transfer-0.6.0-py3-none-any.whl", hash = "sha256:06176b74f3a15f61f1b4f25a1fc29a4429040b7647133a463da8fa5bd28d5ecd"}, + {file = "s3transfer-0.6.0.tar.gz", hash = "sha256:2ed07d3866f523cc561bf4a00fc5535827981b117dd7876f036b0c1aca42c947"}, ] six = [ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, @@ -620,12 +606,12 @@ tenacity = [ {file = "tenacity-8.0.1.tar.gz", hash = "sha256:43242a20e3e73291a28bcbcacfd6e000b02d3857a9a9fff56b297a27afdc932f"}, ] typing-extensions = [ - {file = "typing_extensions-4.1.1-py3-none-any.whl", hash = "sha256:21c85e0fe4b9a155d0799430b0ad741cdce7e359660ccbd8b530613e8df88ce2"}, - {file = "typing_extensions-4.1.1.tar.gz", hash = "sha256:1a9462dcc3347a79b1f1c0271fbe79e844580bb598bafa1ed208b94da3cdcd42"}, + {file = "typing_extensions-4.3.0-py3-none-any.whl", hash = "sha256:25642c956049920a5aa49edcdd6ab1e06d7e5d467fc00e0506c44ac86fbfca02"}, + {file = "typing_extensions-4.3.0.tar.gz", hash = "sha256:e6d2677a32f47fc7eb2795db1dd15c1f34eff616bcaf2cfb5e997f854fa1c4a6"}, ] urllib3 = [ - {file = "urllib3-1.26.9-py2.py3-none-any.whl", hash = "sha256:44ece4d53fb1706f667c9bd1c648f5469a2ec925fcf3a776667042d645472c14"}, - {file = "urllib3-1.26.9.tar.gz", hash = "sha256:aabaf16477806a5e1dd19aa41f8c2b7950dd3c746362d7e3223dbe6de6ac448e"}, + {file = "urllib3-1.26.12-py2.py3-none-any.whl", hash = "sha256:b930dd878d5a8afb066a637fbb35144fe7901e3b209d1cd4f524bd0e9deee997"}, + {file = "urllib3-1.26.12.tar.gz", hash = "sha256:3fa96cf423e6987997fc326ae8df396db2a8b7c667747d47ddd8ecba91f4a74e"}, ] wrapt = [ {file = "wrapt-1.14.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:1b376b3f4896e7930f1f772ac4b064ac12598d1c38d04907e696cc4d794b43d3"}, @@ -694,6 +680,6 @@ wrapt = [ {file = "wrapt-1.14.1.tar.gz", hash = "sha256:380a85cf89e0e69b7cfbe2ea9f765f004ff419f34194018a6827ac0e3edfed4d"}, ] zipp = [ - {file = "zipp-3.6.0-py3-none-any.whl", hash = "sha256:9fe5ea21568a0a70e50f273397638d39b03353731e6cbbb3fd8502a33fec40bc"}, - {file = "zipp-3.6.0.tar.gz", hash = "sha256:71c644c5369f4a6e07636f0aa966270449561fcea2e3d6747b8d23efaa9d7832"}, + {file = "zipp-3.8.1-py3-none-any.whl", hash = "sha256:47c40d7fe183a6f21403a199b3e4192cca5774656965b0a4988ad2f8feb5f009"}, + {file = "zipp-3.8.1.tar.gz", hash = "sha256:05b45f1ee8f807d0cc928485ca40a07cb491cf092ff587c0df9cb1fd154848d2"}, ] From 56825de17c293e398fa3971c62748a11343f651f Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Thu, 25 Aug 2022 09:56:58 -0400 Subject: [PATCH 012/403] feat: Use dd-trace-141 (#246) --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 77d2db5e8..d4f99d67a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -25,7 +25,7 @@ classifiers = [ python = ">=3.7.0,<4" datadog = "^0.41" wrapt = "^1.11.2" -ddtrace = "^1.2.1" +ddtrace = "^1.4.1" importlib_metadata = {version = "^1.0", python = "<3.8"} boto3 = { version = "^1.10.33", optional = true } typing_extensions = {version = "^4.0", python = "<3.8"} From 21bc072e37f4ba739f363acc0ca07508dac6beb3 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Thu, 25 Aug 2022 11:49:35 -0400 Subject: [PATCH 013/403] bump to 4.62.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index d4f99d67a..f7ac7b0a3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "3.60.0" +version = "4.62.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 17cd4b6dc39933accc7f3f071ca0084cf13bae73 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Thu, 25 Aug 2022 12:52:20 -0400 Subject: [PATCH 014/403] docs: Update profiler readme information --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 957246eb5..9ebcdcde7 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,9 @@ You can also open an issue for a feature request. ## Lambda Profiling Beta -Datadog's Continuous Profiler is now available in beta for Python. This optional feature is enabled by setting the `DD_PROFILING_ENABLED` environment variable to `True`. During the beta period, profiling is available at no cost. +Datadog's [Continuous Profiler](https://www.datadoghq.com/product/code-profiling/) is now available in beta for Python in version 4.62.0 and layer version 62 and above. This optional feature is enabled by setting the `DD_PROFILING_ENABLED` environment variable to `true`. During the beta period, profiling is available at no additional cost. + +The Continuous Profiler works by spawning a thread which periodically wakes up and takes a snapshot of the CPU and Heap of all running python code. This can include the profiler itself. If you want the Profiler to ignore itself, set `DD_PROFILING_IGNORE_PROFILER` to `true`. ## Major Version Notes From cb642784e0288f9405aaf3db50a510987cd97084 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Tue, 27 Sep 2022 15:36:38 -0400 Subject: [PATCH 015/403] update integration test log snapshot files (#252) --- scripts/run_integration_tests.sh | 2 + .../snapshots/logs/async-metrics_python37.log | 54 ++++++++----- .../snapshots/logs/async-metrics_python38.log | 54 ++++++++----- .../snapshots/logs/async-metrics_python39.log | 54 ++++++++----- .../snapshots/logs/sync-metrics_python37.log | 81 ++++++++++++------- .../snapshots/logs/sync-metrics_python38.log | 81 ++++++++++++------- .../snapshots/logs/sync-metrics_python39.log | 81 ++++++++++++------- 7 files changed, 272 insertions(+), 135 deletions(-) diff --git a/scripts/run_integration_tests.sh b/scripts/run_integration_tests.sh index 895a9e502..e62eefd37 100755 --- a/scripts/run_integration_tests.sh +++ b/scripts/run_integration_tests.sh @@ -194,11 +194,13 @@ for handler_name in "${LAMBDA_HANDLERS[@]}"; do # Normalize package version so that these snapshots aren't broken on version bumps sed -E "s/(dd_lambda_layer:datadog-python[0-9]+_)[0-9]+\.[0-9]+\.[0-9]+/\1X\.X\.X/g" | sed -E "s/(datadog_lambda:v)([0-9]+\.[0-9]+\.[0-9])/\1XX/g" | + sed -E "s/(datadogpy\/)([0-9]+\.[0-9]+\.[0-9])/\1XX/g" | sed -E "s/(python )([0-9]\.[0-9]+\.[0-9]+)/\1XX/g" | # Strip out run ID (from function name, resource, etc.) sed -E "s/${!run_id}/XXXX/g" | # Normalize python-requests version sed -E "s/(User-Agent:python-requests\/)[0-9]+\.[0-9]+\.[0-9]+/\1X\.X\.X/g" | + sed -E "s/(\"http.useragent\"\: \"python-requests\/)[0-9]+\.[0-9]+\.[0-9]+/\1X\.X\.X/g" | # Strip out trace/span/parent/timestamps sed -E "s/(\"trace_id\"\: \")[A-Z0-9\.\-]+/\1XXXX/g" | sed -E "s/(\"span_id\"\: \")[A-Z0-9\.\-]+/\1XXXX/g" | diff --git a/tests/integration/snapshots/logs/async-metrics_python37.log b/tests/integration/snapshots/logs/async-metrics_python37.log index 206525fba..602708d8d 100644 --- a/tests/integration/snapshots/logs/async-metrics_python37.log +++ b/tests/integration/snapshots/logs/async-metrics_python37.log @@ -122,7 +122,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -143,7 +144,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -273,7 +275,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -294,7 +297,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -417,7 +421,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -438,7 +443,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -576,7 +582,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -597,7 +604,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -727,7 +735,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -748,7 +757,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -875,7 +885,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -896,7 +907,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1024,7 +1036,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1045,7 +1058,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1172,7 +1186,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1193,7 +1208,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1328,7 +1344,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1349,7 +1366,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 diff --git a/tests/integration/snapshots/logs/async-metrics_python38.log b/tests/integration/snapshots/logs/async-metrics_python38.log index f85c9bdf1..0232331c3 100644 --- a/tests/integration/snapshots/logs/async-metrics_python38.log +++ b/tests/integration/snapshots/logs/async-metrics_python38.log @@ -122,7 +122,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -143,7 +144,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -273,7 +275,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -294,7 +297,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -417,7 +421,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -438,7 +443,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -576,7 +582,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -597,7 +604,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -727,7 +735,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -748,7 +757,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -875,7 +885,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -896,7 +907,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1024,7 +1036,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1045,7 +1058,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1172,7 +1186,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1193,7 +1208,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1328,7 +1344,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1349,7 +1366,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 diff --git a/tests/integration/snapshots/logs/async-metrics_python39.log b/tests/integration/snapshots/logs/async-metrics_python39.log index 5b0708983..cae1234c5 100644 --- a/tests/integration/snapshots/logs/async-metrics_python39.log +++ b/tests/integration/snapshots/logs/async-metrics_python39.log @@ -122,7 +122,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -143,7 +144,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -273,7 +275,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -294,7 +297,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -417,7 +421,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -438,7 +443,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -576,7 +582,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -597,7 +604,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -727,7 +735,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -748,7 +757,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -875,7 +885,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -896,7 +907,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1024,7 +1036,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1045,7 +1058,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1172,7 +1186,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1193,7 +1208,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1328,7 +1344,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1349,7 +1366,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 diff --git a/tests/integration/snapshots/logs/sync-metrics_python37.log b/tests/integration/snapshots/logs/sync-metrics_python37.log index 423e6860a..d1e74749e 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python37.log +++ b/tests/integration/snapshots/logs/sync-metrics_python37.log @@ -102,7 +102,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -123,7 +124,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -133,7 +135,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -153,6 +155,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0" }, "metrics": { @@ -267,7 +270,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -288,7 +292,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -298,7 +303,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -318,6 +323,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0" }, "metrics": { @@ -425,7 +431,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -446,7 +453,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -456,7 +464,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -476,6 +484,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0" }, "metrics": { @@ -598,7 +607,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -619,7 +629,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -629,7 +640,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -649,6 +660,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0" }, "metrics": { @@ -763,7 +775,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -784,7 +797,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -794,7 +808,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -814,6 +828,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0" }, "metrics": { @@ -925,7 +940,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -946,7 +962,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -956,7 +973,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -976,6 +993,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0" }, "metrics": { @@ -1088,7 +1106,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1109,7 +1128,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1119,7 +1139,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -1139,6 +1159,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0" }, "metrics": { @@ -1250,7 +1271,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1271,7 +1293,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1281,7 +1304,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -1301,6 +1324,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0" }, "metrics": { @@ -1420,7 +1444,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1441,7 +1466,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1451,7 +1477,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -1471,6 +1497,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0" }, "metrics": { diff --git a/tests/integration/snapshots/logs/sync-metrics_python38.log b/tests/integration/snapshots/logs/sync-metrics_python38.log index cc9c3d088..b611cdb99 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python38.log +++ b/tests/integration/snapshots/logs/sync-metrics_python38.log @@ -102,7 +102,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -123,7 +124,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -133,7 +135,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -153,6 +155,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0" }, "metrics": { @@ -267,7 +270,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -288,7 +292,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -298,7 +303,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -318,6 +323,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0" }, "metrics": { @@ -425,7 +431,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -446,7 +453,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -456,7 +464,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -476,6 +484,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0" }, "metrics": { @@ -598,7 +607,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -619,7 +629,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -629,7 +640,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -649,6 +660,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0" }, "metrics": { @@ -763,7 +775,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -784,7 +797,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -794,7 +808,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -814,6 +828,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0" }, "metrics": { @@ -925,7 +940,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -946,7 +962,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -956,7 +973,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -976,6 +993,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0" }, "metrics": { @@ -1088,7 +1106,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1109,7 +1128,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1119,7 +1139,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -1139,6 +1159,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0" }, "metrics": { @@ -1250,7 +1271,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1271,7 +1293,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1281,7 +1304,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -1301,6 +1324,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0" }, "metrics": { @@ -1420,7 +1444,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1441,7 +1466,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1451,7 +1477,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -1471,6 +1497,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0" }, "metrics": { diff --git a/tests/integration/snapshots/logs/sync-metrics_python39.log b/tests/integration/snapshots/logs/sync-metrics_python39.log index 89ee22fd9..b202a4fdd 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -102,7 +102,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -123,7 +124,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -133,7 +135,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -153,6 +155,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0" }, "metrics": { @@ -267,7 +270,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -288,7 +292,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -298,7 +303,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -318,6 +323,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0" }, "metrics": { @@ -425,7 +431,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -446,7 +453,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -456,7 +464,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -476,6 +484,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0" }, "metrics": { @@ -598,7 +607,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -619,7 +629,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -629,7 +640,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -649,6 +660,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0" }, "metrics": { @@ -763,7 +775,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -784,7 +797,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -794,7 +808,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -814,6 +828,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0" }, "metrics": { @@ -925,7 +940,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -946,7 +962,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -956,7 +973,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -976,6 +993,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0" }, "metrics": { @@ -1088,7 +1106,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1109,7 +1128,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1119,7 +1139,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -1139,6 +1159,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0" }, "metrics": { @@ -1250,7 +1271,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1271,7 +1293,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1281,7 +1304,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -1301,6 +1324,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0" }, "metrics": { @@ -1420,7 +1444,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1441,7 +1466,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "http.status_code": "200" + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1451,7 +1477,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/0.41.0 (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -1471,6 +1497,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0" }, "metrics": { From bec2606fd3dea0e7912d23a311888919cba7c8a8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 28 Sep 2022 14:42:29 -0400 Subject: [PATCH 016/403] Bump protobuf from 4.21.5 to 4.21.6 (#251) Bumps [protobuf](https://github.com/protocolbuffers/protobuf) from 4.21.5 to 4.21.6. - [Release notes](https://github.com/protocolbuffers/protobuf/releases) - [Changelog](https://github.com/protocolbuffers/protobuf/blob/main/generate_changelog.py) - [Commits](https://github.com/protocolbuffers/protobuf/commits) --- updated-dependencies: - dependency-name: protobuf dependency-type: indirect ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/poetry.lock b/poetry.lock index 6512193de..1e6f9891b 100644 --- a/poetry.lock +++ b/poetry.lock @@ -117,8 +117,8 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" [package.dependencies] attrs = ">=19.2.0" bytecode = [ - {version = ">=0.13.0,<0.14.0", markers = "python_version == \"3.7\""}, {version = "*", markers = "python_version >= \"3.8\""}, + {version = ">=0.13.0,<0.14.0", markers = "python_version == \"3.7\""}, ] ddsketch = ">=2.0.1" importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} @@ -232,7 +232,7 @@ pyparsing = ">=2.0.2,<3.0.5 || >3.0.5" [[package]] name = "protobuf" -version = "4.21.5" +version = "4.21.6" description = "" category = "main" optional = false @@ -374,7 +374,7 @@ dev = ["boto3", "requests", "nose2", "flake8", "httpretty"] [metadata] lock-version = "1.1" python-versions = ">=3.7.0,<4" -content-hash = "17c304edf3fd51cda8afdc56af6a4e3c949dbad836204fe49f0a825d65d5ae6b" +content-hash = "6ff67671b82fd2457eb9bf9a25820c47461e034e5f2f1231712038cb0973ba84" [metadata.files] attrs = [ @@ -558,20 +558,20 @@ packaging = [ {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"}, ] protobuf = [ - {file = "protobuf-4.21.5-cp310-abi3-win32.whl", hash = "sha256:5310cbe761e87f0c1decce019d23f2101521d4dfff46034f8a12a53546036ec7"}, - {file = "protobuf-4.21.5-cp310-abi3-win_amd64.whl", hash = "sha256:e5c5a2886ae48d22a9d32fbb9b6636a089af3cd26b706750258ce1ca96cc0116"}, - {file = "protobuf-4.21.5-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:ee04f5823ed98bb9a8c3b1dc503c49515e0172650875c3f76e225b223793a1f2"}, - {file = "protobuf-4.21.5-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:b04484d6f42f48c57dd2737a72692f4c6987529cdd148fb5b8e5f616862a2e37"}, - {file = "protobuf-4.21.5-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:5e0b272217aad8971763960238c1a1e6a65d50ef7824e23300da97569a251c55"}, - {file = "protobuf-4.21.5-cp37-cp37m-win32.whl", hash = "sha256:5eb0724615e90075f1d763983e708e1cef08e66b1891d8b8b6c33bc3b2f1a02b"}, - {file = "protobuf-4.21.5-cp37-cp37m-win_amd64.whl", hash = "sha256:011c0f267e85f5d73750b6c25f0155d5db1e9443cd3590ab669a6221dd8fcdb0"}, - {file = "protobuf-4.21.5-cp38-cp38-win32.whl", hash = "sha256:7b6f22463e2d1053d03058b7b4ceca6e4ed4c14f8c286c32824df751137bf8e7"}, - {file = "protobuf-4.21.5-cp38-cp38-win_amd64.whl", hash = "sha256:b52e7a522911a40445a5f588bd5b5e584291bfc5545e09b7060685e4b2ff814f"}, - {file = "protobuf-4.21.5-cp39-cp39-win32.whl", hash = "sha256:a7faa62b183d6a928e3daffd06af843b4287d16ef6e40f331575ecd236a7974d"}, - {file = "protobuf-4.21.5-cp39-cp39-win_amd64.whl", hash = "sha256:5e0ce02418ef03d7657a420ae8fd6fec4995ac713a3cb09164e95f694dbcf085"}, - {file = "protobuf-4.21.5-py2.py3-none-any.whl", hash = "sha256:bf711b451212dc5b0fa45ae7dada07d8e71a4b0ff0bc8e4783ee145f47ac4f82"}, - {file = "protobuf-4.21.5-py3-none-any.whl", hash = "sha256:3ec6f5b37935406bb9df9b277e79f8ed81d697146e07ef2ba8a5a272fb24b2c9"}, - {file = "protobuf-4.21.5.tar.gz", hash = "sha256:eb1106e87e095628e96884a877a51cdb90087106ee693925ec0a300468a9be3a"}, + {file = "protobuf-4.21.6-cp310-abi3-win32.whl", hash = "sha256:49f88d56a9180dbb7f6199c920f5bb5c1dd0172f672983bb281298d57c2ac8eb"}, + {file = "protobuf-4.21.6-cp310-abi3-win_amd64.whl", hash = "sha256:7a6cc8842257265bdfd6b74d088b829e44bcac3cca234c5fdd6052730017b9ea"}, + {file = "protobuf-4.21.6-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:ba596b9ffb85c909fcfe1b1a23136224ed678af3faf9912d3fa483d5f9813c4e"}, + {file = "protobuf-4.21.6-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:4143513c766db85b9d7c18dbf8339673c8a290131b2a0fe73855ab20770f72b0"}, + {file = "protobuf-4.21.6-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:b6cea204865595a92a7b240e4b65bcaaca3ad5d2ce25d9db3756eba06041138e"}, + {file = "protobuf-4.21.6-cp37-cp37m-win32.whl", hash = "sha256:9666da97129138585b26afcb63ad4887f602e169cafe754a8258541c553b8b5d"}, + {file = "protobuf-4.21.6-cp37-cp37m-win_amd64.whl", hash = "sha256:308173d3e5a3528787bb8c93abea81d5a950bdce62840d9760effc84127fb39c"}, + {file = "protobuf-4.21.6-cp38-cp38-win32.whl", hash = "sha256:aa29113ec901281f29d9d27b01193407a98aa9658b8a777b0325e6d97149f5ce"}, + {file = "protobuf-4.21.6-cp38-cp38-win_amd64.whl", hash = "sha256:8f9e60f7d44592c66e7b332b6a7b4b6e8d8b889393c79dbc3a91f815118f8eac"}, + {file = "protobuf-4.21.6-cp39-cp39-win32.whl", hash = "sha256:80e6540381080715fddac12690ee42d087d0d17395f8d0078dfd6f1181e7be4c"}, + {file = "protobuf-4.21.6-cp39-cp39-win_amd64.whl", hash = "sha256:77b355c8604fe285536155286b28b0c4cbc57cf81b08d8357bf34829ea982860"}, + {file = "protobuf-4.21.6-py2.py3-none-any.whl", hash = "sha256:07a0bb9cc6114f16a39c866dc28b6e3d96fa4ffb9cc1033057412547e6e75cb9"}, + {file = "protobuf-4.21.6-py3-none-any.whl", hash = "sha256:c7c864148a237f058c739ae7a05a2b403c0dfa4ce7d1f3e5213f352ad52d57c6"}, + {file = "protobuf-4.21.6.tar.gz", hash = "sha256:6b1040a5661cd5f6e610cbca9cfaa2a17d60e2bb545309bc1b278bb05be44bdd"}, ] pycodestyle = [ {file = "pycodestyle-2.7.0-py2.py3-none-any.whl", hash = "sha256:514f76d918fcc0b55c6680472f0a37970994e07bbb80725808c17089be302068"}, From f6ba2297b9481037573faa7750705574b2f05bbd Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Thu, 13 Oct 2022 07:42:37 -0700 Subject: [PATCH 017/403] Do not raise exception If "domainName" is not present. (#254) --- datadog_lambda/tracing.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index d0136e931..4db7db981 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -625,7 +625,7 @@ def create_inferred_span_from_api_gateway_websocket_event(event, context): def create_inferred_span_from_api_gateway_event(event, context): request_context = event.get("requestContext") - domain = request_context.get("domainName") + domain = request_context.get("domainName", "") method = event.get("httpMethod") path = event.get("path") resource = "{0} {1}".format(method, path) From 9e14491283d7371f26aad8ebd210d3864664c1c8 Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Thu, 13 Oct 2022 10:06:58 -0700 Subject: [PATCH 018/403] Bump version to 4.63.0 (#255) --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index f7ac7b0a3..9b5e925da 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "4.62.0" +version = "4.63.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 0b335003d1d7f85531b0a17533119e3d3ba012d4 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Thu, 27 Oct 2022 10:47:18 -0400 Subject: [PATCH 019/403] Add update-snapshots github action (#257) * Add update-snapshots github action --- .github/workflows/update-snapshots.yml | 66 ++++++++++++++++++++++++++ scripts/run_integration_tests.sh | 6 ++- 2 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/update-snapshots.yml diff --git a/.github/workflows/update-snapshots.yml b/.github/workflows/update-snapshots.yml new file mode 100644 index 000000000..ed7097aed --- /dev/null +++ b/.github/workflows/update-snapshots.yml @@ -0,0 +1,66 @@ +name: update-snapshots + +on: + schedule: + - cron: "0 15 * * *" # every day 11am EST + +jobs: + check: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Set up Node 14 + uses: actions/setup-node@v3 + with: + node-version: 14 + + - name: Cache Node modules + id: cache-node-modules + uses: actions/cache@v3 + with: + path: "**/node_modules" + key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }} + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: 3.9 + + - name: Install Python dependencies + run: | + pip install virtualenv + virtualenv venv + source venv/bin/activate + pip install .[dev] + + - name: Install Serverless Framework + run: sudo yarn global add serverless@^3.7.0 --prefix /usr/local + - name: Install Crossbuild Deps + run: | + sudo apt-get update --allow-releaseinfo-change --fix-missing + sudo apt install -y qemu-user-static binfmt-support + + - name: Install dependencies + if: steps.cache-node-modules.outputs.cache-hit != 'true' + working-directory: tests/integration + run: yarn install + + - name: Update Snapshots + env: + UPDATE_SNAPSHOTS: true + BUILD_LAYERS: true + DD_API_KEY: ${{ secrets.DD_API_KEY }} + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + run: ./scripts/run_integration_tests.sh + + - name: Create Pull Request + uses: peter-evans/create-pull-request@v3 + with: + commit-message: update snapshots + title: Update Snapshots + body: | + Autogenerated PR to update integration test snapshots. Make sure no difference when run in local environment before merging. + branch: update-snapshots diff --git a/scripts/run_integration_tests.sh b/scripts/run_integration_tests.sh index e62eefd37..f23adcf68 100755 --- a/scripts/run_integration_tests.sh +++ b/scripts/run_integration_tests.sh @@ -61,7 +61,11 @@ fi if [ -n "$BUILD_LAYERS" ]; then echo "Building layers that will be deployed with our test functions" - PYTHON_VERSION=${!BUILD_LAYER_VERSION} source $scripts_dir/build_layers.sh + if [ -n "$BUILD_LAYER_VERSION" ]; then + PYTHON_VERSION=${!BUILD_LAYER_VERSION} source $scripts_dir/build_layers.sh + else + source $scripts_dir/build_layers.sh + fi else echo "Not building layers, ensure they've already been built or re-run with 'BUILD_LAYERS=true DD_API_KEY=XXXX ./scripts/run_integration_tests.sh'" fi From 549f7f816fbca7cc3bb43cc4bdaba2a9c9841236 Mon Sep 17 00:00:00 2001 From: Stephen Firrincieli Date: Wed, 2 Nov 2022 11:27:19 -0400 Subject: [PATCH 020/403] Fix error when APIGateway headers are None (#259) * Don't error when headers are None * Fix formatting of file --- datadog_lambda/tracing.py | 2 +- tests/test_tracing.py | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 4db7db981..1e63a78bd 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -174,7 +174,7 @@ def extract_context_from_http_event_or_context(event, lambda_context): Falls back to lambda context if no trace data is found in the `headers` """ - headers = event.get("headers", {}) + headers = event.get("headers", {}) or {} lowercase_headers = {k.lower(): v for k, v in headers.items()} trace_id = lowercase_headers.get(TraceHeader.TRACE_ID) diff --git a/tests/test_tracing.py b/tests/test_tracing.py index c578de070..7f5ba4d31 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -1237,3 +1237,11 @@ def test_mark_trace_as_error_for_5xx_responses_sends_error_metric_and_set_error_ ) mock_submit_errors_metric.assert_called_once() self.assertEqual(1, mock_span.error) + + def test_no_error_with_nonetype_headers(self): + lambda_ctx = get_mock_context() + ctx, source = extract_dd_trace_context( + {"headers": None}, + lambda_ctx, + ) + self.assertEqual(ctx, None) From 4528c7d28f0440d8dca5381b9ce38e0e00d6709f Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Mon, 7 Nov 2022 10:46:25 -0800 Subject: [PATCH 021/403] Increase version to 4.64.0. (#264) * Increase version to 4.64.0. * Update snapshots. --- pyproject.toml | 2 +- .../snapshots/logs/sync-metrics_python37.log | 18 ++++++++--------- .../snapshots/logs/sync-metrics_python38.log | 18 ++++++++--------- .../snapshots/logs/sync-metrics_python39.log | 20 +++++++++---------- 4 files changed, 29 insertions(+), 29 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 9b5e925da..597bbd75f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "4.63.0" +version = "4.64.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" diff --git a/tests/integration/snapshots/logs/sync-metrics_python37.log b/tests/integration/snapshots/logs/sync-metrics_python37.log index d1e74749e..b1d4bd218 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python37.log +++ b/tests/integration/snapshots/logs/sync-metrics_python37.log @@ -153,7 +153,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "runtime-id": "XXXX", "_dd.origin": "lambda", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0" @@ -321,7 +321,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "runtime-id": "XXXX", "_dd.origin": "lambda", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0" @@ -482,7 +482,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "runtime-id": "XXXX", "_dd.origin": "lambda", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0" @@ -658,7 +658,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "runtime-id": "XXXX", "_dd.origin": "lambda", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0" @@ -826,7 +826,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "runtime-id": "XXXX", "_dd.origin": "lambda", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0" @@ -991,7 +991,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "runtime-id": "XXXX", "_dd.origin": "lambda", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0" @@ -1157,7 +1157,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "runtime-id": "XXXX", "_dd.origin": "lambda", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0" @@ -1322,7 +1322,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "runtime-id": "XXXX", "_dd.origin": "lambda", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0" @@ -1495,7 +1495,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "runtime-id": "XXXX", "_dd.origin": "lambda", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0" diff --git a/tests/integration/snapshots/logs/sync-metrics_python38.log b/tests/integration/snapshots/logs/sync-metrics_python38.log index b611cdb99..db94f2d6d 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python38.log +++ b/tests/integration/snapshots/logs/sync-metrics_python38.log @@ -153,7 +153,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "runtime-id": "XXXX", "_dd.origin": "lambda", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0" @@ -321,7 +321,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "runtime-id": "XXXX", "_dd.origin": "lambda", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0" @@ -482,7 +482,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "runtime-id": "XXXX", "_dd.origin": "lambda", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0" @@ -658,7 +658,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "runtime-id": "XXXX", "_dd.origin": "lambda", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0" @@ -826,7 +826,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "runtime-id": "XXXX", "_dd.origin": "lambda", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0" @@ -991,7 +991,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "runtime-id": "XXXX", "_dd.origin": "lambda", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0" @@ -1157,7 +1157,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "runtime-id": "XXXX", "_dd.origin": "lambda", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0" @@ -1322,7 +1322,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "runtime-id": "XXXX", "_dd.origin": "lambda", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0" @@ -1495,7 +1495,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "runtime-id": "XXXX", "_dd.origin": "lambda", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0" diff --git a/tests/integration/snapshots/logs/sync-metrics_python39.log b/tests/integration/snapshots/logs/sync-metrics_python39.log index b202a4fdd..d4f3c9c72 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -153,7 +153,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "runtime-id": "XXXX", "_dd.origin": "lambda", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0" @@ -321,7 +321,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "runtime-id": "XXXX", "_dd.origin": "lambda", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0" @@ -482,7 +482,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "runtime-id": "XXXX", "_dd.origin": "lambda", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0" @@ -658,7 +658,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "runtime-id": "XXXX", "_dd.origin": "lambda", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0" @@ -826,7 +826,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "runtime-id": "XXXX", "_dd.origin": "lambda", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0" @@ -991,7 +991,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "runtime-id": "XXXX", "_dd.origin": "lambda", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0" @@ -1157,7 +1157,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "runtime-id": "XXXX", "_dd.origin": "lambda", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0" @@ -1322,7 +1322,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "runtime-id": "XXXX", "_dd.origin": "lambda", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0" @@ -1478,6 +1478,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] } HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +END Duration: XXXX ms Memory Used: XXXX MB { "traces": [ [ @@ -1495,7 +1496,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "runtime-id": "XXXX", "_dd.origin": "lambda", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0" @@ -1512,4 +1513,3 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head ] ] } -END Duration: XXXX ms Memory Used: XXXX MB From 79eb36ec0f2d431caff9f5a1edb771547a463f2d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 9 Nov 2022 14:58:05 -0500 Subject: [PATCH 022/403] update snapshots (#263) Co-authored-by: joeyzhao2018 --- tests/integration/snapshots/logs/sync-metrics_python39.log | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/integration/snapshots/logs/sync-metrics_python39.log b/tests/integration/snapshots/logs/sync-metrics_python39.log index d4f3c9c72..fb7dd5b72 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -1478,7 +1478,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] } HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} -END Duration: XXXX ms Memory Used: XXXX MB { "traces": [ [ @@ -1513,3 +1512,4 @@ END Duration: XXXX ms Memory Used: XXXX MB ] ] } +END Duration: XXXX ms Memory Used: XXXX MB From 33efc63639abe6cacbf1f4e6237985f4e883a09d Mon Sep 17 00:00:00 2001 From: Ivan Topolcic Date: Mon, 14 Nov 2022 10:41:11 -0500 Subject: [PATCH 023/403] SLS-2757: Modify PyPI to use token for publishing (#265) Modify PyPI to use token for publishing --- scripts/publish_prod.sh | 2 +- scripts/pypi.sh | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/scripts/publish_prod.sh b/scripts/publish_prod.sh index 845cddb3e..fdc4c9d6c 100755 --- a/scripts/publish_prod.sh +++ b/scripts/publish_prod.sh @@ -37,7 +37,7 @@ AWS_PROFILE=govcloud-us1-fed-human-engineering aws sts get-caller-identity aws-vault exec prod-engineering -- aws sts get-caller-identity # Ensure pypi registry access -read -p "Do you have the PyPi login credentials for datadog account (y/n)?" CONT +read -p "Do you have access to PyPI (y/n)?" CONT if [ "$CONT" != "y" ]; then echo "Exiting" exit 1 diff --git a/scripts/pypi.sh b/scripts/pypi.sh index 9d8592c0e..6abe685fc 100755 --- a/scripts/pypi.sh +++ b/scripts/pypi.sh @@ -14,6 +14,9 @@ if [ -d "dist" ]; then rm -rf dist; fi -# Publish to pypi -poetry publish --build +echo "Please enter the PyPI token (password) for datadog-lambda-python" +echo "This can be found in 1password under the shared-serverless vault" +read -p "Token name: " TOKEN +# Publish to pypi +poetry publish --build --username __token__ --password $TOKEN From 0a070a6327cf7fab918721bdb9696cdd879c8c6c Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Tue, 15 Nov 2022 16:05:37 -0500 Subject: [PATCH 024/403] authorizer trace context (#256) * authorizer spans checkin * authorizer spans checkin * fix integration tests * reformatting * tests reformat * add httpapi case * formatting fixes * fixing http api caching cases * support websocket cases * reformat tests * encode authorizer injected data and other fixes * format fixes * fix token-type authorizer span's startTime * more precise on the parent span finish time * fix the authorizer span's start time * fix httpapi finish time case * fix .vscode/settings.json * finish_time accuracey update to nanosecond * test_no_error_with_nonetype_headers fix * fix test_no_error_with_nonetype_headers * add decode_authorizer_context option and no zero-length span for httpapi case * format and unittest fix * lint tests * small refactor and reformat * add an unittest case for the encoding part and fix some bugs * Addressing comments. --- datadog_lambda/constants.py | 12 + datadog_lambda/tracing.py | 254 ++++++++++++++++-- datadog_lambda/wrapper.py | 68 ++++- ...horizer-request-api-gateway-v1-cached.json | 93 +++++++ .../authorizer-request-api-gateway-v1.json | 93 +++++++ ...horizer-request-api-gateway-v2-cached.json | 47 ++++ .../authorizer-request-api-gateway-v2.json | 47 ++++ ...request-api-gateway-websocket-connect.json | 48 ++++ ...request-api-gateway-websocket-message.json | 27 ++ ...uthorizer-token-api-gateway-v1-cached.json | 93 +++++++ .../authorizer-token-api-gateway-v1.json | 93 +++++++ tests/test_tracing.py | 194 +++++++++++-- tests/test_wrapper.py | 44 ++- 13 files changed, 1057 insertions(+), 56 deletions(-) create mode 100644 tests/event_samples/authorizer-request-api-gateway-v1-cached.json create mode 100644 tests/event_samples/authorizer-request-api-gateway-v1.json create mode 100644 tests/event_samples/authorizer-request-api-gateway-v2-cached.json create mode 100644 tests/event_samples/authorizer-request-api-gateway-v2.json create mode 100644 tests/event_samples/authorizer-request-api-gateway-websocket-connect.json create mode 100644 tests/event_samples/authorizer-request-api-gateway-websocket-message.json create mode 100644 tests/event_samples/authorizer-token-api-gateway-v1-cached.json create mode 100644 tests/event_samples/authorizer-token-api-gateway-v1.json diff --git a/datadog_lambda/constants.py b/datadog_lambda/constants.py index 9bd49ce3d..5fb6683d5 100644 --- a/datadog_lambda/constants.py +++ b/datadog_lambda/constants.py @@ -42,3 +42,15 @@ class XrayDaemon(object): XRAY_TRACE_ID_HEADER_NAME = "_X_AMZN_TRACE_ID" XRAY_DAEMON_ADDRESS = "AWS_XRAY_DAEMON_ADDRESS" FUNCTION_NAME_HEADER_NAME = "AWS_LAMBDA_FUNCTION_NAME" + + +class Headers(object): + Parent_Span_Finish_Time = "x-datadog-parent-span-finish-time" + + # For one request from the client, the event.requestContext.requestIds in the authorizer lambda + # invocation and the main function invocation are IDENTICAL. Therefore we can use it to tell + # whether current invocation is the actual original authorizing request or a cached request. + Authorizing_Request_Id = "x-datadog-authorizing-requestid" + + # injected by the HTTPPropagator.inject but no use + TAGS_HEADER_TO_DELETE = "x-datadog-tags" diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 1e63a78bd..62c64c61e 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -23,16 +23,18 @@ TraceHeader, TraceContextSource, XrayDaemon, + Headers, ) from datadog_lambda.xray import ( send_segment, parse_xray_header, ) -from ddtrace import tracer, patch +from ddtrace import tracer, patch, Span from ddtrace import __version__ as ddtrace_version from ddtrace.propagation.http import HTTPPropagator from datadog_lambda import __version__ as datadog_lambda_version from datadog_lambda.trigger import ( + _EventSource, parse_event_source, get_first_record, EventTypes, @@ -167,13 +169,39 @@ def extract_context_from_lambda_context(lambda_context): return trace_id, parent_id, sampling_priority -def extract_context_from_http_event_or_context(event, lambda_context): +def extract_context_from_http_event_or_context( + event, + lambda_context, + event_source: _EventSource, + decode_authorizer_context: bool = True, +): """ Extract Datadog trace context from the `headers` key in from the Lambda `event` object. Falls back to lambda context if no trace data is found in the `headers` """ + if decode_authorizer_context: + is_http_api = event_source.equals( + EventTypes.API_GATEWAY, subtype=EventSubtypes.HTTP_API + ) + injected_authorizer_data = get_injected_authorizer_data(event, is_http_api) + if injected_authorizer_data: + try: + # fail fast on any KeyError here + trace_id = injected_authorizer_data[TraceHeader.TRACE_ID] + parent_id = injected_authorizer_data[TraceHeader.PARENT_ID] + sampling_priority = injected_authorizer_data[ + TraceHeader.SAMPLING_PRIORITY + ] + return trace_id, parent_id, sampling_priority + except Exception as e: + logger.debug( + "extract_context_from_authorizer_event returned with error. \ + Continue without injecting the authorizer span %s", + e, + ) + headers = event.get("headers", {}) or {} lowercase_headers = {k.lower(): v for k, v in headers.items()} @@ -317,7 +345,45 @@ def extract_context_custom_extractor(extractor, event, lambda_context): return None, None, None -def extract_dd_trace_context(event, lambda_context, extractor=None): +def get_injected_authorizer_data(event, is_http_api) -> dict: + try: + authorizer_headers = event.get("requestContext", {}).get("authorizer") + if not authorizer_headers: + return None + + dd_data_raw = ( + authorizer_headers.get("lambda", {}).get("_datadog") + if is_http_api + else authorizer_headers.get("_datadog") + ) + + if not dd_data_raw: + return None + + injected_data = json.loads(base64.b64decode(dd_data_raw)) + + # Lambda authorizer's results can be cached. But the payload will still have the injected + # data in cached requests. How to distinguish cached case and ignore the injected data ? + # APIGateway automatically injects a integrationLatency data in some cases. If it's >0 we + # know that it's not cached. But integrationLatency is not available for Http API case. In + # that case, we use the injected Authorizing_Request_Id to tell if it's cached. But token + # authorizers don't pass on the requestId. The Authorizing_Request_Id can't work for all + # cases neither. As a result, we combine both methods as shown below. + if authorizer_headers.get("integrationLatency", 0) > 0 or event.get( + "requestContext", {} + ).get("requestId") == injected_data.get(Headers.Authorizing_Request_Id): + return injected_data + else: + return None + + except Exception as e: + logger.debug("Failed to check if invocated by an authorizer. error %s", e) + return None + + +def extract_dd_trace_context( + event, lambda_context, extractor=None, decode_authorizer_context: bool = True +): """ Extract Datadog trace context from the Lambda `event` object. @@ -339,7 +405,9 @@ def extract_dd_trace_context(event, lambda_context, extractor=None): trace_id, parent_id, sampling_priority, - ) = extract_context_from_http_event_or_context(event, lambda_context) + ) = extract_context_from_http_event_or_context( + event, lambda_context, event_source, decode_authorizer_context + ) elif event_source.equals(EventTypes.SNS) or event_source.equals(EventTypes.SQS): ( trace_id, @@ -379,7 +447,7 @@ def extract_dd_trace_context(event, lambda_context, extractor=None): if dd_trace_context: trace_context_source = TraceContextSource.XRAY logger.debug("extracted dd trace context %s", dd_trace_context) - return dd_trace_context, trace_context_source + return dd_trace_context, trace_context_source, event_source def get_dd_trace_context(): @@ -502,14 +570,22 @@ def set_dd_trace_py_root(trace_context_source, merge_xray_traces): ) -def create_inferred_span(event, context): - event_source = parse_event_source(event) +def create_inferred_span( + event, + context, + event_source: _EventSource = None, + decode_authorizer_context: bool = True, +): + if event_source is None: + event_source = parse_event_source(event) try: if event_source.equals( EventTypes.API_GATEWAY, subtype=EventSubtypes.API_GATEWAY ): logger.debug("API Gateway event detected. Inferring a span") - return create_inferred_span_from_api_gateway_event(event, context) + return create_inferred_span_from_api_gateway_event( + event, decode_authorizer_context + ) elif event_source.equals(EventTypes.LAMBDA_FUNCTION_URL): logger.debug("Function URL event detected. Inferring a span") return create_inferred_span_from_lambda_function_url_event(event, context) @@ -517,12 +593,16 @@ def create_inferred_span(event, context): EventTypes.API_GATEWAY, subtype=EventSubtypes.HTTP_API ): logger.debug("HTTP API event detected. Inferring a span") - return create_inferred_span_from_http_api_event(event, context) + return create_inferred_span_from_http_api_event( + event, context, decode_authorizer_context + ) elif event_source.equals( EventTypes.API_GATEWAY, subtype=EventSubtypes.WEBSOCKET ): logger.debug("API Gateway Websocket event detected. Inferring a span") - return create_inferred_span_from_api_gateway_websocket_event(event, context) + return create_inferred_span_from_api_gateway_websocket_event( + event, decode_authorizer_context + ) elif event_source.equals(EventTypes.SQS): logger.debug("SQS event detected. Inferring a span") return create_inferred_span_from_sqs_event(event, context) @@ -543,7 +623,7 @@ def create_inferred_span(event, context): return create_inferred_span_from_eventbridge_event(event, context) except Exception as e: logger.debug( - "Unable to infer span. Detected type: {}. Reason: {}", + "Unable to infer span. Detected type: %s. Reason: %s", event_source.to_string(), e, ) @@ -588,7 +668,72 @@ def is_api_gateway_invocation_async(event): return event.get("headers", {}).get("X-Amz-Invocation-Type") == "Event" -def create_inferred_span_from_api_gateway_websocket_event(event, context): +def insert_upstream_authorizer_span( + kwargs_to_start_span, other_tags_for_span, start_time_ns, finish_time_ns +): + """Insert the authorizer span. + Without this: parent span --child-> inferred span + With this insertion: parent span --child-> upstreamAuthorizerSpan --child-> inferred span + + Args: + kwargs_to_start_span (Dict): the same keyword arguments used for the inferred span + other_tags_for_span (Dict): the same tag keyword arguments used for the inferred span + start_time_ns (int): the start time of the span in nanoseconds + finish_time_ns (int): the finish time of the sapn in nanoseconds + """ + trace_ctx = tracer.current_trace_context() + upstream_authorizer_span = tracer.trace( + "aws.apigateway.authorizer", **kwargs_to_start_span + ) + upstream_authorizer_span.set_tags(other_tags_for_span) + upstream_authorizer_span.set_tag("operation_name", "aws.apigateway.authorizer") + # always sync for the authorizer invocation + InferredSpanInfo.set_tags_to_span(upstream_authorizer_span, synchronicity="sync") + upstream_authorizer_span.start_ns = int(start_time_ns) + upstream_authorizer_span.finish(finish_time_ns / 1e9) + # trace context needs to be set again as it is reset by finish() + tracer.context_provider.activate(trace_ctx) + return upstream_authorizer_span + + +def process_injected_data(event, request_time_epoch_ms, args, tags): + """ + This covers the ApiGateway RestAPI and Websocket cases. It doesn't cover Http API cases. + """ + injected_authorizer_data = get_injected_authorizer_data(event, False) + if injected_authorizer_data: + try: + start_time_ns = int( + injected_authorizer_data.get(Headers.Parent_Span_Finish_Time) + ) + finish_time_ns = ( + request_time_epoch_ms + + ( + int( + event["requestContext"]["authorizer"].get( + "integrationLatency", 0 + ) + ) + ) + ) * 1e6 + upstream_authorizer_span = insert_upstream_authorizer_span( + args, tags, start_time_ns, finish_time_ns + ) + return upstream_authorizer_span, finish_time_ns + except Exception as e: + logger.debug( + "Unable to insert authorizer span. Continue to generate the main span.\ + Reason: %s", + e, + ) + return None, None + else: + return None, None + + +def create_inferred_span_from_api_gateway_websocket_event( + event, decode_authorizer_context: bool = True +): request_context = event.get("requestContext") domain = request_context.get("domainName") endpoint = request_context.get("routeKey") @@ -605,7 +750,7 @@ def create_inferred_span_from_api_gateway_websocket_event(event, context): "event_type": request_context.get("eventType"), "message_direction": request_context.get("messageDirection"), } - request_time_epoch = request_context.get("requestTimeEpoch") + request_time_epoch_ms = int(request_context.get("requestTimeEpoch")) if is_api_gateway_invocation_async(event): InferredSpanInfo.set_tags(tags, tag_source="self", synchronicity="async") else: @@ -616,14 +761,28 @@ def create_inferred_span_from_api_gateway_websocket_event(event, context): "span_type": "web", } tracer.set_tags({"_dd.origin": "lambda"}) + upstream_authorizer_span = None + finish_time_ns = None + if decode_authorizer_context: + upstream_authorizer_span, finish_time_ns = process_injected_data( + event, request_time_epoch_ms, args, tags + ) span = tracer.trace("aws.apigateway.websocket", **args) if span: span.set_tags(tags) - span.start = request_time_epoch / 1000 + span.start_ns = int( + finish_time_ns + if finish_time_ns is not None + else request_time_epoch_ms * 1e6 + ) + if upstream_authorizer_span: + span.parent_id = upstream_authorizer_span.span_id return span -def create_inferred_span_from_api_gateway_event(event, context): +def create_inferred_span_from_api_gateway_event( + event, decode_authorizer_context: bool = True +): request_context = event.get("requestContext") domain = request_context.get("domainName", "") method = event.get("httpMethod") @@ -640,7 +799,7 @@ def create_inferred_span_from_api_gateway_event(event, context): "stage": request_context.get("stage"), "request_id": request_context.get("requestId"), } - request_time_epoch = request_context.get("requestTimeEpoch") + request_time_epoch_ms = int(request_context.get("requestTimeEpoch")) if is_api_gateway_invocation_async(event): InferredSpanInfo.set_tags(tags, tag_source="self", synchronicity="async") else: @@ -651,14 +810,29 @@ def create_inferred_span_from_api_gateway_event(event, context): "span_type": "http", } tracer.set_tags({"_dd.origin": "lambda"}) + upstream_authorizer_span = None + finish_time_ns = None + if decode_authorizer_context: + upstream_authorizer_span, finish_time_ns = process_injected_data( + event, request_time_epoch_ms, args, tags + ) span = tracer.trace("aws.apigateway", **args) if span: span.set_tags(tags) - span.start = request_time_epoch / 1000 + # start time pushed by the inserted authorizer span + span.start_ns = int( + finish_time_ns + if finish_time_ns is not None + else request_time_epoch_ms * 1e6 + ) + if upstream_authorizer_span: + span.parent_id = upstream_authorizer_span.span_id return span -def create_inferred_span_from_http_api_event(event, context): +def create_inferred_span_from_http_api_event( + event, context, decode_authorizer_context: bool = True +): request_context = event.get("requestContext") domain = request_context.get("domainName") method = request_context.get("http", {}).get("method") @@ -678,7 +852,7 @@ def create_inferred_span_from_http_api_event(event, context): "apiname": request_context.get("apiId"), "stage": request_context.get("stage"), } - request_time_epoch = request_context.get("timeEpoch") + request_time_epoch_ms = int(request_context.get("timeEpoch")) if is_api_gateway_invocation_async(event): InferredSpanInfo.set_tags(tags, tag_source="self", synchronicity="async") else: @@ -689,10 +863,17 @@ def create_inferred_span_from_http_api_event(event, context): "span_type": "http", } tracer.set_tags({"_dd.origin": "lambda"}) + inferred_span_start_ns = request_time_epoch_ms * 1e6 + if decode_authorizer_context: + injected_authorizer_data = get_injected_authorizer_data(event, True) + if injected_authorizer_data: + inferred_span_start_ns = injected_authorizer_data.get( + Headers.Parent_Span_Finish_Time + ) span = tracer.trace("aws.httpapi", **args) if span: span.set_tags(tags) - span.start = request_time_epoch / 1000 + span.start_ns = int(inferred_span_start_ns) return span @@ -973,14 +1154,39 @@ class InferredSpanInfo(object): SYNCHRONICITY = f"{BASE_NAME}.synchronicity" TAG_SOURCE = f"{BASE_NAME}.tag_source" - @classmethod + @staticmethod def set_tags( - cls, tags: Dict[str, str], synchronicity: Optional[Literal["sync", "async"]] = None, tag_source: Optional[Literal["labmda", "self"]] = None, ): if synchronicity is not None: - tags[cls.SYNCHRONICITY] = str(synchronicity) + tags[InferredSpanInfo.SYNCHRONICITY] = str(synchronicity) + if tag_source is not None: + tags[InferredSpanInfo.TAG_SOURCE] = str(tag_source) + + @staticmethod + def set_tags_to_span( + span: Span, + synchronicity: Optional[Literal["sync", "async"]] = None, + tag_source: Optional[Literal["labmda", "self"]] = None, + ): + if synchronicity is not None: + span.set_tags({InferredSpanInfo.SYNCHRONICITY: synchronicity}) if tag_source is not None: - tags[cls.TAG_SOURCE] = str(tag_source) + span.set_tags({InferredSpanInfo.TAG_SOURCE: str(tag_source)}) + + @staticmethod + def is_async(span: Span) -> bool: + if not span: + return False + try: + return span.get_tag(InferredSpanInfo.SYNCHRONICITY) == "async" + except Exception as e: + logger.debug( + "Unabled to read the %s tag, returning False. \ + Reason: %s.", + InferredSpanInfo.SYNCHRONICITY, + e, + ) + return False diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 88508ab33..f0d56a3d7 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -3,16 +3,21 @@ # This product includes software developed at Datadog (https://www.datadoghq.com/). # Copyright 2019 Datadog, Inc. +import base64 import os import logging import traceback from importlib import import_module +import json +from time import time_ns +from ddtrace.propagation.http import HTTPPropagator from datadog_lambda.extension import should_use_extension, flush_extension from datadog_lambda.cold_start import set_cold_start, is_cold_start from datadog_lambda.constants import ( TraceContextSource, XraySubsegment, + Headers, ) from datadog_lambda.metric import ( flush_stats, @@ -33,7 +38,10 @@ create_inferred_span, InferredSpanInfo, ) -from datadog_lambda.trigger import extract_trigger_tags, extract_http_status_code_tag +from datadog_lambda.trigger import ( + extract_trigger_tags, + extract_http_status_code_tag, +) from datadog_lambda.tag_object import tag_object profiling_env_var = os.environ.get("DD_PROFILING_ENABLED", "false").lower() == "true" @@ -116,6 +124,12 @@ def __init__(self, func): self.make_inferred_span = ( os.environ.get("DD_TRACE_MANAGED_SERVICES", "true").lower() == "true" ) + self.encode_authorizer_context = ( + os.environ.get("DD_ENCODE_AUTHORIZER_CONTEXT", "true").lower() == "true" + ) + self.decode_authorizer_context = ( + os.environ.get("DD_DECODE_AUTHORIZER_CONTEXT", "true").lower() == "true" + ) self.response = None if profiling_env_var: self.prof = profiler.Profiler(env=env_env_var, service=service_env_var) @@ -157,6 +171,30 @@ def __call__(self, event, context, **kwargs): finally: self._after(event, context) + def _inject_authorizer_span_headers(self, request_id): + reference_span = self.inferred_span if self.inferred_span else self.span + assert reference_span.finished + # the finish_time_ns should be set as the end of the inferred span if it exist + # or the end of the current span + finish_time_ns = ( + reference_span.start_ns + reference_span.duration_ns + if reference_span is not None + and hasattr(reference_span, "start_ns") + and hasattr(reference_span, "duration_ns") + else time_ns() + ) + injected_headers = {} + source_span = self.inferred_span if self.inferred_span else self.span + HTTPPropagator.inject(source_span.context, injected_headers) + # remove unused header + injected_headers.pop(Headers.TAGS_HEADER_TO_DELETE, None) + injected_headers[Headers.Parent_Span_Finish_Time] = finish_time_ns + if request_id is not None: + injected_headers[Headers.Authorizing_Request_Id] = request_id + datadog_data = base64.b64encode(json.dumps(injected_headers).encode()) + self.response.setdefault("context", {}) + self.response["context"]["_datadog"] = datadog_data + def _before(self, event, context): try: self.response = None @@ -164,9 +202,13 @@ def _before(self, event, context): submit_invocations_metric(context) self.trigger_tags = extract_trigger_tags(event, context) # Extract Datadog trace context and source from incoming requests - dd_context, trace_context_source = extract_dd_trace_context( - event, context, extractor=self.trace_extractor + dd_context, trace_context_source, event_source = extract_dd_trace_context( + event, + context, + extractor=self.trace_extractor, + decode_authorizer_context=self.decode_authorizer_context, ) + self.event_source = event_source # Create a Datadog X-Ray subsegment with the trace context if dd_context and trace_context_source == TraceContextSource.EVENT: create_dd_dummy_metadata_subsegment( @@ -176,7 +218,9 @@ def _before(self, event, context): if dd_tracing_enabled: set_dd_trace_py_root(trace_context_source, self.merge_xray_traces) if self.make_inferred_span: - self.inferred_span = create_inferred_span(event, context) + self.inferred_span = create_inferred_span( + event, context, event_source, self.decode_authorizer_context + ) self.span = create_function_execution_span( context, self.function_name, @@ -221,11 +265,7 @@ def _after(self, event, context): if status_code: self.inferred_span.set_tag("http.status_code", status_code) - if ( - self.inferred_span.get_tag(InferredSpanInfo.SYNCHRONICITY) - == "async" - and self.span - ): + if InferredSpanInfo.is_async(self.inferred_span) and self.span: self.inferred_span.finish(finish_time=self.span.start) else: self.inferred_span.finish() @@ -234,6 +274,16 @@ def _after(self, event, context): flush_stats() if should_use_extension: flush_extension() + + if ( + self.encode_authorizer_context + and self.response + and self.response.get("principalId") + and self.response.get("policyDocument") + ): + self._inject_authorizer_span_headers( + event.get("requestContext", {}).get("requestId") + ) logger.debug("datadog_lambda_wrapper _after() done") except Exception: traceback.print_exc() diff --git a/tests/event_samples/authorizer-request-api-gateway-v1-cached.json b/tests/event_samples/authorizer-request-api-gateway-v1-cached.json new file mode 100644 index 000000000..937e94b6b --- /dev/null +++ b/tests/event_samples/authorizer-request-api-gateway-v1-cached.json @@ -0,0 +1,93 @@ +{ + "resource": "/hello", + "path": "/hello", + "httpMethod": "GET", + "headers": { + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "Authorization": "secretT0k3n", + "authorizationToken": "secretT0k3n", + "Cache-Control": "no-cache", + "CloudFront-Forwarded-Proto": "https", + "CloudFront-Is-Desktop-Viewer": "true", + "CloudFront-Is-Mobile-Viewer": "false", + "CloudFront-Is-SmartTV-Viewer": "false", + "CloudFront-Is-Tablet-Viewer": "false", + "CloudFront-Viewer-ASN": "12271", + "CloudFront-Viewer-Country": "US", + "Host": "amddr1rix9.execute-api.sa-east-1.amazonaws.com", + "Postman-Token": "5ddd364a-4191-4dbc-9831-09f1bf46bca8", + "User-Agent": "PostmanRuntime/7.29.2", + "Via": "1.1 x.cloudfront.net (CloudFront)", + "X-Amz-Cf-Id": "ToqncSIka6Ae1pZlyxEOtyqqcns8cwL3hVxwo0ZZqMC60zTSSXW7yA==", + "X-Amzn-Trace-Id": "Root=1-63580c1d-12aa2dcf30cd2d3476a6f18f", + "X-Forwarded-For": "24.193.182.233, 15.158.35.232", + "X-Forwarded-Port": "443", + "X-Forwarded-Proto": "https" + }, + "multiValueHeaders": { + "Accept": ["*/*"], + "Accept-Encoding": ["gzip, deflate, br"], + "Authorization": ["secretT0k3n"], + "authorizationToken": ["secretT0k3n"], + "Cache-Control": ["no-cache"], + "CloudFront-Forwarded-Proto": ["https"], + "CloudFront-Is-Desktop-Viewer": ["true"], + "CloudFront-Is-Mobile-Viewer": ["false"], + "CloudFront-Is-SmartTV-Viewer": ["false"], + "CloudFront-Is-Tablet-Viewer": ["false"], + "CloudFront-Viewer-ASN": ["12271"], + "CloudFront-Viewer-Country": ["US"], + "Host": ["amddr1rix9.execute-api.sa-east-1.amazonaws.com"], + "Postman-Token": ["5ddd364a-4191-4dbc-9831-09f1bf46bca8"], + "User-Agent": ["PostmanRuntime/7.29.2"], + "Via": ["1.1 x.cloudfront.net (CloudFront)"], + "X-Amz-Cf-Id": ["ToqncSIka6Ae1pZlyxEOtyqqcns8cwL3hVxwo0ZZqMC60zTSSXW7yA=="], + "X-Amzn-Trace-Id": ["Root=1-63580c1d-12aa2dcf30cd2d3476a6f18f"], + "X-Forwarded-For": ["24.193.182.233, 15.158.35.232"], + "X-Forwarded-Port": ["443"], + "X-Forwarded-Proto": ["https"] + }, + "queryStringParameters": null, + "multiValueQueryStringParameters": null, + "pathParameters": null, + "stageVariables": null, + "requestContext": { + "resourceId": "var16m", + "authorizer": { + "_datadog": "eyJ4LWRhdGFkb2ctdHJhY2UtaWQiOiAiMzQyMDA1NDg3OTQxNzk5OTg3NyIsICJ4LWRhdGFkb2ctcGFyZW50LWlkIjogIjE1NDY2ODY0ODU4OTY3MTY5NjM2IiwgIngtZGF0YWRvZy1zYW1wbGluZy1wcmlvcml0eSI6ICIxIiwgIngtZGF0YWRvZy1wYXJlbnQtc3Bhbi1maW5pc2gtdGltZSI6IDE2NjY3MTQ2NDg1OTAuMTA5NCwgIngtZGF0YWRvZy1hdXRob3JpemluZy1yZXF1ZXN0aWQiOiAiMjRkNjk4OTItNjcwMi00OTYxLThlNDgtMDg1NWNjNTU0MjQwIn0=", + "scope": "this is just a string", + "principalId": "foo", + "integrationLatency": 0 + }, + "resourcePath": "/hello", + "httpMethod": "GET", + "extendedRequestId": "akbUqFBZmjQFbJg=", + "requestTime": "25/Oct/2022:16:17:33 +0000", + "path": "/dev/hello", + "accountId": "425362996713", + "protocol": "HTTP/1.1", + "stage": "dev", + "domainPrefix": "amddr1rix9", + "requestTimeEpoch": 1666714653636, + "requestId": "abc123", + "identity": { + "cognitoIdentityPoolId": null, + "accountId": null, + "cognitoIdentityId": null, + "caller": null, + "sourceIp": "24.193.182.233", + "principalOrgId": null, + "accessKey": null, + "cognitoAuthenticationType": null, + "cognitoAuthenticationProvider": null, + "userArn": null, + "userAgent": "PostmanRuntime/7.29.2", + "user": null + }, + "domainName": "amddr1rix9.execute-api.sa-east-1.amazonaws.com", + "apiId": "amddr1rix9" + }, + "body": null, + "isBase64Encoded": false +} diff --git a/tests/event_samples/authorizer-request-api-gateway-v1.json b/tests/event_samples/authorizer-request-api-gateway-v1.json new file mode 100644 index 000000000..00818eac0 --- /dev/null +++ b/tests/event_samples/authorizer-request-api-gateway-v1.json @@ -0,0 +1,93 @@ +{ + "resource": "/hello", + "path": "/hello", + "httpMethod": "GET", + "headers": { + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "Authorization": "secretT0k3n", + "authorizationToken": "secretT0k3n", + "Cache-Control": "no-cache", + "CloudFront-Forwarded-Proto": "https", + "CloudFront-Is-Desktop-Viewer": "true", + "CloudFront-Is-Mobile-Viewer": "false", + "CloudFront-Is-SmartTV-Viewer": "false", + "CloudFront-Is-Tablet-Viewer": "false", + "CloudFront-Viewer-ASN": "12271", + "CloudFront-Viewer-Country": "US", + "Host": "amddr1rix9.execute-api.sa-east-1.amazonaws.com", + "Postman-Token": "75a5e2b0-d8e8-4370-ad2c-7209761c3f43", + "User-Agent": "PostmanRuntime/7.29.2", + "Via": "1.1 ed4584f7c263c11cf4adf75ba3a25764.cloudfront.net (CloudFront)", + "X-Amz-Cf-Id": "wbruuv68N6jFldH7oUaE9kWABzHsvPi3zzByABVGXCVsnGYOhcRjow==", + "X-Amzn-Trace-Id": "Root=1-6323de2b-0155211e49422a532809a10e", + "X-Forwarded-For": "24.193.182.233, 15.158.35.8", + "X-Forwarded-Port": "443", + "X-Forwarded-Proto": "https" + }, + "multiValueHeaders": { + "Accept": ["*/*"], + "Accept-Encoding": ["gzip, deflate, br"], + "Authorization": ["secretT0k3n"], + "authorizationToken": ["secretT0k3n"], + "Cache-Control": ["no-cache"], + "CloudFront-Forwarded-Proto": ["https"], + "CloudFront-Is-Desktop-Viewer": ["true"], + "CloudFront-Is-Mobile-Viewer": ["false"], + "CloudFront-Is-SmartTV-Viewer": ["false"], + "CloudFront-Is-Tablet-Viewer": ["false"], + "CloudFront-Viewer-ASN": ["12271"], + "CloudFront-Viewer-Country": ["US"], + "Host": ["amddr1rix9.execute-api.sa-east-1.amazonaws.com"], + "Postman-Token": ["75a5e2b0-d8e8-4370-ad2c-7209761c3f43"], + "User-Agent": ["PostmanRuntime/7.29.2"], + "Via": ["1.1 ed4584f7c263c11cf4adf75ba3a25764.cloudfront.net (CloudFront)"], + "X-Amz-Cf-Id": ["wbruuv68N6jFldH7oUaE9kWABzHsvPi3zzByABVGXCVsnGYOhcRjow=="], + "X-Amzn-Trace-Id": ["Root=1-6323de2b-0155211e49422a532809a10e"], + "X-Forwarded-For": ["24.193.182.233, 15.158.35.8"], + "X-Forwarded-Port": ["443"], + "X-Forwarded-Proto": ["https"] + }, + "queryStringParameters": null, + "multiValueQueryStringParameters": null, + "pathParameters": null, + "stageVariables": null, + "requestContext": { + "resourceId": "0et54l", + "authorizer": { + "_datadog": "eyJ4LWRhdGFkb2ctdHJhY2UtaWQiOiAiMTM0Nzg3MDU5OTU3OTcyMjEyMDkiLCAieC1kYXRhZG9nLXBhcmVudC1pZCI6ICI4NDcxMjg4MjYzMzg0MjE2ODk2IiwgIngtZGF0YWRvZy1zYW1wbGluZy1wcmlvcml0eSI6ICIxIiwgIngtZGF0YWRvZy1wYXJlbnQtc3Bhbi1maW5pc2gtdGltZSI6IDE2NjMyOTUwMjE4MjcuNTIxLCAieC1kYXRhZG9nLWF1dGhvcml6aW5nLXJlcXVlc3RpZCI6ICJhYmMxMjMifQ==", + "scope": "this is just a string", + "principalId": "foo", + "integrationLatency": 1897 + }, + "resourcePath": "/hello", + "httpMethod": "GET", + "extendedRequestId": "Yh-m5G_wGjQFftQ=", + "requestTime": "16/Sep/2022:02:23:39 +0000", + "path": "/dev/hello", + "accountId": "601427279990", + "protocol": "HTTP/1.1", + "stage": "dev", + "domainPrefix": "amddr1rix9", + "requestTimeEpoch": 1663295019935, + "requestId": "abc123", + "identity": { + "cognitoIdentityPoolId": null, + "accountId": null, + "cognitoIdentityId": null, + "caller": null, + "sourceIp": "24.193.182.233", + "principalOrgId": null, + "accessKey": null, + "cognitoAuthenticationType": null, + "cognitoAuthenticationProvider": null, + "userArn": null, + "userAgent": "PostmanRuntime/7.29.2", + "user": null + }, + "domainName": "amddr1rix9.execute-api.sa-east-1.amazonaws.com", + "apiId": "amddr1rix9" + }, + "body": null, + "isBase64Encoded": false +} diff --git a/tests/event_samples/authorizer-request-api-gateway-v2-cached.json b/tests/event_samples/authorizer-request-api-gateway-v2-cached.json new file mode 100644 index 000000000..53ee1624f --- /dev/null +++ b/tests/event_samples/authorizer-request-api-gateway-v2-cached.json @@ -0,0 +1,47 @@ +{ + "version": "2.0", + "routeKey": "GET /hello", + "rawPath": "/hello", + "rawQueryString": "", + "headers": { + "accept": "*/*", + "accept-encoding": "gzip, deflate, br", + "authorization": "secretT0k3n", + "authorizationtoken": "secretT0k3n", + "cache-control": "no-cache", + "content-length": "0", + "host": "amddr1rix9.execute-api.sa-east-1.amazonaws.com", + "postman-token": "f901530c-cc2f-475f-8634-d9156e9cd9d7", + "user-agent": "PostmanRuntime/7.29.2", + "userid": "1236", + "x-amzn-trace-id": "Root=1-63580f25-5f01511071135d5966c8c63d", + "x-forwarded-for": "24.193.182.233", + "x-forwarded-port": "443", + "x-forwarded-proto": "https" + }, + "requestContext": { + "accountId": "425362996713", + "apiId": "amddr1rix9", + "authorizer": { + "lambda": { + "_datadog": "eyJ4LWRhdGFkb2ctdHJhY2UtaWQiOiAiMTc4MDIxMTQ1NTc4ODI1OTY0MTYiLCAieC1kYXRhZG9nLXBhcmVudC1pZCI6ICIxMjg3ODYzNTg0NTE5MTY5NDQ5NCIsICJ4LWRhdGFkb2ctc2FtcGxpbmctcHJpb3JpdHkiOiAiMSIsICJ4LWRhdGFkb2ctcGFyZW50LXNwYW4tZmluaXNoLXRpbWUiOiAxNjY2NzE1NDI5Mzk1Ljc3ODgsICJ4LWRhdGFkb2ctYXV0aG9yaXppbmctcmVxdWVzdGlkIjogImFrZE4zaEdER2pRRU1Ddz0ifQ==", + "scope": "this is just a string" + } + }, + "domainName": "amddr1rix9.execute-api.sa-east-1.amazonaws.com", + "domainPrefix": "amddr1rix9", + "http": { + "method": "GET", + "path": "/hello", + "protocol": "HTTP/1.1", + "sourceIp": "24.193.182.233", + "userAgent": "PostmanRuntime/7.29.2" + }, + "requestId": "abc123", + "routeKey": "GET /hello", + "stage": "dev", + "time": "25/Oct/2022:16:30:29 +0000", + "timeEpoch": 1666715429349 + }, + "isBase64Encoded": false +} diff --git a/tests/event_samples/authorizer-request-api-gateway-v2.json b/tests/event_samples/authorizer-request-api-gateway-v2.json new file mode 100644 index 000000000..92ce09ba3 --- /dev/null +++ b/tests/event_samples/authorizer-request-api-gateway-v2.json @@ -0,0 +1,47 @@ +{ + "version": "2.0", + "routeKey": "GET /hello", + "rawPath": "/hello", + "rawQueryString": "", + "headers": { + "accept": "*/*", + "accept-encoding": "gzip, deflate, br", + "authorization": "secretT0k3n", + "authorizationtoken": "secretT0k3n", + "cache-control": "no-cache", + "content-length": "0", + "host": "amddr1rix9.execute-api.sa-east-1.amazonaws.com", + "postman-token": "5e0efdb2-d93f-4d44-8792-45404d40dae2", + "user": "12345", + "user-agent": "curl/7.64.1", + "x-amzn-trace-id": "Root=1-63321d1e-6b80ef0d2c2cf49600b9c28e", + "x-forwarded-for": "38.122.226.210", + "x-forwarded-port": "443", + "x-forwarded-proto": "https" + }, + "requestContext": { + "accountId": "601427279990", + "apiId": "amddr1rix9", + "authorizer": { + "lambda": { + "_datadog": "eyJ4LWRhdGFkb2ctdHJhY2UtaWQiOiAiMTQzNTY5ODM2MTk4NTI5MzMzNTQiLCAieC1kYXRhZG9nLXBhcmVudC1pZCI6ICIxMjY1ODYyMTA4MzUwNTQxMzgwOSIsICJ4LWRhdGFkb2ctc2FtcGxpbmctcHJpb3JpdHkiOiAiMSIsICJ4LWRhdGFkb2ctcGFyZW50LXNwYW4tZmluaXNoLXRpbWUiOiAxNjY0MjI4NjM5NTMzNzc1NDAwLCAieC1kYXRhZG9nLWF1dGhvcml6aW5nLXJlcXVlc3RpZCI6ICJhYmMxMjMifQ==", + "scope": "this is just a string" + } + }, + "domainName": "amddr1rix9.execute-api.sa-east-1.amazonaws.com", + "domainPrefix": "amddr1rix9", + "http": { + "method": "GET", + "path": "/hello", + "protocol": "HTTP/1.1", + "sourceIp": "38.122.226.210", + "userAgent": "curl/7.64.1" + }, + "requestId": "abc123", + "routeKey": "GET /hello", + "stage": "dev", + "time": "26/Sep/2022:21:43:58 +0000", + "timeEpoch": 1664228638084 + }, + "isBase64Encoded": false +} diff --git a/tests/event_samples/authorizer-request-api-gateway-websocket-connect.json b/tests/event_samples/authorizer-request-api-gateway-websocket-connect.json new file mode 100644 index 000000000..1875097df --- /dev/null +++ b/tests/event_samples/authorizer-request-api-gateway-websocket-connect.json @@ -0,0 +1,48 @@ +{ + "headers": { + "Auth": "secretT0k3n", + "Host": "amddr1rix9.execute-api.sa-east-1.amazonaws.com", + "Sec-WebSocket-Extensions": "permessage-deflate; client_max_window_bits", + "Sec-WebSocket-Key": "j9g8xXvniFqyyA+34vQ/Lg==", + "Sec-WebSocket-Version": "13", + "X-Amzn-Trace-Id": "Root=1-63348d21-727f66307696916d50f93f1b", + "X-Forwarded-For": "38.122.226.210", + "X-Forwarded-Port": "443", + "X-Forwarded-Proto": "https" + }, + "multiValueHeaders": { + "Auth": ["secretT0k3n"], + "Host": ["amddr1rix9.execute-api.sa-east-1.amazonaws.com"], + "Sec-WebSocket-Extensions": ["permessage-deflate; client_max_window_bits"], + "Sec-WebSocket-Key": ["j9g8xXvniFqyyA+34vQ/Lg=="], + "Sec-WebSocket-Version": ["13"], + "X-Amzn-Trace-Id": ["Root=1-63348d21-727f66307696916d50f93f1b"], + "X-Forwarded-For": ["38.122.226.210"], + "X-Forwarded-Port": ["443"], + "X-Forwarded-Proto": ["https"] + }, + "requestContext": { + "routeKey": "$connect", + "authorizer": { + "_datadog": "eyJ4LWRhdGFkb2ctdHJhY2UtaWQiOiAiNTM1MTA0NzQwNDgzNDcyMzE4OSIsICJ4LWRhdGFkb2ctcGFyZW50LWlkIjogIjE4MjMwNDYwNjMxMTU2MTYxODM3IiwgIngtZGF0YWRvZy1zYW1wbGluZy1wcmlvcml0eSI6ICIxIiwgIngtZGF0YWRvZy1wYXJlbnQtc3Bhbi1maW5pc2gtdGltZSI6IDE2NjQzODgzODY4OTAsICJ4LWRhdGFkb2ctYXV0aG9yaXppbmctcmVxdWVzdGlkIjogImFiYzEyMyJ9", + "scope": "this is just a string", + "principalId": "foo", + "integrationLatency": 1440 + }, + "eventType": "CONNECT", + "extendedRequestId": "abc123", + "requestTime": "28/Sep/2022:18:06:25 +0000", + "messageDirection": "IN", + "stage": "dev", + "connectedAt": 1664388385450, + "requestTimeEpoch": 1664388385452, + "identity": { + "sourceIp": "38.122.226.210" + }, + "requestId": "abc123", + "domainName": "amddr1rix9.execute-api.sa-east-1.amazonaws.com", + "connectionId": "ZLr9QeNLmjQCIZA=", + "apiId": "amddr1rix9" + }, + "isBase64Encoded": false +} diff --git a/tests/event_samples/authorizer-request-api-gateway-websocket-message.json b/tests/event_samples/authorizer-request-api-gateway-websocket-message.json new file mode 100644 index 000000000..8ac5d2e95 --- /dev/null +++ b/tests/event_samples/authorizer-request-api-gateway-websocket-message.json @@ -0,0 +1,27 @@ +{ + "requestContext": { + "routeKey": "main", + "authorizer": { + "_datadog": "eyJ4LWRhdGFkb2ctdHJhY2UtaWQiOiAiMTczNzQwNjkwNjUwMjU0MzQ5MjAiLCAieC1kYXRhZG9nLXBhcmVudC1pZCI6ICI3OTE1MTg2NzUxOTE0MTc2MTA2IiwgIngtZGF0YWRvZy1zYW1wbGluZy1wcmlvcml0eSI6ICIxIiwgIngtZGF0YWRvZy1wYXJlbnQtc3Bhbi1maW5pc2gtdGltZSI6IDE2NjQzOTAzMzM1MjYuNTA2OCwgIngtZGF0YWRvZy1hdXRob3JpemluZy1yZXF1ZXN0aWQiOiAiYWJjMzIxIn0=", + "scope": "this is just a string", + "principalId": "foo" + }, + "messageId": "ZLw3leP1GjQCI8Q=", + "eventType": "MESSAGE", + "extendedRequestId": "ZLw3lFowmjQFvSA=", + "requestTime": "28/Sep/2022:18:39:57 +0000", + "messageDirection": "IN", + "stage": "dev", + "connectedAt": 1664390332261, + "requestTimeEpoch": 1664390397117, + "identity": { + "sourceIp": "38.122.226.210" + }, + "requestId": "abc123", + "domainName": "amddr1rix9.execute-api.sa-east-1.amazonaws.com", + "connectionId": "ZLwtceO1mjQCI8Q=", + "apiId": "amddr1rix9" + }, + "body": "{\n \"action\":\"main\",\n \"message\":\"hi\"\n}", + "isBase64Encoded": false +} diff --git a/tests/event_samples/authorizer-token-api-gateway-v1-cached.json b/tests/event_samples/authorizer-token-api-gateway-v1-cached.json new file mode 100644 index 000000000..18ade2488 --- /dev/null +++ b/tests/event_samples/authorizer-token-api-gateway-v1-cached.json @@ -0,0 +1,93 @@ +{ + "resource": "/hello", + "path": "/hello", + "httpMethod": "GET", + "headers": { + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "Authorization": "secretT0k3n", + "authorizationToken": "secretT0k3n", + "Cache-Control": "no-cache", + "CloudFront-Forwarded-Proto": "https", + "CloudFront-Is-Desktop-Viewer": "true", + "CloudFront-Is-Mobile-Viewer": "false", + "CloudFront-Is-SmartTV-Viewer": "false", + "CloudFront-Is-Tablet-Viewer": "false", + "CloudFront-Viewer-ASN": "174", + "CloudFront-Viewer-Country": "US", + "Host": "amddr1rix9.execute-api.sa-east-1.amazonaws.com", + "Postman-Token": "bb30e418-d4ee-45b6-a659-89f4dbd41c84", + "User-Agent": "PostmanRuntime/7.29.2", + "Via": "1.1 x.cloudfront.net (CloudFront)", + "X-Amz-Cf-Id": "iFM3jhMRNr0jJn8b4A7lgYVLUhUb6pOxFQm1YA4JDTDylUHJOOl-Jw==", + "X-Amzn-Trace-Id": "Root=1-635967a6-2b0999ba248345b32a8ff5ce", + "X-Forwarded-For": "38.122.226.210, 130.176.179.111", + "X-Forwarded-Port": "443", + "X-Forwarded-Proto": "https" + }, + "multiValueHeaders": { + "Accept": ["*/*"], + "Accept-Encoding": ["gzip, deflate, br"], + "Authorization": ["secretT0k3n"], + "authorizationToken": ["secretT0k3n"], + "Cache-Control": ["no-cache"], + "CloudFront-Forwarded-Proto": ["https"], + "CloudFront-Is-Desktop-Viewer": ["true"], + "CloudFront-Is-Mobile-Viewer": ["false"], + "CloudFront-Is-SmartTV-Viewer": ["false"], + "CloudFront-Is-Tablet-Viewer": ["false"], + "CloudFront-Viewer-ASN": ["174"], + "CloudFront-Viewer-Country": ["US"], + "Host": ["amddr1rix9.execute-api.sa-east-1.amazonaws.com"], + "Postman-Token": ["bb30e418-d4ee-45b6-a659-89f4dbd41c84"], + "User-Agent": ["PostmanRuntime/7.29.2"], + "Via": ["1.1 x.cloudfront.net (CloudFront)"], + "X-Amz-Cf-Id": ["iFM3jhMRNr0jJn8b4A7lgYVLUhUb6pOxFQm1YA4JDTDylUHJOOl-Jw=="], + "X-Amzn-Trace-Id": ["Root=1-635967a6-2b0999ba248345b32a8ff5ce"], + "X-Forwarded-For": ["38.122.226.210, 130.176.179.111"], + "X-Forwarded-Port": ["443"], + "X-Forwarded-Proto": ["https"] + }, + "queryStringParameters": null, + "multiValueQueryStringParameters": null, + "pathParameters": null, + "stageVariables": null, + "requestContext": { + "resourceId": "mi7nzd", + "authorizer": { + "_datadog": "eyJ4LWRhdGFkb2ctdHJhY2UtaWQiOiAiMTM3NTkyNDk3NDA5MDA1OTMyNjEiLCAieC1kYXRhZG9nLXBhcmVudC1pZCI6ICIxNTkzNTAyMzY1NTYxMjM0MTgxOSIsICJ4LWRhdGFkb2ctc2FtcGxpbmctcHJpb3JpdHkiOiAiMSIsICJ4LWRhdGFkb2ctcGFyZW50LXNwYW4tZmluaXNoLXRpbWUiOiAxNjY2ODAzNjE2OTMzLjIwNzh9", + "scope": "this is just a string", + "principalId": "foo", + "integrationLatency": 0 + }, + "resourcePath": "/hello", + "httpMethod": "GET", + "extendedRequestId": "an0iHGmHmjQFjLw=", + "requestTime": "26/Oct/2022:17:00:22 +0000", + "path": "/dev/hello", + "accountId": "425362996713", + "protocol": "HTTP/1.1", + "stage": "dev", + "domainPrefix": "amddr1rix9", + "requestTimeEpoch": 1666803622990, + "requestId": "abc123", + "identity": { + "cognitoIdentityPoolId": null, + "accountId": null, + "cognitoIdentityId": null, + "caller": null, + "sourceIp": "38.122.226.210", + "principalOrgId": null, + "accessKey": null, + "cognitoAuthenticationType": null, + "cognitoAuthenticationProvider": null, + "userArn": null, + "userAgent": "PostmanRuntime/7.29.2", + "user": null + }, + "domainName": "amddr1rix9.execute-api.sa-east-1.amazonaws.com", + "apiId": "amddr1rix9" + }, + "body": null, + "isBase64Encoded": false +} diff --git a/tests/event_samples/authorizer-token-api-gateway-v1.json b/tests/event_samples/authorizer-token-api-gateway-v1.json new file mode 100644 index 000000000..1edba05e2 --- /dev/null +++ b/tests/event_samples/authorizer-token-api-gateway-v1.json @@ -0,0 +1,93 @@ +{ + "resource": "/hello", + "path": "/hello", + "httpMethod": "GET", + "headers": { + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "Authorization": "secretT0k3n", + "authorizationToken": "secretT0k3n", + "Cache-Control": "no-cache", + "CloudFront-Forwarded-Proto": "https", + "CloudFront-Is-Desktop-Viewer": "true", + "CloudFront-Is-Mobile-Viewer": "false", + "CloudFront-Is-SmartTV-Viewer": "false", + "CloudFront-Is-Tablet-Viewer": "false", + "CloudFront-Viewer-ASN": "174", + "CloudFront-Viewer-Country": "US", + "Host": "amddr1rix9.execute-api.sa-east-1.amazonaws.com", + "Postman-Token": "791b2f79-1732-4877-abc1-5c538daf4642", + "User-Agent": "PostmanRuntime/7.29.2", + "Via": "1.1 d58463d219ef6ca0331e7200a6667c18.cloudfront.net (CloudFront)", + "X-Amz-Cf-Id": "tqU0SVyX_dKKI0XIN4-kwzCHrROBFECLXtAKCtjKr1uRQ-uijj99sQ==", + "X-Amzn-Trace-Id": "Root=1-632b4732-3e69c6a34f21f00d7f9b5599", + "X-Forwarded-For": "38.122.226.210, 64.252.135.71", + "X-Forwarded-Port": "443", + "X-Forwarded-Proto": "https" + }, + "multiValueHeaders": { + "Accept": ["*/*"], + "Accept-Encoding": ["gzip, deflate, br"], + "Authorization": ["secretT0k3n"], + "authorizationToken": ["secretT0k3n"], + "Cache-Control": ["no-cache"], + "CloudFront-Forwarded-Proto": ["https"], + "CloudFront-Is-Desktop-Viewer": ["true"], + "CloudFront-Is-Mobile-Viewer": ["false"], + "CloudFront-Is-SmartTV-Viewer": ["false"], + "CloudFront-Is-Tablet-Viewer": ["false"], + "CloudFront-Viewer-ASN": ["174"], + "CloudFront-Viewer-Country": ["US"], + "Host": ["amddr1rix9.execute-api.sa-east-1.amazonaws.com"], + "Postman-Token": ["791b2f79-1732-4877-abc1-5c538daf4642"], + "User-Agent": ["PostmanRuntime/7.29.2"], + "Via": ["1.1 d58463d219ef6ca0331e7200a6667c18.cloudfront.net (CloudFront)"], + "X-Amz-Cf-Id": ["tqU0SVyX_dKKI0XIN4-kwzCHrROBFECLXtAKCtjKr1uRQ-uijj99sQ=="], + "X-Amzn-Trace-Id": ["Root=1-632b4732-3e69c6a34f21f00d7f9b5599"], + "X-Forwarded-For": ["38.122.226.210, 64.252.135.71"], + "X-Forwarded-Port": ["443"], + "X-Forwarded-Proto": ["https"] + }, + "queryStringParameters": null, + "multiValueQueryStringParameters": null, + "pathParameters": null, + "stageVariables": null, + "requestContext": { + "resourceId": "elem3u", + "authorizer": { + "_datadog": "eyJ4LWRhdGFkb2ctdHJhY2UtaWQiOiAiMTc4NzQ3OTgyNjgxNDQ5MDI3MTIiLCAieC1kYXRhZG9nLXBhcmVudC1pZCI6ICIxNjE4NDY2NzM5OTMxNTM3MjEwMSIsICJ4LWRhdGFkb2ctc2FtcGxpbmctcHJpb3JpdHkiOiAiMSIsICJ4LWRhdGFkb2ctcGFyZW50LXNwYW4tZmluaXNoLXRpbWUiOiAxNjYzNzIxNjAyNDQwLjgyODZ9", + "scope": "this is just a string", + "principalId": "foo", + "integrationLatency": 1897 + }, + "resourcePath": "/hello", + "httpMethod": "GET", + "extendedRequestId": "Y0gP8FG9mjQFZTQ=", + "requestTime": "21/Sep/2022:17:17:38 +0000", + "path": "/dev/hello", + "accountId": "601427279990", + "protocol": "HTTP/1.1", + "stage": "dev", + "domainPrefix": "amddr1rix9", + "requestTimeEpoch": 1663295019935, + "requestId": "abc123", + "identity": { + "cognitoIdentityPoolId": null, + "accountId": null, + "cognitoIdentityId": null, + "caller": null, + "sourceIp": "38.122.226.210", + "principalOrgId": null, + "accessKey": null, + "cognitoAuthenticationType": null, + "cognitoAuthenticationProvider": null, + "userArn": null, + "userAgent": "PostmanRuntime/7.29.2", + "user": null + }, + "domainName": "amddr1rix9.execute-api.sa-east-1.amazonaws.com", + "apiId": "amddr1rix9" + }, + "body": null, + "isBase64Encoded": false +} diff --git a/tests/test_tracing.py b/tests/test_tracing.py index 7f5ba4d31..47a028da0 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -29,6 +29,7 @@ InferredSpanInfo, extract_context_from_eventbridge_event, ) +from datadog_lambda.trigger import EventTypes function_arn = "arn:aws:lambda:us-west-1:123457598159:function:python-layer-test" @@ -84,7 +85,7 @@ def tearDown(self): def test_without_datadog_trace_headers(self): lambda_ctx = get_mock_context() - ctx, source = extract_dd_trace_context({}, lambda_ctx) + ctx, source, event_source = extract_dd_trace_context({}, lambda_ctx) self.assertEqual(source, "xray") self.assertDictEqual( ctx, @@ -106,7 +107,7 @@ def test_without_datadog_trace_headers(self): def test_with_non_object_event(self): lambda_ctx = get_mock_context() - ctx, source = extract_dd_trace_context(b"", lambda_ctx) + ctx, source, event_source = extract_dd_trace_context(b"", lambda_ctx) self.assertEqual(source, "xray") self.assertDictEqual( ctx, @@ -128,7 +129,7 @@ def test_with_non_object_event(self): def test_with_incomplete_datadog_trace_headers(self): lambda_ctx = get_mock_context() - ctx, source = extract_dd_trace_context( + ctx, source, event_source = extract_dd_trace_context( {"headers": {TraceHeader.TRACE_ID: "123", TraceHeader.PARENT_ID: "321"}}, lambda_ctx, ) @@ -152,7 +153,7 @@ def test_with_incomplete_datadog_trace_headers(self): def test_with_complete_datadog_trace_headers(self): lambda_ctx = get_mock_context() - ctx, source = extract_dd_trace_context( + ctx, source, event_source = extract_dd_trace_context( { "headers": { TraceHeader.TRACE_ID: "123", @@ -193,7 +194,7 @@ def extractor_foo(event, context): return trace_id, parent_id, sampling_priority lambda_ctx = get_mock_context() - ctx, ctx_source = extract_dd_trace_context( + ctx, ctx_source, event_source = extract_dd_trace_context( { "foo": { TraceHeader.TRACE_ID: "123", @@ -227,7 +228,7 @@ def extractor_raiser(event, context): raise Exception("kreator") lambda_ctx = get_mock_context() - ctx, ctx_source = extract_dd_trace_context( + ctx, ctx_source, event_source = extract_dd_trace_context( { "foo": { TraceHeader.TRACE_ID: "123", @@ -289,7 +290,7 @@ def test_with_sqs_distributed_datadog_trace_data(self): } ] } - ctx, source = extract_dd_trace_context(sqs_event, lambda_ctx) + ctx, source, event_source = extract_dd_trace_context(sqs_event, lambda_ctx) self.assertEqual(source, "event") self.assertDictEqual( ctx, @@ -323,7 +324,7 @@ def test_with_legacy_client_context_datadog_trace_data(self): } } ) - ctx, source = extract_dd_trace_context({}, lambda_ctx) + ctx, source, event_source = extract_dd_trace_context({}, lambda_ctx) self.assertEqual(source, "event") self.assertDictEqual( ctx, @@ -356,7 +357,7 @@ def test_with_new_client_context_datadog_trace_data(self): TraceHeader.SAMPLING_PRIORITY: "1", } ) - ctx, source = extract_dd_trace_context({}, lambda_ctx) + ctx, source, event_source = extract_dd_trace_context({}, lambda_ctx) self.assertEqual(source, "event") self.assertDictEqual( ctx, @@ -556,7 +557,7 @@ def test_mixed_parent_context_when_merging(self): # use the dd-trace trace-id and the x-ray parent-id # This allows parenting relationships like dd-trace -> x-ray -> dd-trace lambda_ctx = get_mock_context() - ctx, source = extract_dd_trace_context( + ctx, source, event_type = extract_dd_trace_context( { "headers": { TraceHeader.TRACE_ID: "123", @@ -579,6 +580,157 @@ def test_mixed_parent_context_when_merging(self): self.mock_activate.assert_has_calls([call(expected_context)]) +class TestAuthorizerInferredSpans(unittest.TestCase): + def setUp(self): + patcher = patch("ddtrace.Span.finish", autospec=True) + self.mock_span_stop = patcher.start() + self.addCleanup(patcher.stop) + + def test_create_inferred_span_from_authorizer_request_api_gateway_v1_event(self): + event_sample_source = "authorizer-request-api-gateway-v1" + finish_time = ( + 1663295021.832 # request_time_epoch + integrationLatency for api-gateway-v1 + ) + span = self._authorizer_span_testing_items(event_sample_source, finish_time) + self._basic_common_checks(span, "aws.apigateway.rest") + + def test_create_inferred_span_from_authorizer_request_api_gateway_v1_cached_event( + self, + ): + event_sample_source = "authorizer-request-api-gateway-v1-cached" + test_file = event_samples + event_sample_source + ".json" + with open(test_file, "r") as event: + event = json.load(event) + ctx = get_mock_context() + ctx.aws_request_id = "abc123" # injected data's requestId is abc321 + span = create_inferred_span(event, ctx) + self.mock_span_stop.assert_not_called() # NO authorizer span is injected + self._basic_common_checks(span, "aws.apigateway.rest") + + def test_create_inferred_span_from_authorizer_token_api_gateway_v1_event(self): + event_sample_source = "authorizer-token-api-gateway-v1" + finish_time = ( + 1663295021.832 # request_time_epoch + integrationLatency for api-gateway-v1 + ) + span = self._authorizer_span_testing_items(event_sample_source, finish_time) + self._basic_common_checks(span, "aws.apigateway.rest") + + def test_create_inferred_span_from_authorizer_token_api_gateway_v2_cached_event( + self, + ): + event_sample_source = "authorizer-token-api-gateway-v1-cached" + test_file = event_samples + event_sample_source + ".json" + with open(test_file, "r") as event: + event = json.load(event) + ctx = get_mock_context() + ctx.aws_request_id = "abc123" # injected data's requestId is abc321 + span = create_inferred_span(event, ctx) + self.mock_span_stop.assert_not_called() # NO authorizer span is injected + self._basic_common_checks(span, "aws.apigateway.rest") + + def test_create_inferred_span_from_authorizer_request_api_gateway_v2_event(self): + event_sample_source = "authorizer-request-api-gateway-v2" + finish_time = 1664228639533775400 # use the injected parent span finish time as an approximation + test_file = event_samples + event_sample_source + ".json" + with open(test_file, "r") as event: + event = json.load(event) + ctx = get_mock_context() + ctx.aws_request_id = "abc123" + span = create_inferred_span(event, ctx) + self.assertEqual(span.get_tag(InferredSpanInfo.TAG_SOURCE), "self") + self.assertEqual(span.get_tag(InferredSpanInfo.SYNCHRONICITY), "sync") + self.mock_span_stop.assert_not_called() + self.assertEqual(span.start_ns, finish_time) + self._basic_common_checks(span, "aws.httpapi") + + def test_create_inferred_span_from_authorizer_request_api_gateway_v2_cached_event( + self, + ): + event_sample_source = "authorizer-request-api-gateway-v2-cached" + test_file = event_samples + event_sample_source + ".json" + with open(test_file, "r") as event: + event = json.load(event) + ctx = get_mock_context() + ctx.aws_request_id = "abc123" # injected data's requestId is abc321 + span = create_inferred_span(event, ctx) + self.mock_span_stop.assert_not_called() # NO authorizer span is injected + self._basic_common_checks(span, "aws.httpapi") + + def test_create_inferred_span_from_authorizer_request_api_gateway_websocket_connect_event( + self, + ): + event_sample_source = "authorizer-request-api-gateway-websocket-connect" + finish_time = ( + 1664388386.892 # request_time_epoch + integrationLatency in websocket case + ) + span = self._authorizer_span_testing_items(event_sample_source, finish_time) + self._basic_common_checks( + span, "aws.apigateway.websocket", "web", "$connect", None + ) + + def test_create_inferred_span_from_authorizer_request_api_gateway_websocket_message_event( + self, + ): + event_sample_source = "authorizer-request-api-gateway-websocket-message" + test_file = event_samples + event_sample_source + ".json" + with open(test_file, "r") as event: + event = json.load(event) + ctx = get_mock_context() + ctx.aws_request_id = "abc123" # injected data's requestId is abc321 + span = create_inferred_span(event, ctx) + self.mock_span_stop.assert_not_called() # NO authorizer span is injected + self._basic_common_checks(span, "aws.apigateway.websocket", "web", "main", None) + + def _authorizer_span_testing_items(self, event_sample_source, finish_time): + test_file = event_samples + event_sample_source + ".json" + with open(test_file, "r") as event: + event = json.load(event) + ctx = get_mock_context() + ctx.aws_request_id = "abc123" + span = create_inferred_span(event, ctx) + self.assertEqual(span.get_tag(InferredSpanInfo.TAG_SOURCE), "self") + self.assertEqual(span.get_tag(InferredSpanInfo.SYNCHRONICITY), "sync") + + # checking the upstream_authorizer_span + self.mock_span_stop.assert_called_once() + args, kwargs = self.mock_span_stop.call_args_list[0] + self.assertEqual(kwargs.get("finish_time", args[1]), finish_time) + self.assertEqual(span.start, finish_time) + authorizer_span = args[0] + self.assertEqual(authorizer_span.name, "aws.apigateway.authorizer") + self.assertEqual(span.parent_id, authorizer_span.span_id) + return span + + def _basic_common_checks( + self, + span, + operation_name, + span_type="http", + route_key="/hello", + http_method="GET", + ): + self.assertEqual(span.get_tag("apiid"), "amddr1rix9") + self.assertEqual(span.get_tag("apiname"), "amddr1rix9") + self.assertEqual(span.get_tag("stage"), "dev") + self.assertEqual(span.get_tag("operation_name"), operation_name) + self.assertEqual(span.span_type, span_type) + self.assertEqual( + span.service, + "amddr1rix9.execute-api.sa-east-1.amazonaws.com", + ) + self.assertEqual( + span.get_tag("http.url"), + "amddr1rix9.execute-api.sa-east-1.amazonaws.com" + route_key, + ) + self.assertEqual(span.get_tag("endpoint"), route_key) + self.assertEqual(span.get_tag("http.method"), http_method) + self.assertEqual( + span.get_tag("resource_names"), + f"{http_method} {route_key}" if http_method else route_key, + ) + self.assertEqual(span.get_tag("request_id"), "abc123") + + class TestInferredSpans(unittest.TestCase): def test_create_inferred_span_from_api_gateway_event(self): event_sample_source = "api-gateway" @@ -643,7 +795,7 @@ def test_create_inferred_span_from_api_gateway_non_proxy_event_async(self): self.assertEqual(span.get_tag("apiid"), "lgxbo6a518") self.assertEqual(span.get_tag("apiname"), "lgxbo6a518") self.assertEqual(span.get_tag("stage"), "dev") - self.assertEqual(span.start, 1631210915.2509997) + self.assertEqual(span.start, 1631210915.2510002) self.assertEqual(span.span_type, "http") self.assertEqual(span.get_tag(InferredSpanInfo.TAG_SOURCE), "self") self.assertEqual(span.get_tag(InferredSpanInfo.SYNCHRONICITY), "async") @@ -677,7 +829,7 @@ def test_create_inferred_span_from_api_gateway_non_proxy_event_sync(self): self.assertEqual(span.get_tag("apiid"), "lgxbo6a518") self.assertEqual(span.get_tag("apiname"), "lgxbo6a518") self.assertEqual(span.get_tag("stage"), "dev") - self.assertEqual(span.start, 1631210915.2509997) + self.assertEqual(span.start, 1631210915.2510002) self.assertEqual(span.span_type, "http") self.assertEqual(span.get_tag(InferredSpanInfo.TAG_SOURCE), "self") self.assertEqual(span.get_tag(InferredSpanInfo.SYNCHRONICITY), "sync") @@ -1100,7 +1252,7 @@ def test_extract_dd_trace_context_for_eventbridge(self): with open(test_file, "r") as event: event = json.load(event) ctx = get_mock_context() - context, source = extract_dd_trace_context(event, ctx) + context, source, event_type = extract_dd_trace_context(event, ctx) self.assertEqual(context["trace-id"], "12345") self.assertEqual(context["parent-id"], "67890") @@ -1110,7 +1262,7 @@ def test_extract_context_from_sqs_event_with_string_msg_attr(self): with open(test_file, "r") as event: event = json.load(event) ctx = get_mock_context() - context, source = extract_dd_trace_context(event, ctx) + context, source, event_type = extract_dd_trace_context(event, ctx) self.assertEqual(context["trace-id"], "2684756524522091840") self.assertEqual(context["parent-id"], "7431398482019833808") self.assertEqual(context["sampling-priority"], "1") @@ -1121,7 +1273,7 @@ def test_extract_context_from_sqs_batch_event(self): with open(test_file, "r") as event: event = json.load(event) ctx = get_mock_context() - context, source = extract_dd_trace_context(event, ctx) + context, source, event_source = extract_dd_trace_context(event, ctx) self.assertEqual(context["trace-id"], "2684756524522091840") self.assertEqual(context["parent-id"], "7431398482019833808") self.assertEqual(context["sampling-priority"], "1") @@ -1132,7 +1284,7 @@ def test_extract_context_from_sns_event_with_string_msg_attr(self): with open(test_file, "r") as event: event = json.load(event) ctx = get_mock_context() - context, source = extract_dd_trace_context(event, ctx) + context, source, event_source = extract_dd_trace_context(event, ctx) self.assertEqual(context["trace-id"], "4948377316357291421") self.assertEqual(context["parent-id"], "6746998015037429512") self.assertEqual(context["sampling-priority"], "1") @@ -1143,7 +1295,7 @@ def test_extract_context_from_sns_event_with_b64_msg_attr(self): with open(test_file, "r") as event: event = json.load(event) ctx = get_mock_context() - context, source = extract_dd_trace_context(event, ctx) + context, source, event_source = extract_dd_trace_context(event, ctx) self.assertEqual(context["trace-id"], "4948377316357291421") self.assertEqual(context["parent-id"], "6746998015037429512") self.assertEqual(context["sampling-priority"], "1") @@ -1154,7 +1306,7 @@ def test_extract_context_from_sns_batch_event(self): with open(test_file, "r") as event: event = json.load(event) ctx = get_mock_context() - context, source = extract_dd_trace_context(event, ctx) + context, source, event_source = extract_dd_trace_context(event, ctx) self.assertEqual(context["trace-id"], "4948377316357291421") self.assertEqual(context["parent-id"], "6746998015037429512") self.assertEqual(context["sampling-priority"], "1") @@ -1165,7 +1317,7 @@ def test_extract_context_from_kinesis_event(self): with open(test_file, "r") as event: event = json.load(event) ctx = get_mock_context() - context, source = extract_dd_trace_context(event, ctx) + context, source, event_source = extract_dd_trace_context(event, ctx) self.assertEqual(context["trace-id"], "4948377316357291421") self.assertEqual(context["parent-id"], "2876253380018681026") self.assertEqual(context["sampling-priority"], "1") @@ -1176,7 +1328,7 @@ def test_extract_context_from_kinesis_batch_event(self): with open(test_file, "r") as event: event = json.load(event) ctx = get_mock_context() - context, source = extract_dd_trace_context(event, ctx) + context, source, event_source = extract_dd_trace_context(event, ctx) self.assertEqual(context["trace-id"], "4948377316357291421") self.assertEqual(context["parent-id"], "2876253380018681026") self.assertEqual(context["sampling-priority"], "1") @@ -1240,7 +1392,7 @@ def test_mark_trace_as_error_for_5xx_responses_sends_error_metric_and_set_error_ def test_no_error_with_nonetype_headers(self): lambda_ctx = get_mock_context() - ctx, source = extract_dd_trace_context( + ctx, source, event_type = extract_dd_trace_context( {"headers": None}, lambda_ctx, ) diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index a78cddfc9..4efadd968 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -1,7 +1,10 @@ +import base64 +import json import os import unittest from unittest.mock import patch, call, ANY, MagicMock +from datadog_lambda.constants import TraceHeader from datadog_lambda.wrapper import datadog_lambda_wrapper from datadog_lambda.metric import lambda_metric @@ -38,7 +41,7 @@ def setUp(self): patcher = patch("datadog_lambda.wrapper.extract_dd_trace_context") self.mock_extract_dd_trace_context = patcher.start() - self.mock_extract_dd_trace_context.return_value = ({}, None) + self.mock_extract_dd_trace_context.return_value = ({}, None, None) self.addCleanup(patcher.stop) patcher = patch("datadog_lambda.wrapper.set_correlation_ids") @@ -109,7 +112,7 @@ def lambda_handler(event, context): ] ) self.mock_extract_dd_trace_context.assert_called_with( - lambda_event, lambda_context, extractor=None + lambda_event, lambda_context, extractor=None, decode_authorizer_context=True ) self.mock_set_correlation_ids.assert_called() self.mock_inject_correlation_ids.assert_called() @@ -504,3 +507,40 @@ def lambda_handler(event, context): self.assertEqual(os.environ.get("DD_REQUESTS_SERVICE_NAME"), "myAwesomeService") del os.environ["DD_SERVICE"] + + def test_encode_authorizer_span(self): + @datadog_lambda_wrapper + def lambda_handler(event, context): + return { + "principalId": "foo", + "policyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Action": "execute-api:Invoke", + "Effect": "Allow", + "Resource": "dummy", + }, + ], + }, + "context": {"scope": "still here"}, + } + + lambda_event = {} + + lambda_context = get_mock_context() + mock_span = MagicMock() + mock_span.context.span_id = "123" + mock_span.context.trace_id = "456" + mock_span.context.sampling_priority = "1" + mock_span.context.dd_origin = None + mock_span.start_ns = 1668127541671386817 + mock_span.duration_ns = 1e8 + lambda_handler.inferred_span = mock_span + + result = lambda_handler(lambda_event, lambda_context) + inject_data = json.loads(base64.b64decode(result["context"]["_datadog"])) + self.assertEquals(inject_data[TraceHeader.PARENT_ID], "123") + self.assertEquals(inject_data[TraceHeader.TRACE_ID], "456") + self.assertEquals(inject_data[TraceHeader.SAMPLING_PRIORITY], "1") + self.assertEquals(result["context"]["scope"], "still here") From 1c8215b24210d93c6fa6b87d07a091405f6923bf Mon Sep 17 00:00:00 2001 From: Maxime David Date: Tue, 29 Nov 2022 15:07:50 -0500 Subject: [PATCH 025/403] udpate script and signing bucket (#273) --- scripts/publish_sandbox.sh | 4 ++-- scripts/run_integration_tests.sh | 4 ++-- scripts/sign_layers.sh | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/scripts/publish_sandbox.sh b/scripts/publish_sandbox.sh index 0517c65a7..4dec5889b 100755 --- a/scripts/publish_sandbox.sh +++ b/scripts/publish_sandbox.sh @@ -4,8 +4,8 @@ set -e ./scripts/build_layers.sh -aws-vault exec sandbox-account-admin -- ./scripts/sign_layers.sh sandbox -aws-vault exec sandbox-account-admin -- ./scripts/publish_layers.sh +aws-vault exec serverless-sandbox-account-admin -- ./scripts/sign_layers.sh sandbox +aws-vault exec serverless-sandbox-account-admin -- ./scripts/publish_layers.sh # Automatically create PR against github.com/DataDog/documentation # If you'd like to test, please uncomment the below line diff --git a/scripts/run_integration_tests.sh b/scripts/run_integration_tests.sh index f23adcf68..2d0e1c8f8 100755 --- a/scripts/run_integration_tests.sh +++ b/scripts/run_integration_tests.sh @@ -2,9 +2,9 @@ # Usage - run commands from repo root: # To check if new changes to the layer cause changes to any snapshots: -# BUILD_LAYERS=true DD_API_KEY=XXXX aws-vault exec sandbox-account-admin -- ./scripts/run_integration_tests +# BUILD_LAYERS=true DD_API_KEY=XXXX aws-vault exec serverless-sandbox-account-admin -- ./scripts/run_integration_tests # To regenerate snapshots: -# UPDATE_SNAPSHOTS=true DD_API_KEY=XXXX aws-vault exec sandbox-account-admin -- ./scripts/run_integration_tests +# UPDATE_SNAPSHOTS=true DD_API_KEY=XXXX aws-vault exec serverless-sandbox-account-admin -- ./scripts/run_integration_tests set -e diff --git a/scripts/sign_layers.sh b/scripts/sign_layers.sh index 56337dd1f..5a7e7921c 100755 --- a/scripts/sign_layers.sh +++ b/scripts/sign_layers.sh @@ -29,7 +29,7 @@ if [[ ! "${VALID_ACCOUNTS[@]}" =~ $1 ]]; then fi if [ "$1" = "sandbox" ]; then REGION="sa-east-1" - S3_BUCKET_NAME="dd-lambda-signing-bucket-sandbox" + S3_BUCKET_NAME="dd-lambda-signing-bucket-serverless-sandbox" fi if [ "$1" = "prod" ]; then REGION="us-east-1" From 4d8ee53e32cb7ba5f6d8e17622f3631762375b38 Mon Sep 17 00:00:00 2001 From: Maxime David Date: Fri, 2 Dec 2022 11:26:30 -0500 Subject: [PATCH 026/403] Use new user for integration tests (#274) --- .../api-gateway-non-proxy-async.json | 6 +-- .../event_samples/api-gateway-non-proxy.json | 6 +-- .../api-gateway-websocket-connect.json | 6 +-- .../api-gateway-websocket-default.json | 6 +-- .../api-gateway-websocket-disconnect.json | 6 +-- ...horizer-request-api-gateway-v1-cached.json | 6 +-- .../authorizer-request-api-gateway-v1.json | 6 +-- ...horizer-request-api-gateway-v2-cached.json | 4 +- .../authorizer-request-api-gateway-v2.json | 4 +- ...request-api-gateway-websocket-connect.json | 6 +-- ...request-api-gateway-websocket-message.json | 2 +- ...uthorizer-token-api-gateway-v1-cached.json | 6 +-- .../authorizer-token-api-gateway-v1.json | 6 +-- tests/event_samples/eventbridge-custom.json | 2 +- tests/event_samples/http-api.json | 4 +- tests/event_samples/kinesis-batch.json | 12 ++--- tests/event_samples/kinesis.json | 6 +-- .../event_samples/sns-b64-msg-attribute.json | 8 ++-- tests/event_samples/sns-batch.json | 16 +++---- .../sns-string-msg-attribute.json | 8 ++-- tests/event_samples/sqs-batch.json | 8 ++-- .../sqs-string-msg-attribute.json | 4 +- .../input_events/eventbridge-custom.json | 2 +- tests/integration/input_events/http-api.json | 4 +- tests/integration/input_events/websocket.json | 2 +- tests/integration/serverless.yml | 6 +-- .../snapshots/logs/async-metrics_python37.log | 48 +++++++++---------- .../snapshots/logs/async-metrics_python38.log | 48 +++++++++---------- .../snapshots/logs/async-metrics_python39.log | 48 +++++++++---------- .../snapshots/logs/sync-metrics_python37.log | 48 +++++++++---------- .../snapshots/logs/sync-metrics_python38.log | 48 +++++++++---------- .../snapshots/logs/sync-metrics_python39.log | 48 +++++++++---------- tests/test_tracing.py | 36 +++++++------- tests/test_trigger.py | 22 ++++----- 34 files changed, 249 insertions(+), 249 deletions(-) diff --git a/tests/event_samples/api-gateway-non-proxy-async.json b/tests/event_samples/api-gateway-non-proxy-async.json index 46ca9d9a6..09d388d22 100644 --- a/tests/event_samples/api-gateway-non-proxy-async.json +++ b/tests/event_samples/api-gateway-non-proxy-async.json @@ -10,7 +10,7 @@ "CloudFront-Is-SmartTV-Viewer": "false", "CloudFront-Is-Tablet-Viewer": "false", "CloudFront-Viewer-Country": "US", - "Host": "lgxbo6a518.execute-api.sa-east-1.amazonaws.com", + "Host": "lgxbo6a518.execute-api.eu-west-1.amazonaws.com", "User-Agent": "curl/7.64.1", "Via": "2.0 a1882a601559755135741e91a9f86c28.cloudfront.net (CloudFront)", "X-Amz-Cf-Id": "dHMNSBrMT0Xjg3rtMrI0Ie9BDg3D_OIPoj7m0mTuIOpTujrU0Ob8_A==", @@ -46,7 +46,7 @@ "US" ], "Host": [ - "lgxbo6a518.execute-api.sa-east-1.amazonaws.com" + "lgxbo6a518.execute-api.eu-west-1.amazonaws.com" ], "User-Agent": [ "curl/7.64.1" @@ -101,7 +101,7 @@ "userAgent": "curl/7.64.1", "user": null }, - "domainName": "lgxbo6a518.execute-api.sa-east-1.amazonaws.com", + "domainName": "lgxbo6a518.execute-api.eu-west-1.amazonaws.com", "apiId": "lgxbo6a518" }, "body": null, diff --git a/tests/event_samples/api-gateway-non-proxy.json b/tests/event_samples/api-gateway-non-proxy.json index 500351a17..978492b57 100644 --- a/tests/event_samples/api-gateway-non-proxy.json +++ b/tests/event_samples/api-gateway-non-proxy.json @@ -10,7 +10,7 @@ "CloudFront-Is-SmartTV-Viewer": "false", "CloudFront-Is-Tablet-Viewer": "false", "CloudFront-Viewer-Country": "US", - "Host": "lgxbo6a518.execute-api.sa-east-1.amazonaws.com", + "Host": "lgxbo6a518.execute-api.eu-west-1.amazonaws.com", "User-Agent": "curl/7.64.1", "Via": "2.0 a1882a601559755135741e91a9f86c28.cloudfront.net (CloudFront)", "X-Amz-Cf-Id": "dHMNSBrMT0Xjg3rtMrI0Ie9BDg3D_OIPoj7m0mTuIOpTujrU0Ob8_A==", @@ -45,7 +45,7 @@ "US" ], "Host": [ - "lgxbo6a518.execute-api.sa-east-1.amazonaws.com" + "lgxbo6a518.execute-api.eu-west-1.amazonaws.com" ], "User-Agent": [ "curl/7.64.1" @@ -100,7 +100,7 @@ "userAgent": "curl/7.64.1", "user": null }, - "domainName": "lgxbo6a518.execute-api.sa-east-1.amazonaws.com", + "domainName": "lgxbo6a518.execute-api.eu-west-1.amazonaws.com", "apiId": "lgxbo6a518" }, "body": null, diff --git a/tests/event_samples/api-gateway-websocket-connect.json b/tests/event_samples/api-gateway-websocket-connect.json index 73ccea31d..c54600fae 100644 --- a/tests/event_samples/api-gateway-websocket-connect.json +++ b/tests/event_samples/api-gateway-websocket-connect.json @@ -1,6 +1,6 @@ { "headers": { - "Host": "p62c47itsb.execute-api.sa-east-1.amazonaws.com", + "Host": "p62c47itsb.execute-api.eu-west-1.amazonaws.com", "Sec-WebSocket-Extensions": "permessage-deflate; client_max_window_bits", "Sec-WebSocket-Key": "cdxrfyi/jZ7kKMSRkIgBjg==", "Sec-WebSocket-Version": "13", @@ -14,7 +14,7 @@ }, "multiValueHeaders": { "Host": [ - "p62c47itsb.execute-api.sa-east-1.amazonaws.com" + "p62c47itsb.execute-api.eu-west-1.amazonaws.com" ], "Sec-WebSocket-Extensions": [ "permessage-deflate; client_max_window_bits" @@ -51,7 +51,7 @@ "sourceIp": "38.122.226.210" }, "requestId": "Fc2tgH1RmjQFnOg=", - "domainName": "p62c47itsb.execute-api.sa-east-1.amazonaws.com", + "domainName": "p62c47itsb.execute-api.eu-west-1.amazonaws.com", "connectionId": "Fc2tgfl3mjQCJfA=", "apiId": "p62c47itsb" }, diff --git a/tests/event_samples/api-gateway-websocket-default.json b/tests/event_samples/api-gateway-websocket-default.json index 7fc07e1c2..8ec748ea4 100644 --- a/tests/event_samples/api-gateway-websocket-default.json +++ b/tests/event_samples/api-gateway-websocket-default.json @@ -1,6 +1,6 @@ { "headers": { - "Host": "p62c47itsb.execute-api.sa-east-1.amazonaws.com", + "Host": "p62c47itsb.execute-api.eu-west-1.amazonaws.com", "x-api-key": "", "X-Forwarded-For": "", "x-restapi": "", @@ -10,7 +10,7 @@ }, "multiValueHeaders": { "Host": [ - "p62c47itsb.execute-api.sa-east-1.amazonaws.com" + "p62c47itsb.execute-api.eu-west-1.amazonaws.com" ], "x-api-key": [ "" @@ -36,7 +36,7 @@ "sourceIp": "38.122.226.210" }, "requestId": "Fc5S3EvdGjQFtsQ=", - "domainName": "p62c47itsb.execute-api.sa-east-1.amazonaws.com", + "domainName": "p62c47itsb.execute-api.eu-west-1.amazonaws.com", "connectionId": "Fc5SzcoYGjQCJlg=", "apiId": "p62c47itsb" }, diff --git a/tests/event_samples/api-gateway-websocket-disconnect.json b/tests/event_samples/api-gateway-websocket-disconnect.json index d518c030f..416aec13d 100644 --- a/tests/event_samples/api-gateway-websocket-disconnect.json +++ b/tests/event_samples/api-gateway-websocket-disconnect.json @@ -1,6 +1,6 @@ { "headers": { - "Host": "p62c47itsb.execute-api.sa-east-1.amazonaws.com", + "Host": "p62c47itsb.execute-api.eu-west-1.amazonaws.com", "x-api-key": "", "X-Forwarded-For": "", "x-restapi": "", @@ -10,7 +10,7 @@ }, "multiValueHeaders": { "Host": [ - "p62c47itsb.execute-api.sa-east-1.amazonaws.com" + "p62c47itsb.execute-api.eu-west-1.amazonaws.com" ], "x-api-key": [ "" @@ -37,7 +37,7 @@ "sourceIp": "38.122.226.210" }, "requestId": "Fc2ydE4LmjQFhdg=", - "domainName": "p62c47itsb.execute-api.sa-east-1.amazonaws.com", + "domainName": "p62c47itsb.execute-api.eu-west-1.amazonaws.com", "connectionId": "Fc2tgfl3mjQCJfA=", "apiId": "p62c47itsb" }, diff --git a/tests/event_samples/authorizer-request-api-gateway-v1-cached.json b/tests/event_samples/authorizer-request-api-gateway-v1-cached.json index 937e94b6b..6bcfe19b5 100644 --- a/tests/event_samples/authorizer-request-api-gateway-v1-cached.json +++ b/tests/event_samples/authorizer-request-api-gateway-v1-cached.json @@ -15,7 +15,7 @@ "CloudFront-Is-Tablet-Viewer": "false", "CloudFront-Viewer-ASN": "12271", "CloudFront-Viewer-Country": "US", - "Host": "amddr1rix9.execute-api.sa-east-1.amazonaws.com", + "Host": "amddr1rix9.execute-api.eu-west-1.amazonaws.com", "Postman-Token": "5ddd364a-4191-4dbc-9831-09f1bf46bca8", "User-Agent": "PostmanRuntime/7.29.2", "Via": "1.1 x.cloudfront.net (CloudFront)", @@ -38,7 +38,7 @@ "CloudFront-Is-Tablet-Viewer": ["false"], "CloudFront-Viewer-ASN": ["12271"], "CloudFront-Viewer-Country": ["US"], - "Host": ["amddr1rix9.execute-api.sa-east-1.amazonaws.com"], + "Host": ["amddr1rix9.execute-api.eu-west-1.amazonaws.com"], "Postman-Token": ["5ddd364a-4191-4dbc-9831-09f1bf46bca8"], "User-Agent": ["PostmanRuntime/7.29.2"], "Via": ["1.1 x.cloudfront.net (CloudFront)"], @@ -85,7 +85,7 @@ "userAgent": "PostmanRuntime/7.29.2", "user": null }, - "domainName": "amddr1rix9.execute-api.sa-east-1.amazonaws.com", + "domainName": "amddr1rix9.execute-api.eu-west-1.amazonaws.com", "apiId": "amddr1rix9" }, "body": null, diff --git a/tests/event_samples/authorizer-request-api-gateway-v1.json b/tests/event_samples/authorizer-request-api-gateway-v1.json index 00818eac0..d14b7aa01 100644 --- a/tests/event_samples/authorizer-request-api-gateway-v1.json +++ b/tests/event_samples/authorizer-request-api-gateway-v1.json @@ -15,7 +15,7 @@ "CloudFront-Is-Tablet-Viewer": "false", "CloudFront-Viewer-ASN": "12271", "CloudFront-Viewer-Country": "US", - "Host": "amddr1rix9.execute-api.sa-east-1.amazonaws.com", + "Host": "amddr1rix9.execute-api.eu-west-1.amazonaws.com", "Postman-Token": "75a5e2b0-d8e8-4370-ad2c-7209761c3f43", "User-Agent": "PostmanRuntime/7.29.2", "Via": "1.1 ed4584f7c263c11cf4adf75ba3a25764.cloudfront.net (CloudFront)", @@ -38,7 +38,7 @@ "CloudFront-Is-Tablet-Viewer": ["false"], "CloudFront-Viewer-ASN": ["12271"], "CloudFront-Viewer-Country": ["US"], - "Host": ["amddr1rix9.execute-api.sa-east-1.amazonaws.com"], + "Host": ["amddr1rix9.execute-api.eu-west-1.amazonaws.com"], "Postman-Token": ["75a5e2b0-d8e8-4370-ad2c-7209761c3f43"], "User-Agent": ["PostmanRuntime/7.29.2"], "Via": ["1.1 ed4584f7c263c11cf4adf75ba3a25764.cloudfront.net (CloudFront)"], @@ -85,7 +85,7 @@ "userAgent": "PostmanRuntime/7.29.2", "user": null }, - "domainName": "amddr1rix9.execute-api.sa-east-1.amazonaws.com", + "domainName": "amddr1rix9.execute-api.eu-west-1.amazonaws.com", "apiId": "amddr1rix9" }, "body": null, diff --git a/tests/event_samples/authorizer-request-api-gateway-v2-cached.json b/tests/event_samples/authorizer-request-api-gateway-v2-cached.json index 53ee1624f..f9ac874cb 100644 --- a/tests/event_samples/authorizer-request-api-gateway-v2-cached.json +++ b/tests/event_samples/authorizer-request-api-gateway-v2-cached.json @@ -10,7 +10,7 @@ "authorizationtoken": "secretT0k3n", "cache-control": "no-cache", "content-length": "0", - "host": "amddr1rix9.execute-api.sa-east-1.amazonaws.com", + "host": "amddr1rix9.execute-api.eu-west-1.amazonaws.com", "postman-token": "f901530c-cc2f-475f-8634-d9156e9cd9d7", "user-agent": "PostmanRuntime/7.29.2", "userid": "1236", @@ -28,7 +28,7 @@ "scope": "this is just a string" } }, - "domainName": "amddr1rix9.execute-api.sa-east-1.amazonaws.com", + "domainName": "amddr1rix9.execute-api.eu-west-1.amazonaws.com", "domainPrefix": "amddr1rix9", "http": { "method": "GET", diff --git a/tests/event_samples/authorizer-request-api-gateway-v2.json b/tests/event_samples/authorizer-request-api-gateway-v2.json index 92ce09ba3..2984e14ec 100644 --- a/tests/event_samples/authorizer-request-api-gateway-v2.json +++ b/tests/event_samples/authorizer-request-api-gateway-v2.json @@ -10,7 +10,7 @@ "authorizationtoken": "secretT0k3n", "cache-control": "no-cache", "content-length": "0", - "host": "amddr1rix9.execute-api.sa-east-1.amazonaws.com", + "host": "amddr1rix9.execute-api.eu-west-1.amazonaws.com", "postman-token": "5e0efdb2-d93f-4d44-8792-45404d40dae2", "user": "12345", "user-agent": "curl/7.64.1", @@ -28,7 +28,7 @@ "scope": "this is just a string" } }, - "domainName": "amddr1rix9.execute-api.sa-east-1.amazonaws.com", + "domainName": "amddr1rix9.execute-api.eu-west-1.amazonaws.com", "domainPrefix": "amddr1rix9", "http": { "method": "GET", diff --git a/tests/event_samples/authorizer-request-api-gateway-websocket-connect.json b/tests/event_samples/authorizer-request-api-gateway-websocket-connect.json index 1875097df..ab4fb1045 100644 --- a/tests/event_samples/authorizer-request-api-gateway-websocket-connect.json +++ b/tests/event_samples/authorizer-request-api-gateway-websocket-connect.json @@ -1,7 +1,7 @@ { "headers": { "Auth": "secretT0k3n", - "Host": "amddr1rix9.execute-api.sa-east-1.amazonaws.com", + "Host": "amddr1rix9.execute-api.eu-west-1.amazonaws.com", "Sec-WebSocket-Extensions": "permessage-deflate; client_max_window_bits", "Sec-WebSocket-Key": "j9g8xXvniFqyyA+34vQ/Lg==", "Sec-WebSocket-Version": "13", @@ -12,7 +12,7 @@ }, "multiValueHeaders": { "Auth": ["secretT0k3n"], - "Host": ["amddr1rix9.execute-api.sa-east-1.amazonaws.com"], + "Host": ["amddr1rix9.execute-api.eu-west-1.amazonaws.com"], "Sec-WebSocket-Extensions": ["permessage-deflate; client_max_window_bits"], "Sec-WebSocket-Key": ["j9g8xXvniFqyyA+34vQ/Lg=="], "Sec-WebSocket-Version": ["13"], @@ -40,7 +40,7 @@ "sourceIp": "38.122.226.210" }, "requestId": "abc123", - "domainName": "amddr1rix9.execute-api.sa-east-1.amazonaws.com", + "domainName": "amddr1rix9.execute-api.eu-west-1.amazonaws.com", "connectionId": "ZLr9QeNLmjQCIZA=", "apiId": "amddr1rix9" }, diff --git a/tests/event_samples/authorizer-request-api-gateway-websocket-message.json b/tests/event_samples/authorizer-request-api-gateway-websocket-message.json index 8ac5d2e95..576b1625a 100644 --- a/tests/event_samples/authorizer-request-api-gateway-websocket-message.json +++ b/tests/event_samples/authorizer-request-api-gateway-websocket-message.json @@ -18,7 +18,7 @@ "sourceIp": "38.122.226.210" }, "requestId": "abc123", - "domainName": "amddr1rix9.execute-api.sa-east-1.amazonaws.com", + "domainName": "amddr1rix9.execute-api.eu-west-1.amazonaws.com", "connectionId": "ZLwtceO1mjQCI8Q=", "apiId": "amddr1rix9" }, diff --git a/tests/event_samples/authorizer-token-api-gateway-v1-cached.json b/tests/event_samples/authorizer-token-api-gateway-v1-cached.json index 18ade2488..f7b30faad 100644 --- a/tests/event_samples/authorizer-token-api-gateway-v1-cached.json +++ b/tests/event_samples/authorizer-token-api-gateway-v1-cached.json @@ -15,7 +15,7 @@ "CloudFront-Is-Tablet-Viewer": "false", "CloudFront-Viewer-ASN": "174", "CloudFront-Viewer-Country": "US", - "Host": "amddr1rix9.execute-api.sa-east-1.amazonaws.com", + "Host": "amddr1rix9.execute-api.eu-west-1.amazonaws.com", "Postman-Token": "bb30e418-d4ee-45b6-a659-89f4dbd41c84", "User-Agent": "PostmanRuntime/7.29.2", "Via": "1.1 x.cloudfront.net (CloudFront)", @@ -38,7 +38,7 @@ "CloudFront-Is-Tablet-Viewer": ["false"], "CloudFront-Viewer-ASN": ["174"], "CloudFront-Viewer-Country": ["US"], - "Host": ["amddr1rix9.execute-api.sa-east-1.amazonaws.com"], + "Host": ["amddr1rix9.execute-api.eu-west-1.amazonaws.com"], "Postman-Token": ["bb30e418-d4ee-45b6-a659-89f4dbd41c84"], "User-Agent": ["PostmanRuntime/7.29.2"], "Via": ["1.1 x.cloudfront.net (CloudFront)"], @@ -85,7 +85,7 @@ "userAgent": "PostmanRuntime/7.29.2", "user": null }, - "domainName": "amddr1rix9.execute-api.sa-east-1.amazonaws.com", + "domainName": "amddr1rix9.execute-api.eu-west-1.amazonaws.com", "apiId": "amddr1rix9" }, "body": null, diff --git a/tests/event_samples/authorizer-token-api-gateway-v1.json b/tests/event_samples/authorizer-token-api-gateway-v1.json index 1edba05e2..c31da2785 100644 --- a/tests/event_samples/authorizer-token-api-gateway-v1.json +++ b/tests/event_samples/authorizer-token-api-gateway-v1.json @@ -15,7 +15,7 @@ "CloudFront-Is-Tablet-Viewer": "false", "CloudFront-Viewer-ASN": "174", "CloudFront-Viewer-Country": "US", - "Host": "amddr1rix9.execute-api.sa-east-1.amazonaws.com", + "Host": "amddr1rix9.execute-api.eu-west-1.amazonaws.com", "Postman-Token": "791b2f79-1732-4877-abc1-5c538daf4642", "User-Agent": "PostmanRuntime/7.29.2", "Via": "1.1 d58463d219ef6ca0331e7200a6667c18.cloudfront.net (CloudFront)", @@ -38,7 +38,7 @@ "CloudFront-Is-Tablet-Viewer": ["false"], "CloudFront-Viewer-ASN": ["174"], "CloudFront-Viewer-Country": ["US"], - "Host": ["amddr1rix9.execute-api.sa-east-1.amazonaws.com"], + "Host": ["amddr1rix9.execute-api.eu-west-1.amazonaws.com"], "Postman-Token": ["791b2f79-1732-4877-abc1-5c538daf4642"], "User-Agent": ["PostmanRuntime/7.29.2"], "Via": ["1.1 d58463d219ef6ca0331e7200a6667c18.cloudfront.net (CloudFront)"], @@ -85,7 +85,7 @@ "userAgent": "PostmanRuntime/7.29.2", "user": null }, - "domainName": "amddr1rix9.execute-api.sa-east-1.amazonaws.com", + "domainName": "amddr1rix9.execute-api.eu-west-1.amazonaws.com", "apiId": "amddr1rix9" }, "body": null, diff --git a/tests/event_samples/eventbridge-custom.json b/tests/event_samples/eventbridge-custom.json index 456980f84..c24d21cae 100644 --- a/tests/event_samples/eventbridge-custom.json +++ b/tests/event_samples/eventbridge-custom.json @@ -5,7 +5,7 @@ "source": "eventbridge.custom.event.sender", "account": "601427279990", "time": "2021-11-04T01:37:45Z", - "region": "sa-east-1", + "region": "eu-west-1", "resources": [], "detail": { "foo": "bar", diff --git a/tests/event_samples/http-api.json b/tests/event_samples/http-api.json index 602e795bb..2968c1b5d 100644 --- a/tests/event_samples/http-api.json +++ b/tests/event_samples/http-api.json @@ -6,7 +6,7 @@ "headers": { "accept": "*/*", "content-length": "0", - "host": "x02yirxc7a.execute-api.sa-east-1.amazonaws.com", + "host": "x02yirxc7a.execute-api.eu-west-1.amazonaws.com", "user-agent": "curl/7.64.1", "x-amzn-trace-id": "Root=1-613a52fb-4c43cfc95e0241c1471bfa05", "x-forwarded-for": "38.122.226.210", @@ -19,7 +19,7 @@ "requestContext": { "accountId": "601427279990", "apiId": "x02yirxc7a", - "domainName": "x02yirxc7a.execute-api.sa-east-1.amazonaws.com", + "domainName": "x02yirxc7a.execute-api.eu-west-1.amazonaws.com", "domainPrefix": "x02yirxc7a", "http": { "method": "GET", diff --git a/tests/event_samples/kinesis-batch.json b/tests/event_samples/kinesis-batch.json index e1d0833a9..9c645a464 100644 --- a/tests/event_samples/kinesis-batch.json +++ b/tests/event_samples/kinesis-batch.json @@ -12,9 +12,9 @@ "eventVersion": "1.0", "eventID": "shardId-000000000002:49624230154685806402418173680709770494154422022871973922", "eventName": "aws:kinesis:record", - "invokeIdentityArn": "arn:aws:iam::601427279990:role/inferred-spans-python-dev-sa-east-1-lambdaRole", - "awsRegion": "sa-east-1", - "eventSourceARN": "arn:aws:kinesis:sa-east-1:601427279990:stream/kinesisStream" + "invokeIdentityArn": "arn:aws:iam::601427279990:role/inferred-spans-python-dev-eu-west-1-lambdaRole", + "awsRegion": "eu-west-1", + "eventSourceARN": "arn:aws:kinesis:eu-west-1:601427279990:stream/kinesisStream" }, { "kinesis": { @@ -28,9 +28,9 @@ "eventVersion": "1.0", "eventID": "shardId-000000000002:49624230154685806402418173680709770494154422022871973922", "eventName": "aws:kinesis:record", - "invokeIdentityArn": "arn:aws:iam::601427279990:role/inferred-spans-python-dev-sa-east-1-lambdaRole", - "awsRegion": "sa-east-1", - "eventSourceARN": "arn:aws:kinesis:sa-east-1:601427279990:stream/kinesisStream" + "invokeIdentityArn": "arn:aws:iam::601427279990:role/inferred-spans-python-dev-eu-west-1-lambdaRole", + "awsRegion": "eu-west-1", + "eventSourceARN": "arn:aws:kinesis:eu-west-1:601427279990:stream/kinesisStream" } ] } diff --git a/tests/event_samples/kinesis.json b/tests/event_samples/kinesis.json index 7b9f444fb..a320fc44f 100644 --- a/tests/event_samples/kinesis.json +++ b/tests/event_samples/kinesis.json @@ -12,9 +12,9 @@ "eventVersion": "1.0", "eventID": "shardId-000000000002:49624230154685806402418173680709770494154422022871973922", "eventName": "aws:kinesis:record", - "invokeIdentityArn": "arn:aws:iam::601427279990:role/inferred-spans-python-dev-sa-east-1-lambdaRole", - "awsRegion": "sa-east-1", - "eventSourceARN": "arn:aws:kinesis:sa-east-1:601427279990:stream/kinesisStream" + "invokeIdentityArn": "arn:aws:iam::601427279990:role/inferred-spans-python-dev-eu-west-1-lambdaRole", + "awsRegion": "eu-west-1", + "eventSourceARN": "arn:aws:kinesis:eu-west-1:601427279990:stream/kinesisStream" } ] } diff --git a/tests/event_samples/sns-b64-msg-attribute.json b/tests/event_samples/sns-b64-msg-attribute.json index 586ec56f9..ce67e19b8 100644 --- a/tests/event_samples/sns-b64-msg-attribute.json +++ b/tests/event_samples/sns-b64-msg-attribute.json @@ -3,18 +3,18 @@ { "EventSource": "aws:sns", "EventVersion": "1.0", - "EventSubscriptionArn": "arn:aws:sns:sa-east-1:601427279990:serverlessTracingTopicPy:224b60ba-befc-4830-ad96-f1f0ac94eb04", + "EventSubscriptionArn": "arn:aws:sns:eu-west-1:601427279990:serverlessTracingTopicPy:224b60ba-befc-4830-ad96-f1f0ac94eb04", "Sns": { "Type": "Notification", "MessageId": "87056a47-f506-5d77-908b-303605d3b197", - "TopicArn": "arn:aws:sns:sa-east-1:601427279990:serverlessTracingTopicPy", + "TopicArn": "arn:aws:sns:eu-west-1:601427279990:serverlessTracingTopicPy", "Subject": null, "Message": "Asynchronously invoking a Lambda function with SNS.", "Timestamp": "2022-01-31T14:13:41.637Z", "SignatureVersion": "1", "Signature": "BmwnJb0Ku2KgQef9QOgaSSTwLyUsbkRq90lzD5Vn4mAcRUOq2ForfMOYbxMB6idljWIWy9t/jK4AIMxPGk/eOGiRcENx3BvAcGcoDayBRFY13+xUGaPn5Lfoht/ZJ7/hmCgFWKRa8ooATZL+AwGAw6Id8qzf0R3M3k2asy5Vxa4ODKiFW9OzWY/zFgsYJhddR3JrQl9YOMRyIobNNHT96o1TwjGsSUTEemrxA6jQtb3QbardEKO+2SuataLEZki7gE2D2sA300WqZecumI339q7la+OIj6VDGDwFoppE2sh8hzJYXAH7oo11giwltE0V3/eLFCVhsE8Y1KD/yDPPsA==", - "SigningCertUrl": "https://sns.sa-east-1.amazonaws.com/SimpleNotificationService-7ff5318490ec183fbaddaa2a969abfda.pem", - "UnsubscribeUrl": "https://sns.sa-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:sa-east-1:601427279990:serverlessTracingTopicPy:224b60ba-befc-4830-ad96-f1f0ac94eb04", + "SigningCertUrl": "https://sns.eu-west-1.amazonaws.com/SimpleNotificationService-7ff5318490ec183fbaddaa2a969abfda.pem", + "UnsubscribeUrl": "https://sns.eu-west-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:eu-west-1:601427279990:serverlessTracingTopicPy:224b60ba-befc-4830-ad96-f1f0ac94eb04", "MessageAttributes": { "_datadog": { "Type": "Binary", diff --git a/tests/event_samples/sns-batch.json b/tests/event_samples/sns-batch.json index c84da2977..4b5fdb344 100644 --- a/tests/event_samples/sns-batch.json +++ b/tests/event_samples/sns-batch.json @@ -3,18 +3,18 @@ { "EventSource": "aws:sns", "EventVersion": "1.0", - "EventSubscriptionArn": "arn:aws:sns:sa-east-1:601427279990:serverlessTracingTopicPy:224b60ba-befc-4830-ad96-f1f0ac94eb04", + "EventSubscriptionArn": "arn:aws:sns:eu-west-1:601427279990:serverlessTracingTopicPy:224b60ba-befc-4830-ad96-f1f0ac94eb04", "Sns": { "Type": "Notification", "MessageId": "87056a47-f506-5d77-908b-303605d3b197", - "TopicArn": "arn:aws:sns:sa-east-1:601427279990:serverlessTracingTopicPy", + "TopicArn": "arn:aws:sns:eu-west-1:601427279990:serverlessTracingTopicPy", "Subject": null, "Message": "Asynchronously invoking a Lambda function with SNS.", "Timestamp": "2022-01-31T14:13:41.637Z", "SignatureVersion": "1", "Signature": "BmwnJb0Ku2KgQef9QOgaSSTwLyUsbkRq90lzD5Vn4mAcRUOq2ForfMOYbxMB6idljWIWy9t/jK4AIMxPGk/eOGiRcENx3BvAcGcoDayBRFY13+xUGaPn5Lfoht/ZJ7/hmCgFWKRa8ooATZL+AwGAw6Id8qzf0R3M3k2asy5Vxa4ODKiFW9OzWY/zFgsYJhddR3JrQl9YOMRyIobNNHT96o1TwjGsSUTEemrxA6jQtb3QbardEKO+2SuataLEZki7gE2D2sA300WqZecumI339q7la+OIj6VDGDwFoppE2sh8hzJYXAH7oo11giwltE0V3/eLFCVhsE8Y1KD/yDPPsA==", - "SigningCertUrl": "https://sns.sa-east-1.amazonaws.com/SimpleNotificationService-7ff5318490ec183fbaddaa2a969abfda.pem", - "UnsubscribeUrl": "https://sns.sa-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:sa-east-1:601427279990:serverlessTracingTopicPy:224b60ba-befc-4830-ad96-f1f0ac94eb04", + "SigningCertUrl": "https://sns.eu-west-1.amazonaws.com/SimpleNotificationService-7ff5318490ec183fbaddaa2a969abfda.pem", + "UnsubscribeUrl": "https://sns.eu-west-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:eu-west-1:601427279990:serverlessTracingTopicPy:224b60ba-befc-4830-ad96-f1f0ac94eb04", "MessageAttributes": { "_datadog": { "Type": "String", @@ -26,18 +26,18 @@ { "EventSource": "aws:sns", "EventVersion": "1.0", - "EventSubscriptionArn": "arn:aws:sns:sa-east-1:601427279990:serverlessTracingTopicPy:224b60ba-befc-4830-ad96-f1f0ac94eb04", + "EventSubscriptionArn": "arn:aws:sns:eu-west-1:601427279990:serverlessTracingTopicPy:224b60ba-befc-4830-ad96-f1f0ac94eb04", "Sns": { "Type": "Notification", "MessageId": "87056a47-f506-5d77-908b-303605d3b197", - "TopicArn": "arn:aws:sns:sa-east-1:601427279990:serverlessTracingTopicPy", + "TopicArn": "arn:aws:sns:eu-west-1:601427279990:serverlessTracingTopicPy", "Subject": null, "Message": "Asynchronously invoking a Lambda function with SNS.", "Timestamp": "2022-01-31T14:13:41.637Z", "SignatureVersion": "1", "Signature": "BmwnJb0Ku2KgQef9QOgaSSTwLyUsbkRq90lzD5Vn4mAcRUOq2ForfMOYbxMB6idljWIWy9t/jK4AIMxPGk/eOGiRcENx3BvAcGcoDayBRFY13+xUGaPn5Lfoht/ZJ7/hmCgFWKRa8ooATZL+AwGAw6Id8qzf0R3M3k2asy5Vxa4ODKiFW9OzWY/zFgsYJhddR3JrQl9YOMRyIobNNHT96o1TwjGsSUTEemrxA6jQtb3QbardEKO+2SuataLEZki7gE2D2sA300WqZecumI339q7la+OIj6VDGDwFoppE2sh8hzJYXAH7oo11giwltE0V3/eLFCVhsE8Y1KD/yDPPsA==", - "SigningCertUrl": "https://sns.sa-east-1.amazonaws.com/SimpleNotificationService-7ff5318490ec183fbaddaa2a969abfda.pem", - "UnsubscribeUrl": "https://sns.sa-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:sa-east-1:601427279990:serverlessTracingTopicPy:224b60ba-befc-4830-ad96-f1f0ac94eb04", + "SigningCertUrl": "https://sns.eu-west-1.amazonaws.com/SimpleNotificationService-7ff5318490ec183fbaddaa2a969abfda.pem", + "UnsubscribeUrl": "https://sns.eu-west-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:eu-west-1:601427279990:serverlessTracingTopicPy:224b60ba-befc-4830-ad96-f1f0ac94eb04", "MessageAttributes": { "_datadog": { "Type": "String", diff --git a/tests/event_samples/sns-string-msg-attribute.json b/tests/event_samples/sns-string-msg-attribute.json index b9be446c2..8bdacaeaf 100644 --- a/tests/event_samples/sns-string-msg-attribute.json +++ b/tests/event_samples/sns-string-msg-attribute.json @@ -3,18 +3,18 @@ { "EventSource": "aws:sns", "EventVersion": "1.0", - "EventSubscriptionArn": "arn:aws:sns:sa-east-1:601427279990:serverlessTracingTopicPy:224b60ba-befc-4830-ad96-f1f0ac94eb04", + "EventSubscriptionArn": "arn:aws:sns:eu-west-1:601427279990:serverlessTracingTopicPy:224b60ba-befc-4830-ad96-f1f0ac94eb04", "Sns": { "Type": "Notification", "MessageId": "87056a47-f506-5d77-908b-303605d3b197", - "TopicArn": "arn:aws:sns:sa-east-1:601427279990:serverlessTracingTopicPy", + "TopicArn": "arn:aws:sns:eu-west-1:601427279990:serverlessTracingTopicPy", "Subject": null, "Message": "Asynchronously invoking a Lambda function with SNS.", "Timestamp": "2022-01-31T14:13:41.637Z", "SignatureVersion": "1", "Signature": "BmwnJb0Ku2KgQef9QOgaSSTwLyUsbkRq90lzD5Vn4mAcRUOq2ForfMOYbxMB6idljWIWy9t/jK4AIMxPGk/eOGiRcENx3BvAcGcoDayBRFY13+xUGaPn5Lfoht/ZJ7/hmCgFWKRa8ooATZL+AwGAw6Id8qzf0R3M3k2asy5Vxa4ODKiFW9OzWY/zFgsYJhddR3JrQl9YOMRyIobNNHT96o1TwjGsSUTEemrxA6jQtb3QbardEKO+2SuataLEZki7gE2D2sA300WqZecumI339q7la+OIj6VDGDwFoppE2sh8hzJYXAH7oo11giwltE0V3/eLFCVhsE8Y1KD/yDPPsA==", - "SigningCertUrl": "https://sns.sa-east-1.amazonaws.com/SimpleNotificationService-7ff5318490ec183fbaddaa2a969abfda.pem", - "UnsubscribeUrl": "https://sns.sa-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:sa-east-1:601427279990:serverlessTracingTopicPy:224b60ba-befc-4830-ad96-f1f0ac94eb04", + "SigningCertUrl": "https://sns.eu-west-1.amazonaws.com/SimpleNotificationService-7ff5318490ec183fbaddaa2a969abfda.pem", + "UnsubscribeUrl": "https://sns.eu-west-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:eu-west-1:601427279990:serverlessTracingTopicPy:224b60ba-befc-4830-ad96-f1f0ac94eb04", "MessageAttributes": { "_datadog": { "Type": "String", diff --git a/tests/event_samples/sqs-batch.json b/tests/event_samples/sqs-batch.json index d3687dcfd..9ec6cba17 100644 --- a/tests/event_samples/sqs-batch.json +++ b/tests/event_samples/sqs-batch.json @@ -21,8 +21,8 @@ "md5OfMessageAttributes": "14b3b4a81d5ddeb96af62963d703c528", "md5OfBody": "24933a8beabe72088d7576cab1a59142", "eventSource": "aws:sqs", - "eventSourceARN": "arn:aws:sqs:sa-east-1:601427279990:InferredSpansQueueNode", - "awsRegion": "sa-east-1" + "eventSourceARN": "arn:aws:sqs:eu-west-1:601427279990:InferredSpansQueueNode", + "awsRegion": "eu-west-1" }, { "messageId": "2fcbad66-372a-4b1c-87da-26b2cea13937", @@ -45,8 +45,8 @@ "md5OfMessageAttributes": "14b3b4a81d5ddeb96af62963d703c528", "md5OfBody": "24933a8beabe72088d7576cab1a59142", "eventSource": "aws:sqs", - "eventSourceARN": "arn:aws:sqs:sa-east-1:601427279990:InferredSpansQueueNode", - "awsRegion": "sa-east-1" + "eventSourceARN": "arn:aws:sqs:eu-west-1:601427279990:InferredSpansQueueNode", + "awsRegion": "eu-west-1" } ] } diff --git a/tests/event_samples/sqs-string-msg-attribute.json b/tests/event_samples/sqs-string-msg-attribute.json index c182704be..2bde2ce5c 100644 --- a/tests/event_samples/sqs-string-msg-attribute.json +++ b/tests/event_samples/sqs-string-msg-attribute.json @@ -21,8 +21,8 @@ "md5OfMessageAttributes": "14b3b4a81d5ddeb96af62963d703c528", "md5OfBody": "24933a8beabe72088d7576cab1a59142", "eventSource": "aws:sqs", - "eventSourceARN": "arn:aws:sqs:sa-east-1:601427279990:InferredSpansQueueNode", - "awsRegion": "sa-east-1" + "eventSourceARN": "arn:aws:sqs:eu-west-1:601427279990:InferredSpansQueueNode", + "awsRegion": "eu-west-1" } ] } diff --git a/tests/integration/input_events/eventbridge-custom.json b/tests/integration/input_events/eventbridge-custom.json index 549bb96ad..04184feff 100644 --- a/tests/integration/input_events/eventbridge-custom.json +++ b/tests/integration/input_events/eventbridge-custom.json @@ -5,7 +5,7 @@ "source": "eventbridge.custom.event.sender", "account": "601427279990", "time": "2021-11-04T01:37:45Z", - "region": "sa-east-1", + "region": "eu-west-1", "resources": [], "detail": { "foo": "bar" diff --git a/tests/integration/input_events/http-api.json b/tests/integration/input_events/http-api.json index fe1bbece5..83de330ff 100644 --- a/tests/integration/input_events/http-api.json +++ b/tests/integration/input_events/http-api.json @@ -6,7 +6,7 @@ "headers": { "accept": "*/*", "content-length": "0", - "host": "x02yirxc7a.execute-api.sa-east-1.amazonaws.com", + "host": "x02yirxc7a.execute-api.eu-west-1.amazonaws.com", "user-agent": "curl/7.64.1", "x-amzn-trace-id": "Root=1-613a52fb-4c43cfc95e0241c1471bfa05", "x-forwarded-for": "38.122.226.210", @@ -16,7 +16,7 @@ "requestContext": { "accountId": "601427279990", "apiId": "x02yirxc7a", - "domainName": "x02yirxc7a.execute-api.sa-east-1.amazonaws.com", + "domainName": "x02yirxc7a.execute-api.eu-west-1.amazonaws.com", "domainPrefix": "x02yirxc7a", "http": { "method": "GET", diff --git a/tests/integration/input_events/websocket.json b/tests/integration/input_events/websocket.json index 7ad3bafd6..24215c633 100644 --- a/tests/integration/input_events/websocket.json +++ b/tests/integration/input_events/websocket.json @@ -13,7 +13,7 @@ "sourceIp": "38.122.226.210" }, "requestId": "Fc5S3EvdGjQFtsQ=", - "domainName": "p62c47itsb.execute-api.sa-east-1.amazonaws.com", + "domainName": "p62c47itsb.execute-api.eu-west-1.amazonaws.com", "connectionId": "Fc5SzcoYGjQCJlg=", "apiId": "p62c47itsb" }, diff --git a/tests/integration/serverless.yml b/tests/integration/serverless.yml index 7ad6f4b06..9bb8a79b4 100644 --- a/tests/integration/serverless.yml +++ b/tests/integration/serverless.yml @@ -3,7 +3,7 @@ service: integration-tests-python provider: name: aws - region: sa-east-1 + region: eu-west-1 tracing: lambda: "PassThrough" environment: @@ -13,10 +13,10 @@ provider: DD_TRACE_MANAGED_SERVICES: true timeout: 15 deploymentBucket: - name: integration-tests-deployment-bucket + name: integration-tests-serververless-deployment-bucket iam: # IAM permissions require that all functions are deployed with this role - role: "arn:aws:iam::601427279990:role/serverless-integration-test-lambda-role" + role: "arn:aws:iam::425362996713:role/serverless-integration-test-lambda-role" layers: python: diff --git a/tests/integration/snapshots/logs/async-metrics_python37.log b/tests/integration/snapshots/logs/async-metrics_python37.log index 602708d8d..606b229d4 100644 --- a/tests/integration/snapshots/logs/async-metrics_python37.log +++ b/tests/integration/snapshots/logs/async-metrics_python37.log @@ -4,7 +4,7 @@ START "v": 1, "e": XXXX, "t": [ - "region:sa-east-1", + "region:eu-west-1", "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python37", "resource:integration-tests-python-XXXX-async-metrics_python37", @@ -88,7 +88,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "cold_start": "true", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-async-metrics_python37", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python37", "function_version": "$LATEST", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python37", @@ -162,7 +162,7 @@ START "v": 1, "e": XXXX, "t": [ - "region:sa-east-1", + "region:eu-west-1", "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python37", "resource:integration-tests-python-XXXX-async-metrics_python37", @@ -245,7 +245,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-async-metrics_python37", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python37", "function_version": "$LATEST", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python37", @@ -315,7 +315,7 @@ START "v": 1, "e": XXXX, "t": [ - "region:sa-east-1", + "region:eu-west-1", "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python37", "resource:integration-tests-python-XXXX-async-metrics_python37", @@ -392,7 +392,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-async-metrics_python37", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python37", "function_version": "$LATEST", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python37", @@ -461,7 +461,7 @@ START "v": 1, "e": XXXX, "t": [ - "region:sa-east-1", + "region:eu-west-1", "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python37", "resource:integration-tests-python-XXXX-async-metrics_python37", @@ -501,7 +501,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "XXXX.execute-api.sa-east-1.amazonaws.com", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", "resource": "GET /httpapi/get", "name": "aws.httpapi", "error": 0, @@ -512,7 +512,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "operation_name": "aws.httpapi", "endpoint": "/httpapi/get", - "http.url": "XXXX.execute-api.sa-east-1.amazonaws.com/httpapi/get", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.protocol": "HTTP/1.1", "http.source_ip": "XXXX", @@ -548,7 +548,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-async-metrics_python37", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python37", "function_version": "$LATEST", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python37", @@ -558,7 +558,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "http.url": "XXXX.execute-api.sa-east-1.amazonaws.com", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", "http.status_code": "200" @@ -622,7 +622,7 @@ START "v": 1, "e": XXXX, "t": [ - "region:sa-east-1", + "region:eu-west-1", "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python37", "resource:integration-tests-python-XXXX-async-metrics_python37", @@ -705,7 +705,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-async-metrics_python37", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python37", "function_version": "$LATEST", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python37", @@ -775,7 +775,7 @@ START "v": 1, "e": XXXX, "t": [ - "region:sa-east-1", + "region:eu-west-1", "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python37", "resource:integration-tests-python-XXXX-async-metrics_python37", @@ -855,7 +855,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-async-metrics_python37", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python37", "function_version": "$LATEST", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python37", @@ -925,7 +925,7 @@ START "v": 1, "e": XXXX, "t": [ - "region:sa-east-1", + "region:eu-west-1", "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python37", "resource:integration-tests-python-XXXX-async-metrics_python37", @@ -1006,7 +1006,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-async-metrics_python37", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python37", "function_version": "$LATEST", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python37", @@ -1076,7 +1076,7 @@ START "v": 1, "e": XXXX, "t": [ - "region:sa-east-1", + "region:eu-west-1", "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python37", "resource:integration-tests-python-XXXX-async-metrics_python37", @@ -1156,7 +1156,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-async-metrics_python37", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python37", "function_version": "$LATEST", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python37", @@ -1226,7 +1226,7 @@ START "v": 1, "e": XXXX, "t": [ - "region:sa-east-1", + "region:eu-west-1", "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python37", "resource:integration-tests-python-XXXX-async-metrics_python37", @@ -1266,7 +1266,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "XXXX.execute-api.sa-east-1.amazonaws.com", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", "resource": "$default", "name": "aws.apigateway.websocket", "error": 0, @@ -1276,7 +1276,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "runtime-id": "XXXX", "_dd.origin": "lambda", "operation_name": "aws.apigateway.websocket", - "http.url": "XXXX.execute-api.sa-east-1.amazonaws.com$default", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com$default", "endpoint": "$default", "resource_names": "$default", "apiid": "XXXX", @@ -1312,7 +1312,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-async-metrics_python37", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python37", "function_version": "$LATEST", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python37", @@ -1322,7 +1322,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.sa-east-1.amazonaws.com", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", "http.status_code": "200" }, "metrics": { diff --git a/tests/integration/snapshots/logs/async-metrics_python38.log b/tests/integration/snapshots/logs/async-metrics_python38.log index 0232331c3..a708d67fa 100644 --- a/tests/integration/snapshots/logs/async-metrics_python38.log +++ b/tests/integration/snapshots/logs/async-metrics_python38.log @@ -4,7 +4,7 @@ START "v": 1, "e": XXXX, "t": [ - "region:sa-east-1", + "region:eu-west-1", "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python38", "resource:integration-tests-python-XXXX-async-metrics_python38", @@ -88,7 +88,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "cold_start": "true", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-async-metrics_python38", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python38", "function_version": "$LATEST", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python38", @@ -162,7 +162,7 @@ START "v": 1, "e": XXXX, "t": [ - "region:sa-east-1", + "region:eu-west-1", "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python38", "resource:integration-tests-python-XXXX-async-metrics_python38", @@ -245,7 +245,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-async-metrics_python38", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python38", "function_version": "$LATEST", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python38", @@ -315,7 +315,7 @@ START "v": 1, "e": XXXX, "t": [ - "region:sa-east-1", + "region:eu-west-1", "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python38", "resource:integration-tests-python-XXXX-async-metrics_python38", @@ -392,7 +392,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-async-metrics_python38", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python38", "function_version": "$LATEST", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python38", @@ -461,7 +461,7 @@ START "v": 1, "e": XXXX, "t": [ - "region:sa-east-1", + "region:eu-west-1", "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python38", "resource:integration-tests-python-XXXX-async-metrics_python38", @@ -501,7 +501,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "XXXX.execute-api.sa-east-1.amazonaws.com", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", "resource": "GET /httpapi/get", "name": "aws.httpapi", "error": 0, @@ -512,7 +512,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "operation_name": "aws.httpapi", "endpoint": "/httpapi/get", - "http.url": "XXXX.execute-api.sa-east-1.amazonaws.com/httpapi/get", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.protocol": "HTTP/1.1", "http.source_ip": "XXXX", @@ -548,7 +548,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-async-metrics_python38", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python38", "function_version": "$LATEST", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python38", @@ -558,7 +558,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "http.url": "XXXX.execute-api.sa-east-1.amazonaws.com", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", "http.status_code": "200" @@ -622,7 +622,7 @@ START "v": 1, "e": XXXX, "t": [ - "region:sa-east-1", + "region:eu-west-1", "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python38", "resource:integration-tests-python-XXXX-async-metrics_python38", @@ -705,7 +705,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-async-metrics_python38", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python38", "function_version": "$LATEST", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python38", @@ -775,7 +775,7 @@ START "v": 1, "e": XXXX, "t": [ - "region:sa-east-1", + "region:eu-west-1", "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python38", "resource:integration-tests-python-XXXX-async-metrics_python38", @@ -855,7 +855,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-async-metrics_python38", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python38", "function_version": "$LATEST", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python38", @@ -925,7 +925,7 @@ START "v": 1, "e": XXXX, "t": [ - "region:sa-east-1", + "region:eu-west-1", "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python38", "resource:integration-tests-python-XXXX-async-metrics_python38", @@ -1006,7 +1006,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-async-metrics_python38", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python38", "function_version": "$LATEST", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python38", @@ -1076,7 +1076,7 @@ START "v": 1, "e": XXXX, "t": [ - "region:sa-east-1", + "region:eu-west-1", "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python38", "resource:integration-tests-python-XXXX-async-metrics_python38", @@ -1156,7 +1156,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-async-metrics_python38", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python38", "function_version": "$LATEST", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python38", @@ -1226,7 +1226,7 @@ START "v": 1, "e": XXXX, "t": [ - "region:sa-east-1", + "region:eu-west-1", "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python38", "resource:integration-tests-python-XXXX-async-metrics_python38", @@ -1266,7 +1266,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "XXXX.execute-api.sa-east-1.amazonaws.com", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", "resource": "$default", "name": "aws.apigateway.websocket", "error": 0, @@ -1276,7 +1276,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "runtime-id": "XXXX", "_dd.origin": "lambda", "operation_name": "aws.apigateway.websocket", - "http.url": "XXXX.execute-api.sa-east-1.amazonaws.com$default", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com$default", "endpoint": "$default", "resource_names": "$default", "apiid": "XXXX", @@ -1312,7 +1312,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-async-metrics_python38", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python38", "function_version": "$LATEST", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python38", @@ -1322,7 +1322,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.sa-east-1.amazonaws.com", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", "http.status_code": "200" }, "metrics": { diff --git a/tests/integration/snapshots/logs/async-metrics_python39.log b/tests/integration/snapshots/logs/async-metrics_python39.log index cae1234c5..1e8ddb9d5 100644 --- a/tests/integration/snapshots/logs/async-metrics_python39.log +++ b/tests/integration/snapshots/logs/async-metrics_python39.log @@ -4,7 +4,7 @@ START "v": 1, "e": XXXX, "t": [ - "region:sa-east-1", + "region:eu-west-1", "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python39", "resource:integration-tests-python-XXXX-async-metrics_python39", @@ -88,7 +88,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "cold_start": "true", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-async-metrics_python39", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python39", "function_version": "$LATEST", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python39", @@ -162,7 +162,7 @@ START "v": 1, "e": XXXX, "t": [ - "region:sa-east-1", + "region:eu-west-1", "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python39", "resource:integration-tests-python-XXXX-async-metrics_python39", @@ -245,7 +245,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-async-metrics_python39", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python39", "function_version": "$LATEST", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python39", @@ -315,7 +315,7 @@ START "v": 1, "e": XXXX, "t": [ - "region:sa-east-1", + "region:eu-west-1", "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python39", "resource:integration-tests-python-XXXX-async-metrics_python39", @@ -392,7 +392,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-async-metrics_python39", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python39", "function_version": "$LATEST", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python39", @@ -461,7 +461,7 @@ START "v": 1, "e": XXXX, "t": [ - "region:sa-east-1", + "region:eu-west-1", "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python39", "resource:integration-tests-python-XXXX-async-metrics_python39", @@ -501,7 +501,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "XXXX.execute-api.sa-east-1.amazonaws.com", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", "resource": "GET /httpapi/get", "name": "aws.httpapi", "error": 0, @@ -512,7 +512,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "operation_name": "aws.httpapi", "endpoint": "/httpapi/get", - "http.url": "XXXX.execute-api.sa-east-1.amazonaws.com/httpapi/get", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.protocol": "HTTP/1.1", "http.source_ip": "XXXX", @@ -548,7 +548,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-async-metrics_python39", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python39", "function_version": "$LATEST", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python39", @@ -558,7 +558,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "http.url": "XXXX.execute-api.sa-east-1.amazonaws.com", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", "http.status_code": "200" @@ -622,7 +622,7 @@ START "v": 1, "e": XXXX, "t": [ - "region:sa-east-1", + "region:eu-west-1", "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python39", "resource:integration-tests-python-XXXX-async-metrics_python39", @@ -705,7 +705,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-async-metrics_python39", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python39", "function_version": "$LATEST", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python39", @@ -775,7 +775,7 @@ START "v": 1, "e": XXXX, "t": [ - "region:sa-east-1", + "region:eu-west-1", "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python39", "resource:integration-tests-python-XXXX-async-metrics_python39", @@ -855,7 +855,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-async-metrics_python39", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python39", "function_version": "$LATEST", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python39", @@ -925,7 +925,7 @@ START "v": 1, "e": XXXX, "t": [ - "region:sa-east-1", + "region:eu-west-1", "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python39", "resource:integration-tests-python-XXXX-async-metrics_python39", @@ -1006,7 +1006,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-async-metrics_python39", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python39", "function_version": "$LATEST", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python39", @@ -1076,7 +1076,7 @@ START "v": 1, "e": XXXX, "t": [ - "region:sa-east-1", + "region:eu-west-1", "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python39", "resource:integration-tests-python-XXXX-async-metrics_python39", @@ -1156,7 +1156,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-async-metrics_python39", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python39", "function_version": "$LATEST", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python39", @@ -1226,7 +1226,7 @@ START "v": 1, "e": XXXX, "t": [ - "region:sa-east-1", + "region:eu-west-1", "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python39", "resource:integration-tests-python-XXXX-async-metrics_python39", @@ -1266,7 +1266,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "XXXX.execute-api.sa-east-1.amazonaws.com", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", "resource": "$default", "name": "aws.apigateway.websocket", "error": 0, @@ -1276,7 +1276,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "runtime-id": "XXXX", "_dd.origin": "lambda", "operation_name": "aws.apigateway.websocket", - "http.url": "XXXX.execute-api.sa-east-1.amazonaws.com$default", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com$default", "endpoint": "$default", "resource_names": "$default", "apiid": "XXXX", @@ -1312,7 +1312,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-async-metrics_python39", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python39", "function_version": "$LATEST", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python39", @@ -1322,7 +1322,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.sa-east-1.amazonaws.com", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", "http.status_code": "200" }, "metrics": { diff --git a/tests/integration/snapshots/logs/sync-metrics_python37.log b/tests/integration/snapshots/logs/sync-metrics_python37.log index b1d4bd218..bc2e5c406 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python37.log +++ b/tests/integration/snapshots/logs/sync-metrics_python37.log @@ -4,7 +4,7 @@ START "v": 1, "e": XXXX, "t": [ - "region:sa-east-1", + "region:eu-west-1", "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python37", "resource:integration-tests-python-XXXX-sync-metrics_python37", @@ -68,7 +68,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "cold_start": "true", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-sync-metrics_python37", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python37", "function_version": "$LATEST", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python37", @@ -177,7 +177,7 @@ START "v": 1, "e": XXXX, "t": [ - "region:sa-east-1", + "region:eu-west-1", "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python37", "resource:integration-tests-python-XXXX-sync-metrics_python37", @@ -240,7 +240,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-sync-metrics_python37", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python37", "function_version": "$LATEST", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python37", @@ -345,7 +345,7 @@ START "v": 1, "e": XXXX, "t": [ - "region:sa-east-1", + "region:eu-west-1", "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python37", "resource:integration-tests-python-XXXX-sync-metrics_python37", @@ -402,7 +402,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-sync-metrics_python37", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python37", "function_version": "$LATEST", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python37", @@ -506,7 +506,7 @@ START "v": 1, "e": XXXX, "t": [ - "region:sa-east-1", + "region:eu-west-1", "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python37", "resource:integration-tests-python-XXXX-sync-metrics_python37", @@ -526,7 +526,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "XXXX.execute-api.sa-east-1.amazonaws.com", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", "resource": "GET /httpapi/get", "name": "aws.httpapi", "error": 0, @@ -537,7 +537,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "operation_name": "aws.httpapi", "endpoint": "/httpapi/get", - "http.url": "XXXX.execute-api.sa-east-1.amazonaws.com/httpapi/get", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.protocol": "HTTP/1.1", "http.source_ip": "XXXX", @@ -573,7 +573,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-sync-metrics_python37", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python37", "function_version": "$LATEST", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python37", @@ -583,7 +583,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "http.url": "XXXX.execute-api.sa-east-1.amazonaws.com", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", "http.status_code": "200" @@ -682,7 +682,7 @@ START "v": 1, "e": XXXX, "t": [ - "region:sa-east-1", + "region:eu-west-1", "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python37", "resource:integration-tests-python-XXXX-sync-metrics_python37", @@ -745,7 +745,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-sync-metrics_python37", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python37", "function_version": "$LATEST", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python37", @@ -850,7 +850,7 @@ START "v": 1, "e": XXXX, "t": [ - "region:sa-east-1", + "region:eu-west-1", "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python37", "resource:integration-tests-python-XXXX-sync-metrics_python37", @@ -910,7 +910,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-sync-metrics_python37", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python37", "function_version": "$LATEST", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python37", @@ -1015,7 +1015,7 @@ START "v": 1, "e": XXXX, "t": [ - "region:sa-east-1", + "region:eu-west-1", "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python37", "resource:integration-tests-python-XXXX-sync-metrics_python37", @@ -1076,7 +1076,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-sync-metrics_python37", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python37", "function_version": "$LATEST", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python37", @@ -1181,7 +1181,7 @@ START "v": 1, "e": XXXX, "t": [ - "region:sa-east-1", + "region:eu-west-1", "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python37", "resource:integration-tests-python-XXXX-sync-metrics_python37", @@ -1241,7 +1241,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-sync-metrics_python37", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python37", "function_version": "$LATEST", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python37", @@ -1346,7 +1346,7 @@ START "v": 1, "e": XXXX, "t": [ - "region:sa-east-1", + "region:eu-west-1", "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python37", "resource:integration-tests-python-XXXX-sync-metrics_python37", @@ -1366,7 +1366,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "XXXX.execute-api.sa-east-1.amazonaws.com", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", "resource": "$default", "name": "aws.apigateway.websocket", "error": 0, @@ -1376,7 +1376,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "runtime-id": "XXXX", "_dd.origin": "lambda", "operation_name": "aws.apigateway.websocket", - "http.url": "XXXX.execute-api.sa-east-1.amazonaws.com$default", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com$default", "endpoint": "$default", "resource_names": "$default", "apiid": "XXXX", @@ -1412,7 +1412,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-sync-metrics_python37", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python37", "function_version": "$LATEST", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python37", @@ -1422,7 +1422,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.sa-east-1.amazonaws.com", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", "http.status_code": "200" }, "metrics": { diff --git a/tests/integration/snapshots/logs/sync-metrics_python38.log b/tests/integration/snapshots/logs/sync-metrics_python38.log index db94f2d6d..5c3acbd95 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python38.log +++ b/tests/integration/snapshots/logs/sync-metrics_python38.log @@ -4,7 +4,7 @@ START "v": 1, "e": XXXX, "t": [ - "region:sa-east-1", + "region:eu-west-1", "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python38", "resource:integration-tests-python-XXXX-sync-metrics_python38", @@ -68,7 +68,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "cold_start": "true", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-sync-metrics_python38", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python38", "function_version": "$LATEST", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python38", @@ -177,7 +177,7 @@ START "v": 1, "e": XXXX, "t": [ - "region:sa-east-1", + "region:eu-west-1", "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python38", "resource:integration-tests-python-XXXX-sync-metrics_python38", @@ -240,7 +240,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-sync-metrics_python38", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python38", "function_version": "$LATEST", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python38", @@ -345,7 +345,7 @@ START "v": 1, "e": XXXX, "t": [ - "region:sa-east-1", + "region:eu-west-1", "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python38", "resource:integration-tests-python-XXXX-sync-metrics_python38", @@ -402,7 +402,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-sync-metrics_python38", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python38", "function_version": "$LATEST", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python38", @@ -506,7 +506,7 @@ START "v": 1, "e": XXXX, "t": [ - "region:sa-east-1", + "region:eu-west-1", "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python38", "resource:integration-tests-python-XXXX-sync-metrics_python38", @@ -526,7 +526,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "XXXX.execute-api.sa-east-1.amazonaws.com", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", "resource": "GET /httpapi/get", "name": "aws.httpapi", "error": 0, @@ -537,7 +537,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "operation_name": "aws.httpapi", "endpoint": "/httpapi/get", - "http.url": "XXXX.execute-api.sa-east-1.amazonaws.com/httpapi/get", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.protocol": "HTTP/1.1", "http.source_ip": "XXXX", @@ -573,7 +573,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-sync-metrics_python38", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python38", "function_version": "$LATEST", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python38", @@ -583,7 +583,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "http.url": "XXXX.execute-api.sa-east-1.amazonaws.com", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", "http.status_code": "200" @@ -682,7 +682,7 @@ START "v": 1, "e": XXXX, "t": [ - "region:sa-east-1", + "region:eu-west-1", "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python38", "resource:integration-tests-python-XXXX-sync-metrics_python38", @@ -745,7 +745,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-sync-metrics_python38", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python38", "function_version": "$LATEST", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python38", @@ -850,7 +850,7 @@ START "v": 1, "e": XXXX, "t": [ - "region:sa-east-1", + "region:eu-west-1", "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python38", "resource:integration-tests-python-XXXX-sync-metrics_python38", @@ -910,7 +910,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-sync-metrics_python38", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python38", "function_version": "$LATEST", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python38", @@ -1015,7 +1015,7 @@ START "v": 1, "e": XXXX, "t": [ - "region:sa-east-1", + "region:eu-west-1", "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python38", "resource:integration-tests-python-XXXX-sync-metrics_python38", @@ -1076,7 +1076,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-sync-metrics_python38", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python38", "function_version": "$LATEST", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python38", @@ -1181,7 +1181,7 @@ START "v": 1, "e": XXXX, "t": [ - "region:sa-east-1", + "region:eu-west-1", "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python38", "resource:integration-tests-python-XXXX-sync-metrics_python38", @@ -1241,7 +1241,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-sync-metrics_python38", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python38", "function_version": "$LATEST", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python38", @@ -1346,7 +1346,7 @@ START "v": 1, "e": XXXX, "t": [ - "region:sa-east-1", + "region:eu-west-1", "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python38", "resource:integration-tests-python-XXXX-sync-metrics_python38", @@ -1366,7 +1366,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "XXXX.execute-api.sa-east-1.amazonaws.com", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", "resource": "$default", "name": "aws.apigateway.websocket", "error": 0, @@ -1376,7 +1376,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "runtime-id": "XXXX", "_dd.origin": "lambda", "operation_name": "aws.apigateway.websocket", - "http.url": "XXXX.execute-api.sa-east-1.amazonaws.com$default", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com$default", "endpoint": "$default", "resource_names": "$default", "apiid": "XXXX", @@ -1412,7 +1412,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-sync-metrics_python38", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python38", "function_version": "$LATEST", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python38", @@ -1422,7 +1422,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.sa-east-1.amazonaws.com", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", "http.status_code": "200" }, "metrics": { diff --git a/tests/integration/snapshots/logs/sync-metrics_python39.log b/tests/integration/snapshots/logs/sync-metrics_python39.log index fb7dd5b72..ac3fdfa78 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -4,7 +4,7 @@ START "v": 1, "e": XXXX, "t": [ - "region:sa-east-1", + "region:eu-west-1", "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python39", "resource:integration-tests-python-XXXX-sync-metrics_python39", @@ -68,7 +68,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "cold_start": "true", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-sync-metrics_python39", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python39", "function_version": "$LATEST", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python39", @@ -177,7 +177,7 @@ START "v": 1, "e": XXXX, "t": [ - "region:sa-east-1", + "region:eu-west-1", "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python39", "resource:integration-tests-python-XXXX-sync-metrics_python39", @@ -240,7 +240,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-sync-metrics_python39", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python39", "function_version": "$LATEST", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python39", @@ -345,7 +345,7 @@ START "v": 1, "e": XXXX, "t": [ - "region:sa-east-1", + "region:eu-west-1", "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python39", "resource:integration-tests-python-XXXX-sync-metrics_python39", @@ -402,7 +402,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-sync-metrics_python39", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python39", "function_version": "$LATEST", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python39", @@ -506,7 +506,7 @@ START "v": 1, "e": XXXX, "t": [ - "region:sa-east-1", + "region:eu-west-1", "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python39", "resource:integration-tests-python-XXXX-sync-metrics_python39", @@ -526,7 +526,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "XXXX.execute-api.sa-east-1.amazonaws.com", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", "resource": "GET /httpapi/get", "name": "aws.httpapi", "error": 0, @@ -537,7 +537,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_dd.origin": "lambda", "operation_name": "aws.httpapi", "endpoint": "/httpapi/get", - "http.url": "XXXX.execute-api.sa-east-1.amazonaws.com/httpapi/get", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.protocol": "HTTP/1.1", "http.source_ip": "XXXX", @@ -573,7 +573,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-sync-metrics_python39", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python39", "function_version": "$LATEST", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python39", @@ -583,7 +583,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "http.url": "XXXX.execute-api.sa-east-1.amazonaws.com", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", "http.status_code": "200" @@ -682,7 +682,7 @@ START "v": 1, "e": XXXX, "t": [ - "region:sa-east-1", + "region:eu-west-1", "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python39", "resource:integration-tests-python-XXXX-sync-metrics_python39", @@ -745,7 +745,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-sync-metrics_python39", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python39", "function_version": "$LATEST", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python39", @@ -850,7 +850,7 @@ START "v": 1, "e": XXXX, "t": [ - "region:sa-east-1", + "region:eu-west-1", "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python39", "resource:integration-tests-python-XXXX-sync-metrics_python39", @@ -910,7 +910,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-sync-metrics_python39", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python39", "function_version": "$LATEST", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python39", @@ -1015,7 +1015,7 @@ START "v": 1, "e": XXXX, "t": [ - "region:sa-east-1", + "region:eu-west-1", "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python39", "resource:integration-tests-python-XXXX-sync-metrics_python39", @@ -1076,7 +1076,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-sync-metrics_python39", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python39", "function_version": "$LATEST", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python39", @@ -1181,7 +1181,7 @@ START "v": 1, "e": XXXX, "t": [ - "region:sa-east-1", + "region:eu-west-1", "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python39", "resource:integration-tests-python-XXXX-sync-metrics_python39", @@ -1241,7 +1241,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-sync-metrics_python39", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python39", "function_version": "$LATEST", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python39", @@ -1346,7 +1346,7 @@ START "v": 1, "e": XXXX, "t": [ - "region:sa-east-1", + "region:eu-west-1", "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python39", "resource:integration-tests-python-XXXX-sync-metrics_python39", @@ -1366,7 +1366,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "XXXX.execute-api.sa-east-1.amazonaws.com", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", "resource": "$default", "name": "aws.apigateway.websocket", "error": 0, @@ -1376,7 +1376,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "runtime-id": "XXXX", "_dd.origin": "lambda", "operation_name": "aws.apigateway.websocket", - "http.url": "XXXX.execute-api.sa-east-1.amazonaws.com$default", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com$default", "endpoint": "$default", "resource_names": "$default", "apiid": "XXXX", @@ -1412,7 +1412,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "cold_start": "false", - "function_arn": "arn:aws:lambda:sa-east-1:XXXX:sa-east-1-tests-python-XXXX-sync-metrics_python39", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python39", "function_version": "$LATEST", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python39", @@ -1422,7 +1422,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.sa-east-1.amazonaws.com", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", "http.status_code": "200" }, "metrics": { diff --git a/tests/test_tracing.py b/tests/test_tracing.py index 47a028da0..fed905888 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -716,11 +716,11 @@ def _basic_common_checks( self.assertEqual(span.span_type, span_type) self.assertEqual( span.service, - "amddr1rix9.execute-api.sa-east-1.amazonaws.com", + "amddr1rix9.execute-api.eu-west-1.amazonaws.com", ) self.assertEqual( span.get_tag("http.url"), - "amddr1rix9.execute-api.sa-east-1.amazonaws.com" + route_key, + "amddr1rix9.execute-api.eu-west-1.amazonaws.com" + route_key, ) self.assertEqual(span.get_tag("endpoint"), route_key) self.assertEqual(span.get_tag("http.method"), http_method) @@ -777,11 +777,11 @@ def test_create_inferred_span_from_api_gateway_non_proxy_event_async(self): self.assertEqual(span.get_tag("operation_name"), "aws.apigateway.rest") self.assertEqual( span.service, - "lgxbo6a518.execute-api.sa-east-1.amazonaws.com", + "lgxbo6a518.execute-api.eu-west-1.amazonaws.com", ) self.assertEqual( span.get_tag("http.url"), - "lgxbo6a518.execute-api.sa-east-1.amazonaws.com/http/get", + "lgxbo6a518.execute-api.eu-west-1.amazonaws.com/http/get", ) self.assertEqual(span.get_tag("endpoint"), "/http/get") self.assertEqual(span.get_tag("http.method"), "GET") @@ -811,11 +811,11 @@ def test_create_inferred_span_from_api_gateway_non_proxy_event_sync(self): self.assertEqual(span.get_tag("operation_name"), "aws.apigateway.rest") self.assertEqual( span.service, - "lgxbo6a518.execute-api.sa-east-1.amazonaws.com", + "lgxbo6a518.execute-api.eu-west-1.amazonaws.com", ) self.assertEqual( span.get_tag("http.url"), - "lgxbo6a518.execute-api.sa-east-1.amazonaws.com/http/get", + "lgxbo6a518.execute-api.eu-west-1.amazonaws.com/http/get", ) self.assertEqual(span.get_tag("endpoint"), "/http/get") self.assertEqual(span.get_tag("http.method"), "GET") @@ -845,11 +845,11 @@ def test_create_inferred_span_from_http_api_event(self): self.assertEqual(span.get_tag("operation_name"), "aws.httpapi") self.assertEqual( span.service, - "x02yirxc7a.execute-api.sa-east-1.amazonaws.com", + "x02yirxc7a.execute-api.eu-west-1.amazonaws.com", ) self.assertEqual( span.get_tag("http.url"), - "x02yirxc7a.execute-api.sa-east-1.amazonaws.com/httpapi/get", + "x02yirxc7a.execute-api.eu-west-1.amazonaws.com/httpapi/get", ) self.assertEqual(span.get_tag("endpoint"), "/httpapi/get") self.assertEqual(span.get_tag("http.method"), "GET") @@ -880,11 +880,11 @@ def test_create_inferred_span_from_api_gateway_websocket_default_event(self): self.assertEqual(span.get_tag("operation_name"), "aws.apigateway.websocket") self.assertEqual( span.service, - "p62c47itsb.execute-api.sa-east-1.amazonaws.com", + "p62c47itsb.execute-api.eu-west-1.amazonaws.com", ) self.assertEqual( span.get_tag("http.url"), - "p62c47itsb.execute-api.sa-east-1.amazonaws.com$default", + "p62c47itsb.execute-api.eu-west-1.amazonaws.com$default", ) self.assertEqual(span.get_tag("endpoint"), "$default") self.assertEqual(span.get_tag("http.method"), None) @@ -915,11 +915,11 @@ def test_create_inferred_span_from_api_gateway_websocket_connect_event(self): self.assertEqual(span.get_tag("operation_name"), "aws.apigateway.websocket") self.assertEqual( span.service, - "p62c47itsb.execute-api.sa-east-1.amazonaws.com", + "p62c47itsb.execute-api.eu-west-1.amazonaws.com", ) self.assertEqual( span.get_tag("http.url"), - "p62c47itsb.execute-api.sa-east-1.amazonaws.com$connect", + "p62c47itsb.execute-api.eu-west-1.amazonaws.com$connect", ) self.assertEqual(span.get_tag("endpoint"), "$connect") self.assertEqual(span.get_tag("http.method"), None) @@ -950,11 +950,11 @@ def test_create_inferred_span_from_api_gateway_websocket_disconnect_event(self): self.assertEqual(span.get_tag("operation_name"), "aws.apigateway.websocket") self.assertEqual( span.service, - "p62c47itsb.execute-api.sa-east-1.amazonaws.com", + "p62c47itsb.execute-api.eu-west-1.amazonaws.com", ) self.assertEqual( span.get_tag("http.url"), - "p62c47itsb.execute-api.sa-east-1.amazonaws.com$disconnect", + "p62c47itsb.execute-api.eu-west-1.amazonaws.com$disconnect", ) self.assertEqual(span.get_tag("endpoint"), "$disconnect") self.assertEqual(span.get_tag("http.method"), None) @@ -1001,7 +1001,7 @@ def test_create_inferred_span_from_sqs_event_string_msg_attr(self): self.assertEqual(span.get_tag("queuename"), "InferredSpansQueueNode") self.assertEqual( span.get_tag("event_source_arn"), - "arn:aws:sqs:sa-east-1:601427279990:InferredSpansQueueNode", + "arn:aws:sqs:eu-west-1:601427279990:InferredSpansQueueNode", ) self.assertEqual( span.get_tag("sender_id"), @@ -1038,7 +1038,7 @@ def test_create_inferred_span_from_sns_event_string_msg_attr(self): self.assertEqual(span.get_tag("topicname"), "serverlessTracingTopicPy") self.assertEqual( span.get_tag("topic_arn"), - "arn:aws:sns:sa-east-1:601427279990:serverlessTracingTopicPy", + "arn:aws:sns:eu-west-1:601427279990:serverlessTracingTopicPy", ) self.assertEqual( span.get_tag("message_id"), "87056a47-f506-5d77-908b-303605d3b197" @@ -1076,7 +1076,7 @@ def test_create_inferred_span_from_sns_event_b64_msg_attr(self): self.assertEqual(span.get_tag("topicname"), "serverlessTracingTopicPy") self.assertEqual( span.get_tag("topic_arn"), - "arn:aws:sns:sa-east-1:601427279990:serverlessTracingTopicPy", + "arn:aws:sns:eu-west-1:601427279990:serverlessTracingTopicPy", ) self.assertEqual( span.get_tag("message_id"), "87056a47-f506-5d77-908b-303605d3b197" @@ -1116,7 +1116,7 @@ def test_create_inferred_span_from_kinesis_event(self): self.assertEqual(span.get_tag("shardid"), "shardId-000000000002") self.assertEqual( span.get_tag("event_source_arn"), - "arn:aws:kinesis:sa-east-1:601427279990:stream/kinesisStream", + "arn:aws:kinesis:eu-west-1:601427279990:stream/kinesisStream", ) self.assertEqual( span.get_tag("event_id"), diff --git a/tests/test_trigger.py b/tests/test_trigger.py index 560e9f4e2..2f5148113 100644 --- a/tests/test_trigger.py +++ b/tests/test_trigger.py @@ -190,7 +190,7 @@ def test_event_source_kinesis(self): self.assertEqual(event_source.to_string(), event_sample_source) self.assertEqual( event_source_arn, - "arn:aws:kinesis:sa-east-1:601427279990:stream/kinesisStream", + "arn:aws:kinesis:eu-west-1:601427279990:stream/kinesisStream", ) def test_event_source_s3(self): @@ -216,7 +216,7 @@ def test_event_source_sns(self): self.assertEqual(event_source.to_string(), event_sample_source) self.assertEqual( event_source_arn, - "arn:aws:sns:sa-east-1:601427279990:serverlessTracingTopicPy", + "arn:aws:sns:eu-west-1:601427279990:serverlessTracingTopicPy", ) def test_event_source_sqs(self): @@ -231,7 +231,7 @@ def test_event_source_sqs(self): self.assertEqual(event_source.to_string(), event_sample_source) self.assertEqual( event_source_arn, - "arn:aws:sqs:sa-east-1:601427279990:InferredSpansQueueNode", + "arn:aws:sqs:eu-west-1:601427279990:InferredSpansQueueNode", ) def test_event_source_unsupported(self): @@ -277,7 +277,7 @@ def test_extract_trigger_tags_api_gateway_non_proxy(self): { "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "arn:aws:apigateway:us-west-1::/restapis/lgxbo6a518/stages/dev", - "http.url": "lgxbo6a518.execute-api.sa-east-1.amazonaws.com", + "http.url": "lgxbo6a518.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/dev/http/get", "http.method": "GET", }, @@ -295,7 +295,7 @@ def test_extract_trigger_tags_api_gateway_websocket_connect(self): { "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "arn:aws:apigateway:us-west-1::/restapis/p62c47itsb/stages/dev", - "http.url": "p62c47itsb.execute-api.sa-east-1.amazonaws.com", + "http.url": "p62c47itsb.execute-api.eu-west-1.amazonaws.com", }, ) @@ -311,7 +311,7 @@ def test_extract_trigger_tags_api_gateway_websocket_default(self): { "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "arn:aws:apigateway:us-west-1::/restapis/p62c47itsb/stages/dev", - "http.url": "p62c47itsb.execute-api.sa-east-1.amazonaws.com", + "http.url": "p62c47itsb.execute-api.eu-west-1.amazonaws.com", }, ) @@ -327,7 +327,7 @@ def test_extract_trigger_tags_api_gateway_websocket_disconnect(self): { "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "arn:aws:apigateway:us-west-1::/restapis/p62c47itsb/stages/dev", - "http.url": "p62c47itsb.execute-api.sa-east-1.amazonaws.com", + "http.url": "p62c47itsb.execute-api.eu-west-1.amazonaws.com", }, ) @@ -343,7 +343,7 @@ def test_extract_trigger_tags_api_gateway_http_api(self): { "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "arn:aws:apigateway:us-west-1::/restapis/x02yirxc7a/stages/$default", - "http.url": "x02yirxc7a.execute-api.sa-east-1.amazonaws.com", + "http.url": "x02yirxc7a.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", }, @@ -437,7 +437,7 @@ def test_extract_trigger_tags_kinesis(self): tags, { "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "arn:aws:kinesis:sa-east-1:601427279990:stream/kinesisStream", + "function_trigger.event_source_arn": "arn:aws:kinesis:eu-west-1:601427279990:stream/kinesisStream", }, ) @@ -467,7 +467,7 @@ def test_extract_trigger_tags_sns(self): tags, { "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "arn:aws:sns:sa-east-1:601427279990:serverlessTracingTopicPy", + "function_trigger.event_source_arn": "arn:aws:sns:eu-west-1:601427279990:serverlessTracingTopicPy", }, ) @@ -482,7 +482,7 @@ def test_extract_trigger_tags_sqs(self): tags, { "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "arn:aws:sqs:sa-east-1:601427279990:InferredSpansQueueNode", + "function_trigger.event_source_arn": "arn:aws:sqs:eu-west-1:601427279990:InferredSpansQueueNode", }, ) From 8e17b82ff15970a9f195d8a4bf5273e08b7934bb Mon Sep 17 00:00:00 2001 From: Dylan Yang Date: Tue, 6 Dec 2022 11:10:57 -0500 Subject: [PATCH 027/403] Handle a custom `detail` field in Lambda event payloads (#276) type check detail field in event payload --- datadog_lambda/trigger.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/trigger.py b/datadog_lambda/trigger.py index 72285eade..0576e3f99 100644 --- a/datadog_lambda/trigger.py +++ b/datadog_lambda/trigger.py @@ -138,8 +138,11 @@ def parse_event_source(event: dict) -> _EventSource: event_source = _EventSource(EventTypes.EVENTBRIDGE) event_detail = event.get("detail") - cw_event_categories = event_detail and event_detail.get("EventCategories") - if event.get("source") == "aws.events" or cw_event_categories: + has_event_categories = ( + isinstance(event_detail, dict) + and event_detail.get("EventCategories") is not None + ) + if event.get("source") == "aws.events" or has_event_categories: event_source = _EventSource(EventTypes.CLOUDWATCH_EVENTS) event_record = get_first_record(event) From 5e8b8f6c97f217e784c705b30aebc7c323659808 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Tue, 6 Dec 2022 16:23:18 -0500 Subject: [PATCH 028/403] use context.aws_request_id instead of http payload's requestId in the spans' tags (#266) --- datadog_lambda/tracing.py | 12 ++++++------ tests/test_tracing.py | 22 +++++++--------------- 2 files changed, 13 insertions(+), 21 deletions(-) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 62c64c61e..ead727678 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -584,7 +584,7 @@ def create_inferred_span( ): logger.debug("API Gateway event detected. Inferring a span") return create_inferred_span_from_api_gateway_event( - event, decode_authorizer_context + event, context, decode_authorizer_context ) elif event_source.equals(EventTypes.LAMBDA_FUNCTION_URL): logger.debug("Function URL event detected. Inferring a span") @@ -601,7 +601,7 @@ def create_inferred_span( ): logger.debug("API Gateway Websocket event detected. Inferring a span") return create_inferred_span_from_api_gateway_websocket_event( - event, decode_authorizer_context + event, context, decode_authorizer_context ) elif event_source.equals(EventTypes.SQS): logger.debug("SQS event detected. Inferring a span") @@ -732,7 +732,7 @@ def process_injected_data(event, request_time_epoch_ms, args, tags): def create_inferred_span_from_api_gateway_websocket_event( - event, decode_authorizer_context: bool = True + event, context, decode_authorizer_context: bool = True ): request_context = event.get("requestContext") domain = request_context.get("domainName") @@ -745,7 +745,7 @@ def create_inferred_span_from_api_gateway_websocket_event( "apiid": request_context.get("apiId"), "apiname": request_context.get("apiId"), "stage": request_context.get("stage"), - "request_id": request_context.get("requestId"), + "request_id": context.aws_request_id, "connection_id": request_context.get("connectionId"), "event_type": request_context.get("eventType"), "message_direction": request_context.get("messageDirection"), @@ -781,7 +781,7 @@ def create_inferred_span_from_api_gateway_websocket_event( def create_inferred_span_from_api_gateway_event( - event, decode_authorizer_context: bool = True + event, context, decode_authorizer_context: bool = True ): request_context = event.get("requestContext") domain = request_context.get("domainName", "") @@ -797,7 +797,7 @@ def create_inferred_span_from_api_gateway_event( "apiid": request_context.get("apiId"), "apiname": request_context.get("apiId"), "stage": request_context.get("stage"), - "request_id": request_context.get("requestId"), + "request_id": context.aws_request_id, } request_time_epoch_ms = int(request_context.get("requestTimeEpoch")) if is_api_gateway_invocation_async(event): diff --git a/tests/test_tracing.py b/tests/test_tracing.py index fed905888..25865d5e6 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -755,9 +755,7 @@ def test_create_inferred_span_from_api_gateway_event(self): span.get_tag("resource_names"), "POST /path/to/resource", ) - self.assertEqual( - span.get_tag("request_id"), "c6af9ac6-7b61-11e6-9a41-93e8deadbeef" - ) + self.assertEqual(span.get_tag("request_id"), "123") self.assertEqual(span.get_tag("apiid"), "1234567890") self.assertEqual(span.get_tag("apiname"), "1234567890") self.assertEqual(span.get_tag("stage"), "prod") @@ -789,9 +787,7 @@ def test_create_inferred_span_from_api_gateway_non_proxy_event_async(self): span.get_tag("resource_names"), "GET /http/get", ) - self.assertEqual( - span.get_tag("request_id"), "7bf3b161-f698-432c-a639-6fef8b445137" - ) + self.assertEqual(span.get_tag("request_id"), "123") self.assertEqual(span.get_tag("apiid"), "lgxbo6a518") self.assertEqual(span.get_tag("apiname"), "lgxbo6a518") self.assertEqual(span.get_tag("stage"), "dev") @@ -823,9 +819,7 @@ def test_create_inferred_span_from_api_gateway_non_proxy_event_sync(self): span.get_tag("resource_names"), "GET /http/get", ) - self.assertEqual( - span.get_tag("request_id"), "7bf3b161-f698-432c-a639-6fef8b445137" - ) + self.assertEqual(span.get_tag("request_id"), "123") self.assertEqual(span.get_tag("apiid"), "lgxbo6a518") self.assertEqual(span.get_tag("apiname"), "lgxbo6a518") self.assertEqual(span.get_tag("stage"), "dev") @@ -892,7 +886,7 @@ def test_create_inferred_span_from_api_gateway_websocket_default_event(self): span.get_tag("resource_names"), "$default", ) - self.assertEqual(span.get_tag("request_id"), "Fc5S3EvdGjQFtsQ=") + self.assertEqual(span.get_tag("request_id"), "123") self.assertEqual(span.get_tag("apiid"), "p62c47itsb") self.assertEqual(span.get_tag("apiname"), "p62c47itsb") self.assertEqual(span.get_tag("stage"), "dev") @@ -927,7 +921,7 @@ def test_create_inferred_span_from_api_gateway_websocket_connect_event(self): span.get_tag("resource_names"), "$connect", ) - self.assertEqual(span.get_tag("request_id"), "Fc2tgH1RmjQFnOg=") + self.assertEqual(span.get_tag("request_id"), "123") self.assertEqual(span.get_tag("apiid"), "p62c47itsb") self.assertEqual(span.get_tag("apiname"), "p62c47itsb") self.assertEqual(span.get_tag("stage"), "dev") @@ -962,7 +956,7 @@ def test_create_inferred_span_from_api_gateway_websocket_disconnect_event(self): span.get_tag("resource_names"), "$disconnect", ) - self.assertEqual(span.get_tag("request_id"), "Fc2ydE4LmjQFhdg=") + self.assertEqual(span.get_tag("request_id"), "123") self.assertEqual(span.get_tag("apiid"), "p62c47itsb") self.assertEqual(span.get_tag("apiname"), "p62c47itsb") self.assertEqual(span.get_tag("stage"), "dev") @@ -1358,9 +1352,7 @@ def test_create_inferred_span_from_api_gateway_event_no_apiid(self): span.get_tag("resource_names"), "POST /path/to/resource", ) - self.assertEqual( - span.get_tag("request_id"), "c6af9ac6-7b61-11e6-9a41-93e8deadbeef" - ) + self.assertEqual(span.get_tag("request_id"), "123") self.assertEqual(span.get_tag("apiid"), "None") self.assertEqual(span.get_tag("apiname"), "None") self.assertEqual(span.get_tag("stage"), "prod") From 72cfaca61556e4fb9ef70df49c81cf727f3801be Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Thu, 8 Dec 2022 13:30:45 -0500 Subject: [PATCH 029/403] feat: Use ddtrace 1.6.3 (#277) --- poetry.lock | 497 +++++++++++++++++++++++++++++++++---------------- pyproject.toml | 2 +- 2 files changed, 336 insertions(+), 163 deletions(-) diff --git a/poetry.lock b/poetry.lock index 1e6f9891b..7a6fb0883 100644 --- a/poetry.lock +++ b/poetry.lock @@ -10,18 +10,18 @@ python-versions = ">=3.5" dev = ["cloudpickle", "coverage[toml] (>=5.0.2)", "furo", "hypothesis", "mypy (>=0.900,!=0.940)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "sphinx", "sphinx-notfound-page", "zope.interface"] docs = ["furo", "sphinx", "sphinx-notfound-page", "zope.interface"] tests = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "zope.interface"] -tests_no_zope = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins"] +tests-no-zope = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins"] [[package]] name = "boto3" -version = "1.24.59" +version = "1.26.24" description = "The AWS SDK for Python" category = "main" optional = true python-versions = ">= 3.7" [package.dependencies] -botocore = ">=1.27.59,<1.28.0" +botocore = ">=1.29.24,<1.30.0" jmespath = ">=0.7.1,<2.0.0" s3transfer = ">=0.6.0,<0.7.0" @@ -30,7 +30,7 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.27.59" +version = "1.29.24" description = "Low-level, data-driven core of boto 3." category = "main" optional = true @@ -42,7 +42,7 @@ python-dateutil = ">=2.1,<3.0.0" urllib3 = ">=1.25.4,<1.27" [package.extras] -crt = ["awscrt (==0.14.0)"] +crt = ["awscrt (==0.15.3)"] [[package]] name = "bytecode" @@ -52,9 +52,33 @@ category = "main" optional = false python-versions = ">=3.6" +[[package]] +name = "bytecode" +version = "0.14.0" +description = "Python module to generate and modify bytecode" +category = "main" +optional = false +python-versions = ">=3.8" + +[package.dependencies] +typing-extensions = {version = "*", markers = "python_version < \"3.10\""} + +[[package]] +name = "cattrs" +version = "22.2.0" +description = "Composable complex class support for attrs and dataclasses." +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +attrs = ">=20" +exceptiongroup = {version = "*", markers = "python_version < \"3.11\""} +typing_extensions = {version = "*", markers = "python_version < \"3.8\""} + [[package]] name = "certifi" -version = "2022.6.15" +version = "2022.9.24" description = "Python package for providing Mozilla's CA Bundle." category = "main" optional = false @@ -69,11 +93,11 @@ optional = false python-versions = ">=3.6.0" [package.extras] -unicode_backport = ["unicodedata2"] +unicode-backport = ["unicodedata2"] [[package]] name = "coverage" -version = "6.4.4" +version = "6.5.0" description = "Code coverage measurement for Python" category = "main" optional = true @@ -108,25 +132,29 @@ six = "*" [[package]] name = "ddtrace" -version = "1.4.1" +version = "1.6.3" description = "Datadog APM client library" category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" [package.dependencies] -attrs = ">=19.2.0" +attrs = {version = ">=20", markers = "python_version > \"2.7\""} bytecode = [ - {version = "*", markers = "python_version >= \"3.8\""}, {version = ">=0.13.0,<0.14.0", markers = "python_version == \"3.7\""}, + {version = "*", markers = "python_version >= \"3.8\""}, ] +cattrs = "*" ddsketch = ">=2.0.1" +envier = "*" importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} +jsonschema = "*" packaging = ">=17.1" protobuf = {version = ">=3", markers = "python_version >= \"3.7\""} six = ">=1.12.0" tenacity = ">=5" typing-extensions = "*" +xmltodict = ">=0.12" [package.extras] opentracing = ["opentracing (>=2.0.0)"] @@ -139,6 +167,28 @@ category = "main" optional = false python-versions = ">=3.5" +[[package]] +name = "envier" +version = "0.4.0" +description = "Python application configuration via the environment" +category = "main" +optional = false +python-versions = ">=2.7" + +[package.extras] +mypy = ["mypy"] + +[[package]] +name = "exceptiongroup" +version = "1.0.4" +description = "Backport of PEP 654 (exception groups)" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.extras] +test = ["pytest (>=6)"] + [[package]] name = "flake8" version = "3.9.2" @@ -166,7 +216,7 @@ six = "*" [[package]] name = "idna" -version = "3.3" +version = "3.4" description = "Internationalized Domain Names in Applications (IDNA)" category = "main" optional = false @@ -187,6 +237,21 @@ zipp = ">=0.5" docs = ["rst.linker", "sphinx"] testing = ["importlib-resources (>=1.3)", "packaging", "pep517"] +[[package]] +name = "importlib-resources" +version = "5.10.1" +description = "Read resources from Python packages" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)"] +testing = ["flake8 (<5)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] + [[package]] name = "jmespath" version = "1.0.1" @@ -195,6 +260,26 @@ category = "main" optional = true python-versions = ">=3.7" +[[package]] +name = "jsonschema" +version = "4.17.3" +description = "An implementation of JSON Schema validation for Python" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +attrs = ">=17.4.0" +importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} +importlib-resources = {version = ">=1.4.0", markers = "python_version < \"3.9\""} +pkgutil-resolve-name = {version = ">=1.3.10", markers = "python_version < \"3.9\""} +pyrsistent = ">=0.14.0,<0.17.0 || >0.17.0,<0.17.1 || >0.17.1,<0.17.2 || >0.17.2" +typing-extensions = {version = "*", markers = "python_version < \"3.8\""} + +[package.extras] +format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"] +format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=1.11)"] + [[package]] name = "mccabe" version = "0.6.1" @@ -216,7 +301,7 @@ coverage = ">=4.4.1" six = ">=1.7" [package.extras] -coverage_plugin = ["coverage (>=4.4.1)"] +coverage-plugin = ["coverage (>=4.4.1)"] doc = ["Sphinx (>=1.6.5)", "mock", "sphinx-rtd-theme"] [[package]] @@ -230,9 +315,17 @@ python-versions = ">=3.6" [package.dependencies] pyparsing = ">=2.0.2,<3.0.5 || >3.0.5" +[[package]] +name = "pkgutil-resolve-name" +version = "1.3.10" +description = "Resolve a name to an object." +category = "main" +optional = false +python-versions = ">=3.6" + [[package]] name = "protobuf" -version = "4.21.6" +version = "4.21.10" description = "" category = "main" optional = false @@ -265,6 +358,14 @@ python-versions = ">=3.6.8" [package.extras] diagrams = ["jinja2", "railroad-diagrams"] +[[package]] +name = "pyrsistent" +version = "0.19.2" +description = "Persistent/Functional/Immutable data structures" +category = "main" +optional = false +python-versions = ">=3.7" + [[package]] name = "python-dateutil" version = "2.8.2" @@ -292,7 +393,7 @@ urllib3 = ">=1.21.1,<1.27" [package.extras] socks = ["PySocks (>=1.5.6,!=1.5.7)"] -use_chardet_on_py3 = ["chardet (>=3.0.2,<6)"] +use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "s3transfer" @@ -318,7 +419,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" [[package]] name = "tenacity" -version = "8.0.1" +version = "8.1.0" description = "Retry code until it succeeds" category = "main" optional = false @@ -329,7 +430,7 @@ doc = ["reno", "sphinx", "tornado (>=4.5)"] [[package]] name = "typing-extensions" -version = "4.3.0" +version = "4.4.0" description = "Backported and Experimental Type Hints for Python 3.7+" category = "main" optional = false @@ -337,11 +438,11 @@ python-versions = ">=3.7" [[package]] name = "urllib3" -version = "1.26.12" +version = "1.26.13" description = "HTTP library with thread-safe connection pooling, file post, and more." category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <4" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" [package.extras] brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"] @@ -356,17 +457,25 @@ category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" +[[package]] +name = "xmltodict" +version = "0.13.0" +description = "Makes working with XML feel like you are working with JSON" +category = "main" +optional = false +python-versions = ">=3.4" + [[package]] name = "zipp" -version = "3.8.1" +version = "3.11.0" description = "Backport of pathlib-compatible object wrapper for zip files" category = "main" optional = false python-versions = ">=3.7" [package.extras] -docs = ["jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx"] -testing = ["func-timeout", "jaraco.itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)"] +testing = ["flake8 (<5)", "func-timeout", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] [extras] dev = ["boto3", "requests", "nose2", "flake8", "httpretty"] @@ -374,7 +483,7 @@ dev = ["boto3", "requests", "nose2", "flake8", "httpretty"] [metadata] lock-version = "1.1" python-versions = ">=3.7.0,<4" -content-hash = "6ff67671b82fd2457eb9bf9a25820c47461e034e5f2f1231712038cb0973ba84" +content-hash = "f25845b55c5bb53ea4e56a3f5c7e78ab1f88784b26ead4454edb75809f3fecfd" [metadata.files] attrs = [ @@ -382,76 +491,82 @@ attrs = [ {file = "attrs-22.1.0.tar.gz", hash = "sha256:29adc2665447e5191d0e7c568fde78b21f9672d344281d0c6e1ab085429b22b6"}, ] boto3 = [ - {file = "boto3-1.24.59-py3-none-any.whl", hash = "sha256:34ab44146a2c4e7f4e72737f4b27e6eb5e0a7855c2f4599e3d9199b6a0a2d575"}, - {file = "boto3-1.24.59.tar.gz", hash = "sha256:a50b4323f9579cfe22fcf5531fbd40b567d4d74c1adce06aeb5c95fce2a6fb40"}, + {file = "boto3-1.26.24-py3-none-any.whl", hash = "sha256:f6117707d140363c58ffe41495400cc88c35c165e0f711c6b62edadbd6f600b5"}, + {file = "boto3-1.26.24.tar.gz", hash = "sha256:6531198b9d4cd86a1945eaffb2c5d8d75c5447b72870ad2b07c411ea75d6e59c"}, ] botocore = [ - {file = "botocore-1.27.59-py3-none-any.whl", hash = "sha256:69d756791fc024bda54f6c53f71ae34e695ee41bbbc1743d9179c4837a4929da"}, - {file = "botocore-1.27.59.tar.gz", hash = "sha256:eda4aed6ee719a745d1288eaf1beb12f6f6448ad1fa12f159405db14ba9c92cf"}, + {file = "botocore-1.29.24-py3-none-any.whl", hash = "sha256:fb37c63d5e2b7c778f52d096c6c54207d49143cd942b4dc19297086a1385a7cd"}, + {file = "botocore-1.29.24.tar.gz", hash = "sha256:4f9c92979b29132185f645f61bdf0fecf031ecc26a8dd1a99dbd88d323211325"}, ] bytecode = [ {file = "bytecode-0.13.0-py3-none-any.whl", hash = "sha256:e69f92e7d27f99d5d7d76e6a824bd3d9ff857c72b59927aaf87e1a620f67fe50"}, {file = "bytecode-0.13.0.tar.gz", hash = "sha256:6af3c2f0a31ce05dce41f7eea5cc380e33f5e8fbb7dcee3b52467a00acd52fcd"}, + {file = "bytecode-0.14.0-py3-none-any.whl", hash = "sha256:f7b7cbed3239acee036d6c0f9d04286b100921114601bf844ae569b95bf91a9f"}, + {file = "bytecode-0.14.0.tar.gz", hash = "sha256:d41ad53c657ba0bef1cb4828d9d6e450766e31cb66c6f91fc1851f052889d1b7"}, +] +cattrs = [ + {file = "cattrs-22.2.0-py3-none-any.whl", hash = "sha256:bc12b1f0d000b9f9bee83335887d532a1d3e99a833d1bf0882151c97d3e68c21"}, + {file = "cattrs-22.2.0.tar.gz", hash = "sha256:f0eed5642399423cf656e7b66ce92cdc5b963ecafd041d1b24d136fdde7acf6d"}, ] certifi = [ - {file = "certifi-2022.6.15-py3-none-any.whl", hash = "sha256:fe86415d55e84719d75f8b69414f6438ac3547d2078ab91b67e779ef69378412"}, - {file = "certifi-2022.6.15.tar.gz", hash = "sha256:84c85a9078b11105f04f3036a9482ae10e4621616db313fe045dd24743a0820d"}, + {file = "certifi-2022.9.24-py3-none-any.whl", hash = "sha256:90c1a32f1d68f940488354e36370f6cca89f0f106db09518524c88d6ed83f382"}, + {file = "certifi-2022.9.24.tar.gz", hash = "sha256:0d9c601124e5a6ba9712dbc60d9c53c21e34f5f641fe83002317394311bdce14"}, ] charset-normalizer = [ {file = "charset-normalizer-2.1.1.tar.gz", hash = "sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845"}, {file = "charset_normalizer-2.1.1-py3-none-any.whl", hash = "sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f"}, ] coverage = [ - {file = "coverage-6.4.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e7b4da9bafad21ea45a714d3ea6f3e1679099e420c8741c74905b92ee9bfa7cc"}, - {file = "coverage-6.4.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fde17bc42e0716c94bf19d92e4c9f5a00c5feb401f5bc01101fdf2a8b7cacf60"}, - {file = "coverage-6.4.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cdbb0d89923c80dbd435b9cf8bba0ff55585a3cdb28cbec65f376c041472c60d"}, - {file = "coverage-6.4.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:67f9346aeebea54e845d29b487eb38ec95f2ecf3558a3cffb26ee3f0dcc3e760"}, - {file = "coverage-6.4.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42c499c14efd858b98c4e03595bf914089b98400d30789511577aa44607a1b74"}, - {file = "coverage-6.4.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:c35cca192ba700979d20ac43024a82b9b32a60da2f983bec6c0f5b84aead635c"}, - {file = "coverage-6.4.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:9cc4f107009bca5a81caef2fca843dbec4215c05e917a59dec0c8db5cff1d2aa"}, - {file = "coverage-6.4.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5f444627b3664b80d078c05fe6a850dd711beeb90d26731f11d492dcbadb6973"}, - {file = "coverage-6.4.4-cp310-cp310-win32.whl", hash = "sha256:66e6df3ac4659a435677d8cd40e8eb1ac7219345d27c41145991ee9bf4b806a0"}, - {file = "coverage-6.4.4-cp310-cp310-win_amd64.whl", hash = "sha256:35ef1f8d8a7a275aa7410d2f2c60fa6443f4a64fae9be671ec0696a68525b875"}, - {file = "coverage-6.4.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c1328d0c2f194ffda30a45f11058c02410e679456276bfa0bbe0b0ee87225fac"}, - {file = "coverage-6.4.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:61b993f3998ee384935ee423c3d40894e93277f12482f6e777642a0141f55782"}, - {file = "coverage-6.4.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d5dd4b8e9cd0deb60e6fcc7b0647cbc1da6c33b9e786f9c79721fd303994832f"}, - {file = "coverage-6.4.4-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7026f5afe0d1a933685d8f2169d7c2d2e624f6255fb584ca99ccca8c0e966fd7"}, - {file = "coverage-6.4.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:9c7b9b498eb0c0d48b4c2abc0e10c2d78912203f972e0e63e3c9dc21f15abdaa"}, - {file = "coverage-6.4.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:ee2b2fb6eb4ace35805f434e0f6409444e1466a47f620d1d5763a22600f0f892"}, - {file = "coverage-6.4.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:ab066f5ab67059d1f1000b5e1aa8bbd75b6ed1fc0014559aea41a9eb66fc2ce0"}, - {file = "coverage-6.4.4-cp311-cp311-win32.whl", hash = "sha256:9d6e1f3185cbfd3d91ac77ea065d85d5215d3dfa45b191d14ddfcd952fa53796"}, - {file = "coverage-6.4.4-cp311-cp311-win_amd64.whl", hash = "sha256:e3d3c4cc38b2882f9a15bafd30aec079582b819bec1b8afdbde8f7797008108a"}, - {file = "coverage-6.4.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a095aa0a996ea08b10580908e88fbaf81ecf798e923bbe64fb98d1807db3d68a"}, - {file = "coverage-6.4.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ef6f44409ab02e202b31a05dd6666797f9de2aa2b4b3534e9d450e42dea5e817"}, - {file = "coverage-6.4.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4b7101938584d67e6f45f0015b60e24a95bf8dea19836b1709a80342e01b472f"}, - {file = "coverage-6.4.4-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14a32ec68d721c3d714d9b105c7acf8e0f8a4f4734c811eda75ff3718570b5e3"}, - {file = "coverage-6.4.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:6a864733b22d3081749450466ac80698fe39c91cb6849b2ef8752fd7482011f3"}, - {file = "coverage-6.4.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:08002f9251f51afdcc5e3adf5d5d66bb490ae893d9e21359b085f0e03390a820"}, - {file = "coverage-6.4.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:a3b2752de32c455f2521a51bd3ffb53c5b3ae92736afde67ce83477f5c1dd928"}, - {file = "coverage-6.4.4-cp37-cp37m-win32.whl", hash = "sha256:f855b39e4f75abd0dfbcf74a82e84ae3fc260d523fcb3532786bcbbcb158322c"}, - {file = "coverage-6.4.4-cp37-cp37m-win_amd64.whl", hash = "sha256:ee6ae6bbcac0786807295e9687169fba80cb0617852b2fa118a99667e8e6815d"}, - {file = "coverage-6.4.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:564cd0f5b5470094df06fab676c6d77547abfdcb09b6c29c8a97c41ad03b103c"}, - {file = "coverage-6.4.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cbbb0e4cd8ddcd5ef47641cfac97d8473ab6b132dd9a46bacb18872828031685"}, - {file = "coverage-6.4.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6113e4df2fa73b80f77663445be6d567913fb3b82a86ceb64e44ae0e4b695de1"}, - {file = "coverage-6.4.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8d032bfc562a52318ae05047a6eb801ff31ccee172dc0d2504614e911d8fa83e"}, - {file = "coverage-6.4.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e431e305a1f3126477abe9a184624a85308da8edf8486a863601d58419d26ffa"}, - {file = "coverage-6.4.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:cf2afe83a53f77aec067033199797832617890e15bed42f4a1a93ea24794ae3e"}, - {file = "coverage-6.4.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:783bc7c4ee524039ca13b6d9b4186a67f8e63d91342c713e88c1865a38d0892a"}, - {file = "coverage-6.4.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:ff934ced84054b9018665ca3967fc48e1ac99e811f6cc99ea65978e1d384454b"}, - {file = "coverage-6.4.4-cp38-cp38-win32.whl", hash = "sha256:e1fabd473566fce2cf18ea41171d92814e4ef1495e04471786cbc943b89a3781"}, - {file = "coverage-6.4.4-cp38-cp38-win_amd64.whl", hash = "sha256:4179502f210ebed3ccfe2f78bf8e2d59e50b297b598b100d6c6e3341053066a2"}, - {file = "coverage-6.4.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:98c0b9e9b572893cdb0a00e66cf961a238f8d870d4e1dc8e679eb8bdc2eb1b86"}, - {file = "coverage-6.4.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fc600f6ec19b273da1d85817eda339fb46ce9eef3e89f220055d8696e0a06908"}, - {file = "coverage-6.4.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7a98d6bf6d4ca5c07a600c7b4e0c5350cd483c85c736c522b786be90ea5bac4f"}, - {file = "coverage-6.4.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:01778769097dbd705a24e221f42be885c544bb91251747a8a3efdec6eb4788f2"}, - {file = "coverage-6.4.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dfa0b97eb904255e2ab24166071b27408f1f69c8fbda58e9c0972804851e0558"}, - {file = "coverage-6.4.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:fcbe3d9a53e013f8ab88734d7e517eb2cd06b7e689bedf22c0eb68db5e4a0a19"}, - {file = "coverage-6.4.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:15e38d853ee224e92ccc9a851457fb1e1f12d7a5df5ae44544ce7863691c7a0d"}, - {file = "coverage-6.4.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6913dddee2deff8ab2512639c5168c3e80b3ebb0f818fed22048ee46f735351a"}, - {file = "coverage-6.4.4-cp39-cp39-win32.whl", hash = "sha256:354df19fefd03b9a13132fa6643527ef7905712109d9c1c1903f2133d3a4e145"}, - {file = "coverage-6.4.4-cp39-cp39-win_amd64.whl", hash = "sha256:1238b08f3576201ebf41f7c20bf59baa0d05da941b123c6656e42cdb668e9827"}, - {file = "coverage-6.4.4-pp36.pp37.pp38-none-any.whl", hash = "sha256:f67cf9f406cf0d2f08a3515ce2db5b82625a7257f88aad87904674def6ddaec1"}, - {file = "coverage-6.4.4.tar.gz", hash = "sha256:e16c45b726acb780e1e6f88b286d3c10b3914ab03438f32117c4aa52d7f30d58"}, + {file = "coverage-6.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ef8674b0ee8cc11e2d574e3e2998aea5df5ab242e012286824ea3c6970580e53"}, + {file = "coverage-6.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:784f53ebc9f3fd0e2a3f6a78b2be1bd1f5575d7863e10c6e12504f240fd06660"}, + {file = "coverage-6.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4a5be1748d538a710f87542f22c2cad22f80545a847ad91ce45e77417293eb4"}, + {file = "coverage-6.5.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:83516205e254a0cb77d2d7bb3632ee019d93d9f4005de31dca0a8c3667d5bc04"}, + {file = "coverage-6.5.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af4fffaffc4067232253715065e30c5a7ec6faac36f8fc8d6f64263b15f74db0"}, + {file = "coverage-6.5.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:97117225cdd992a9c2a5515db1f66b59db634f59d0679ca1fa3fe8da32749cae"}, + {file = "coverage-6.5.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a1170fa54185845505fbfa672f1c1ab175446c887cce8212c44149581cf2d466"}, + {file = "coverage-6.5.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:11b990d520ea75e7ee8dcab5bc908072aaada194a794db9f6d7d5cfd19661e5a"}, + {file = "coverage-6.5.0-cp310-cp310-win32.whl", hash = "sha256:5dbec3b9095749390c09ab7c89d314727f18800060d8d24e87f01fb9cfb40b32"}, + {file = "coverage-6.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:59f53f1dc5b656cafb1badd0feb428c1e7bc19b867479ff72f7a9dd9b479f10e"}, + {file = "coverage-6.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4a5375e28c5191ac38cca59b38edd33ef4cc914732c916f2929029b4bfb50795"}, + {file = "coverage-6.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4ed2820d919351f4167e52425e096af41bfabacb1857186c1ea32ff9983ed75"}, + {file = "coverage-6.5.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:33a7da4376d5977fbf0a8ed91c4dffaaa8dbf0ddbf4c8eea500a2486d8bc4d7b"}, + {file = "coverage-6.5.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8fb6cf131ac4070c9c5a3e21de0f7dc5a0fbe8bc77c9456ced896c12fcdad91"}, + {file = "coverage-6.5.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a6b7d95969b8845250586f269e81e5dfdd8ff828ddeb8567a4a2eaa7313460c4"}, + {file = "coverage-6.5.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:1ef221513e6f68b69ee9e159506d583d31aa3567e0ae84eaad9d6ec1107dddaa"}, + {file = "coverage-6.5.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cca4435eebea7962a52bdb216dec27215d0df64cf27fc1dd538415f5d2b9da6b"}, + {file = "coverage-6.5.0-cp311-cp311-win32.whl", hash = "sha256:98e8a10b7a314f454d9eff4216a9a94d143a7ee65018dd12442e898ee2310578"}, + {file = "coverage-6.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:bc8ef5e043a2af066fa8cbfc6e708d58017024dc4345a1f9757b329a249f041b"}, + {file = "coverage-6.5.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4433b90fae13f86fafff0b326453dd42fc9a639a0d9e4eec4d366436d1a41b6d"}, + {file = "coverage-6.5.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f4f05d88d9a80ad3cac6244d36dd89a3c00abc16371769f1340101d3cb899fc3"}, + {file = "coverage-6.5.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:94e2565443291bd778421856bc975d351738963071e9b8839ca1fc08b42d4bef"}, + {file = "coverage-6.5.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:027018943386e7b942fa832372ebc120155fd970837489896099f5cfa2890f79"}, + {file = "coverage-6.5.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:255758a1e3b61db372ec2736c8e2a1fdfaf563977eedbdf131de003ca5779b7d"}, + {file = "coverage-6.5.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:851cf4ff24062c6aec510a454b2584f6e998cada52d4cb58c5e233d07172e50c"}, + {file = "coverage-6.5.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:12adf310e4aafddc58afdb04d686795f33f4d7a6fa67a7a9d4ce7d6ae24d949f"}, + {file = "coverage-6.5.0-cp37-cp37m-win32.whl", hash = "sha256:b5604380f3415ba69de87a289a2b56687faa4fe04dbee0754bfcae433489316b"}, + {file = "coverage-6.5.0-cp37-cp37m-win_amd64.whl", hash = "sha256:4a8dbc1f0fbb2ae3de73eb0bdbb914180c7abfbf258e90b311dcd4f585d44bd2"}, + {file = "coverage-6.5.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d900bb429fdfd7f511f868cedd03a6bbb142f3f9118c09b99ef8dc9bf9643c3c"}, + {file = "coverage-6.5.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2198ea6fc548de52adc826f62cb18554caedfb1d26548c1b7c88d8f7faa8f6ba"}, + {file = "coverage-6.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c4459b3de97b75e3bd6b7d4b7f0db13f17f504f3d13e2a7c623786289dd670e"}, + {file = "coverage-6.5.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:20c8ac5386253717e5ccc827caad43ed66fea0efe255727b1053a8154d952398"}, + {file = "coverage-6.5.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b07130585d54fe8dff3d97b93b0e20290de974dc8177c320aeaf23459219c0b"}, + {file = "coverage-6.5.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:dbdb91cd8c048c2b09eb17713b0c12a54fbd587d79adcebad543bc0cd9a3410b"}, + {file = "coverage-6.5.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:de3001a203182842a4630e7b8d1a2c7c07ec1b45d3084a83d5d227a3806f530f"}, + {file = "coverage-6.5.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e07f4a4a9b41583d6eabec04f8b68076ab3cd44c20bd29332c6572dda36f372e"}, + {file = "coverage-6.5.0-cp38-cp38-win32.whl", hash = "sha256:6d4817234349a80dbf03640cec6109cd90cba068330703fa65ddf56b60223a6d"}, + {file = "coverage-6.5.0-cp38-cp38-win_amd64.whl", hash = "sha256:7ccf362abd726b0410bf8911c31fbf97f09f8f1061f8c1cf03dfc4b6372848f6"}, + {file = "coverage-6.5.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:633713d70ad6bfc49b34ead4060531658dc6dfc9b3eb7d8a716d5873377ab745"}, + {file = "coverage-6.5.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:95203854f974e07af96358c0b261f1048d8e1083f2de9b1c565e1be4a3a48cfc"}, + {file = "coverage-6.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9023e237f4c02ff739581ef35969c3739445fb059b060ca51771e69101efffe"}, + {file = "coverage-6.5.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:265de0fa6778d07de30bcf4d9dc471c3dc4314a23a3c6603d356a3c9abc2dfcf"}, + {file = "coverage-6.5.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f830ed581b45b82451a40faabb89c84e1a998124ee4212d440e9c6cf70083e5"}, + {file = "coverage-6.5.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7b6be138d61e458e18d8e6ddcddd36dd96215edfe5f1168de0b1b32635839b62"}, + {file = "coverage-6.5.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:42eafe6778551cf006a7c43153af1211c3aaab658d4d66fa5fcc021613d02518"}, + {file = "coverage-6.5.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:723e8130d4ecc8f56e9a611e73b31219595baa3bb252d539206f7bbbab6ffc1f"}, + {file = "coverage-6.5.0-cp39-cp39-win32.whl", hash = "sha256:d9ecf0829c6a62b9b573c7bb6d4dcd6ba8b6f80be9ba4fc7ed50bf4ac9aecd72"}, + {file = "coverage-6.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:fc2af30ed0d5ae0b1abdb4ebdce598eafd5b35397d4d75deb341a614d333d987"}, + {file = "coverage-6.5.0-pp36.pp37.pp38-none-any.whl", hash = "sha256:1431986dac3923c5945271f169f59c45b8802a114c8f548d611f2015133df77a"}, + {file = "coverage-6.5.0.tar.gz", hash = "sha256:f642e90754ee3e06b0e7e51bce3379590e76b7f76b708e1a71ff043f87025c84"}, ] datadog = [ {file = "datadog-0.41.0-py2.py3-none-any.whl", hash = "sha256:ab79ed38fb09ff1942c341e32849c4eeaf8b2e4d467b9e6bb1c6071808f454d6"}, @@ -462,70 +577,88 @@ ddsketch = [ {file = "ddsketch-2.0.4.tar.gz", hash = "sha256:32f7314077fec8747d4faebaec2c854b5ffc399c5f552f73fa94024f48d74d64"}, ] ddtrace = [ - {file = "ddtrace-1.4.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:9424c65419741e3876a40528cfc229d7b272e76fef6cd1472181efa6c51e5266"}, - {file = "ddtrace-1.4.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:efa75a693a0244f7bb70dc60cb967b91ed2b2ea04c9f5eed048cd401efc50a05"}, - {file = "ddtrace-1.4.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:180204495d8e0b82478e0737b5cb4e69413e30b3103913545fcad05ac3999361"}, - {file = "ddtrace-1.4.1-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:c660326cbdd65977519ce8c3d7a6d45b36fcf39f2a36121b21b4d4f89c5dd923"}, - {file = "ddtrace-1.4.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:a5b4f0ae120a66cabdc34e398a442388360c5cdfc6749c8e07861f069ad410c2"}, - {file = "ddtrace-1.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:fe518aa67c157e66dcf228bdd83fcf5668981d5b9dbb7277d9aff9c31ffa3494"}, - {file = "ddtrace-1.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:cd45412f75e76f627d60d4b71c660005286a0aa0746e8902dc8fd8f746a51c39"}, - {file = "ddtrace-1.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:600a2776190920fa49805940da988a3b2216507165e804c145991324dfbbb140"}, - {file = "ddtrace-1.4.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ec6ab706b95f903cbec42ae45f26968507be005637cd8973f16c18d356442452"}, - {file = "ddtrace-1.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6cdaead1b426167de77a1fb0debc0032db2ce356de9a99bcc1f2f9aeac519f48"}, - {file = "ddtrace-1.4.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:29e7c97d36b51d25078102911105e8db1669c4e24a1baab56c844bfe6424a5e8"}, - {file = "ddtrace-1.4.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:ee94aec8a5bfc319735ea384942ba6319df50dcc88cf0ae7bdd3d1cabcd2552d"}, - {file = "ddtrace-1.4.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:90d78cadb6f14d2f0dddca8781172e6cf88d661eb89931e2ca8f14879d9dccfb"}, - {file = "ddtrace-1.4.1-cp310-cp310-win32.whl", hash = "sha256:202f7f7018cc87fd7304b1f2f2ae8b366021d50563fda6c8801571a51cefa052"}, - {file = "ddtrace-1.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:03286e4a58da73cf54079903b699a49c3c9598160ae6f0f279b9e616a3cd3283"}, - {file = "ddtrace-1.4.1-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:b103aee89861ba55a1759cd2e93b873ef1ca108929599d42f8b9c82ac655f1e9"}, - {file = "ddtrace-1.4.1-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:ecf7b580885221861ee47382ad5f712bf472a542d9f9385dfda7f731a4f8927a"}, - {file = "ddtrace-1.4.1-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:226698e193c5065022c9b5a753cc269b00f5f9a3aeaf3c1a8a18d5b47184e26f"}, - {file = "ddtrace-1.4.1-cp35-cp35m-win32.whl", hash = "sha256:5accb5814b3b87800f62cfbb34e0335ec59fde7c25bda70a06f3d279c6c4ac1e"}, - {file = "ddtrace-1.4.1-cp35-cp35m-win_amd64.whl", hash = "sha256:e0630674292c01d52ac0a0128c6b89c8f1e9ce29650d5003e68c6630c6b06b75"}, - {file = "ddtrace-1.4.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:8ca0745bd8550e105beca9e3600c7665b8c573b3c1c0dfa06400bb6c6b6a54df"}, - {file = "ddtrace-1.4.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ceba339f33f15fa9499ddf2280b9722147f1f599587dbb11d142657467e3c8eb"}, - {file = "ddtrace-1.4.1-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:216dd934b1be281d2c5d63b98e0ec8c0b9e65bb6dad4f957d835d940a4d2b52d"}, - {file = "ddtrace-1.4.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e81cf84c9e674e42684e1b0a9afb476f4f6fc783ca398a09bd74b469ffa4798"}, - {file = "ddtrace-1.4.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:fbe530bba7ac9d9fe9ea40bbaedadf427e1804e56f6d1c624e4291cae2ce79e4"}, - {file = "ddtrace-1.4.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:802ffc4f86e30dd0ed99191130eacefbc3b7009b66c60f89a39e21d2953fe65b"}, - {file = "ddtrace-1.4.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:3fcb0cfb9dcf7495fedfaf2a8bb28be302e60e22b7a2dc132459de819f7eefd3"}, - {file = "ddtrace-1.4.1-cp36-cp36m-win32.whl", hash = "sha256:5560d3cf6a4c2034c63d43c75d34f1948e17dbd0f8ca0d1a29398b6b672e0432"}, - {file = "ddtrace-1.4.1-cp36-cp36m-win_amd64.whl", hash = "sha256:86524e8d5da8169bc3bb6c0e44185881ad9d18093d69cdcebbff8cb21f8bbafd"}, - {file = "ddtrace-1.4.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:2858e6204685e9d3fe43e8ae8d1a7fb458dcfc400a489b45329126902342f6d2"}, - {file = "ddtrace-1.4.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cf7164b768f99d8a8e3e0e61be2a495c968fb23fbf93922d2e35e4b1261664a"}, - {file = "ddtrace-1.4.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d2feab1265003cbdb6b25f1d7894c3ae408213c4822581ebb98c3a3501934544"}, - {file = "ddtrace-1.4.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:505e6de72c961fa59a8af57901801826d924ed28aa7e4b0a9ad45652bca1845a"}, - {file = "ddtrace-1.4.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:461cae0b3b955f3e76bd23085455561229a6b358b32b348edee1f24c288b4e00"}, - {file = "ddtrace-1.4.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:e6ef83e0e8af7b291a79e8c848f754d113231bb64a5db259f54b7487e20d4b17"}, - {file = "ddtrace-1.4.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:6b8231c68414053b10b2ef1422cb0de4b8b3c22e027172bd8a07157874a43155"}, - {file = "ddtrace-1.4.1-cp37-cp37m-win32.whl", hash = "sha256:035ff434164f6c5380d799e40e67be1e93ee8fe4524e7e9ff80e71251267b180"}, - {file = "ddtrace-1.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:7aa470568ac9ef29c67ad9c5280a0f80d51280cc4045eb5b551ebf06558dc1ad"}, - {file = "ddtrace-1.4.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6a80b171d38680b9ab981ce430a800f8886915a6b23e332fa142f08ed9c66933"}, - {file = "ddtrace-1.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d79a0a6484cb725470c0ee833c501c0a5e0337ba7f26dbc30b0b1e61ad79eadc"}, - {file = "ddtrace-1.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0c2091372ce5effe98bc2b7fdb0a9f0a353a3ff25299102348b551634b0caf6"}, - {file = "ddtrace-1.4.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e9f6e3eee25e3e0e0db5898aa4081fd4bd08d7dd8b37c28dfc18ec032619f2c4"}, - {file = "ddtrace-1.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:237b53fb6fbac7ed1481bffcfb33006e8c7f6c17a496986c230b84504f8ec001"}, - {file = "ddtrace-1.4.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b206ace7fb92ca729ebbcee327b6696eb359f5884ca24663e018b491924df086"}, - {file = "ddtrace-1.4.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:04fab7a4f1cedbe6aac92dd4e4a7d54b066cb13b01c558ce4732413b4a01e734"}, - {file = "ddtrace-1.4.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b87f7108de4a58fd3fea14d49c093f0b0714075a1483679cd48c330f8165cd3b"}, - {file = "ddtrace-1.4.1-cp38-cp38-win32.whl", hash = "sha256:8c6876e700880ccdf877413416d7b68bd78300c6ac80c0d3f1b715c5d0a5a367"}, - {file = "ddtrace-1.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:6201399d9dd5b0a7faaef6552b4944c8a106ccff72c6109be9beaeb15438ad3d"}, - {file = "ddtrace-1.4.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:d2e9529975355e84684cc1a71d7535b3df11bcb0ee4db1a1a4ad67c914a4006e"}, - {file = "ddtrace-1.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:705f5c4228e2115c5d854cfe5362420d6ce49ff1698e4a75d9e36b35ac6adfd7"}, - {file = "ddtrace-1.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d2a3ba14691125eba7873c4894e70b297725e6f77bfdbb21231597dd457f9e3"}, - {file = "ddtrace-1.4.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2ebd8eef0fb0e58e3576e4830f4531c99211da60bf1bd7661abc626ab6abd88e"}, - {file = "ddtrace-1.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd2f1124f38d06b25289e65b20cafd794191a407ee0a23b9379d783a9f42c76f"}, - {file = "ddtrace-1.4.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:518e5101bdbb7ca5f0bef35ae1a2823a9b3cf6da1ca032c579419937ccee0fbc"}, - {file = "ddtrace-1.4.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:2ea08f50b21fc7823a74765ebad89731e4f594cae63c06d345734e78de986cfb"}, - {file = "ddtrace-1.4.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a262f8fc9bc037aefc4d2bb3fd17799e75bdd191a160026ecbb31eeb6e5fdf8c"}, - {file = "ddtrace-1.4.1-cp39-cp39-win32.whl", hash = "sha256:d30c71839cd8098114ce9bcb4a3a0d67a8fff610134f69427e9d0f2e8797670f"}, - {file = "ddtrace-1.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:901fc64e9c8ac651b40297686d62ed8aa17978c3e5b572dc52bb39d16da34475"}, - {file = "ddtrace-1.4.1.tar.gz", hash = "sha256:a6f2a6ea0e8e35fcf21949024e8c9f2b696c166f528b757817a8f6e2a6d61395"}, + {file = "ddtrace-1.6.3-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:bf5f05e371d5c748c4479538251046ddd4c2fbe0f29886e8f02fcc32e6c1fc61"}, + {file = "ddtrace-1.6.3-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:44b211cf4325efb1e8df8429971ee25de735ff7690add2e9b7e005150b6af0d6"}, + {file = "ddtrace-1.6.3-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:b03a712cb2fe4caa1d18e2ec07029e6492f9cf655b977b5b64e46fca8f1ee318"}, + {file = "ddtrace-1.6.3-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:f2ac992a7f13ffdbb4650a8dd36e746ee321b96739ea02704331873a3ce7788e"}, + {file = "ddtrace-1.6.3-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:2037dcaba0307192195abdc514fc2defac1cd7fc2a4b88f6f9cb5e280753fb19"}, + {file = "ddtrace-1.6.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:9d545c1a59e03a66ef794e6839788b43abe2f79b74cc13daddb7fe4d549b8b18"}, + {file = "ddtrace-1.6.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3cf03ed9112543c876105254adc4068586faf943f12b32636bfaa50eac2f81d0"}, + {file = "ddtrace-1.6.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9831e2a22a58dd1c73c0a360f4f110962cc3c777c0a7fe96029a591464549cde"}, + {file = "ddtrace-1.6.3-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4834ea851af813410fad67b4a000b3c62cfad2a72a043502fd4d6d5081affeba"}, + {file = "ddtrace-1.6.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:41e0ef8abc6c947f949e45fbd298047a6ced7553bcab3c822070079ba1f4d2b2"}, + {file = "ddtrace-1.6.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:cb67eda7daf46343f588aeb0cae59845d393099b431dbe6f765998806485e91d"}, + {file = "ddtrace-1.6.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:517062a828297ed4f7cb03803477ecdbe44cb0c34066ba14180c51715d69b511"}, + {file = "ddtrace-1.6.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6ebc656ba44b5f16af3d3e37bc30b14b1d3d62b09d5be676988e2060ea2b7ca5"}, + {file = "ddtrace-1.6.3-cp310-cp310-win32.whl", hash = "sha256:b7ba8c0cdb38bcdf3f911a1ba525e4bc0bcbd4741f4d2016863859719492a3fa"}, + {file = "ddtrace-1.6.3-cp310-cp310-win_amd64.whl", hash = "sha256:a479e36288c2234fa8222471ce2eceda1dfa042a402b102296f6b96cb2f32116"}, + {file = "ddtrace-1.6.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9ed59f828027ca9950d3a2f3afa78237973cbbdb2586f8f69a2a179e85377dbe"}, + {file = "ddtrace-1.6.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5632e8a30ee3fbe7fe15b899da8c0685f1eb59c0efc6524b284840789e369d20"}, + {file = "ddtrace-1.6.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e0dde9a55923abf571b5c4a8fb146f8b99cf63cf638d4cd5ad2b29141d0e8e0"}, + {file = "ddtrace-1.6.3-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c05a0382c51bef46dca2f373069f84f067e40412b92903deadeb1f346f68623d"}, + {file = "ddtrace-1.6.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb9c18321e5e117c28b3995d14c69f05bd4955a6adca39ebf75e55e008e0302b"}, + {file = "ddtrace-1.6.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:6782ed0b423d2af3ea50d4981a68b9cb960783be3672ceec1ebac0ad8b373726"}, + {file = "ddtrace-1.6.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:63177507d6f2e7d655110da33891ee94ba50907ef7e07dc34d28695cdb34c86a"}, + {file = "ddtrace-1.6.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1105e10bde6bd743388f24fab5ef39d58866f9c78e746b54066b8455245eea56"}, + {file = "ddtrace-1.6.3-cp311-cp311-win32.whl", hash = "sha256:b3bc931787840efbc86f0ee05a32f46581acb30ae5e7aee33cb1c34f87d29544"}, + {file = "ddtrace-1.6.3-cp311-cp311-win_amd64.whl", hash = "sha256:add17ff72822d0e9fc0da7970bc434b72ff084c30b6b091273d18aabbf5c4d97"}, + {file = "ddtrace-1.6.3-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:dc25be608fa9c7c4f2c0ad5ab89dc70fe1b3a0f4551efcef2813186ea205f9cd"}, + {file = "ddtrace-1.6.3-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:2f57dd998a501f854bf0ba2e52f7f957ff81c26321715f4129785da082055e9f"}, + {file = "ddtrace-1.6.3-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:8d9fcf0b56261722c1448a08c840e733ba0eb0c6a8114056d3bd3b0eb56f8172"}, + {file = "ddtrace-1.6.3-cp35-cp35m-win32.whl", hash = "sha256:45a543e03b3832d9fdd3435c654a92b5399f26e15a5388022ffb79de099bdd38"}, + {file = "ddtrace-1.6.3-cp35-cp35m-win_amd64.whl", hash = "sha256:b9bec566f3ad3acbe8205994b982a2b187747e7937b125f0cb6d36dccfa0e0a6"}, + {file = "ddtrace-1.6.3-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:889f55892811d52534fe0d01a3683dd0fd3cfbd3a68a052a13cdc107d9a7552b"}, + {file = "ddtrace-1.6.3-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48164748064c54a0dbfbea810b6eced16eea896ca0b135e720e14d168767f65a"}, + {file = "ddtrace-1.6.3-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:df92875c0279fc140ae9aa578f1d1fd2dc9b86e3ca927fd8559dbea00aec407b"}, + {file = "ddtrace-1.6.3-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8f1f9723cffcf0bc4bc3b9d548a20fa206018ffcf6458a9abc69bf0513af2c9"}, + {file = "ddtrace-1.6.3-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:aed2fb0e5315f8712be601c9673ff6ca657b141052704b1bafd3eff6dfed8ec3"}, + {file = "ddtrace-1.6.3-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:4b14155b28441d9c72daa430f778a22e327b0ad9244bb26ab8e3c0a5e07f4c87"}, + {file = "ddtrace-1.6.3-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:ece25655e6f6795150421f969b0944b4eef3889e485063a73531e96113aeba63"}, + {file = "ddtrace-1.6.3-cp36-cp36m-win32.whl", hash = "sha256:b808adc343949edd68fcd9470ae6f45ef494dd5a378f50c2ff317187f70716f6"}, + {file = "ddtrace-1.6.3-cp36-cp36m-win_amd64.whl", hash = "sha256:2e909b2d1477f5ac332fbb9e9bb5b6fa0bcdbed316a301d786c5c5dd7cc3367b"}, + {file = "ddtrace-1.6.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:fa7b282bcf5478b89f7281403accb22b14f409552296666c25f7d64caa769a5f"}, + {file = "ddtrace-1.6.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e7459595f80151b6fd94753fafad3576b8c00bfd153d5d06c30f3c1e3cc73bb8"}, + {file = "ddtrace-1.6.3-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4b939ff24096ee10a20ec5f7f77bcfaa2bebfc8375717d8ef36c8edf95ae8aec"}, + {file = "ddtrace-1.6.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2af9da9d7322290ecc1699144c0a4db2dc7e0460418c06732cdbfaea71e9a230"}, + {file = "ddtrace-1.6.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:349a032698665dc83cf5175232df0212d4a31235be1921976f39801d205ad1a7"}, + {file = "ddtrace-1.6.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f31ec764b30b143ea143b1d9a49087b10f09c80c2d7404d6ee4a7db4bf4a285f"}, + {file = "ddtrace-1.6.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:b42ab996e67d2bbbc728319884a2eafec0104e26ca2a8454daa548010950b724"}, + {file = "ddtrace-1.6.3-cp37-cp37m-win32.whl", hash = "sha256:74d2255d69aefdd443e5135767b7fa19677db490837e2185ab365795d1f64fc2"}, + {file = "ddtrace-1.6.3-cp37-cp37m-win_amd64.whl", hash = "sha256:303b95a5f47dcce919bff2004409f4a01f7325c831da1a8ef7953f063ca16f09"}, + {file = "ddtrace-1.6.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:0c2b19abafeb8cd18b5ef8b4a3e3f201a0c03106db4e91d17f7a68edf67ff135"}, + {file = "ddtrace-1.6.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:fc212bffaf411135ef0bd855781db7e69c3d81c9bdf90b81d41c1f7e44406ee4"}, + {file = "ddtrace-1.6.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:655696b0f5947fcca46f2d7e1ba3015d17c632e82bf22d93a92dec44f1f936b3"}, + {file = "ddtrace-1.6.3-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:773d64bd4f805f4fddcda716dddb2044524a829b906ab9161c63cc5bd9eec011"}, + {file = "ddtrace-1.6.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b391f2ee81e98983a16bdb21833c773eda4ed0233c42bc8c209c07125706a7d9"}, + {file = "ddtrace-1.6.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:a6a3864f8bb2e4cede1e00d7a9a931b92dc7d383272361c0359af3821323f4d6"}, + {file = "ddtrace-1.6.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a4d8a91a3a765f9cd9862e9dd1d5ebcc48ab4db5b9aae8b9e9dba2bf8e090a99"}, + {file = "ddtrace-1.6.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:276628bd2f8a29e32edeccd7c7f10367e906c476e47d619ea86b9c86141f7718"}, + {file = "ddtrace-1.6.3-cp38-cp38-win32.whl", hash = "sha256:2b23de67da8920d9a58bef1234a392eceed0fc5cac6c411d4f0c6384fa2cabd4"}, + {file = "ddtrace-1.6.3-cp38-cp38-win_amd64.whl", hash = "sha256:beeda524311ed0eed1da35ea9619cf4fda68ef4070c2c7dcd56a72687234fd88"}, + {file = "ddtrace-1.6.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c3c63294180ce24812060fbf90e769ea1aa042b5d046c216354fb2cf4a5a0000"}, + {file = "ddtrace-1.6.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a000935079a1129d712ba38103bac07d797db37d3b52a5b3d09970385ede0f65"}, + {file = "ddtrace-1.6.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa3e749dc799a2d5ce4d9d73cd311f4774740f1389698c058ab63392d2a175a2"}, + {file = "ddtrace-1.6.3-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a99813aa0f42d8dd7ac5a93aae0dee4678eadf3c6c1cbfee5cc1e6108ded40a3"}, + {file = "ddtrace-1.6.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9ae19dcd8a40f11cb74e2342f83776283913941b451bf8b9b710f97b06ecc62"}, + {file = "ddtrace-1.6.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:8f548c1ff4298a1e3fca2efa9a1bb7b4caf830a1d4990f95b0e4e6d3e109a435"}, + {file = "ddtrace-1.6.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:fbcfe0cb4953915098140565b14537e1641f356637869a18bedd4af8c5efc4c0"}, + {file = "ddtrace-1.6.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b4944c49bf7e5ed97c7d64b531178c987b1197ef3ac6f280892e907100b7aea9"}, + {file = "ddtrace-1.6.3-cp39-cp39-win32.whl", hash = "sha256:956cb24b7dbb0dc14bc15c9b54ec6ff88a579452dda16fb867e8c86a37e7e384"}, + {file = "ddtrace-1.6.3-cp39-cp39-win_amd64.whl", hash = "sha256:7b7466cf00a68bcfa859c65ff3ffd59124b72ed08652ffd5f18a63507912c2c2"}, + {file = "ddtrace-1.6.3.tar.gz", hash = "sha256:ea029339a81cdd5a43e6a949a4131a093b4ddc58ca00ebaa54dcb140da070c03"}, ] decorator = [ {file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"}, {file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"}, ] +envier = [ + {file = "envier-0.4.0-py3-none-any.whl", hash = "sha256:7b91af0f16ea3e56d91ec082f038987e81b441fc19c657a8b8afe0909740a706"}, + {file = "envier-0.4.0.tar.gz", hash = "sha256:e68dcd1ed67d8b6313883e27dff3e701b7fba944d2ed4b7f53d0cc2e12364a82"}, +] +exceptiongroup = [ + {file = "exceptiongroup-1.0.4-py3-none-any.whl", hash = "sha256:542adf9dea4055530d6e1279602fa5cb11dab2395fa650b8674eaec35fc4a828"}, + {file = "exceptiongroup-1.0.4.tar.gz", hash = "sha256:bd14967b79cd9bdb54d97323216f8fdf533e278df937aa2a90089e7d6e06e5ec"}, +] flake8 = [ {file = "flake8-3.9.2-py2.py3-none-any.whl", hash = "sha256:bf8fd333346d844f616e8d47905ef3a3384edae6b4e9beb0c5101e25e3110907"}, {file = "flake8-3.9.2.tar.gz", hash = "sha256:07528381786f2a6237b061f6e96610a4167b226cb926e2aa2b6b1d78057c576b"}, @@ -534,17 +667,25 @@ httpretty = [ {file = "httpretty-0.9.7.tar.gz", hash = "sha256:66216f26b9d2c52e81808f3e674a6fb65d4bf719721394a1a9be926177e55fbe"}, ] idna = [ - {file = "idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"}, - {file = "idna-3.3.tar.gz", hash = "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"}, + {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"}, + {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, ] importlib-metadata = [ {file = "importlib_metadata-1.7.0-py2.py3-none-any.whl", hash = "sha256:dc15b2969b4ce36305c51eebe62d418ac7791e9a157911d58bfb1f9ccd8e2070"}, {file = "importlib_metadata-1.7.0.tar.gz", hash = "sha256:90bb658cdbbf6d1735b6341ce708fc7024a3e14e99ffdc5783edea9f9b077f83"}, ] +importlib-resources = [ + {file = "importlib_resources-5.10.1-py3-none-any.whl", hash = "sha256:c09b067d82e72c66f4f8eb12332f5efbebc9b007c0b6c40818108c9870adc363"}, + {file = "importlib_resources-5.10.1.tar.gz", hash = "sha256:32bb095bda29741f6ef0e5278c42df98d135391bee5f932841efc0041f748dc3"}, +] jmespath = [ {file = "jmespath-1.0.1-py3-none-any.whl", hash = "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980"}, {file = "jmespath-1.0.1.tar.gz", hash = "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe"}, ] +jsonschema = [ + {file = "jsonschema-4.17.3-py3-none-any.whl", hash = "sha256:a870ad254da1a8ca84b6a2905cac29d265f805acc57af304784962a2aa6508f6"}, + {file = "jsonschema-4.17.3.tar.gz", hash = "sha256:0f864437ab8b6076ba6707453ef8f98a6a0d512a80e93f8abdb676f737ecb60d"}, +] mccabe = [ {file = "mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42"}, {file = "mccabe-0.6.1.tar.gz", hash = "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"}, @@ -557,21 +698,25 @@ packaging = [ {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"}, {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"}, ] +pkgutil-resolve-name = [ + {file = "pkgutil_resolve_name-1.3.10-py3-none-any.whl", hash = "sha256:ca27cc078d25c5ad71a9de0a7a330146c4e014c2462d9af19c6b828280649c5e"}, + {file = "pkgutil_resolve_name-1.3.10.tar.gz", hash = "sha256:357d6c9e6a755653cfd78893817c0853af365dd51ec97f3d358a819373bbd174"}, +] protobuf = [ - {file = "protobuf-4.21.6-cp310-abi3-win32.whl", hash = "sha256:49f88d56a9180dbb7f6199c920f5bb5c1dd0172f672983bb281298d57c2ac8eb"}, - {file = "protobuf-4.21.6-cp310-abi3-win_amd64.whl", hash = "sha256:7a6cc8842257265bdfd6b74d088b829e44bcac3cca234c5fdd6052730017b9ea"}, - {file = "protobuf-4.21.6-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:ba596b9ffb85c909fcfe1b1a23136224ed678af3faf9912d3fa483d5f9813c4e"}, - {file = "protobuf-4.21.6-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:4143513c766db85b9d7c18dbf8339673c8a290131b2a0fe73855ab20770f72b0"}, - {file = "protobuf-4.21.6-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:b6cea204865595a92a7b240e4b65bcaaca3ad5d2ce25d9db3756eba06041138e"}, - {file = "protobuf-4.21.6-cp37-cp37m-win32.whl", hash = "sha256:9666da97129138585b26afcb63ad4887f602e169cafe754a8258541c553b8b5d"}, - {file = "protobuf-4.21.6-cp37-cp37m-win_amd64.whl", hash = "sha256:308173d3e5a3528787bb8c93abea81d5a950bdce62840d9760effc84127fb39c"}, - {file = "protobuf-4.21.6-cp38-cp38-win32.whl", hash = "sha256:aa29113ec901281f29d9d27b01193407a98aa9658b8a777b0325e6d97149f5ce"}, - {file = "protobuf-4.21.6-cp38-cp38-win_amd64.whl", hash = "sha256:8f9e60f7d44592c66e7b332b6a7b4b6e8d8b889393c79dbc3a91f815118f8eac"}, - {file = "protobuf-4.21.6-cp39-cp39-win32.whl", hash = "sha256:80e6540381080715fddac12690ee42d087d0d17395f8d0078dfd6f1181e7be4c"}, - {file = "protobuf-4.21.6-cp39-cp39-win_amd64.whl", hash = "sha256:77b355c8604fe285536155286b28b0c4cbc57cf81b08d8357bf34829ea982860"}, - {file = "protobuf-4.21.6-py2.py3-none-any.whl", hash = "sha256:07a0bb9cc6114f16a39c866dc28b6e3d96fa4ffb9cc1033057412547e6e75cb9"}, - {file = "protobuf-4.21.6-py3-none-any.whl", hash = "sha256:c7c864148a237f058c739ae7a05a2b403c0dfa4ce7d1f3e5213f352ad52d57c6"}, - {file = "protobuf-4.21.6.tar.gz", hash = "sha256:6b1040a5661cd5f6e610cbca9cfaa2a17d60e2bb545309bc1b278bb05be44bdd"}, + {file = "protobuf-4.21.10-cp310-abi3-win32.whl", hash = "sha256:e92768d17473657c87e98b79a4c7724b0ddfa23211b05ce137bfdc55e734e36f"}, + {file = "protobuf-4.21.10-cp310-abi3-win_amd64.whl", hash = "sha256:0c968753028cb14b1d24cc839723f7e9505b305fc588a37a9e0f7d270cb59d89"}, + {file = "protobuf-4.21.10-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:e53165dd14d19abc7f50733f365de431e51d1d262db40c0ee22e271a074fac59"}, + {file = "protobuf-4.21.10-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:5efa8a8162ada7e10847140308fbf84fdc5b89dc21655d12ec04aed87284fe07"}, + {file = "protobuf-4.21.10-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:2a172741b5b041a896b621cef4277077afd571e0d3a6e524e7171f1c70e33200"}, + {file = "protobuf-4.21.10-cp37-cp37m-win32.whl", hash = "sha256:05cbcb9a25cd781fd949f93f6f98a911883868c0360c6d2264fc99a903c8f0d7"}, + {file = "protobuf-4.21.10-cp37-cp37m-win_amd64.whl", hash = "sha256:3f08f04b4f101dd469efbcc1731fbf48068eccd8a42f4e2ea530aa012a5f56f8"}, + {file = "protobuf-4.21.10-cp38-cp38-win32.whl", hash = "sha256:6b809f20923b6ef49dc1755cb50bdb21be179b4a3c7ffcab1fe5d3f139b58a51"}, + {file = "protobuf-4.21.10-cp38-cp38-win_amd64.whl", hash = "sha256:81b233a06c62387ea5c9be2cd9aedd2ba09940e91da53b920e9ff5bd98e48e7f"}, + {file = "protobuf-4.21.10-cp39-cp39-win32.whl", hash = "sha256:b78d7c2c36b51c0041b9bf000be4adb09f4112bfc40bc7a9d48ac0b0dfad139e"}, + {file = "protobuf-4.21.10-cp39-cp39-win_amd64.whl", hash = "sha256:0413addc126c40a5440ee59be098de1007183d68e9f5f20ed5fbc44848f417ca"}, + {file = "protobuf-4.21.10-py2.py3-none-any.whl", hash = "sha256:a5e89eabaa0ca72ce1b7c8104a740d44cdb67942cbbed00c69a4c0541de17107"}, + {file = "protobuf-4.21.10-py3-none-any.whl", hash = "sha256:5096b3922b45e4b7a04d3d3cb855d13bb5ccd4d5e44b129e706232ebf0ffb870"}, + {file = "protobuf-4.21.10.tar.gz", hash = "sha256:4d97c16c0d11155b3714a29245461f0eb60cace294455077f3a3b8a629afa383"}, ] pycodestyle = [ {file = "pycodestyle-2.7.0-py2.py3-none-any.whl", hash = "sha256:514f76d918fcc0b55c6680472f0a37970994e07bbb80725808c17089be302068"}, @@ -585,6 +730,30 @@ pyparsing = [ {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"}, {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"}, ] +pyrsistent = [ + {file = "pyrsistent-0.19.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d6982b5a0237e1b7d876b60265564648a69b14017f3b5f908c5be2de3f9abb7a"}, + {file = "pyrsistent-0.19.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:187d5730b0507d9285a96fca9716310d572e5464cadd19f22b63a6976254d77a"}, + {file = "pyrsistent-0.19.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:055ab45d5911d7cae397dc418808d8802fb95262751872c841c170b0dbf51eed"}, + {file = "pyrsistent-0.19.2-cp310-cp310-win32.whl", hash = "sha256:456cb30ca8bff00596519f2c53e42c245c09e1a4543945703acd4312949bfd41"}, + {file = "pyrsistent-0.19.2-cp310-cp310-win_amd64.whl", hash = "sha256:b39725209e06759217d1ac5fcdb510e98670af9e37223985f330b611f62e7425"}, + {file = "pyrsistent-0.19.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:2aede922a488861de0ad00c7630a6e2d57e8023e4be72d9d7147a9fcd2d30712"}, + {file = "pyrsistent-0.19.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:879b4c2f4d41585c42df4d7654ddffff1239dc4065bc88b745f0341828b83e78"}, + {file = "pyrsistent-0.19.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c43bec251bbd10e3cb58ced80609c5c1eb238da9ca78b964aea410fb820d00d6"}, + {file = "pyrsistent-0.19.2-cp37-cp37m-win32.whl", hash = "sha256:d690b18ac4b3e3cab73b0b7aa7dbe65978a172ff94970ff98d82f2031f8971c2"}, + {file = "pyrsistent-0.19.2-cp37-cp37m-win_amd64.whl", hash = "sha256:3ba4134a3ff0fc7ad225b6b457d1309f4698108fb6b35532d015dca8f5abed73"}, + {file = "pyrsistent-0.19.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a178209e2df710e3f142cbd05313ba0c5ebed0a55d78d9945ac7a4e09d923308"}, + {file = "pyrsistent-0.19.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e371b844cec09d8dc424d940e54bba8f67a03ebea20ff7b7b0d56f526c71d584"}, + {file = "pyrsistent-0.19.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:111156137b2e71f3a9936baf27cb322e8024dac3dc54ec7fb9f0bcf3249e68bb"}, + {file = "pyrsistent-0.19.2-cp38-cp38-win32.whl", hash = "sha256:e5d8f84d81e3729c3b506657dddfe46e8ba9c330bf1858ee33108f8bb2adb38a"}, + {file = "pyrsistent-0.19.2-cp38-cp38-win_amd64.whl", hash = "sha256:9cd3e9978d12b5d99cbdc727a3022da0430ad007dacf33d0bf554b96427f33ab"}, + {file = "pyrsistent-0.19.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:f1258f4e6c42ad0b20f9cfcc3ada5bd6b83374516cd01c0960e3cb75fdca6770"}, + {file = "pyrsistent-0.19.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:21455e2b16000440e896ab99e8304617151981ed40c29e9507ef1c2e4314ee95"}, + {file = "pyrsistent-0.19.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bfd880614c6237243ff53a0539f1cb26987a6dc8ac6e66e0c5a40617296a045e"}, + {file = "pyrsistent-0.19.2-cp39-cp39-win32.whl", hash = "sha256:71d332b0320642b3261e9fee47ab9e65872c2bd90260e5d225dabeed93cbd42b"}, + {file = "pyrsistent-0.19.2-cp39-cp39-win_amd64.whl", hash = "sha256:dec3eac7549869365fe263831f576c8457f6c833937c68542d08fde73457d291"}, + {file = "pyrsistent-0.19.2-py3-none-any.whl", hash = "sha256:ea6b79a02a28550c98b6ca9c35b9f492beaa54d7c5c9e9949555893c8a9234d0"}, + {file = "pyrsistent-0.19.2.tar.gz", hash = "sha256:bfa0351be89c9fcbcb8c9879b826f4353be10f58f8a677efab0c017bf7137ec2"}, +] python-dateutil = [ {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, @@ -602,16 +771,16 @@ six = [ {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, ] tenacity = [ - {file = "tenacity-8.0.1-py3-none-any.whl", hash = "sha256:f78f4ea81b0fabc06728c11dc2a8c01277bfc5181b321a4770471902e3eb844a"}, - {file = "tenacity-8.0.1.tar.gz", hash = "sha256:43242a20e3e73291a28bcbcacfd6e000b02d3857a9a9fff56b297a27afdc932f"}, + {file = "tenacity-8.1.0-py3-none-any.whl", hash = "sha256:35525cd47f82830069f0d6b73f7eb83bc5b73ee2fff0437952cedf98b27653ac"}, + {file = "tenacity-8.1.0.tar.gz", hash = "sha256:e48c437fdf9340f5666b92cd7990e96bc5fc955e1298baf4a907e3972067a445"}, ] typing-extensions = [ - {file = "typing_extensions-4.3.0-py3-none-any.whl", hash = "sha256:25642c956049920a5aa49edcdd6ab1e06d7e5d467fc00e0506c44ac86fbfca02"}, - {file = "typing_extensions-4.3.0.tar.gz", hash = "sha256:e6d2677a32f47fc7eb2795db1dd15c1f34eff616bcaf2cfb5e997f854fa1c4a6"}, + {file = "typing_extensions-4.4.0-py3-none-any.whl", hash = "sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e"}, + {file = "typing_extensions-4.4.0.tar.gz", hash = "sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa"}, ] urllib3 = [ - {file = "urllib3-1.26.12-py2.py3-none-any.whl", hash = "sha256:b930dd878d5a8afb066a637fbb35144fe7901e3b209d1cd4f524bd0e9deee997"}, - {file = "urllib3-1.26.12.tar.gz", hash = "sha256:3fa96cf423e6987997fc326ae8df396db2a8b7c667747d47ddd8ecba91f4a74e"}, + {file = "urllib3-1.26.13-py2.py3-none-any.whl", hash = "sha256:47cc05d99aaa09c9e72ed5809b60e7ba354e64b59c9c173ac3018642d8bb41fc"}, + {file = "urllib3-1.26.13.tar.gz", hash = "sha256:c083dd0dce68dbfbe1129d5271cb90f9447dea7d52097c6e0126120c521ddea8"}, ] wrapt = [ {file = "wrapt-1.14.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:1b376b3f4896e7930f1f772ac4b064ac12598d1c38d04907e696cc4d794b43d3"}, @@ -679,7 +848,11 @@ wrapt = [ {file = "wrapt-1.14.1-cp39-cp39-win_amd64.whl", hash = "sha256:dee60e1de1898bde3b238f18340eec6148986da0455d8ba7848d50470a7a32fb"}, {file = "wrapt-1.14.1.tar.gz", hash = "sha256:380a85cf89e0e69b7cfbe2ea9f765f004ff419f34194018a6827ac0e3edfed4d"}, ] +xmltodict = [ + {file = "xmltodict-0.13.0-py2.py3-none-any.whl", hash = "sha256:aa89e8fd76320154a40d19a0df04a4695fb9dc5ba977cbb68ab3e4eb225e7852"}, + {file = "xmltodict-0.13.0.tar.gz", hash = "sha256:341595a488e3e01a85a9d8911d8912fd922ede5fecc4dce437eb4b6c8d037e56"}, +] zipp = [ - {file = "zipp-3.8.1-py3-none-any.whl", hash = "sha256:47c40d7fe183a6f21403a199b3e4192cca5774656965b0a4988ad2f8feb5f009"}, - {file = "zipp-3.8.1.tar.gz", hash = "sha256:05b45f1ee8f807d0cc928485ca40a07cb491cf092ff587c0df9cb1fd154848d2"}, + {file = "zipp-3.11.0-py3-none-any.whl", hash = "sha256:83a28fcb75844b5c0cdaf5aa4003c2d728c77e05f5aeabe8e95e56727005fbaa"}, + {file = "zipp-3.11.0.tar.gz", hash = "sha256:a7a22e05929290a67401440b39690ae6563279bced5f314609d9d03798f56766"}, ] diff --git a/pyproject.toml b/pyproject.toml index 597bbd75f..e3611a82f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -25,7 +25,7 @@ classifiers = [ python = ">=3.7.0,<4" datadog = "^0.41" wrapt = "^1.11.2" -ddtrace = "^1.4.1" +ddtrace = "^1.6.3" importlib_metadata = {version = "^1.0", python = "<3.8"} boto3 = { version = "^1.10.33", optional = true } typing_extensions = {version = "^4.0", python = "<3.8"} From fffd20e6fcc04a2979543c63130eb27653cd77de Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 9 Dec 2022 11:22:19 -0500 Subject: [PATCH 030/403] Bump certifi from 2022.9.24 to 2022.12.7 (#279) Bumps [certifi](https://github.com/certifi/python-certifi) from 2022.9.24 to 2022.12.7. - [Release notes](https://github.com/certifi/python-certifi/releases) - [Commits](https://github.com/certifi/python-certifi/compare/2022.09.24...2022.12.07) --- updated-dependencies: - dependency-name: certifi dependency-type: indirect ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/poetry.lock b/poetry.lock index 7a6fb0883..fb897214e 100644 --- a/poetry.lock +++ b/poetry.lock @@ -78,7 +78,7 @@ typing_extensions = {version = "*", markers = "python_version < \"3.8\""} [[package]] name = "certifi" -version = "2022.9.24" +version = "2022.12.7" description = "Python package for providing Mozilla's CA Bundle." category = "main" optional = false @@ -509,8 +509,8 @@ cattrs = [ {file = "cattrs-22.2.0.tar.gz", hash = "sha256:f0eed5642399423cf656e7b66ce92cdc5b963ecafd041d1b24d136fdde7acf6d"}, ] certifi = [ - {file = "certifi-2022.9.24-py3-none-any.whl", hash = "sha256:90c1a32f1d68f940488354e36370f6cca89f0f106db09518524c88d6ed83f382"}, - {file = "certifi-2022.9.24.tar.gz", hash = "sha256:0d9c601124e5a6ba9712dbc60d9c53c21e34f5f641fe83002317394311bdce14"}, + {file = "certifi-2022.12.7-py3-none-any.whl", hash = "sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18"}, + {file = "certifi-2022.12.7.tar.gz", hash = "sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3"}, ] charset-normalizer = [ {file = "charset-normalizer-2.1.1.tar.gz", hash = "sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845"}, From 868e8cc53fe67d99e761372b132abfe327371e37 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Fri, 30 Dec 2022 21:45:44 -0500 Subject: [PATCH 031/403] update ddtrace 1.6.3 to 1.6.4 (#288) * update ddtrace 1.6.3 to 1.6.4 * ran poetry update ddtrace * poetry update (all dependencies) --- poetry.lock | 713 ++++++++++++++++++++++++------------------------- pyproject.toml | 2 +- 2 files changed, 353 insertions(+), 362 deletions(-) diff --git a/poetry.lock b/poetry.lock index fb897214e..c1946f576 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,27 +1,38 @@ +# This file is automatically @generated by Poetry and should not be changed by hand. + [[package]] name = "attrs" -version = "22.1.0" +version = "22.2.0" description = "Classes Without Boilerplate" category = "main" optional = false -python-versions = ">=3.5" +python-versions = ">=3.6" +files = [ + {file = "attrs-22.2.0-py3-none-any.whl", hash = "sha256:29e95c7f6778868dbd49170f98f8818f78f3dc5e0e37c0b1f474e3561b240836"}, + {file = "attrs-22.2.0.tar.gz", hash = "sha256:c9227bfc2f01993c03f68db37d1d15c9690188323c067c641f1a35ca58185f99"}, +] [package.extras] -dev = ["cloudpickle", "coverage[toml] (>=5.0.2)", "furo", "hypothesis", "mypy (>=0.900,!=0.940)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "sphinx", "sphinx-notfound-page", "zope.interface"] -docs = ["furo", "sphinx", "sphinx-notfound-page", "zope.interface"] -tests = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "zope.interface"] -tests-no-zope = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins"] +cov = ["attrs[tests]", "coverage-enable-subprocess", "coverage[toml] (>=5.3)"] +dev = ["attrs[docs,tests]"] +docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope.interface"] +tests = ["attrs[tests-no-zope]", "zope.interface"] +tests-no-zope = ["cloudpickle", "cloudpickle", "hypothesis", "hypothesis", "mypy (>=0.971,<0.990)", "mypy (>=0.971,<0.990)", "pympler", "pympler", "pytest (>=4.3.0)", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-mypy-plugins", "pytest-xdist[psutil]", "pytest-xdist[psutil]"] [[package]] name = "boto3" -version = "1.26.24" +version = "1.26.41" description = "The AWS SDK for Python" category = "main" optional = true python-versions = ">= 3.7" +files = [ + {file = "boto3-1.26.41-py3-none-any.whl", hash = "sha256:05a5ce3af2d7419e39d93498c7f56fd5c2cc17870c92c4abc75659553b0b16de"}, + {file = "boto3-1.26.41.tar.gz", hash = "sha256:8cbea352f28ec6b241f348356bcb8f331fc433bec3ad76ebf6194227f1a7f613"}, +] [package.dependencies] -botocore = ">=1.29.24,<1.30.0" +botocore = ">=1.29.41,<1.30.0" jmespath = ">=0.7.1,<2.0.0" s3transfer = ">=0.6.0,<0.7.0" @@ -30,11 +41,15 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.29.24" +version = "1.29.41" description = "Low-level, data-driven core of boto 3." category = "main" optional = true python-versions = ">= 3.7" +files = [ + {file = "botocore-1.29.41-py3-none-any.whl", hash = "sha256:b670b7f8958a2908167081efb6ea39794bf61d618be729984629a63d85cf8bfe"}, + {file = "botocore-1.29.41.tar.gz", hash = "sha256:78761227d986d393956b6d08fdadcfe142748828e0e9db33f2f4c42a482dcd35"}, +] [package.dependencies] jmespath = ">=0.7.1,<2.0.0" @@ -51,6 +66,10 @@ description = "Python module to generate and modify bytecode" category = "main" optional = false python-versions = ">=3.6" +files = [ + {file = "bytecode-0.13.0-py3-none-any.whl", hash = "sha256:e69f92e7d27f99d5d7d76e6a824bd3d9ff857c72b59927aaf87e1a620f67fe50"}, + {file = "bytecode-0.13.0.tar.gz", hash = "sha256:6af3c2f0a31ce05dce41f7eea5cc380e33f5e8fbb7dcee3b52467a00acd52fcd"}, +] [[package]] name = "bytecode" @@ -59,6 +78,10 @@ description = "Python module to generate and modify bytecode" category = "main" optional = false python-versions = ">=3.8" +files = [ + {file = "bytecode-0.14.0-py3-none-any.whl", hash = "sha256:f7b7cbed3239acee036d6c0f9d04286b100921114601bf844ae569b95bf91a9f"}, + {file = "bytecode-0.14.0.tar.gz", hash = "sha256:d41ad53c657ba0bef1cb4828d9d6e450766e31cb66c6f91fc1851f052889d1b7"}, +] [package.dependencies] typing-extensions = {version = "*", markers = "python_version < \"3.10\""} @@ -70,6 +93,10 @@ description = "Composable complex class support for attrs and dataclasses." category = "main" optional = false python-versions = ">=3.7" +files = [ + {file = "cattrs-22.2.0-py3-none-any.whl", hash = "sha256:bc12b1f0d000b9f9bee83335887d532a1d3e99a833d1bf0882151c97d3e68c21"}, + {file = "cattrs-22.2.0.tar.gz", hash = "sha256:f0eed5642399423cf656e7b66ce92cdc5b963ecafd041d1b24d136fdde7acf6d"}, +] [package.dependencies] attrs = ">=20" @@ -83,6 +110,10 @@ description = "Python package for providing Mozilla's CA Bundle." category = "main" optional = false python-versions = ">=3.6" +files = [ + {file = "certifi-2022.12.7-py3-none-any.whl", hash = "sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18"}, + {file = "certifi-2022.12.7.tar.gz", hash = "sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3"}, +] [[package]] name = "charset-normalizer" @@ -91,17 +122,74 @@ description = "The Real First Universal Charset Detector. Open, modern and activ category = "main" optional = false python-versions = ">=3.6.0" +files = [ + {file = "charset-normalizer-2.1.1.tar.gz", hash = "sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845"}, + {file = "charset_normalizer-2.1.1-py3-none-any.whl", hash = "sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f"}, +] [package.extras] unicode-backport = ["unicodedata2"] [[package]] name = "coverage" -version = "6.5.0" +version = "7.0.1" description = "Code coverage measurement for Python" category = "main" optional = true python-versions = ">=3.7" +files = [ + {file = "coverage-7.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b3695c4f4750bca943b3e1f74ad4be8d29e4aeab927d50772c41359107bd5d5c"}, + {file = "coverage-7.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fa6a5a224b7f4cfb226f4fc55a57e8537fcc096f42219128c2c74c0e7d0953e1"}, + {file = "coverage-7.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:74f70cd92669394eaf8d7756d1b195c8032cf7bbbdfce3bc489d4e15b3b8cf73"}, + {file = "coverage-7.0.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b66bb21a23680dee0be66557dc6b02a3152ddb55edf9f6723fa4a93368f7158d"}, + {file = "coverage-7.0.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d87717959d4d0ee9db08a0f1d80d21eb585aafe30f9b0a54ecf779a69cb015f6"}, + {file = "coverage-7.0.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:854f22fa361d1ff914c7efa347398374cc7d567bdafa48ac3aa22334650dfba2"}, + {file = "coverage-7.0.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:1e414dc32ee5c3f36544ea466b6f52f28a7af788653744b8570d0bf12ff34bc0"}, + {file = "coverage-7.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6c5ad996c6fa4d8ed669cfa1e8551348729d008a2caf81489ab9ea67cfbc7498"}, + {file = "coverage-7.0.1-cp310-cp310-win32.whl", hash = "sha256:691571f31ace1837838b7e421d3a09a8c00b4aac32efacb4fc9bd0a5c647d25a"}, + {file = "coverage-7.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:89caf4425fe88889e2973a8e9a3f6f5f9bbe5dd411d7d521e86428c08a873a4a"}, + {file = "coverage-7.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:63d56165a7c76265468d7e0c5548215a5ba515fc2cba5232d17df97bffa10f6c"}, + {file = "coverage-7.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4f943a3b2bc520102dd3e0bb465e1286e12c9a54f58accd71b9e65324d9c7c01"}, + {file = "coverage-7.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:830525361249dc4cd013652b0efad645a385707a5ae49350c894b67d23fbb07c"}, + {file = "coverage-7.0.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fd1b9c5adc066db699ccf7fa839189a649afcdd9e02cb5dc9d24e67e7922737d"}, + {file = "coverage-7.0.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e00c14720b8b3b6c23b487e70bd406abafc976ddc50490f645166f111c419c39"}, + {file = "coverage-7.0.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:6d55d840e1b8c0002fce66443e124e8581f30f9ead2e54fbf6709fb593181f2c"}, + {file = "coverage-7.0.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:66b18c3cf8bbab0cce0d7b9e4262dc830e93588986865a8c78ab2ae324b3ed56"}, + {file = "coverage-7.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:12a5aa77783d49e05439fbe6e6b427484f8a0f9f456b46a51d8aac022cfd024d"}, + {file = "coverage-7.0.1-cp311-cp311-win32.whl", hash = "sha256:b77015d1cb8fe941be1222a5a8b4e3fbca88180cfa7e2d4a4e58aeabadef0ab7"}, + {file = "coverage-7.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:fb992c47cb1e5bd6a01e97182400bcc2ba2077080a17fcd7be23aaa6e572e390"}, + {file = "coverage-7.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e78e9dcbf4f3853d3ae18a8f9272111242531535ec9e1009fa8ec4a2b74557dc"}, + {file = "coverage-7.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e60bef2e2416f15fdc05772bf87db06c6a6f9870d1db08fdd019fbec98ae24a9"}, + {file = "coverage-7.0.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9823e4789ab70f3ec88724bba1a203f2856331986cd893dedbe3e23a6cfc1e4e"}, + {file = "coverage-7.0.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9158f8fb06747ac17bd237930c4372336edc85b6e13bdc778e60f9d685c3ca37"}, + {file = "coverage-7.0.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:486ee81fa694b4b796fc5617e376326a088f7b9729c74d9defa211813f3861e4"}, + {file = "coverage-7.0.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:1285648428a6101b5f41a18991c84f1c3959cee359e51b8375c5882fc364a13f"}, + {file = "coverage-7.0.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:2c44fcfb3781b41409d0f060a4ed748537557de9362a8a9282182fafb7a76ab4"}, + {file = "coverage-7.0.1-cp37-cp37m-win32.whl", hash = "sha256:d6814854c02cbcd9c873c0f3286a02e3ac1250625cca822ca6bc1018c5b19f1c"}, + {file = "coverage-7.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:f66460f17c9319ea4f91c165d46840314f0a7c004720b20be58594d162a441d8"}, + {file = "coverage-7.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9b373c9345c584bb4b5f5b8840df7f4ab48c4cbb7934b58d52c57020d911b856"}, + {file = "coverage-7.0.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d3022c3007d3267a880b5adcf18c2a9bf1fc64469b394a804886b401959b8742"}, + {file = "coverage-7.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:92651580bd46519067e36493acb394ea0607b55b45bd81dd4e26379ed1871f55"}, + {file = "coverage-7.0.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3cfc595d2af13856505631be072835c59f1acf30028d1c860b435c5fc9c15b69"}, + {file = "coverage-7.0.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b4b3a4d9915b2be879aff6299c0a6129f3d08a775d5a061f503cf79571f73e4"}, + {file = "coverage-7.0.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b6f22bb64cc39bcb883e5910f99a27b200fdc14cdd79df8696fa96b0005c9444"}, + {file = "coverage-7.0.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:72d1507f152abacea81f65fee38e4ef3ac3c02ff8bc16f21d935fd3a8a4ad910"}, + {file = "coverage-7.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:0a79137fc99815fff6a852c233628e735ec15903cfd16da0f229d9c4d45926ab"}, + {file = "coverage-7.0.1-cp38-cp38-win32.whl", hash = "sha256:b3763e7fcade2ff6c8e62340af9277f54336920489ceb6a8cd6cc96da52fcc62"}, + {file = "coverage-7.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:09f6b5a8415b6b3e136d5fec62b552972187265cb705097bf030eb9d4ffb9b60"}, + {file = "coverage-7.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:978258fec36c154b5e250d356c59af7d4c3ba02bef4b99cda90b6029441d797d"}, + {file = "coverage-7.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:19ec666533f0f70a0993f88b8273057b96c07b9d26457b41863ccd021a043b9a"}, + {file = "coverage-7.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cfded268092a84605f1cc19e5c737f9ce630a8900a3589e9289622db161967e9"}, + {file = "coverage-7.0.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07bcfb1d8ac94af886b54e18a88b393f6a73d5959bb31e46644a02453c36e475"}, + {file = "coverage-7.0.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:397b4a923cc7566bbc7ae2dfd0ba5a039b61d19c740f1373791f2ebd11caea59"}, + {file = "coverage-7.0.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:aec2d1515d9d39ff270059fd3afbb3b44e6ec5758af73caf18991807138c7118"}, + {file = "coverage-7.0.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:c20cfebcc149a4c212f6491a5f9ff56f41829cd4f607b5be71bb2d530ef243b1"}, + {file = "coverage-7.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:fd556ff16a57a070ce4f31c635953cc44e25244f91a0378c6e9bdfd40fdb249f"}, + {file = "coverage-7.0.1-cp39-cp39-win32.whl", hash = "sha256:b9ea158775c7c2d3e54530a92da79496fb3fb577c876eec761c23e028f1e216c"}, + {file = "coverage-7.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:d1991f1dd95eba69d2cd7708ff6c2bbd2426160ffc73c2b81f617a053ebcb1a8"}, + {file = "coverage-7.0.1-pp37.pp38.pp39-none-any.whl", hash = "sha256:3dd4ee135e08037f458425b8842d24a95a0961831a33f89685ff86b77d378f89"}, + {file = "coverage-7.0.1.tar.gz", hash = "sha256:a4a574a19eeb67575a5328a5760bbbb737faa685616586a9f9da4281f940109c"}, +] [package.extras] toml = ["tomli"] @@ -113,6 +201,10 @@ description = "The Datadog Python library" category = "main" optional = false python-versions = "*" +files = [ + {file = "datadog-0.41.0-py2.py3-none-any.whl", hash = "sha256:ab79ed38fb09ff1942c341e32849c4eeaf8b2e4d467b9e6bb1c6071808f454d6"}, + {file = "datadog-0.41.0.tar.gz", hash = "sha256:3de1a43b8a8d5f6b19d162ec1b482dc5ab2636c59cf65e60589702304510a689"}, +] [package.dependencies] decorator = ">=3.3.2" @@ -125,6 +217,10 @@ description = "Distributed quantile sketches" category = "main" optional = false python-versions = ">=2.7" +files = [ + {file = "ddsketch-2.0.4-py3-none-any.whl", hash = "sha256:3227a270fd686a29d3a7128f9352ccf852314410380fc11384356f1ae2a75938"}, + {file = "ddsketch-2.0.4.tar.gz", hash = "sha256:32f7314077fec8747d4faebaec2c854b5ffc399c5f552f73fa94024f48d74d64"}, +] [package.dependencies] protobuf = {version = ">=3.0.0", markers = "python_version >= \"3.7\""} @@ -132,11 +228,82 @@ six = "*" [[package]] name = "ddtrace" -version = "1.6.3" +version = "1.6.4" description = "Datadog APM client library" category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +files = [ + {file = "ddtrace-1.6.4-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:3c4c9a18cf3270fc10801e286410c30a1a603cb848ee1f08bbd118e0b97ddfcc"}, + {file = "ddtrace-1.6.4-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:204c560719c31d3f9ff8456a4c6ca4d0d6b527c13951815cbcf1012ea48ff759"}, + {file = "ddtrace-1.6.4-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:c97a1cf8a8e50a12c6bd09f0f15e172c447ac5a5350a7bd256f6685897c9efbf"}, + {file = "ddtrace-1.6.4-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:93ad24ff023d9c364288f422e0d46eb7b866c91e6c0453a36e5a3fdbfb01a627"}, + {file = "ddtrace-1.6.4-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:6e65f860656488d6b6e005301c7138ba573b5cbf03270ec811c6d34f8aebf0b5"}, + {file = "ddtrace-1.6.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:b77e7d7e2e4de5851d8ff332e63957a46a367e6e3c5c94d4ad37dcaf047f11e1"}, + {file = "ddtrace-1.6.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:96d141807d5e446c67a4dcb16178cfa25523cedd075d73dad254f13a62a1231f"}, + {file = "ddtrace-1.6.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d65e211995e379b06a809dcaa229c09a08a02b161d574ca4716d055a65d9db05"}, + {file = "ddtrace-1.6.4-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0ed65ebd21f80acccba804fe671646e2476ce5e96162b9b2bfb0b8fd417fa6fa"}, + {file = "ddtrace-1.6.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:07ffa019d48175e23f1ccd449c45b0250656cbe210a0603900a981c29ae7786e"}, + {file = "ddtrace-1.6.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:5d9ab8cba1a808da3f6da7aa0303a227245d8b25617e0673a299c3e4cae16506"}, + {file = "ddtrace-1.6.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:72ddb4bfa46660d082be50ae09faec026c46a295524a3a722570c770bf632f98"}, + {file = "ddtrace-1.6.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:03e52db04d3ada8d234d050e66988b8ec559e4db57a03fd56112e50885bc2767"}, + {file = "ddtrace-1.6.4-cp310-cp310-win32.whl", hash = "sha256:aba27dd41468e06fbe0534ce45b182e7cf7fa582eb70a03fd341da63fea07032"}, + {file = "ddtrace-1.6.4-cp310-cp310-win_amd64.whl", hash = "sha256:cf0754548216361ce9de00b750b5a5ff8eb57e9fd1fd85f223b5f23cc36ba68a"}, + {file = "ddtrace-1.6.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4464d1e886450d8c2c149ced95c4ecbe4481bc80225ebc5301385d0bf450e162"}, + {file = "ddtrace-1.6.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d32a006a1919282394e9095abb92d99efbadca7fec304bf07952e2d6f90383c5"}, + {file = "ddtrace-1.6.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a121b3417c444e9bb827c6d0a0b183f1c5517a9c8769c7ca43787ec48ad08bb1"}, + {file = "ddtrace-1.6.4-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7372e54b27d4359fa6d86d664880852a96a1786304ab2580e81796889ada449b"}, + {file = "ddtrace-1.6.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb88df54546891cb738af2d00208d10ab4c391c03b489bbd6a8745f1c8a10d5c"}, + {file = "ddtrace-1.6.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:52ffa9c4324d26f58c4ddf4ca22abcc160386f53bfbdfd56bb772580a72cf958"}, + {file = "ddtrace-1.6.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:bc33cb8501db1d049160a312d9a4e68e2fb35d61fec4a3fa9665c940489246e3"}, + {file = "ddtrace-1.6.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f64498947e696efd1ff192d56f63987cd9b09beabb481e443aa802cca51eb841"}, + {file = "ddtrace-1.6.4-cp311-cp311-win32.whl", hash = "sha256:7766d7253ccab625c07203da36e10c1926d565e465897fdb34f03f532b0610b9"}, + {file = "ddtrace-1.6.4-cp311-cp311-win_amd64.whl", hash = "sha256:981cfe27a13e4347a8fdea9d7a8936b592359ad879df1de98077b1b70e5eeace"}, + {file = "ddtrace-1.6.4-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:cd25cf8e1457c94bb7fe5fc2bab700a9e22378f137cbb73a2fe847dbd2305020"}, + {file = "ddtrace-1.6.4-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:b9bfe5e83a1ea8c8673068a5218f4a80054d87eb9c3e2b581bacbdbac67a28ec"}, + {file = "ddtrace-1.6.4-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:57613420ae32d56a76d67f571210cc134368cbef17607e71b8eb66a5b1ea2d72"}, + {file = "ddtrace-1.6.4-cp35-cp35m-win32.whl", hash = "sha256:d574f29ab02b4f43bd93214891423f27145ff54c34242db6a47fc5a591e0e5d0"}, + {file = "ddtrace-1.6.4-cp35-cp35m-win_amd64.whl", hash = "sha256:89618a300428d53b25428d728bf2ba026a5e996bbd65d82917e8a47a4a0c7815"}, + {file = "ddtrace-1.6.4-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:ee954e1ebc8dc47328b7e145736e7b6d7167cec1d43ba661056210d08594ade8"}, + {file = "ddtrace-1.6.4-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cbda998fd438701a20461cd819a1d1a1d168ea7b3bcaa0ced6f41bac30ba359"}, + {file = "ddtrace-1.6.4-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fcbffb017cdeb468d083b4c07c91fa024a0652416acc35fcfabfbff366f522d2"}, + {file = "ddtrace-1.6.4-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f36f85ff84a7535fbdcbeed40d430f6d047a2cdd0c4de6dc7bc375e82708f646"}, + {file = "ddtrace-1.6.4-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0a016a8d2f666e0e677d00d1f4057035ac5dc753f9b0e4fb378dd4f7882f2ade"}, + {file = "ddtrace-1.6.4-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:0a1be96afa6df810a32cc403a0d133ad87d6c5a9eeec861b178aaa3048d47da6"}, + {file = "ddtrace-1.6.4-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:10accb64d6ad8cc5dfddbb3150c0dd1c96ed5f62161d521d264b0afbaf3f075c"}, + {file = "ddtrace-1.6.4-cp36-cp36m-win32.whl", hash = "sha256:c1c35e16c71dd22c6f21e0d4a135071237fe988082048bc361a3213031e77170"}, + {file = "ddtrace-1.6.4-cp36-cp36m-win_amd64.whl", hash = "sha256:51156177b60331c2d9b024487d25418b1d1308b4d1eaa196cf4673a649bcc057"}, + {file = "ddtrace-1.6.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:04284a33f831ec5efb396f2b7e664d326982008ef8761d4054c3d663e13166bb"}, + {file = "ddtrace-1.6.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1dd4c3743fb93228c7470f447eff1d986417298b7242e80753ec406f67288a75"}, + {file = "ddtrace-1.6.4-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88c90fbfb22b707e6ab07d5c109634c17986d8090363f1e69cc0fb43ccb77098"}, + {file = "ddtrace-1.6.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14430eda72c2d28b92b782201ea4edc6efdc8c74845a407039c1f6a4f244fb24"}, + {file = "ddtrace-1.6.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:a056086975d607acaa0377231615fa1a94c632fd4ece979f0d5554a423663e61"}, + {file = "ddtrace-1.6.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:dae04139b42b42e5eda3f544c7fe9875a5b190aeca9ce09eb01853d35a7f0054"}, + {file = "ddtrace-1.6.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:86a91dc39cc2f2a1c301e8549fb7bd84da78122d4c6ff4b60a97d89601d1c66c"}, + {file = "ddtrace-1.6.4-cp37-cp37m-win32.whl", hash = "sha256:e1efd72c2377f605dc053c763e9449b7188659190d48efb75669158db5a92844"}, + {file = "ddtrace-1.6.4-cp37-cp37m-win_amd64.whl", hash = "sha256:108c045b332a034f3e8e0df8d87b6b7a26e9e94007a8a84000f445450c11c44b"}, + {file = "ddtrace-1.6.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:121c2d6212142fb6815d2dcc56a82fb06e9e3568ee217015e6d72ec3caad7268"}, + {file = "ddtrace-1.6.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3da580615a97e61ffbf564782679b98b81ba026248926619b030d648ff389a40"}, + {file = "ddtrace-1.6.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:73be527f3a2912e74045ee60e9d37fc8f1a8410b90ae3ac8fb94f01e6ee3f6d3"}, + {file = "ddtrace-1.6.4-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae70de026c79a895b2a5beecbbc0e46bb0c07d27af77a1662352a5608068b005"}, + {file = "ddtrace-1.6.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45a4f2c200c22ab4b6dbeb16b6f6b9aafa2a674b3c3e175f86cb2c2e16f69fff"}, + {file = "ddtrace-1.6.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:4a183627202355377d9e369f8d4d18ceee82dd2312d0d098fb1242f387ebcb2b"}, + {file = "ddtrace-1.6.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:97f1ed98e1a14091515aa482d528846ee4437260d68e819bb6ba09af4774fb3c"}, + {file = "ddtrace-1.6.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f08d858a045a9117295e3008ba7c9586865ed16690c682441347508744c338e2"}, + {file = "ddtrace-1.6.4-cp38-cp38-win32.whl", hash = "sha256:71fae938615e77cb5cd04978a36874fa97c1d929c1b697c690affedd538914ed"}, + {file = "ddtrace-1.6.4-cp38-cp38-win_amd64.whl", hash = "sha256:53a0db94ae562222338490e5f409d3e2740d03f7d1099fdd02e769690ca70de2"}, + {file = "ddtrace-1.6.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:d727012ee9b4725cdbb0666e40e4e99cae3418c88b98159e073ec1479d30db73"}, + {file = "ddtrace-1.6.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:102c49d38d67efe6da378509ed7f9f88bc9c6c9a95bcc493c06e02a15e4865c2"}, + {file = "ddtrace-1.6.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5e6cc5ad17a456c6e93d25c6bd06580436fb5c007cef27c89b060a277e35b7a"}, + {file = "ddtrace-1.6.4-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ad9abf5879abad5b143ef9fcd9b557193b19000d8ff798b06ec86f1fe992cb89"}, + {file = "ddtrace-1.6.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:289edf7ea4f506f329b20394b08971487bf72351b0a9b9a63a5c7f4d18e1cda8"}, + {file = "ddtrace-1.6.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:3a3432c72a082e8f4090a55833cda1b6840676b5f58dbaca041d566f581a3062"}, + {file = "ddtrace-1.6.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7504b21d88ce528e86eb8727270e677a7b4a254ee070e54d0e81111bd68a6d0b"}, + {file = "ddtrace-1.6.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5e744e81727d1328e6830de6a749378e7cd31fc0e1c0aceb19b17685e90cb8fa"}, + {file = "ddtrace-1.6.4-cp39-cp39-win32.whl", hash = "sha256:2aed59c1a0ed33f0b752daa801980d9ab395f89ea8fbc2c788fea0b11a3ea826"}, + {file = "ddtrace-1.6.4-cp39-cp39-win_amd64.whl", hash = "sha256:4fb94ee5113141becb7e447bdf57e30bb447f9347785bf20211d0cf06e1e98e7"}, + {file = "ddtrace-1.6.4.tar.gz", hash = "sha256:33effab386caaaab314e08900b798c02ab5771f88697acb9bf64e5ba98c8009a"}, +] [package.dependencies] attrs = {version = ">=20", markers = "python_version > \"2.7\""} @@ -166,6 +333,10 @@ description = "Decorators for Humans" category = "main" optional = false python-versions = ">=3.5" +files = [ + {file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"}, + {file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"}, +] [[package]] name = "envier" @@ -174,17 +345,25 @@ description = "Python application configuration via the environment" category = "main" optional = false python-versions = ">=2.7" +files = [ + {file = "envier-0.4.0-py3-none-any.whl", hash = "sha256:7b91af0f16ea3e56d91ec082f038987e81b441fc19c657a8b8afe0909740a706"}, + {file = "envier-0.4.0.tar.gz", hash = "sha256:e68dcd1ed67d8b6313883e27dff3e701b7fba944d2ed4b7f53d0cc2e12364a82"}, +] [package.extras] mypy = ["mypy"] [[package]] name = "exceptiongroup" -version = "1.0.4" +version = "1.1.0" description = "Backport of PEP 654 (exception groups)" category = "main" optional = false python-versions = ">=3.7" +files = [ + {file = "exceptiongroup-1.1.0-py3-none-any.whl", hash = "sha256:327cbda3da756e2de031a3107b81ab7b3770a602c4d16ca618298c526f4bec1e"}, + {file = "exceptiongroup-1.1.0.tar.gz", hash = "sha256:bcb67d800a4497e1b404c2dd44fca47d3b7a5e5433dbab67f96c1a685cdfdf23"}, +] [package.extras] test = ["pytest (>=6)"] @@ -196,6 +375,10 @@ description = "the modular source code checker: pep8 pyflakes and co" category = "main" optional = true python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" +files = [ + {file = "flake8-3.9.2-py2.py3-none-any.whl", hash = "sha256:bf8fd333346d844f616e8d47905ef3a3384edae6b4e9beb0c5101e25e3110907"}, + {file = "flake8-3.9.2.tar.gz", hash = "sha256:07528381786f2a6237b061f6e96610a4167b226cb926e2aa2b6b1d78057c576b"}, +] [package.dependencies] importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} @@ -210,6 +393,9 @@ description = "HTTP client mock for Python" category = "main" optional = true python-versions = "*" +files = [ + {file = "httpretty-0.9.7.tar.gz", hash = "sha256:66216f26b9d2c52e81808f3e674a6fb65d4bf719721394a1a9be926177e55fbe"}, +] [package.dependencies] six = "*" @@ -221,6 +407,10 @@ description = "Internationalized Domain Names in Applications (IDNA)" category = "main" optional = false python-versions = ">=3.5" +files = [ + {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"}, + {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, +] [[package]] name = "importlib-metadata" @@ -229,6 +419,10 @@ description = "Read metadata from Python packages" category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" +files = [ + {file = "importlib_metadata-1.7.0-py2.py3-none-any.whl", hash = "sha256:dc15b2969b4ce36305c51eebe62d418ac7791e9a157911d58bfb1f9ccd8e2070"}, + {file = "importlib_metadata-1.7.0.tar.gz", hash = "sha256:90bb658cdbbf6d1735b6341ce708fc7024a3e14e99ffdc5783edea9f9b077f83"}, +] [package.dependencies] zipp = ">=0.5" @@ -239,17 +433,21 @@ testing = ["importlib-resources (>=1.3)", "packaging", "pep517"] [[package]] name = "importlib-resources" -version = "5.10.1" +version = "5.10.2" description = "Read resources from Python packages" category = "main" optional = false python-versions = ">=3.7" +files = [ + {file = "importlib_resources-5.10.2-py3-none-any.whl", hash = "sha256:7d543798b0beca10b6a01ac7cafda9f822c54db9e8376a6bf57e0cbd74d486b6"}, + {file = "importlib_resources-5.10.2.tar.gz", hash = "sha256:e4a96c8cc0339647ff9a5e0550d9f276fc5a01ffa276012b58ec108cfd7b8484"}, +] [package.dependencies] zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} [package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)"] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] testing = ["flake8 (<5)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] [[package]] @@ -259,6 +457,10 @@ description = "JSON Matching Expressions" category = "main" optional = true python-versions = ">=3.7" +files = [ + {file = "jmespath-1.0.1-py3-none-any.whl", hash = "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980"}, + {file = "jmespath-1.0.1.tar.gz", hash = "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe"}, +] [[package]] name = "jsonschema" @@ -267,6 +469,10 @@ description = "An implementation of JSON Schema validation for Python" category = "main" optional = false python-versions = ">=3.7" +files = [ + {file = "jsonschema-4.17.3-py3-none-any.whl", hash = "sha256:a870ad254da1a8ca84b6a2905cac29d265f805acc57af304784962a2aa6508f6"}, + {file = "jsonschema-4.17.3.tar.gz", hash = "sha256:0f864437ab8b6076ba6707453ef8f98a6a0d512a80e93f8abdb676f737ecb60d"}, +] [package.dependencies] attrs = ">=17.4.0" @@ -287,6 +493,10 @@ description = "McCabe checker, plugin for flake8" category = "main" optional = true python-versions = "*" +files = [ + {file = "mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42"}, + {file = "mccabe-0.6.1.tar.gz", hash = "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"}, +] [[package]] name = "nose2" @@ -295,6 +505,10 @@ description = "unittest2 with plugins, the succesor to nose" category = "main" optional = true python-versions = "*" +files = [ + {file = "nose2-0.9.2-py2.py3-none-any.whl", hash = "sha256:fd4b84c65ecea869080a23bdb8916716f5363df3b899933991c861ada8aa3f48"}, + {file = "nose2-0.9.2.tar.gz", hash = "sha256:8762f77925bbafcdf38331e0e2ee718756fb75ff74b1f9097cd08731ad59ab5e"}, +] [package.dependencies] coverage = ">=4.4.1" @@ -306,14 +520,15 @@ doc = ["Sphinx (>=1.6.5)", "mock", "sphinx-rtd-theme"] [[package]] name = "packaging" -version = "21.3" +version = "22.0" description = "Core utilities for Python packages" category = "main" optional = false -python-versions = ">=3.6" - -[package.dependencies] -pyparsing = ">=2.0.2,<3.0.5 || >3.0.5" +python-versions = ">=3.7" +files = [ + {file = "packaging-22.0-py3-none-any.whl", hash = "sha256:957e2148ba0e1a3b282772e791ef1d8083648bc131c8ab0c1feba110ce1146c3"}, + {file = "packaging-22.0.tar.gz", hash = "sha256:2198ec20bd4c017b8f9717e00f0c8714076fc2fd93816750ab48e2c41de2cfd3"}, +] [[package]] name = "pkgutil-resolve-name" @@ -322,14 +537,34 @@ description = "Resolve a name to an object." category = "main" optional = false python-versions = ">=3.6" +files = [ + {file = "pkgutil_resolve_name-1.3.10-py3-none-any.whl", hash = "sha256:ca27cc078d25c5ad71a9de0a7a330146c4e014c2462d9af19c6b828280649c5e"}, + {file = "pkgutil_resolve_name-1.3.10.tar.gz", hash = "sha256:357d6c9e6a755653cfd78893817c0853af365dd51ec97f3d358a819373bbd174"}, +] [[package]] name = "protobuf" -version = "4.21.10" +version = "4.21.12" description = "" category = "main" optional = false python-versions = ">=3.7" +files = [ + {file = "protobuf-4.21.12-cp310-abi3-win32.whl", hash = "sha256:b135410244ebe777db80298297a97fbb4c862c881b4403b71bac9d4107d61fd1"}, + {file = "protobuf-4.21.12-cp310-abi3-win_amd64.whl", hash = "sha256:89f9149e4a0169cddfc44c74f230d7743002e3aa0b9472d8c28f0388102fc4c2"}, + {file = "protobuf-4.21.12-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:299ea899484ee6f44604deb71f424234f654606b983cb496ea2a53e3c63ab791"}, + {file = "protobuf-4.21.12-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:d1736130bce8cf131ac7957fa26880ca19227d4ad68b4888b3be0dea1f95df97"}, + {file = "protobuf-4.21.12-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:78a28c9fa223998472886c77042e9b9afb6fe4242bd2a2a5aced88e3f4422aa7"}, + {file = "protobuf-4.21.12-cp37-cp37m-win32.whl", hash = "sha256:3d164928ff0727d97022957c2b849250ca0e64777ee31efd7d6de2e07c494717"}, + {file = "protobuf-4.21.12-cp37-cp37m-win_amd64.whl", hash = "sha256:f45460f9ee70a0ec1b6694c6e4e348ad2019275680bd68a1d9314b8c7e01e574"}, + {file = "protobuf-4.21.12-cp38-cp38-win32.whl", hash = "sha256:6ab80df09e3208f742c98443b6166bcb70d65f52cfeb67357d52032ea1ae9bec"}, + {file = "protobuf-4.21.12-cp38-cp38-win_amd64.whl", hash = "sha256:1f22ac0ca65bb70a876060d96d914dae09ac98d114294f77584b0d2644fa9c30"}, + {file = "protobuf-4.21.12-cp39-cp39-win32.whl", hash = "sha256:27f4d15021da6d2b706ddc3860fac0a5ddaba34ab679dc182b60a8bb4e1121cc"}, + {file = "protobuf-4.21.12-cp39-cp39-win_amd64.whl", hash = "sha256:237216c3326d46808a9f7c26fd1bd4b20015fb6867dc5d263a493ef9a539293b"}, + {file = "protobuf-4.21.12-py2.py3-none-any.whl", hash = "sha256:a53fd3f03e578553623272dc46ac2f189de23862e68565e83dde203d41b76fc5"}, + {file = "protobuf-4.21.12-py3-none-any.whl", hash = "sha256:b98d0148f84e3a3c569e19f52103ca1feacdac0d2df8d6533cf983d1fda28462"}, + {file = "protobuf-4.21.12.tar.gz", hash = "sha256:7cd532c4566d0e6feafecc1059d04c7915aec8e182d1cf7adee8b24ef1e2e6ab"}, +] [[package]] name = "pycodestyle" @@ -338,6 +573,10 @@ description = "Python style guide checker" category = "main" optional = true python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "pycodestyle-2.7.0-py2.py3-none-any.whl", hash = "sha256:514f76d918fcc0b55c6680472f0a37970994e07bbb80725808c17089be302068"}, + {file = "pycodestyle-2.7.0.tar.gz", hash = "sha256:c389c1d06bf7904078ca03399a4816f974a1d590090fecea0c63ec26ebaf1cef"}, +] [[package]] name = "pyflakes" @@ -346,25 +585,47 @@ description = "passive checker of Python programs" category = "main" optional = true python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" - -[[package]] -name = "pyparsing" -version = "3.0.9" -description = "pyparsing module - Classes and methods to define and execute parsing grammars" -category = "main" -optional = false -python-versions = ">=3.6.8" - -[package.extras] -diagrams = ["jinja2", "railroad-diagrams"] +files = [ + {file = "pyflakes-2.3.1-py2.py3-none-any.whl", hash = "sha256:7893783d01b8a89811dd72d7dfd4d84ff098e5eed95cfa8905b22bbffe52efc3"}, + {file = "pyflakes-2.3.1.tar.gz", hash = "sha256:f5bc8ecabc05bb9d291eb5203d6810b49040f6ff446a756326104746cc00c1db"}, +] [[package]] name = "pyrsistent" -version = "0.19.2" +version = "0.19.3" description = "Persistent/Functional/Immutable data structures" category = "main" optional = false python-versions = ">=3.7" +files = [ + {file = "pyrsistent-0.19.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:20460ac0ea439a3e79caa1dbd560344b64ed75e85d8703943e0b66c2a6150e4a"}, + {file = "pyrsistent-0.19.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4c18264cb84b5e68e7085a43723f9e4c1fd1d935ab240ce02c0324a8e01ccb64"}, + {file = "pyrsistent-0.19.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4b774f9288dda8d425adb6544e5903f1fb6c273ab3128a355c6b972b7df39dcf"}, + {file = "pyrsistent-0.19.3-cp310-cp310-win32.whl", hash = "sha256:5a474fb80f5e0d6c9394d8db0fc19e90fa540b82ee52dba7d246a7791712f74a"}, + {file = "pyrsistent-0.19.3-cp310-cp310-win_amd64.whl", hash = "sha256:49c32f216c17148695ca0e02a5c521e28a4ee6c5089f97e34fe24163113722da"}, + {file = "pyrsistent-0.19.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f0774bf48631f3a20471dd7c5989657b639fd2d285b861237ea9e82c36a415a9"}, + {file = "pyrsistent-0.19.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ab2204234c0ecd8b9368dbd6a53e83c3d4f3cab10ecaf6d0e772f456c442393"}, + {file = "pyrsistent-0.19.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e42296a09e83028b3476f7073fcb69ffebac0e66dbbfd1bd847d61f74db30f19"}, + {file = "pyrsistent-0.19.3-cp311-cp311-win32.whl", hash = "sha256:64220c429e42a7150f4bfd280f6f4bb2850f95956bde93c6fda1b70507af6ef3"}, + {file = "pyrsistent-0.19.3-cp311-cp311-win_amd64.whl", hash = "sha256:016ad1afadf318eb7911baa24b049909f7f3bb2c5b1ed7b6a8f21db21ea3faa8"}, + {file = "pyrsistent-0.19.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c4db1bd596fefd66b296a3d5d943c94f4fac5bcd13e99bffe2ba6a759d959a28"}, + {file = "pyrsistent-0.19.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aeda827381f5e5d65cced3024126529ddc4289d944f75e090572c77ceb19adbf"}, + {file = "pyrsistent-0.19.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:42ac0b2f44607eb92ae88609eda931a4f0dfa03038c44c772e07f43e738bcac9"}, + {file = "pyrsistent-0.19.3-cp37-cp37m-win32.whl", hash = "sha256:e8f2b814a3dc6225964fa03d8582c6e0b6650d68a232df41e3cc1b66a5d2f8d1"}, + {file = "pyrsistent-0.19.3-cp37-cp37m-win_amd64.whl", hash = "sha256:c9bb60a40a0ab9aba40a59f68214eed5a29c6274c83b2cc206a359c4a89fa41b"}, + {file = "pyrsistent-0.19.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a2471f3f8693101975b1ff85ffd19bb7ca7dd7c38f8a81701f67d6b4f97b87d8"}, + {file = "pyrsistent-0.19.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cc5d149f31706762c1f8bda2e8c4f8fead6e80312e3692619a75301d3dbb819a"}, + {file = "pyrsistent-0.19.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3311cb4237a341aa52ab8448c27e3a9931e2ee09561ad150ba94e4cfd3fc888c"}, + {file = "pyrsistent-0.19.3-cp38-cp38-win32.whl", hash = "sha256:f0e7c4b2f77593871e918be000b96c8107da48444d57005b6a6bc61fb4331b2c"}, + {file = "pyrsistent-0.19.3-cp38-cp38-win_amd64.whl", hash = "sha256:c147257a92374fde8498491f53ffa8f4822cd70c0d85037e09028e478cababb7"}, + {file = "pyrsistent-0.19.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:b735e538f74ec31378f5a1e3886a26d2ca6351106b4dfde376a26fc32a044edc"}, + {file = "pyrsistent-0.19.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99abb85579e2165bd8522f0c0138864da97847875ecbd45f3e7e2af569bfc6f2"}, + {file = "pyrsistent-0.19.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3a8cb235fa6d3fd7aae6a4f1429bbb1fec1577d978098da1252f0489937786f3"}, + {file = "pyrsistent-0.19.3-cp39-cp39-win32.whl", hash = "sha256:c74bed51f9b41c48366a286395c67f4e894374306b197e62810e0fdaf2364da2"}, + {file = "pyrsistent-0.19.3-cp39-cp39-win_amd64.whl", hash = "sha256:878433581fc23e906d947a6814336eee031a00e6defba224234169ae3d3d6a98"}, + {file = "pyrsistent-0.19.3-py3-none-any.whl", hash = "sha256:ccf0d6bd208f8111179f0c26fdf84ed7c3891982f2edaeae7422575f47e66b64"}, + {file = "pyrsistent-0.19.3.tar.gz", hash = "sha256:1a2994773706bbb4995c31a97bc94f1418314923bd1048c6d964837040376440"}, +] [[package]] name = "python-dateutil" @@ -373,6 +634,10 @@ description = "Extensions to the standard Python datetime module" category = "main" optional = true python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +files = [ + {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, + {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, +] [package.dependencies] six = ">=1.5" @@ -384,6 +649,10 @@ description = "Python HTTP for Humans." category = "main" optional = false python-versions = ">=3.7, <4" +files = [ + {file = "requests-2.28.1-py3-none-any.whl", hash = "sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349"}, + {file = "requests-2.28.1.tar.gz", hash = "sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983"}, +] [package.dependencies] certifi = ">=2017.4.17" @@ -402,6 +671,10 @@ description = "An Amazon S3 Transfer Manager" category = "main" optional = true python-versions = ">= 3.7" +files = [ + {file = "s3transfer-0.6.0-py3-none-any.whl", hash = "sha256:06176b74f3a15f61f1b4f25a1fc29a4429040b7647133a463da8fa5bd28d5ecd"}, + {file = "s3transfer-0.6.0.tar.gz", hash = "sha256:2ed07d3866f523cc561bf4a00fc5535827981b117dd7876f036b0c1aca42c947"}, +] [package.dependencies] botocore = ">=1.12.36,<2.0a.0" @@ -416,6 +689,10 @@ description = "Python 2 and 3 compatibility utilities" category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +files = [ + {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, + {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, +] [[package]] name = "tenacity" @@ -424,6 +701,10 @@ description = "Retry code until it succeeds" category = "main" optional = false python-versions = ">=3.6" +files = [ + {file = "tenacity-8.1.0-py3-none-any.whl", hash = "sha256:35525cd47f82830069f0d6b73f7eb83bc5b73ee2fff0437952cedf98b27653ac"}, + {file = "tenacity-8.1.0.tar.gz", hash = "sha256:e48c437fdf9340f5666b92cd7990e96bc5fc955e1298baf4a907e3972067a445"}, +] [package.extras] doc = ["reno", "sphinx", "tornado (>=4.5)"] @@ -435,6 +716,10 @@ description = "Backported and Experimental Type Hints for Python 3.7+" category = "main" optional = false python-versions = ">=3.7" +files = [ + {file = "typing_extensions-4.4.0-py3-none-any.whl", hash = "sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e"}, + {file = "typing_extensions-4.4.0.tar.gz", hash = "sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa"}, +] [[package]] name = "urllib3" @@ -443,6 +728,10 @@ description = "HTTP library with thread-safe connection pooling, file post, and category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" +files = [ + {file = "urllib3-1.26.13-py2.py3-none-any.whl", hash = "sha256:47cc05d99aaa09c9e72ed5809b60e7ba354e64b59c9c173ac3018642d8bb41fc"}, + {file = "urllib3-1.26.13.tar.gz", hash = "sha256:c083dd0dce68dbfbe1129d5271cb90f9447dea7d52097c6e0126120c521ddea8"}, +] [package.extras] brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"] @@ -456,333 +745,7 @@ description = "Module for decorators, wrappers and monkey patching." category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" - -[[package]] -name = "xmltodict" -version = "0.13.0" -description = "Makes working with XML feel like you are working with JSON" -category = "main" -optional = false -python-versions = ">=3.4" - -[[package]] -name = "zipp" -version = "3.11.0" -description = "Backport of pathlib-compatible object wrapper for zip files" -category = "main" -optional = false -python-versions = ">=3.7" - -[package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)"] -testing = ["flake8 (<5)", "func-timeout", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] - -[extras] -dev = ["boto3", "requests", "nose2", "flake8", "httpretty"] - -[metadata] -lock-version = "1.1" -python-versions = ">=3.7.0,<4" -content-hash = "f25845b55c5bb53ea4e56a3f5c7e78ab1f88784b26ead4454edb75809f3fecfd" - -[metadata.files] -attrs = [ - {file = "attrs-22.1.0-py2.py3-none-any.whl", hash = "sha256:86efa402f67bf2df34f51a335487cf46b1ec130d02b8d39fd248abfd30da551c"}, - {file = "attrs-22.1.0.tar.gz", hash = "sha256:29adc2665447e5191d0e7c568fde78b21f9672d344281d0c6e1ab085429b22b6"}, -] -boto3 = [ - {file = "boto3-1.26.24-py3-none-any.whl", hash = "sha256:f6117707d140363c58ffe41495400cc88c35c165e0f711c6b62edadbd6f600b5"}, - {file = "boto3-1.26.24.tar.gz", hash = "sha256:6531198b9d4cd86a1945eaffb2c5d8d75c5447b72870ad2b07c411ea75d6e59c"}, -] -botocore = [ - {file = "botocore-1.29.24-py3-none-any.whl", hash = "sha256:fb37c63d5e2b7c778f52d096c6c54207d49143cd942b4dc19297086a1385a7cd"}, - {file = "botocore-1.29.24.tar.gz", hash = "sha256:4f9c92979b29132185f645f61bdf0fecf031ecc26a8dd1a99dbd88d323211325"}, -] -bytecode = [ - {file = "bytecode-0.13.0-py3-none-any.whl", hash = "sha256:e69f92e7d27f99d5d7d76e6a824bd3d9ff857c72b59927aaf87e1a620f67fe50"}, - {file = "bytecode-0.13.0.tar.gz", hash = "sha256:6af3c2f0a31ce05dce41f7eea5cc380e33f5e8fbb7dcee3b52467a00acd52fcd"}, - {file = "bytecode-0.14.0-py3-none-any.whl", hash = "sha256:f7b7cbed3239acee036d6c0f9d04286b100921114601bf844ae569b95bf91a9f"}, - {file = "bytecode-0.14.0.tar.gz", hash = "sha256:d41ad53c657ba0bef1cb4828d9d6e450766e31cb66c6f91fc1851f052889d1b7"}, -] -cattrs = [ - {file = "cattrs-22.2.0-py3-none-any.whl", hash = "sha256:bc12b1f0d000b9f9bee83335887d532a1d3e99a833d1bf0882151c97d3e68c21"}, - {file = "cattrs-22.2.0.tar.gz", hash = "sha256:f0eed5642399423cf656e7b66ce92cdc5b963ecafd041d1b24d136fdde7acf6d"}, -] -certifi = [ - {file = "certifi-2022.12.7-py3-none-any.whl", hash = "sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18"}, - {file = "certifi-2022.12.7.tar.gz", hash = "sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3"}, -] -charset-normalizer = [ - {file = "charset-normalizer-2.1.1.tar.gz", hash = "sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845"}, - {file = "charset_normalizer-2.1.1-py3-none-any.whl", hash = "sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f"}, -] -coverage = [ - {file = "coverage-6.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ef8674b0ee8cc11e2d574e3e2998aea5df5ab242e012286824ea3c6970580e53"}, - {file = "coverage-6.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:784f53ebc9f3fd0e2a3f6a78b2be1bd1f5575d7863e10c6e12504f240fd06660"}, - {file = "coverage-6.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4a5be1748d538a710f87542f22c2cad22f80545a847ad91ce45e77417293eb4"}, - {file = "coverage-6.5.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:83516205e254a0cb77d2d7bb3632ee019d93d9f4005de31dca0a8c3667d5bc04"}, - {file = "coverage-6.5.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af4fffaffc4067232253715065e30c5a7ec6faac36f8fc8d6f64263b15f74db0"}, - {file = "coverage-6.5.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:97117225cdd992a9c2a5515db1f66b59db634f59d0679ca1fa3fe8da32749cae"}, - {file = "coverage-6.5.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a1170fa54185845505fbfa672f1c1ab175446c887cce8212c44149581cf2d466"}, - {file = "coverage-6.5.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:11b990d520ea75e7ee8dcab5bc908072aaada194a794db9f6d7d5cfd19661e5a"}, - {file = "coverage-6.5.0-cp310-cp310-win32.whl", hash = "sha256:5dbec3b9095749390c09ab7c89d314727f18800060d8d24e87f01fb9cfb40b32"}, - {file = "coverage-6.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:59f53f1dc5b656cafb1badd0feb428c1e7bc19b867479ff72f7a9dd9b479f10e"}, - {file = "coverage-6.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4a5375e28c5191ac38cca59b38edd33ef4cc914732c916f2929029b4bfb50795"}, - {file = "coverage-6.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4ed2820d919351f4167e52425e096af41bfabacb1857186c1ea32ff9983ed75"}, - {file = "coverage-6.5.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:33a7da4376d5977fbf0a8ed91c4dffaaa8dbf0ddbf4c8eea500a2486d8bc4d7b"}, - {file = "coverage-6.5.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8fb6cf131ac4070c9c5a3e21de0f7dc5a0fbe8bc77c9456ced896c12fcdad91"}, - {file = "coverage-6.5.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a6b7d95969b8845250586f269e81e5dfdd8ff828ddeb8567a4a2eaa7313460c4"}, - {file = "coverage-6.5.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:1ef221513e6f68b69ee9e159506d583d31aa3567e0ae84eaad9d6ec1107dddaa"}, - {file = "coverage-6.5.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cca4435eebea7962a52bdb216dec27215d0df64cf27fc1dd538415f5d2b9da6b"}, - {file = "coverage-6.5.0-cp311-cp311-win32.whl", hash = "sha256:98e8a10b7a314f454d9eff4216a9a94d143a7ee65018dd12442e898ee2310578"}, - {file = "coverage-6.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:bc8ef5e043a2af066fa8cbfc6e708d58017024dc4345a1f9757b329a249f041b"}, - {file = "coverage-6.5.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4433b90fae13f86fafff0b326453dd42fc9a639a0d9e4eec4d366436d1a41b6d"}, - {file = "coverage-6.5.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f4f05d88d9a80ad3cac6244d36dd89a3c00abc16371769f1340101d3cb899fc3"}, - {file = "coverage-6.5.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:94e2565443291bd778421856bc975d351738963071e9b8839ca1fc08b42d4bef"}, - {file = "coverage-6.5.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:027018943386e7b942fa832372ebc120155fd970837489896099f5cfa2890f79"}, - {file = "coverage-6.5.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:255758a1e3b61db372ec2736c8e2a1fdfaf563977eedbdf131de003ca5779b7d"}, - {file = "coverage-6.5.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:851cf4ff24062c6aec510a454b2584f6e998cada52d4cb58c5e233d07172e50c"}, - {file = "coverage-6.5.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:12adf310e4aafddc58afdb04d686795f33f4d7a6fa67a7a9d4ce7d6ae24d949f"}, - {file = "coverage-6.5.0-cp37-cp37m-win32.whl", hash = "sha256:b5604380f3415ba69de87a289a2b56687faa4fe04dbee0754bfcae433489316b"}, - {file = "coverage-6.5.0-cp37-cp37m-win_amd64.whl", hash = "sha256:4a8dbc1f0fbb2ae3de73eb0bdbb914180c7abfbf258e90b311dcd4f585d44bd2"}, - {file = "coverage-6.5.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d900bb429fdfd7f511f868cedd03a6bbb142f3f9118c09b99ef8dc9bf9643c3c"}, - {file = "coverage-6.5.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2198ea6fc548de52adc826f62cb18554caedfb1d26548c1b7c88d8f7faa8f6ba"}, - {file = "coverage-6.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c4459b3de97b75e3bd6b7d4b7f0db13f17f504f3d13e2a7c623786289dd670e"}, - {file = "coverage-6.5.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:20c8ac5386253717e5ccc827caad43ed66fea0efe255727b1053a8154d952398"}, - {file = "coverage-6.5.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b07130585d54fe8dff3d97b93b0e20290de974dc8177c320aeaf23459219c0b"}, - {file = "coverage-6.5.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:dbdb91cd8c048c2b09eb17713b0c12a54fbd587d79adcebad543bc0cd9a3410b"}, - {file = "coverage-6.5.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:de3001a203182842a4630e7b8d1a2c7c07ec1b45d3084a83d5d227a3806f530f"}, - {file = "coverage-6.5.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e07f4a4a9b41583d6eabec04f8b68076ab3cd44c20bd29332c6572dda36f372e"}, - {file = "coverage-6.5.0-cp38-cp38-win32.whl", hash = "sha256:6d4817234349a80dbf03640cec6109cd90cba068330703fa65ddf56b60223a6d"}, - {file = "coverage-6.5.0-cp38-cp38-win_amd64.whl", hash = "sha256:7ccf362abd726b0410bf8911c31fbf97f09f8f1061f8c1cf03dfc4b6372848f6"}, - {file = "coverage-6.5.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:633713d70ad6bfc49b34ead4060531658dc6dfc9b3eb7d8a716d5873377ab745"}, - {file = "coverage-6.5.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:95203854f974e07af96358c0b261f1048d8e1083f2de9b1c565e1be4a3a48cfc"}, - {file = "coverage-6.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9023e237f4c02ff739581ef35969c3739445fb059b060ca51771e69101efffe"}, - {file = "coverage-6.5.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:265de0fa6778d07de30bcf4d9dc471c3dc4314a23a3c6603d356a3c9abc2dfcf"}, - {file = "coverage-6.5.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f830ed581b45b82451a40faabb89c84e1a998124ee4212d440e9c6cf70083e5"}, - {file = "coverage-6.5.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7b6be138d61e458e18d8e6ddcddd36dd96215edfe5f1168de0b1b32635839b62"}, - {file = "coverage-6.5.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:42eafe6778551cf006a7c43153af1211c3aaab658d4d66fa5fcc021613d02518"}, - {file = "coverage-6.5.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:723e8130d4ecc8f56e9a611e73b31219595baa3bb252d539206f7bbbab6ffc1f"}, - {file = "coverage-6.5.0-cp39-cp39-win32.whl", hash = "sha256:d9ecf0829c6a62b9b573c7bb6d4dcd6ba8b6f80be9ba4fc7ed50bf4ac9aecd72"}, - {file = "coverage-6.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:fc2af30ed0d5ae0b1abdb4ebdce598eafd5b35397d4d75deb341a614d333d987"}, - {file = "coverage-6.5.0-pp36.pp37.pp38-none-any.whl", hash = "sha256:1431986dac3923c5945271f169f59c45b8802a114c8f548d611f2015133df77a"}, - {file = "coverage-6.5.0.tar.gz", hash = "sha256:f642e90754ee3e06b0e7e51bce3379590e76b7f76b708e1a71ff043f87025c84"}, -] -datadog = [ - {file = "datadog-0.41.0-py2.py3-none-any.whl", hash = "sha256:ab79ed38fb09ff1942c341e32849c4eeaf8b2e4d467b9e6bb1c6071808f454d6"}, - {file = "datadog-0.41.0.tar.gz", hash = "sha256:3de1a43b8a8d5f6b19d162ec1b482dc5ab2636c59cf65e60589702304510a689"}, -] -ddsketch = [ - {file = "ddsketch-2.0.4-py3-none-any.whl", hash = "sha256:3227a270fd686a29d3a7128f9352ccf852314410380fc11384356f1ae2a75938"}, - {file = "ddsketch-2.0.4.tar.gz", hash = "sha256:32f7314077fec8747d4faebaec2c854b5ffc399c5f552f73fa94024f48d74d64"}, -] -ddtrace = [ - {file = "ddtrace-1.6.3-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:bf5f05e371d5c748c4479538251046ddd4c2fbe0f29886e8f02fcc32e6c1fc61"}, - {file = "ddtrace-1.6.3-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:44b211cf4325efb1e8df8429971ee25de735ff7690add2e9b7e005150b6af0d6"}, - {file = "ddtrace-1.6.3-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:b03a712cb2fe4caa1d18e2ec07029e6492f9cf655b977b5b64e46fca8f1ee318"}, - {file = "ddtrace-1.6.3-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:f2ac992a7f13ffdbb4650a8dd36e746ee321b96739ea02704331873a3ce7788e"}, - {file = "ddtrace-1.6.3-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:2037dcaba0307192195abdc514fc2defac1cd7fc2a4b88f6f9cb5e280753fb19"}, - {file = "ddtrace-1.6.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:9d545c1a59e03a66ef794e6839788b43abe2f79b74cc13daddb7fe4d549b8b18"}, - {file = "ddtrace-1.6.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3cf03ed9112543c876105254adc4068586faf943f12b32636bfaa50eac2f81d0"}, - {file = "ddtrace-1.6.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9831e2a22a58dd1c73c0a360f4f110962cc3c777c0a7fe96029a591464549cde"}, - {file = "ddtrace-1.6.3-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4834ea851af813410fad67b4a000b3c62cfad2a72a043502fd4d6d5081affeba"}, - {file = "ddtrace-1.6.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:41e0ef8abc6c947f949e45fbd298047a6ced7553bcab3c822070079ba1f4d2b2"}, - {file = "ddtrace-1.6.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:cb67eda7daf46343f588aeb0cae59845d393099b431dbe6f765998806485e91d"}, - {file = "ddtrace-1.6.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:517062a828297ed4f7cb03803477ecdbe44cb0c34066ba14180c51715d69b511"}, - {file = "ddtrace-1.6.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6ebc656ba44b5f16af3d3e37bc30b14b1d3d62b09d5be676988e2060ea2b7ca5"}, - {file = "ddtrace-1.6.3-cp310-cp310-win32.whl", hash = "sha256:b7ba8c0cdb38bcdf3f911a1ba525e4bc0bcbd4741f4d2016863859719492a3fa"}, - {file = "ddtrace-1.6.3-cp310-cp310-win_amd64.whl", hash = "sha256:a479e36288c2234fa8222471ce2eceda1dfa042a402b102296f6b96cb2f32116"}, - {file = "ddtrace-1.6.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9ed59f828027ca9950d3a2f3afa78237973cbbdb2586f8f69a2a179e85377dbe"}, - {file = "ddtrace-1.6.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5632e8a30ee3fbe7fe15b899da8c0685f1eb59c0efc6524b284840789e369d20"}, - {file = "ddtrace-1.6.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e0dde9a55923abf571b5c4a8fb146f8b99cf63cf638d4cd5ad2b29141d0e8e0"}, - {file = "ddtrace-1.6.3-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c05a0382c51bef46dca2f373069f84f067e40412b92903deadeb1f346f68623d"}, - {file = "ddtrace-1.6.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb9c18321e5e117c28b3995d14c69f05bd4955a6adca39ebf75e55e008e0302b"}, - {file = "ddtrace-1.6.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:6782ed0b423d2af3ea50d4981a68b9cb960783be3672ceec1ebac0ad8b373726"}, - {file = "ddtrace-1.6.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:63177507d6f2e7d655110da33891ee94ba50907ef7e07dc34d28695cdb34c86a"}, - {file = "ddtrace-1.6.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1105e10bde6bd743388f24fab5ef39d58866f9c78e746b54066b8455245eea56"}, - {file = "ddtrace-1.6.3-cp311-cp311-win32.whl", hash = "sha256:b3bc931787840efbc86f0ee05a32f46581acb30ae5e7aee33cb1c34f87d29544"}, - {file = "ddtrace-1.6.3-cp311-cp311-win_amd64.whl", hash = "sha256:add17ff72822d0e9fc0da7970bc434b72ff084c30b6b091273d18aabbf5c4d97"}, - {file = "ddtrace-1.6.3-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:dc25be608fa9c7c4f2c0ad5ab89dc70fe1b3a0f4551efcef2813186ea205f9cd"}, - {file = "ddtrace-1.6.3-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:2f57dd998a501f854bf0ba2e52f7f957ff81c26321715f4129785da082055e9f"}, - {file = "ddtrace-1.6.3-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:8d9fcf0b56261722c1448a08c840e733ba0eb0c6a8114056d3bd3b0eb56f8172"}, - {file = "ddtrace-1.6.3-cp35-cp35m-win32.whl", hash = "sha256:45a543e03b3832d9fdd3435c654a92b5399f26e15a5388022ffb79de099bdd38"}, - {file = "ddtrace-1.6.3-cp35-cp35m-win_amd64.whl", hash = "sha256:b9bec566f3ad3acbe8205994b982a2b187747e7937b125f0cb6d36dccfa0e0a6"}, - {file = "ddtrace-1.6.3-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:889f55892811d52534fe0d01a3683dd0fd3cfbd3a68a052a13cdc107d9a7552b"}, - {file = "ddtrace-1.6.3-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48164748064c54a0dbfbea810b6eced16eea896ca0b135e720e14d168767f65a"}, - {file = "ddtrace-1.6.3-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:df92875c0279fc140ae9aa578f1d1fd2dc9b86e3ca927fd8559dbea00aec407b"}, - {file = "ddtrace-1.6.3-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8f1f9723cffcf0bc4bc3b9d548a20fa206018ffcf6458a9abc69bf0513af2c9"}, - {file = "ddtrace-1.6.3-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:aed2fb0e5315f8712be601c9673ff6ca657b141052704b1bafd3eff6dfed8ec3"}, - {file = "ddtrace-1.6.3-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:4b14155b28441d9c72daa430f778a22e327b0ad9244bb26ab8e3c0a5e07f4c87"}, - {file = "ddtrace-1.6.3-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:ece25655e6f6795150421f969b0944b4eef3889e485063a73531e96113aeba63"}, - {file = "ddtrace-1.6.3-cp36-cp36m-win32.whl", hash = "sha256:b808adc343949edd68fcd9470ae6f45ef494dd5a378f50c2ff317187f70716f6"}, - {file = "ddtrace-1.6.3-cp36-cp36m-win_amd64.whl", hash = "sha256:2e909b2d1477f5ac332fbb9e9bb5b6fa0bcdbed316a301d786c5c5dd7cc3367b"}, - {file = "ddtrace-1.6.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:fa7b282bcf5478b89f7281403accb22b14f409552296666c25f7d64caa769a5f"}, - {file = "ddtrace-1.6.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e7459595f80151b6fd94753fafad3576b8c00bfd153d5d06c30f3c1e3cc73bb8"}, - {file = "ddtrace-1.6.3-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4b939ff24096ee10a20ec5f7f77bcfaa2bebfc8375717d8ef36c8edf95ae8aec"}, - {file = "ddtrace-1.6.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2af9da9d7322290ecc1699144c0a4db2dc7e0460418c06732cdbfaea71e9a230"}, - {file = "ddtrace-1.6.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:349a032698665dc83cf5175232df0212d4a31235be1921976f39801d205ad1a7"}, - {file = "ddtrace-1.6.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f31ec764b30b143ea143b1d9a49087b10f09c80c2d7404d6ee4a7db4bf4a285f"}, - {file = "ddtrace-1.6.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:b42ab996e67d2bbbc728319884a2eafec0104e26ca2a8454daa548010950b724"}, - {file = "ddtrace-1.6.3-cp37-cp37m-win32.whl", hash = "sha256:74d2255d69aefdd443e5135767b7fa19677db490837e2185ab365795d1f64fc2"}, - {file = "ddtrace-1.6.3-cp37-cp37m-win_amd64.whl", hash = "sha256:303b95a5f47dcce919bff2004409f4a01f7325c831da1a8ef7953f063ca16f09"}, - {file = "ddtrace-1.6.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:0c2b19abafeb8cd18b5ef8b4a3e3f201a0c03106db4e91d17f7a68edf67ff135"}, - {file = "ddtrace-1.6.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:fc212bffaf411135ef0bd855781db7e69c3d81c9bdf90b81d41c1f7e44406ee4"}, - {file = "ddtrace-1.6.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:655696b0f5947fcca46f2d7e1ba3015d17c632e82bf22d93a92dec44f1f936b3"}, - {file = "ddtrace-1.6.3-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:773d64bd4f805f4fddcda716dddb2044524a829b906ab9161c63cc5bd9eec011"}, - {file = "ddtrace-1.6.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b391f2ee81e98983a16bdb21833c773eda4ed0233c42bc8c209c07125706a7d9"}, - {file = "ddtrace-1.6.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:a6a3864f8bb2e4cede1e00d7a9a931b92dc7d383272361c0359af3821323f4d6"}, - {file = "ddtrace-1.6.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a4d8a91a3a765f9cd9862e9dd1d5ebcc48ab4db5b9aae8b9e9dba2bf8e090a99"}, - {file = "ddtrace-1.6.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:276628bd2f8a29e32edeccd7c7f10367e906c476e47d619ea86b9c86141f7718"}, - {file = "ddtrace-1.6.3-cp38-cp38-win32.whl", hash = "sha256:2b23de67da8920d9a58bef1234a392eceed0fc5cac6c411d4f0c6384fa2cabd4"}, - {file = "ddtrace-1.6.3-cp38-cp38-win_amd64.whl", hash = "sha256:beeda524311ed0eed1da35ea9619cf4fda68ef4070c2c7dcd56a72687234fd88"}, - {file = "ddtrace-1.6.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c3c63294180ce24812060fbf90e769ea1aa042b5d046c216354fb2cf4a5a0000"}, - {file = "ddtrace-1.6.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a000935079a1129d712ba38103bac07d797db37d3b52a5b3d09970385ede0f65"}, - {file = "ddtrace-1.6.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa3e749dc799a2d5ce4d9d73cd311f4774740f1389698c058ab63392d2a175a2"}, - {file = "ddtrace-1.6.3-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a99813aa0f42d8dd7ac5a93aae0dee4678eadf3c6c1cbfee5cc1e6108ded40a3"}, - {file = "ddtrace-1.6.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9ae19dcd8a40f11cb74e2342f83776283913941b451bf8b9b710f97b06ecc62"}, - {file = "ddtrace-1.6.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:8f548c1ff4298a1e3fca2efa9a1bb7b4caf830a1d4990f95b0e4e6d3e109a435"}, - {file = "ddtrace-1.6.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:fbcfe0cb4953915098140565b14537e1641f356637869a18bedd4af8c5efc4c0"}, - {file = "ddtrace-1.6.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b4944c49bf7e5ed97c7d64b531178c987b1197ef3ac6f280892e907100b7aea9"}, - {file = "ddtrace-1.6.3-cp39-cp39-win32.whl", hash = "sha256:956cb24b7dbb0dc14bc15c9b54ec6ff88a579452dda16fb867e8c86a37e7e384"}, - {file = "ddtrace-1.6.3-cp39-cp39-win_amd64.whl", hash = "sha256:7b7466cf00a68bcfa859c65ff3ffd59124b72ed08652ffd5f18a63507912c2c2"}, - {file = "ddtrace-1.6.3.tar.gz", hash = "sha256:ea029339a81cdd5a43e6a949a4131a093b4ddc58ca00ebaa54dcb140da070c03"}, -] -decorator = [ - {file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"}, - {file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"}, -] -envier = [ - {file = "envier-0.4.0-py3-none-any.whl", hash = "sha256:7b91af0f16ea3e56d91ec082f038987e81b441fc19c657a8b8afe0909740a706"}, - {file = "envier-0.4.0.tar.gz", hash = "sha256:e68dcd1ed67d8b6313883e27dff3e701b7fba944d2ed4b7f53d0cc2e12364a82"}, -] -exceptiongroup = [ - {file = "exceptiongroup-1.0.4-py3-none-any.whl", hash = "sha256:542adf9dea4055530d6e1279602fa5cb11dab2395fa650b8674eaec35fc4a828"}, - {file = "exceptiongroup-1.0.4.tar.gz", hash = "sha256:bd14967b79cd9bdb54d97323216f8fdf533e278df937aa2a90089e7d6e06e5ec"}, -] -flake8 = [ - {file = "flake8-3.9.2-py2.py3-none-any.whl", hash = "sha256:bf8fd333346d844f616e8d47905ef3a3384edae6b4e9beb0c5101e25e3110907"}, - {file = "flake8-3.9.2.tar.gz", hash = "sha256:07528381786f2a6237b061f6e96610a4167b226cb926e2aa2b6b1d78057c576b"}, -] -httpretty = [ - {file = "httpretty-0.9.7.tar.gz", hash = "sha256:66216f26b9d2c52e81808f3e674a6fb65d4bf719721394a1a9be926177e55fbe"}, -] -idna = [ - {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"}, - {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, -] -importlib-metadata = [ - {file = "importlib_metadata-1.7.0-py2.py3-none-any.whl", hash = "sha256:dc15b2969b4ce36305c51eebe62d418ac7791e9a157911d58bfb1f9ccd8e2070"}, - {file = "importlib_metadata-1.7.0.tar.gz", hash = "sha256:90bb658cdbbf6d1735b6341ce708fc7024a3e14e99ffdc5783edea9f9b077f83"}, -] -importlib-resources = [ - {file = "importlib_resources-5.10.1-py3-none-any.whl", hash = "sha256:c09b067d82e72c66f4f8eb12332f5efbebc9b007c0b6c40818108c9870adc363"}, - {file = "importlib_resources-5.10.1.tar.gz", hash = "sha256:32bb095bda29741f6ef0e5278c42df98d135391bee5f932841efc0041f748dc3"}, -] -jmespath = [ - {file = "jmespath-1.0.1-py3-none-any.whl", hash = "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980"}, - {file = "jmespath-1.0.1.tar.gz", hash = "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe"}, -] -jsonschema = [ - {file = "jsonschema-4.17.3-py3-none-any.whl", hash = "sha256:a870ad254da1a8ca84b6a2905cac29d265f805acc57af304784962a2aa6508f6"}, - {file = "jsonschema-4.17.3.tar.gz", hash = "sha256:0f864437ab8b6076ba6707453ef8f98a6a0d512a80e93f8abdb676f737ecb60d"}, -] -mccabe = [ - {file = "mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42"}, - {file = "mccabe-0.6.1.tar.gz", hash = "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"}, -] -nose2 = [ - {file = "nose2-0.9.2-py2.py3-none-any.whl", hash = "sha256:fd4b84c65ecea869080a23bdb8916716f5363df3b899933991c861ada8aa3f48"}, - {file = "nose2-0.9.2.tar.gz", hash = "sha256:8762f77925bbafcdf38331e0e2ee718756fb75ff74b1f9097cd08731ad59ab5e"}, -] -packaging = [ - {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"}, - {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"}, -] -pkgutil-resolve-name = [ - {file = "pkgutil_resolve_name-1.3.10-py3-none-any.whl", hash = "sha256:ca27cc078d25c5ad71a9de0a7a330146c4e014c2462d9af19c6b828280649c5e"}, - {file = "pkgutil_resolve_name-1.3.10.tar.gz", hash = "sha256:357d6c9e6a755653cfd78893817c0853af365dd51ec97f3d358a819373bbd174"}, -] -protobuf = [ - {file = "protobuf-4.21.10-cp310-abi3-win32.whl", hash = "sha256:e92768d17473657c87e98b79a4c7724b0ddfa23211b05ce137bfdc55e734e36f"}, - {file = "protobuf-4.21.10-cp310-abi3-win_amd64.whl", hash = "sha256:0c968753028cb14b1d24cc839723f7e9505b305fc588a37a9e0f7d270cb59d89"}, - {file = "protobuf-4.21.10-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:e53165dd14d19abc7f50733f365de431e51d1d262db40c0ee22e271a074fac59"}, - {file = "protobuf-4.21.10-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:5efa8a8162ada7e10847140308fbf84fdc5b89dc21655d12ec04aed87284fe07"}, - {file = "protobuf-4.21.10-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:2a172741b5b041a896b621cef4277077afd571e0d3a6e524e7171f1c70e33200"}, - {file = "protobuf-4.21.10-cp37-cp37m-win32.whl", hash = "sha256:05cbcb9a25cd781fd949f93f6f98a911883868c0360c6d2264fc99a903c8f0d7"}, - {file = "protobuf-4.21.10-cp37-cp37m-win_amd64.whl", hash = "sha256:3f08f04b4f101dd469efbcc1731fbf48068eccd8a42f4e2ea530aa012a5f56f8"}, - {file = "protobuf-4.21.10-cp38-cp38-win32.whl", hash = "sha256:6b809f20923b6ef49dc1755cb50bdb21be179b4a3c7ffcab1fe5d3f139b58a51"}, - {file = "protobuf-4.21.10-cp38-cp38-win_amd64.whl", hash = "sha256:81b233a06c62387ea5c9be2cd9aedd2ba09940e91da53b920e9ff5bd98e48e7f"}, - {file = "protobuf-4.21.10-cp39-cp39-win32.whl", hash = "sha256:b78d7c2c36b51c0041b9bf000be4adb09f4112bfc40bc7a9d48ac0b0dfad139e"}, - {file = "protobuf-4.21.10-cp39-cp39-win_amd64.whl", hash = "sha256:0413addc126c40a5440ee59be098de1007183d68e9f5f20ed5fbc44848f417ca"}, - {file = "protobuf-4.21.10-py2.py3-none-any.whl", hash = "sha256:a5e89eabaa0ca72ce1b7c8104a740d44cdb67942cbbed00c69a4c0541de17107"}, - {file = "protobuf-4.21.10-py3-none-any.whl", hash = "sha256:5096b3922b45e4b7a04d3d3cb855d13bb5ccd4d5e44b129e706232ebf0ffb870"}, - {file = "protobuf-4.21.10.tar.gz", hash = "sha256:4d97c16c0d11155b3714a29245461f0eb60cace294455077f3a3b8a629afa383"}, -] -pycodestyle = [ - {file = "pycodestyle-2.7.0-py2.py3-none-any.whl", hash = "sha256:514f76d918fcc0b55c6680472f0a37970994e07bbb80725808c17089be302068"}, - {file = "pycodestyle-2.7.0.tar.gz", hash = "sha256:c389c1d06bf7904078ca03399a4816f974a1d590090fecea0c63ec26ebaf1cef"}, -] -pyflakes = [ - {file = "pyflakes-2.3.1-py2.py3-none-any.whl", hash = "sha256:7893783d01b8a89811dd72d7dfd4d84ff098e5eed95cfa8905b22bbffe52efc3"}, - {file = "pyflakes-2.3.1.tar.gz", hash = "sha256:f5bc8ecabc05bb9d291eb5203d6810b49040f6ff446a756326104746cc00c1db"}, -] -pyparsing = [ - {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"}, - {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"}, -] -pyrsistent = [ - {file = "pyrsistent-0.19.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d6982b5a0237e1b7d876b60265564648a69b14017f3b5f908c5be2de3f9abb7a"}, - {file = "pyrsistent-0.19.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:187d5730b0507d9285a96fca9716310d572e5464cadd19f22b63a6976254d77a"}, - {file = "pyrsistent-0.19.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:055ab45d5911d7cae397dc418808d8802fb95262751872c841c170b0dbf51eed"}, - {file = "pyrsistent-0.19.2-cp310-cp310-win32.whl", hash = "sha256:456cb30ca8bff00596519f2c53e42c245c09e1a4543945703acd4312949bfd41"}, - {file = "pyrsistent-0.19.2-cp310-cp310-win_amd64.whl", hash = "sha256:b39725209e06759217d1ac5fcdb510e98670af9e37223985f330b611f62e7425"}, - {file = "pyrsistent-0.19.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:2aede922a488861de0ad00c7630a6e2d57e8023e4be72d9d7147a9fcd2d30712"}, - {file = "pyrsistent-0.19.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:879b4c2f4d41585c42df4d7654ddffff1239dc4065bc88b745f0341828b83e78"}, - {file = "pyrsistent-0.19.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c43bec251bbd10e3cb58ced80609c5c1eb238da9ca78b964aea410fb820d00d6"}, - {file = "pyrsistent-0.19.2-cp37-cp37m-win32.whl", hash = "sha256:d690b18ac4b3e3cab73b0b7aa7dbe65978a172ff94970ff98d82f2031f8971c2"}, - {file = "pyrsistent-0.19.2-cp37-cp37m-win_amd64.whl", hash = "sha256:3ba4134a3ff0fc7ad225b6b457d1309f4698108fb6b35532d015dca8f5abed73"}, - {file = "pyrsistent-0.19.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a178209e2df710e3f142cbd05313ba0c5ebed0a55d78d9945ac7a4e09d923308"}, - {file = "pyrsistent-0.19.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e371b844cec09d8dc424d940e54bba8f67a03ebea20ff7b7b0d56f526c71d584"}, - {file = "pyrsistent-0.19.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:111156137b2e71f3a9936baf27cb322e8024dac3dc54ec7fb9f0bcf3249e68bb"}, - {file = "pyrsistent-0.19.2-cp38-cp38-win32.whl", hash = "sha256:e5d8f84d81e3729c3b506657dddfe46e8ba9c330bf1858ee33108f8bb2adb38a"}, - {file = "pyrsistent-0.19.2-cp38-cp38-win_amd64.whl", hash = "sha256:9cd3e9978d12b5d99cbdc727a3022da0430ad007dacf33d0bf554b96427f33ab"}, - {file = "pyrsistent-0.19.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:f1258f4e6c42ad0b20f9cfcc3ada5bd6b83374516cd01c0960e3cb75fdca6770"}, - {file = "pyrsistent-0.19.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:21455e2b16000440e896ab99e8304617151981ed40c29e9507ef1c2e4314ee95"}, - {file = "pyrsistent-0.19.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bfd880614c6237243ff53a0539f1cb26987a6dc8ac6e66e0c5a40617296a045e"}, - {file = "pyrsistent-0.19.2-cp39-cp39-win32.whl", hash = "sha256:71d332b0320642b3261e9fee47ab9e65872c2bd90260e5d225dabeed93cbd42b"}, - {file = "pyrsistent-0.19.2-cp39-cp39-win_amd64.whl", hash = "sha256:dec3eac7549869365fe263831f576c8457f6c833937c68542d08fde73457d291"}, - {file = "pyrsistent-0.19.2-py3-none-any.whl", hash = "sha256:ea6b79a02a28550c98b6ca9c35b9f492beaa54d7c5c9e9949555893c8a9234d0"}, - {file = "pyrsistent-0.19.2.tar.gz", hash = "sha256:bfa0351be89c9fcbcb8c9879b826f4353be10f58f8a677efab0c017bf7137ec2"}, -] -python-dateutil = [ - {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, - {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, -] -requests = [ - {file = "requests-2.28.1-py3-none-any.whl", hash = "sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349"}, - {file = "requests-2.28.1.tar.gz", hash = "sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983"}, -] -s3transfer = [ - {file = "s3transfer-0.6.0-py3-none-any.whl", hash = "sha256:06176b74f3a15f61f1b4f25a1fc29a4429040b7647133a463da8fa5bd28d5ecd"}, - {file = "s3transfer-0.6.0.tar.gz", hash = "sha256:2ed07d3866f523cc561bf4a00fc5535827981b117dd7876f036b0c1aca42c947"}, -] -six = [ - {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, - {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, -] -tenacity = [ - {file = "tenacity-8.1.0-py3-none-any.whl", hash = "sha256:35525cd47f82830069f0d6b73f7eb83bc5b73ee2fff0437952cedf98b27653ac"}, - {file = "tenacity-8.1.0.tar.gz", hash = "sha256:e48c437fdf9340f5666b92cd7990e96bc5fc955e1298baf4a907e3972067a445"}, -] -typing-extensions = [ - {file = "typing_extensions-4.4.0-py3-none-any.whl", hash = "sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e"}, - {file = "typing_extensions-4.4.0.tar.gz", hash = "sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa"}, -] -urllib3 = [ - {file = "urllib3-1.26.13-py2.py3-none-any.whl", hash = "sha256:47cc05d99aaa09c9e72ed5809b60e7ba354e64b59c9c173ac3018642d8bb41fc"}, - {file = "urllib3-1.26.13.tar.gz", hash = "sha256:c083dd0dce68dbfbe1129d5271cb90f9447dea7d52097c6e0126120c521ddea8"}, -] -wrapt = [ +files = [ {file = "wrapt-1.14.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:1b376b3f4896e7930f1f772ac4b064ac12598d1c38d04907e696cc4d794b43d3"}, {file = "wrapt-1.14.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:903500616422a40a98a5a3c4ff4ed9d0066f3b4c951fa286018ecdf0750194ef"}, {file = "wrapt-1.14.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:5a9a0d155deafd9448baff28c08e150d9b24ff010e899311ddd63c45c2445e28"}, @@ -848,11 +811,39 @@ wrapt = [ {file = "wrapt-1.14.1-cp39-cp39-win_amd64.whl", hash = "sha256:dee60e1de1898bde3b238f18340eec6148986da0455d8ba7848d50470a7a32fb"}, {file = "wrapt-1.14.1.tar.gz", hash = "sha256:380a85cf89e0e69b7cfbe2ea9f765f004ff419f34194018a6827ac0e3edfed4d"}, ] -xmltodict = [ + +[[package]] +name = "xmltodict" +version = "0.13.0" +description = "Makes working with XML feel like you are working with JSON" +category = "main" +optional = false +python-versions = ">=3.4" +files = [ {file = "xmltodict-0.13.0-py2.py3-none-any.whl", hash = "sha256:aa89e8fd76320154a40d19a0df04a4695fb9dc5ba977cbb68ab3e4eb225e7852"}, {file = "xmltodict-0.13.0.tar.gz", hash = "sha256:341595a488e3e01a85a9d8911d8912fd922ede5fecc4dce437eb4b6c8d037e56"}, ] -zipp = [ + +[[package]] +name = "zipp" +version = "3.11.0" +description = "Backport of pathlib-compatible object wrapper for zip files" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ {file = "zipp-3.11.0-py3-none-any.whl", hash = "sha256:83a28fcb75844b5c0cdaf5aa4003c2d728c77e05f5aeabe8e95e56727005fbaa"}, {file = "zipp-3.11.0.tar.gz", hash = "sha256:a7a22e05929290a67401440b39690ae6563279bced5f314609d9d03798f56766"}, ] + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)"] +testing = ["flake8 (<5)", "func-timeout", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] + +[extras] +dev = ["boto3", "requests", "nose2", "flake8", "httpretty"] + +[metadata] +lock-version = "2.0" +python-versions = ">=3.7.0,<4" +content-hash = "6ba474ff11bf0665dea4165d426c582eda61054671cd1d0d75889a24bb1bd48c" diff --git a/pyproject.toml b/pyproject.toml index e3611a82f..ac95cb72d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -25,7 +25,7 @@ classifiers = [ python = ">=3.7.0,<4" datadog = "^0.41" wrapt = "^1.11.2" -ddtrace = "^1.6.3" +ddtrace = "^1.6.4" importlib_metadata = {version = "^1.0", python = "<3.8"} boto3 = { version = "^1.10.33", optional = true } typing_extensions = {version = "^4.0", python = "<3.8"} From b76ef054f204962ecd1a34c494a77ad2e9846051 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Fri, 30 Dec 2022 22:47:11 -0500 Subject: [PATCH 032/403] version updated to 4.66.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index ac95cb72d..dddbe9ca0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "4.64.0" +version = "4.66.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From fbb4eabcd4d4d4c1cebe6f7f92bfe6673c0202dd Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Tue, 24 Jan 2023 13:16:32 -0500 Subject: [PATCH 033/403] Joey/update snapshots (#297) * update snapshots * update snapshots * only update snapshots when diff shows mismatch * fix the unittest broken due to authorizer header injection --- datadog_lambda/constants.py | 3 - datadog_lambda/tracing.py | 4 +- datadog_lambda/wrapper.py | 13 ++- scripts/run_integration_tests.sh | 20 ++-- .../snapshots/logs/async-metrics_python37.log | 55 +++++------ .../snapshots/logs/async-metrics_python38.log | 55 +++++------ .../snapshots/logs/async-metrics_python39.log | 55 +++++------ .../snapshots/logs/sync-metrics_python37.log | 95 ++++++++++--------- .../snapshots/logs/sync-metrics_python38.log | 93 +++++++++--------- .../snapshots/logs/sync-metrics_python39.log | 91 +++++++++--------- 10 files changed, 248 insertions(+), 236 deletions(-) diff --git a/datadog_lambda/constants.py b/datadog_lambda/constants.py index 5fb6683d5..fd8afb3ed 100644 --- a/datadog_lambda/constants.py +++ b/datadog_lambda/constants.py @@ -51,6 +51,3 @@ class Headers(object): # invocation and the main function invocation are IDENTICAL. Therefore we can use it to tell # whether current invocation is the actual original authorizing request or a cached request. Authorizing_Request_Id = "x-datadog-authorizing-requestid" - - # injected by the HTTPPropagator.inject but no use - TAGS_HEADER_TO_DELETE = "x-datadog-tags" diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index ead727678..92d0d55b7 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -191,9 +191,9 @@ def extract_context_from_http_event_or_context( # fail fast on any KeyError here trace_id = injected_authorizer_data[TraceHeader.TRACE_ID] parent_id = injected_authorizer_data[TraceHeader.PARENT_ID] - sampling_priority = injected_authorizer_data[ + sampling_priority = injected_authorizer_data.get( TraceHeader.SAMPLING_PRIORITY - ] + ) return trace_id, parent_id, sampling_priority except Exception as e: logger.debug( diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index f0d56a3d7..9e246760a 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -10,7 +10,6 @@ from importlib import import_module import json from time import time_ns -from ddtrace.propagation.http import HTTPPropagator from datadog_lambda.extension import should_use_extension, flush_extension from datadog_lambda.cold_start import set_cold_start, is_cold_start @@ -18,6 +17,7 @@ TraceContextSource, XraySubsegment, Headers, + TraceHeader, ) from datadog_lambda.metric import ( flush_stats, @@ -185,9 +185,14 @@ def _inject_authorizer_span_headers(self, request_id): ) injected_headers = {} source_span = self.inferred_span if self.inferred_span else self.span - HTTPPropagator.inject(source_span.context, injected_headers) - # remove unused header - injected_headers.pop(Headers.TAGS_HEADER_TO_DELETE, None) + span_context = source_span.context + injected_headers[TraceHeader.TRACE_ID] = str(span_context.trace_id) + injected_headers[TraceHeader.PARENT_ID] = str(span_context.span_id) + sampling_priority = span_context.sampling_priority + if sampling_priority is not None: + injected_headers[TraceHeader.SAMPLING_PRIORITY] = str( + span_context.sampling_priority + ) injected_headers[Headers.Parent_Span_Finish_Time] = finish_time_ns if request_id is not None: injected_headers[Headers.Authorizing_Request_Id] = request_id diff --git a/scripts/run_integration_tests.sh b/scripts/run_integration_tests.sh index 2d0e1c8f8..74c7239a2 100755 --- a/scripts/run_integration_tests.sh +++ b/scripts/run_integration_tests.sh @@ -216,6 +216,7 @@ for handler_name in "${LAMBDA_HANDLERS[@]}"; do sed -E "s/(\"duration\"\: )[0-9\.\-]+/\1\"XXXX\"/g" | sed -E "s/(\"start\"\: )[0-9\.\-]+/\1\"XXXX\"/g" | sed -E "s/(\"system\.pid\"\: )[0-9\.\-]+/\1\"XXXX\"/g" | + sed -E "s/(\"process_id\"\: )[0-9\.\-]+/\1XXXX/g" | sed -E "s/(\"runtime-id\"\: \")[a-z0-9\.\-]+/\1XXXX/g" | sed -E "s/([a-zA-Z0-9]+)(\.execute-api\.[a-z0-9\-]+\.amazonaws\.com)/XXXX\2/g" | sed -E "s/(\"apiid\"\: \")[a-z0-9\.\-]+/\1XXXX/g" | @@ -231,6 +232,7 @@ for handler_name in "${LAMBDA_HANDLERS[@]}"; do sed -E "s/(\"partition_key\"\:\ \")[a-zA-Z0-9\-]+/\1XXXX/g" | sed -E "s/(\"object_etag\"\:\ \")[a-zA-Z0-9\-]+/\1XXXX/g" | sed -E "s/(\"dd_trace\"\: \")([0-9]+\.[0-9]+\.[0-9])/\1X.X.X/g" | + sed -E "s/(traceparent\:)([A-Za-z0-9\-]+)/\1XXX/g" | # Parse out account ID in ARN sed -E "s/([a-zA-Z0-9]+):([a-zA-Z0-9]+):([a-zA-Z0-9]+):([a-zA-Z0-9\-]+):([a-zA-Z0-9\-\:]+)/\1:\2:\3:\4:XXXX:\4/g" | sed -E "/init complete at epoch/d" | @@ -241,17 +243,19 @@ for handler_name in "${LAMBDA_HANDLERS[@]}"; do # If no snapshot file exists yet, we create one echo "Writing logs to $function_snapshot_path because no snapshot exists yet" echo "$logs" >$function_snapshot_path - elif [ -n "$UPDATE_SNAPSHOTS" ]; then - # If $UPDATE_SNAPSHOTS is set to true write the new logs over the current snapshot - echo "Overwriting log snapshot for $function_snapshot_path" - echo "$logs" >$function_snapshot_path else # Compare new logs to snapshots - diff_output=$(echo "$logs" | diff - $function_snapshot_path) + diff_output=$(echo "$logs" | sort | diff -w - <(sort $function_snapshot_path)) if [ $? -eq 1 ]; then - echo "Failed: Mismatch found between new $function_name logs (first) and snapshot (second):" - echo "$diff_output" - mismatch_found=true + if [ -n "$UPDATE_SNAPSHOTS" ]; then + # If $UPDATE_SNAPSHOTS is set to true write the new logs over the current snapshot + echo "Overwriting log snapshot for $function_snapshot_path" + echo "$logs" >$function_snapshot_path + else + echo "Failed: Mismatch found between new $function_name logs (first) and snapshot (second):" + echo "$diff_output" + mismatch_found=true + fi else echo "Ok: New logs for $function_name match snapshot" fi diff --git a/tests/integration/snapshots/logs/async-metrics_python37.log b/tests/integration/snapshots/logs/async-metrics_python37.log index 606b229d4..9950c2d80 100644 --- a/tests/integration/snapshots/logs/async-metrics_python37.log +++ b/tests/integration/snapshots/logs/async-metrics_python37.log @@ -1,3 +1,4 @@ +INIT_START Runtime Version: python:3.7.v22 Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 START { "m": "aws.lambda.enhanced.invocations", @@ -35,8 +36,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -69,7 +70,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -193,8 +194,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -226,7 +227,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -346,8 +347,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -373,7 +374,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -492,8 +493,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -529,7 +530,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -653,8 +654,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -686,7 +687,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -806,8 +807,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -836,7 +837,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -956,8 +957,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -987,7 +988,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1107,8 +1108,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -1137,7 +1138,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1257,8 +1258,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -1293,7 +1294,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, diff --git a/tests/integration/snapshots/logs/async-metrics_python38.log b/tests/integration/snapshots/logs/async-metrics_python38.log index a708d67fa..d98aeb4b6 100644 --- a/tests/integration/snapshots/logs/async-metrics_python38.log +++ b/tests/integration/snapshots/logs/async-metrics_python38.log @@ -1,3 +1,4 @@ +INIT_START Runtime Version: python:3.8.v15 Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 START { "m": "aws.lambda.enhanced.invocations", @@ -35,8 +36,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -69,7 +70,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -193,8 +194,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -226,7 +227,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -346,8 +347,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -373,7 +374,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -492,8 +493,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -529,7 +530,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -653,8 +654,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -686,7 +687,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -806,8 +807,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -836,7 +837,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -956,8 +957,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -987,7 +988,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1107,8 +1108,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -1137,7 +1138,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1257,8 +1258,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -1293,7 +1294,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, diff --git a/tests/integration/snapshots/logs/async-metrics_python39.log b/tests/integration/snapshots/logs/async-metrics_python39.log index 1e8ddb9d5..ffd9017f8 100644 --- a/tests/integration/snapshots/logs/async-metrics_python39.log +++ b/tests/integration/snapshots/logs/async-metrics_python39.log @@ -1,3 +1,4 @@ +INIT_START Runtime Version: python:3.9.v16 Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 START { "m": "aws.lambda.enhanced.invocations", @@ -35,8 +36,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -69,7 +70,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -193,8 +194,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -226,7 +227,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -346,8 +347,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -373,7 +374,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -492,8 +493,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -529,7 +530,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -653,8 +654,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -686,7 +687,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -806,8 +807,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -836,7 +837,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -956,8 +957,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -987,7 +988,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1107,8 +1108,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -1137,7 +1138,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1257,8 +1258,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -1293,7 +1294,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python37.log b/tests/integration/snapshots/logs/sync-metrics_python37.log index bc2e5c406..aa4867cc7 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python37.log +++ b/tests/integration/snapshots/logs/sync-metrics_python37.log @@ -1,3 +1,4 @@ +INIT_START Runtime Version: python:3.7.v22 Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 START { "m": "aws.lambda.enhanced.invocations", @@ -15,8 +16,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -49,7 +50,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -135,7 +136,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB { "traces": [ [ @@ -160,7 +162,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -170,7 +172,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head ] ] } -END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB START { "m": "aws.lambda.enhanced.invocations", @@ -188,8 +189,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -221,7 +222,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -303,7 +304,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -328,7 +329,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -356,8 +357,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -383,7 +384,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -464,7 +465,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -489,7 +490,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -517,8 +518,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -554,7 +555,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -640,7 +641,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -665,7 +666,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -693,8 +694,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -726,7 +727,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -808,7 +809,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +END Duration: XXXX ms Memory Used: XXXX MB { "traces": [ [ @@ -833,7 +835,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -843,7 +845,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head ] ] } -END Duration: XXXX ms Memory Used: XXXX MB START { "m": "aws.lambda.enhanced.invocations", @@ -861,8 +862,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -891,7 +892,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -973,7 +974,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -998,7 +999,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -1026,8 +1027,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -1057,7 +1058,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1139,7 +1140,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -1164,7 +1165,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -1192,8 +1193,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -1222,7 +1223,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1304,7 +1305,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -1329,7 +1330,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -1357,8 +1358,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -1393,7 +1394,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1477,7 +1478,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -1502,7 +1503,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 diff --git a/tests/integration/snapshots/logs/sync-metrics_python38.log b/tests/integration/snapshots/logs/sync-metrics_python38.log index 5c3acbd95..182c708b3 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python38.log +++ b/tests/integration/snapshots/logs/sync-metrics_python38.log @@ -1,3 +1,4 @@ +INIT_START Runtime Version: python:3.8.v15 Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 START { "m": "aws.lambda.enhanced.invocations", @@ -15,8 +16,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -49,7 +50,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -135,7 +136,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -160,7 +161,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -188,8 +189,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -221,7 +222,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -303,7 +304,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -328,7 +329,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -356,8 +357,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -383,7 +384,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -464,7 +465,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -489,7 +490,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -517,8 +518,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -554,7 +555,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -640,7 +641,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -665,7 +666,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -693,8 +694,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -726,7 +727,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -808,7 +809,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -833,7 +834,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -861,8 +862,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -891,7 +892,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -973,7 +974,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -998,7 +999,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -1026,8 +1027,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -1057,7 +1058,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1139,7 +1140,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -1164,7 +1165,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -1192,8 +1193,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -1222,7 +1223,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1304,7 +1305,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -1329,7 +1330,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -1357,8 +1358,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -1393,7 +1394,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1477,7 +1478,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +END Duration: XXXX ms Memory Used: XXXX MB { "traces": [ [ @@ -1502,7 +1504,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -1512,4 +1514,3 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head ] ] } -END Duration: XXXX ms Memory Used: XXXX MB diff --git a/tests/integration/snapshots/logs/sync-metrics_python39.log b/tests/integration/snapshots/logs/sync-metrics_python39.log index ac3fdfa78..50a636438 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -1,3 +1,4 @@ +INIT_START Runtime Version: python:3.9.v16 Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 START { "m": "aws.lambda.enhanced.invocations", @@ -15,8 +16,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -49,7 +50,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -135,7 +136,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -160,7 +161,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -188,8 +189,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -221,7 +222,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -303,7 +304,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -328,7 +329,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -356,8 +357,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -383,7 +384,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -464,7 +465,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -489,7 +490,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -517,8 +518,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -554,7 +555,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -640,7 +641,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -665,7 +666,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -693,8 +694,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -726,7 +727,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -808,7 +809,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -833,7 +834,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -861,8 +862,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -891,7 +892,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -973,7 +974,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -998,7 +999,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -1026,8 +1027,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -1057,7 +1058,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1139,7 +1140,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -1164,7 +1165,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -1192,8 +1193,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -1222,7 +1223,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1304,7 +1305,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -1329,7 +1330,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -1357,8 +1358,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} { "traces": [ [ @@ -1393,7 +1394,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1477,7 +1478,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -1502,7 +1503,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head }, "metrics": { "_dd.agent_psr": 1, - "system.pid": "XXXX", + "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 From 7b4e7819df722a7f1dff6bddd305a5fa9d61c7b5 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Tue, 24 Jan 2023 16:33:36 -0500 Subject: [PATCH 034/403] fix the str response case (#296) --- datadog_lambda/tracing.py | 14 ++++++++++++++ datadog_lambda/wrapper.py | 8 ++------ tests/test_wrapper.py | 14 ++++++++++++++ 3 files changed, 30 insertions(+), 6 deletions(-) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 92d0d55b7..19ef8c040 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -345,6 +345,20 @@ def extract_context_custom_extractor(extractor, event, lambda_context): return None, None, None +def is_authorizer_response(response) -> bool: + try: + return ( + response is not None + and response["principalId"] + and response["policyDocument"] + ) + except KeyError: + pass + except Exception as e: + logger.debug("unknown error while checking is_authorizer_response %s", e) + return False + + def get_injected_authorizer_data(event, is_http_api) -> dict: try: authorizer_headers = event.get("requestContext", {}).get("authorizer") diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 9e246760a..51ffccec2 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -37,6 +37,7 @@ create_function_execution_span, create_inferred_span, InferredSpanInfo, + is_authorizer_response, ) from datadog_lambda.trigger import ( extract_trigger_tags, @@ -280,12 +281,7 @@ def _after(self, event, context): if should_use_extension: flush_extension() - if ( - self.encode_authorizer_context - and self.response - and self.response.get("principalId") - and self.response.get("policyDocument") - ): + if self.encode_authorizer_context and is_authorizer_response(self.response): self._inject_authorizer_span_headers( event.get("requestContext", {}).get("requestId") ) diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index 4efadd968..bde397c29 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -544,3 +544,17 @@ def lambda_handler(event, context): self.assertEquals(inject_data[TraceHeader.TRACE_ID], "456") self.assertEquals(inject_data[TraceHeader.SAMPLING_PRIORITY], "1") self.assertEquals(result["context"]["scope"], "still here") + + @patch("traceback.print_exc") + def test_different_return_type_no_error(self, MockPrintExc): + TEST_RESULTS = ["a str to return", 42, {"value": 42}, ["A", 42], None] + mock_context = get_mock_context() + for test_result in TEST_RESULTS: + + @datadog_lambda_wrapper + def return_type_test(event, context): + return test_result + + result = return_type_test({}, mock_context) + self.assertEquals(result, test_result) + self.assertFalse(MockPrintExc.called) From c622a3cf9329a67d71bcf3510b14f8b0b965834b Mon Sep 17 00:00:00 2001 From: Filip Halemba Date: Wed, 25 Jan 2023 20:22:03 +0100 Subject: [PATCH 035/403] build: relax `datadog` version (#290) It seems to me that the version is not intentionally locked to the range >= 0.41, < 0.42, and it is more a matter of the fact that poetry treats versions that start with `0` differently when using `^` ([docs](https://python-poetry.org/docs/dependency-specification/#caret-requirements)) Related issue: - https://github.com/DataDog/datadog-lambda-python/issues/253 Releases of the `datadog` lib (it looks to me that there is no risk): - https://github.com/DataDog/datadogpy/releases --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index dddbe9ca0..a22fcb129 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -23,7 +23,7 @@ classifiers = [ [tool.poetry.dependencies] python = ">=3.7.0,<4" -datadog = "^0.41" +datadog = ">=0.41.0,<1.0.0" wrapt = "^1.11.2" ddtrace = "^1.6.4" importlib_metadata = {version = "^1.0", python = "<3.8"} From 5286cb89f030d2d4a91a53a08074f6a920fc6cae Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Wed, 25 Jan 2023 15:28:56 -0500 Subject: [PATCH 036/403] v4.67.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index a22fcb129..812da8f50 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "4.66.0" +version = "4.67.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 3e09ff472f0e23fa28af21f86070456945c34318 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Mon, 13 Feb 2023 15:39:51 -0500 Subject: [PATCH 037/403] cold start tracing (python) (#299) * (wip) coldstart tracing POC checkin * feat: rename cold start span so it is nested properly. * simplify how to wrap methods with push_node and pop_node and bug fixes * remove cold_start_tracing file and use cold_start file * add test_cold_start * fix lint and integration tests * make sure loader is Hashable in order to use in a set * add logging, add default skip libs --------- Co-authored-by: AJ Stuyvenberg --- datadog_lambda/__init__.py | 9 +- datadog_lambda/cold_start.py | 200 +++++++++++++++++++++++++++++++ datadog_lambda/wrapper.py | 45 ++++++- tests/integration/serverless.yml | 1 + tests/test_cold_start.py | 200 +++++++++++++++++++++++++++++++ 5 files changed, 450 insertions(+), 5 deletions(-) create mode 100644 tests/test_cold_start.py diff --git a/datadog_lambda/__init__.py b/datadog_lambda/__init__.py index cbec8f4fb..20b424432 100644 --- a/datadog_lambda/__init__.py +++ b/datadog_lambda/__init__.py @@ -1,3 +1,9 @@ +import os +import logging +from datadog_lambda.cold_start import initialize_cold_start_tracing + +initialize_cold_start_tracing() + # The minor version corresponds to the Lambda layer version. # E.g.,, version 0.5.0 gets packaged into layer version 5. try: @@ -7,8 +13,5 @@ __version__ = importlib_metadata.version(__name__) -import os -import logging - logger = logging.getLogger(__name__) logger.setLevel(logging.getLevelName(os.environ.get("DD_LOG_LEVEL", "INFO").upper())) diff --git a/datadog_lambda/cold_start.py b/datadog_lambda/cold_start.py index c8862bf1f..fdb43b818 100644 --- a/datadog_lambda/cold_start.py +++ b/datadog_lambda/cold_start.py @@ -1,3 +1,10 @@ +import time +import os +from typing import List, Hashable +import logging + +logger = logging.getLogger(__name__) + _cold_start = True _lambda_container_initialized = False @@ -21,3 +28,196 @@ def is_cold_start(): def get_cold_start_tag(): """Returns the cold start tag to be used in metrics""" return "cold_start:{}".format(str(is_cold_start()).lower()) + + +class ImportNode(object): + def __init__(self, module_name, full_file_path, start_time_ns, end_time_ns=None): + self.module_name = module_name + self.full_file_path = full_file_path + self.start_time_ns = start_time_ns + self.end_time_ns = end_time_ns + self.children = [] + + +root_nodes: List[ImportNode] = [] +import_stack: List[ImportNode] = [] +already_wrapped_loaders = set() + + +def reset_node_stacks(): + global root_nodes + root_nodes = [] + global import_stack + import_stack = [] + + +def push_node(module_name, file_path): + node = ImportNode(module_name, file_path, time.time_ns()) + global import_stack + if import_stack: + import_stack[-1].children.append(node) + import_stack.append(node) + + +def pop_node(module_name): + global import_stack + if not import_stack: + return + node = import_stack.pop() + if node.module_name != module_name: + return + end_time_ns = time.time_ns() + node.end_time_ns = end_time_ns + if not import_stack: # import_stack empty, a root node has been found + global root_nodes + root_nodes.append(node) + + +def wrap_exec_module(original_exec_module): + def wrapped_method(module): + should_pop = False + try: + spec = module.__spec__ + push_node(spec.name, spec.origin) + should_pop = True + except Exception: + pass + try: + return original_exec_module(module) + finally: + if should_pop: + pop_node(spec.name) + + return wrapped_method + + +def wrap_find_spec(original_find_spec): + def wrapped_find_spec(*args, **kwargs): + spec = original_find_spec(*args, **kwargs) + if spec is None: + return None + loader = getattr(spec, "loader", None) + if ( + loader is not None + and isinstance(loader, Hashable) + and loader not in already_wrapped_loaders + ): + if hasattr(loader, "exec_module"): + try: + loader.exec_module = wrap_exec_module(loader.exec_module) + already_wrapped_loaders.add(loader) + except Exception as e: + logger.debug("Failed to wrap the loader. %s", e) + return spec + + return wrapped_find_spec + + +def initialize_cold_start_tracing(): + if ( + is_cold_start() + and os.environ.get("DD_TRACE_ENABLED", "true").lower() == "true" + and os.environ.get("DD_COLD_START_TRACING", "true").lower() == "true" + ): + from sys import version_info, meta_path + + if version_info >= (3, 7): # current implementation only support version > 3.7 + for importer in meta_path: + try: + importer.find_spec = wrap_find_spec(importer.find_spec) + except Exception: + pass + + +class ColdStartTracer(object): + def __init__( + self, + tracer, + function_name, + cold_start_span_finish_time_ns, + trace_ctx, + min_duration_ms: int, + ignored_libs: List[str] = [], + ): + self._tracer = tracer + self.function_name = function_name + self.cold_start_span_finish_time_ns = cold_start_span_finish_time_ns + self.min_duration_ms = min_duration_ms + self.trace_ctx = trace_ctx + self.ignored_libs = ignored_libs + self.need_to_reactivate_context = True + + def trace(self, root_nodes: List[ImportNode] = root_nodes): + if not root_nodes: + return + cold_start_span_start_time_ns = root_nodes[0].start_time_ns + cold_start_span = self.create_cold_start_span(cold_start_span_start_time_ns) + while root_nodes: + root_node = root_nodes.pop() + self.trace_tree(root_node, cold_start_span) + self.finish_span(cold_start_span, self.cold_start_span_finish_time_ns) + + def trace_tree(self, import_node: ImportNode, parent_span): + if ( + import_node.end_time_ns - import_node.start_time_ns + < self.min_duration_ms * 1e6 + or import_node.module_name in self.ignored_libs + ): + return + + span = self.start_span( + "aws.lambda.import", import_node.module_name, import_node.start_time_ns + ) + tags = { + "resource_names": import_node.module_name, + "resource.name": import_node.module_name, + "filename": import_node.full_file_path, + "operation_name": self.get_operation_name(import_node.full_file_path), + } + span.set_tags(tags) + if parent_span: + span.parent_id = parent_span.span_id + for child_node in import_node.children: + self.trace_tree(child_node, span) + self.finish_span(span, import_node.end_time_ns) + + def create_cold_start_span(self, start_time_ns): + span = self.start_span("aws.lambda.load", self.function_name, start_time_ns) + tags = { + "resource_names": self.function_name, + "resource.name": self.function_name, + "operation_name": "aws.lambda.load", + } + span.set_tags(tags) + return span + + def start_span(self, span_type, resource, start_time_ns): + if self.need_to_reactivate_context: + self._tracer.context_provider.activate( + self.trace_ctx + ) # reactivate required after each finish() call + self.need_to_reactivate_context = False + span_kwargs = { + "service": "aws.lambda", + "resource": resource, + "span_type": span_type, + } + span = self._tracer.trace(span_type, **span_kwargs) + span.start_ns = start_time_ns + return span + + def finish_span(self, span, finish_time_ns): + span.finish(finish_time_ns / 1e9) + self.need_to_reactivate_context = True + + def get_operation_name(self, filename: str): + if filename is None: + return "aws.lambda.import_core_module" + if not isinstance(filename, str): + return "aws.lambda.import" + if filename.startswith("/opt/"): + return "aws.lambda.import_layer" + elif filename.startswith("/var/lang/"): + return "aws.lambda.import_runtime" + else: + return "aws.lambda.import" diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 51ffccec2..fb849cec9 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -2,7 +2,6 @@ # under the Apache License Version 2.0. # This product includes software developed at Datadog (https://www.datadoghq.com/). # Copyright 2019 Datadog, Inc. - import base64 import os import logging @@ -12,7 +11,7 @@ from time import time_ns from datadog_lambda.extension import should_use_extension, flush_extension -from datadog_lambda.cold_start import set_cold_start, is_cold_start +from datadog_lambda.cold_start import set_cold_start, is_cold_start, ColdStartTracer from datadog_lambda.constants import ( TraceContextSource, XraySubsegment, @@ -38,6 +37,7 @@ create_inferred_span, InferredSpanInfo, is_authorizer_response, + tracer, ) from datadog_lambda.trigger import ( extract_trigger_tags, @@ -131,6 +131,28 @@ def __init__(self, func): self.decode_authorizer_context = ( os.environ.get("DD_DECODE_AUTHORIZER_CONTEXT", "true").lower() == "true" ) + self.cold_start_tracing = ( + os.environ.get("DD_COLD_START_TRACING", "true").lower() == "true" + ) + self.min_cold_start_trace_duration = 3 + if "DD_MIN_COLD_START_DURATION" in os.environ: + try: + self.min_cold_start_trace_duration = int( + os.environ["DD_MIN_COLD_START_DURATION"] + ) + except Exception: + logger.debug("Malformatted env DD_MIN_COLD_START_DURATION") + self.cold_start_trace_skip_lib = [ + "ddtrace.internal.compat", + "ddtrace.filters", + ] + if "DD_COLD_START_TRACE_SKIP_LIB" in os.environ: + try: + self.cold_start_trace_skip_lib = os.environ[ + "DD_COLD_START_TRACE_SKIP_LIB" + ].split(",") + except Exception: + logger.debug("Malformatted for env DD_COLD_START_TRACE_SKIP_LIB") self.response = None if profiling_env_var: self.prof = profiler.Profiler(env=env_env_var, service=service_env_var) @@ -257,6 +279,11 @@ def _after(self, event, context): create_dd_dummy_metadata_subsegment( self.trigger_tags, XraySubsegment.LAMBDA_FUNCTION_TAGS_KEY ) + should_trace_cold_start = ( + dd_tracing_enabled and self.cold_start_tracing and is_cold_start() + ) + if should_trace_cold_start: + trace_ctx = tracer.current_trace_context() if self.span: if dd_capture_lambda_payload_enabled: @@ -276,6 +303,20 @@ def _after(self, event, context): else: self.inferred_span.finish() + if should_trace_cold_start: + try: + following_span = self.span or self.inferred_span + ColdStartTracer( + tracer, + self.function_name, + following_span.start_ns, + trace_ctx, + self.min_cold_start_trace_duration, + self.cold_start_trace_skip_lib, + ).trace() + except Exception as e: + logger.debug("Failed to create cold start spans. %s", e) + if not self.flush_to_log or should_use_extension: flush_stats() if should_use_extension: diff --git a/tests/integration/serverless.yml b/tests/integration/serverless.yml index 9bb8a79b4..27112f542 100644 --- a/tests/integration/serverless.yml +++ b/tests/integration/serverless.yml @@ -11,6 +11,7 @@ provider: DD_TRACE_ENABLED: true DD_API_KEY: ${env:DD_API_KEY} DD_TRACE_MANAGED_SERVICES: true + DD_COLD_START_TRACING: false timeout: 15 deploymentBucket: name: integration-tests-serververless-deployment-bucket diff --git a/tests/test_cold_start.py b/tests/test_cold_start.py new file mode 100644 index 000000000..22e7dc9c5 --- /dev/null +++ b/tests/test_cold_start.py @@ -0,0 +1,200 @@ +import unittest +import datadog_lambda.cold_start as cold_start +from sys import modules, meta_path +import os +from unittest.mock import MagicMock + + +class TestColdStartTracingSetup(unittest.TestCase): + def test_initialize_cold_start_tracing(self): + cold_start.initialize_cold_start_tracing() # testing double wrapping + cold_start.initialize_cold_start_tracing() + cold_start.reset_node_stacks() + for module_name in ["ast", "dis", "inspect"]: + if module_name in modules: + del modules[module_name] + import inspect # import some package + + self.assertTrue(inspect.ismodule(inspect)) + self.assertEqual(len(cold_start.root_nodes), 1) + self.assertEqual(cold_start.root_nodes[0].module_name, "inspect") + + def test_bad_importer_find_spec_attribute_error(self): + mock_importer = object() # AttributeError when accessing find_spec + meta_path.append(mock_importer) + cold_start.initialize_cold_start_tracing() # safe to call + meta_path.pop() + + def test_not_wrapping_case(self): + os.environ["DD_COLD_START_TRACING"] = "false" + mock_importer = MagicMock() + mock_module_spec = MagicMock() + mock_module_spec.name = "test_name" + mock_loader = object() + mock_module_spec.loader = mock_loader + + def find_spec(*args, **kwargs): + return mock_module_spec + + mock_importer.find_spec = find_spec + meta_path.append(mock_importer) + cold_start.initialize_cold_start_tracing() + self.assertFalse(mock_loader in cold_start.already_wrapped_loaders) + meta_path.pop() + os.environ["DD_COLD_START_TRACING"] = "true" + + def test_exec_module_failure_case(self): + mock_importer = MagicMock() + mock_module_spec = MagicMock() + mock_module_spec.name = "test_name" + mock_loader = MagicMock() + + def bad_exec_module(*args, **kwargs): + raise Exception("Module failed to load") + + mock_loader.exec_module = bad_exec_module + mock_module_spec.loader = mock_loader + + def find_spec(*args, **kwargs): + return mock_module_spec + + mock_importer.find_spec = find_spec + meta_path.insert(0, mock_importer) + cold_start.initialize_cold_start_tracing() + cold_start.reset_node_stacks() + try: + import dummy_module + except Exception as e: + self.assertEqual(str(e), "Module failed to load") + self.assertEqual(len(cold_start.root_nodes), 1) + self.assertEqual(cold_start.root_nodes[0].module_name, mock_module_spec.name) + meta_path.pop(0) + + +class TestColdStartTracer(unittest.TestCase): + def setUp(self) -> None: + mock_tracer = MagicMock() + self.output_spans = [] + self.shared_mock_span = MagicMock() + self.shared_mock_span.current_spans = [] + self.finish_call_count = 0 + + def _finish(finish_time_s): + module_name = self.shared_mock_span.current_spans.pop() + self.output_spans.append(module_name) + self.finish_call_count += 1 + + self.shared_mock_span.finish = _finish + + def _trace(*args, **kwargs): + module_name = kwargs["resource"] + self.shared_mock_span.current_spans.append(module_name) + return self.shared_mock_span + + mock_tracer.trace = _trace + self.mock_activate = MagicMock() + mock_tracer.context_provider.activate = self.mock_activate + self.mock_trace_ctx = MagicMock() + self.first_node_start_time_ns = 1676217209680116000 + self.cold_start_tracer = cold_start.ColdStartTracer( + mock_tracer, + "unittest_cold_start", + self.first_node_start_time_ns + 2e9, + self.mock_trace_ctx, + 3, + ["ignored_module_a", "ignored_module_b"], + ) + self.test_time_unit = (self.cold_start_tracer.min_duration_ms + 1) * 1e6 + + def test_trace_empty_root_nodes(self): + self.cold_start_tracer.trace([]) + self.assertEqual(len(self.output_spans), 0) + + def test_trace_one_root_node_no_children(self): + node_0 = cold_start.ImportNode("node_0", None, self.first_node_start_time_ns) + node_0.end_time_ns = self.first_node_start_time_ns + 4e6 + self.cold_start_tracer.trace([node_0]) + self.mock_activate.assert_called_once_with(self.mock_trace_ctx) + self.assertEqual(self.output_spans, ["node_0", "unittest_cold_start"]) + + def test_trace_one_root_node_with_children(self): + node_0 = cold_start.ImportNode("node_0", None, self.first_node_start_time_ns) + node_0.end_time_ns = self.first_node_start_time_ns + self.test_time_unit * 2 + node_1 = cold_start.ImportNode("node_1", None, self.first_node_start_time_ns) + node_1.end_time_ns = self.first_node_start_time_ns + self.test_time_unit + node_2 = cold_start.ImportNode( + "node_2", None, self.first_node_start_time_ns + self.test_time_unit + ) + node_2.end_time_ns = self.first_node_start_time_ns + self.test_time_unit * 2 + node_3 = cold_start.ImportNode("node_3", None, self.first_node_start_time_ns) + node_3.end_time_ns = self.first_node_start_time_ns + self.test_time_unit + nodes = [node_0] + node_0.children = [node_1, node_2] + node_1.children = [node_3] + self.cold_start_tracer.trace(nodes) + self.mock_activate.assert_called_with(self.mock_trace_ctx) + self.assertEqual(self.finish_call_count, 5) + self.assertEqual(self.mock_activate.call_count, 2) + self.assertEqual( + self.output_spans, + ["node_3", "node_1", "node_2", "node_0", "unittest_cold_start"], + ) + + def test_trace_multiple_root_nodes(self): + node_0 = cold_start.ImportNode("node_0", None, self.first_node_start_time_ns) + node_0.end_time_ns = self.first_node_start_time_ns + self.test_time_unit * 2 + node_1 = cold_start.ImportNode( + "node_1", None, self.first_node_start_time_ns + self.test_time_unit * 2 + ) + node_1.end_time_ns = self.first_node_start_time_ns + self.test_time_unit * 3 + node_2 = cold_start.ImportNode("node_2", None, self.first_node_start_time_ns) + node_2.end_time_ns = self.first_node_start_time_ns + self.test_time_unit + node_3 = cold_start.ImportNode( + "node_3", None, self.first_node_start_time_ns + self.test_time_unit + ) + node_3.end_time_ns = self.first_node_start_time_ns + self.test_time_unit * 2 + node_4 = cold_start.ImportNode( + "node_4", None, self.first_node_start_time_ns + self.test_time_unit * 2 + ) + node_4.end_time_ns = self.first_node_start_time_ns + self.test_time_unit * 3 + nodes = [node_0, node_1] + node_0.children = [node_2, node_3] + node_1.children = [node_4] + self.cold_start_tracer.trace(nodes) + self.mock_activate.assert_called_with(self.mock_trace_ctx) + self.assertEqual(self.finish_call_count, 6) + self.assertEqual(self.mock_activate.call_count, 3) + self.assertEqual( + self.output_spans, + ["node_4", "node_1", "node_2", "node_3", "node_0", "unittest_cold_start"], + ) + + def test_trace_min_duration(self): + node_0 = cold_start.ImportNode("node_0", None, self.first_node_start_time_ns) + node_0.end_time_ns = ( + self.first_node_start_time_ns + + self.cold_start_tracer.min_duration_ms * 1e6 + - 1e5 + ) + self.cold_start_tracer.trace([node_0]) + self.mock_activate.assert_called_once_with(self.mock_trace_ctx) + self.assertEqual(self.output_spans, ["unittest_cold_start"]) + + def test_trace_ignore_libs(self): + node_0 = cold_start.ImportNode("node_0", None, self.first_node_start_time_ns) + node_0.end_time_ns = self.first_node_start_time_ns + self.test_time_unit + node_1 = cold_start.ImportNode( + "ignored_module_a", + None, + self.first_node_start_time_ns + self.test_time_unit, + ) + node_1.end_time_ns = self.first_node_start_time_ns + self.test_time_unit * 2 + node_2 = cold_start.ImportNode( + "ignored_module_b", None, self.first_node_start_time_ns + ) + node_2.end_time_ns = self.first_node_start_time_ns + self.test_time_unit + nodes = [node_0, node_1] + node_0.children = [node_2] + self.cold_start_tracer.trace(nodes) + self.mock_activate.assert_called_once_with(self.mock_trace_ctx) + self.assertEqual(self.output_spans, ["node_0", "unittest_cold_start"]) From 0643a580096f07f2ebc6fa7967fd1bdf30b79fa2 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Mon, 13 Feb 2023 16:38:08 -0500 Subject: [PATCH 038/403] v4.68.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 812da8f50..4353970f8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "4.67.0" +version = "4.68.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From b287d67e32910acf11205899b1ce853d864b3cd2 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 27 Feb 2023 16:11:04 -0500 Subject: [PATCH 039/403] update snapshots (#300) Co-authored-by: joeyzhao2018 --- .../snapshots/logs/async-metrics_python37.log | 18 +++++++++++ .../snapshots/logs/async-metrics_python38.log | 18 +++++++++++ .../snapshots/logs/async-metrics_python39.log | 18 +++++++++++ .../snapshots/logs/sync-metrics_python37.log | 31 +++++++++++++++++-- .../snapshots/logs/sync-metrics_python38.log | 29 ++++++++++++++++- .../snapshots/logs/sync-metrics_python39.log | 27 ++++++++++++++++ 6 files changed, 138 insertions(+), 3 deletions(-) diff --git a/tests/integration/snapshots/logs/async-metrics_python37.log b/tests/integration/snapshots/logs/async-metrics_python37.log index 9950c2d80..5639ac2fa 100644 --- a/tests/integration/snapshots/logs/async-metrics_python37.log +++ b/tests/integration/snapshots/logs/async-metrics_python37.log @@ -121,6 +121,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -143,6 +144,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -274,6 +276,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -296,6 +299,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -420,6 +424,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -442,6 +447,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -581,6 +587,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -603,6 +610,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -734,6 +742,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -756,6 +765,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -884,6 +894,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -906,6 +917,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1035,6 +1047,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1057,6 +1070,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1185,6 +1199,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1207,6 +1222,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1343,6 +1359,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1365,6 +1382,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", diff --git a/tests/integration/snapshots/logs/async-metrics_python38.log b/tests/integration/snapshots/logs/async-metrics_python38.log index d98aeb4b6..7b86e0eb4 100644 --- a/tests/integration/snapshots/logs/async-metrics_python38.log +++ b/tests/integration/snapshots/logs/async-metrics_python38.log @@ -121,6 +121,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -143,6 +144,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -274,6 +276,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -296,6 +299,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -420,6 +424,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -442,6 +447,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -581,6 +587,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -603,6 +610,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -734,6 +742,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -756,6 +765,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -884,6 +894,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -906,6 +917,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1035,6 +1047,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1057,6 +1070,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1185,6 +1199,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1207,6 +1222,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1343,6 +1359,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1365,6 +1382,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", diff --git a/tests/integration/snapshots/logs/async-metrics_python39.log b/tests/integration/snapshots/logs/async-metrics_python39.log index ffd9017f8..01db495bc 100644 --- a/tests/integration/snapshots/logs/async-metrics_python39.log +++ b/tests/integration/snapshots/logs/async-metrics_python39.log @@ -121,6 +121,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -143,6 +144,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -274,6 +276,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -296,6 +299,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -420,6 +424,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -442,6 +447,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -581,6 +587,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -603,6 +610,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -734,6 +742,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -756,6 +765,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -884,6 +894,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -906,6 +917,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1035,6 +1047,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1057,6 +1070,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1185,6 +1199,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1207,6 +1222,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1343,6 +1359,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1365,6 +1382,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", diff --git a/tests/integration/snapshots/logs/sync-metrics_python37.log b/tests/integration/snapshots/logs/sync-metrics_python37.log index aa4867cc7..0096018cc 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python37.log +++ b/tests/integration/snapshots/logs/sync-metrics_python37.log @@ -101,6 +101,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -123,6 +124,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -137,7 +139,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] } HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} -END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB { "traces": [ [ @@ -154,6 +155,7 @@ END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "component": "requests", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", @@ -172,6 +174,7 @@ END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB ] ] } +END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB START { "m": "aws.lambda.enhanced.invocations", @@ -269,6 +272,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -291,6 +295,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -321,6 +326,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "component": "requests", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", @@ -430,6 +436,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -452,6 +459,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -482,6 +490,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "component": "requests", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", @@ -606,6 +615,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -628,6 +638,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -658,6 +669,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "component": "requests", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", @@ -774,6 +786,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -796,6 +809,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -810,7 +824,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] } HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} -END Duration: XXXX ms Memory Used: XXXX MB { "traces": [ [ @@ -827,6 +840,7 @@ END Duration: XXXX ms Memory Used: XXXX MB "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "component": "requests", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", @@ -845,6 +859,7 @@ END Duration: XXXX ms Memory Used: XXXX MB ] ] } +END Duration: XXXX ms Memory Used: XXXX MB START { "m": "aws.lambda.enhanced.invocations", @@ -939,6 +954,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -961,6 +977,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -991,6 +1008,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "component": "requests", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", @@ -1105,6 +1123,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1127,6 +1146,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1157,6 +1177,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "component": "requests", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", @@ -1270,6 +1291,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1292,6 +1314,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1322,6 +1345,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "component": "requests", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", @@ -1443,6 +1467,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1465,6 +1490,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1495,6 +1521,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "component": "requests", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", diff --git a/tests/integration/snapshots/logs/sync-metrics_python38.log b/tests/integration/snapshots/logs/sync-metrics_python38.log index 182c708b3..141c006c0 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python38.log +++ b/tests/integration/snapshots/logs/sync-metrics_python38.log @@ -101,6 +101,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -123,6 +124,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -153,6 +155,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "component": "requests", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", @@ -269,6 +272,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -291,6 +295,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -321,6 +326,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "component": "requests", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", @@ -430,6 +436,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -452,6 +459,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -482,6 +490,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "component": "requests", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", @@ -606,6 +615,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -628,6 +638,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -658,6 +669,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "component": "requests", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", @@ -774,6 +786,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -796,6 +809,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -826,6 +840,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "component": "requests", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", @@ -939,6 +954,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -961,6 +977,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -991,6 +1008,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "component": "requests", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", @@ -1105,6 +1123,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1127,6 +1146,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1157,6 +1177,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "component": "requests", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", @@ -1270,6 +1291,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1292,6 +1314,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1322,6 +1345,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "component": "requests", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", @@ -1443,6 +1467,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1465,6 +1490,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1479,7 +1505,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] } HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} -END Duration: XXXX ms Memory Used: XXXX MB { "traces": [ [ @@ -1496,6 +1521,7 @@ END Duration: XXXX ms Memory Used: XXXX MB "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "component": "requests", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", @@ -1514,3 +1540,4 @@ END Duration: XXXX ms Memory Used: XXXX MB ] ] } +END Duration: XXXX ms Memory Used: XXXX MB diff --git a/tests/integration/snapshots/logs/sync-metrics_python39.log b/tests/integration/snapshots/logs/sync-metrics_python39.log index 50a636438..092ad4803 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -101,6 +101,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -123,6 +124,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -153,6 +155,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "component": "requests", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", @@ -269,6 +272,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -291,6 +295,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -321,6 +326,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "component": "requests", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", @@ -430,6 +436,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -452,6 +459,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -482,6 +490,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "component": "requests", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", @@ -606,6 +615,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -628,6 +638,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -658,6 +669,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "component": "requests", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", @@ -774,6 +786,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -796,6 +809,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -826,6 +840,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "component": "requests", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", @@ -939,6 +954,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -961,6 +977,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -991,6 +1008,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "component": "requests", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", @@ -1105,6 +1123,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1127,6 +1146,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1157,6 +1177,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "component": "requests", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", @@ -1270,6 +1291,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1292,6 +1314,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1322,6 +1345,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "component": "requests", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", @@ -1443,6 +1467,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1465,6 +1490,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "component": "requests", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1495,6 +1521,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "component": "requests", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", From 1a783e138d135893607042e33734cad1784942a1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 28 Feb 2023 10:33:07 -0500 Subject: [PATCH 040/403] update snapshots (#302) Co-authored-by: joeyzhao2018 --- .../snapshots/logs/async-metrics_python37.log | 27 ++++++---- .../snapshots/logs/async-metrics_python38.log | 27 ++++++---- .../snapshots/logs/async-metrics_python39.log | 27 ++++++---- .../snapshots/logs/sync-metrics_python37.log | 54 ++++++++++++------- .../snapshots/logs/sync-metrics_python38.log | 54 ++++++++++++------- .../snapshots/logs/sync-metrics_python39.log | 54 ++++++++++++------- 6 files changed, 162 insertions(+), 81 deletions(-) diff --git a/tests/integration/snapshots/logs/async-metrics_python37.log b/tests/integration/snapshots/logs/async-metrics_python37.log index 5639ac2fa..867203627 100644 --- a/tests/integration/snapshots/logs/async-metrics_python37.log +++ b/tests/integration/snapshots/logs/async-metrics_python37.log @@ -66,7 +66,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -225,7 +226,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "size_bytes": "26", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -374,7 +376,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "detail_type": "testdetail", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -532,7 +535,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -691,7 +695,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "partition_key": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -843,7 +848,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "object_etag": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -996,7 +1002,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "subject": "TestInvoke", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -1148,7 +1155,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "sender_id": "AIDAIENQZJOLO23YVJ4VO", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -1306,7 +1314,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, diff --git a/tests/integration/snapshots/logs/async-metrics_python38.log b/tests/integration/snapshots/logs/async-metrics_python38.log index 7b86e0eb4..763622aaf 100644 --- a/tests/integration/snapshots/logs/async-metrics_python38.log +++ b/tests/integration/snapshots/logs/async-metrics_python38.log @@ -66,7 +66,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -225,7 +226,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "size_bytes": "26", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -374,7 +376,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "detail_type": "testdetail", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -532,7 +535,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -691,7 +695,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "partition_key": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -843,7 +848,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "object_etag": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -996,7 +1002,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "subject": "TestInvoke", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -1148,7 +1155,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "sender_id": "AIDAIENQZJOLO23YVJ4VO", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -1306,7 +1314,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, diff --git a/tests/integration/snapshots/logs/async-metrics_python39.log b/tests/integration/snapshots/logs/async-metrics_python39.log index 01db495bc..bcf08b79d 100644 --- a/tests/integration/snapshots/logs/async-metrics_python39.log +++ b/tests/integration/snapshots/logs/async-metrics_python39.log @@ -66,7 +66,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -225,7 +226,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "size_bytes": "26", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -374,7 +376,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "detail_type": "testdetail", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -532,7 +535,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -691,7 +695,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "partition_key": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -843,7 +848,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "object_etag": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -996,7 +1002,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "subject": "TestInvoke", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -1148,7 +1155,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "sender_id": "AIDAIENQZJOLO23YVJ4VO", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -1306,7 +1314,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, diff --git a/tests/integration/snapshots/logs/sync-metrics_python37.log b/tests/integration/snapshots/logs/sync-metrics_python37.log index 0096018cc..466a0f365 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python37.log +++ b/tests/integration/snapshots/logs/sync-metrics_python37.log @@ -46,7 +46,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -160,7 +161,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -221,7 +223,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "size_bytes": "26", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -331,7 +334,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -386,7 +390,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "detail_type": "testdetail", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -495,7 +500,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -560,7 +566,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -674,7 +681,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -735,7 +743,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "partition_key": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -845,7 +854,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -903,7 +913,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "object_etag": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -1013,7 +1024,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -1072,7 +1084,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "subject": "TestInvoke", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -1182,7 +1195,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -1240,7 +1254,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "sender_id": "AIDAIENQZJOLO23YVJ4VO", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -1350,7 +1365,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -1414,7 +1430,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -1526,7 +1543,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, diff --git a/tests/integration/snapshots/logs/sync-metrics_python38.log b/tests/integration/snapshots/logs/sync-metrics_python38.log index 141c006c0..f8f4f4e5c 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python38.log +++ b/tests/integration/snapshots/logs/sync-metrics_python38.log @@ -46,7 +46,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -160,7 +161,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -221,7 +223,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "size_bytes": "26", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -331,7 +334,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -386,7 +390,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "detail_type": "testdetail", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -495,7 +500,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -560,7 +566,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -674,7 +681,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -735,7 +743,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "partition_key": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -845,7 +854,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -903,7 +913,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "object_etag": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -1013,7 +1024,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -1072,7 +1084,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "subject": "TestInvoke", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -1182,7 +1195,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -1240,7 +1254,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "sender_id": "AIDAIENQZJOLO23YVJ4VO", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -1350,7 +1365,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -1414,7 +1430,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -1526,7 +1543,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, diff --git a/tests/integration/snapshots/logs/sync-metrics_python39.log b/tests/integration/snapshots/logs/sync-metrics_python39.log index 092ad4803..d8b07cb16 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -46,7 +46,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -160,7 +161,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -221,7 +223,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "size_bytes": "26", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -331,7 +334,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -386,7 +390,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "detail_type": "testdetail", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -495,7 +500,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -560,7 +566,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -674,7 +681,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -735,7 +743,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "partition_key": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -845,7 +854,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -903,7 +913,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "object_etag": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -1013,7 +1024,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -1072,7 +1084,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "subject": "TestInvoke", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -1182,7 +1195,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -1240,7 +1254,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "sender_id": "AIDAIENQZJOLO23YVJ4VO", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -1350,7 +1365,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -1414,7 +1430,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, @@ -1526,7 +1543,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0" + "_dd.p.dm": "-0", + "language": "python" }, "metrics": { "_dd.agent_psr": 1, From 0630e096ea69caf428531483626876be2eb48e07 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Wed, 15 Mar 2023 13:26:40 -0400 Subject: [PATCH 041/403] use ddsaml2aws (#301) * use ddsaml2aws * update the size check limit --- scripts/check_layer_size.sh | 6 +++--- scripts/publish_prod.sh | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/scripts/check_layer_size.sh b/scripts/check_layer_size.sh index 8c4f05e6f..448686c90 100755 --- a/scripts/check_layer_size.sh +++ b/scripts/check_layer_size.sh @@ -7,8 +7,8 @@ # Compares layer size to threshold, and fails if below that threshold -# 6 mb size limit -MAX_LAYER_COMPRESSED_SIZE_KB=$(expr 6 \* 1024) +# 7 mb size limit +MAX_LAYER_COMPRESSED_SIZE_KB=$(expr 7 \* 1024) MAX_LAYER_UNCOMPRESSED_SIZE_KB=$(expr 24 \* 1024) @@ -36,4 +36,4 @@ do echo "Unzipped size exceeded limit $MAX_LAYER_UNCOMPRESSED_SIZE_KB kb" exit 1 fi -done \ No newline at end of file +done diff --git a/scripts/publish_prod.sh b/scripts/publish_prod.sh index fdc4c9d6c..a1bd55966 100755 --- a/scripts/publish_prod.sh +++ b/scripts/publish_prod.sh @@ -32,7 +32,7 @@ else fi # Ensure AWS access before proceeding -saml2aws login -a govcloud-us1-fed-human-engineering +ddsaml2aws login -a govcloud-us1-fed-human-engineering AWS_PROFILE=govcloud-us1-fed-human-engineering aws sts get-caller-identity aws-vault exec prod-engineering -- aws sts get-caller-identity @@ -71,7 +71,7 @@ echo "Publishing layers to commercial AWS regions" VERSION=$LAYER_VERSION aws-vault exec prod-engineering -- ./scripts/publish_layers.sh echo "Publishing layers to GovCloud AWS regions" -saml2aws login -a govcloud-us1-fed-human-engineering +ddsaml2aws login -a govcloud-us1-fed-human-engineering VERSION=$LAYER_VERSION AWS_PROFILE=govcloud-us1-fed-human-engineering ./scripts/publish_layers.sh read -p "Ready to publish $NEW_VERSION to PyPI (y/n)?" CONT From 5ce443bf63e9eebb9bee4a8fd930f7888fe75195 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Wed, 15 Mar 2023 15:04:48 -0400 Subject: [PATCH 042/403] redact dd-api-key (#307) * redact dd-api-key * fix flaky test_cold_start --- scripts/run_integration_tests.sh | 3 +- .../snapshots/logs/async-metrics_python37.log | 2 +- .../snapshots/logs/async-metrics_python38.log | 2 +- .../snapshots/logs/async-metrics_python39.log | 2 +- .../snapshots/logs/sync-metrics_python37.log | 38 +++++++++--------- .../snapshots/logs/sync-metrics_python38.log | 40 +++++++++---------- .../snapshots/logs/sync-metrics_python39.log | 38 +++++++++--------- tests/test_cold_start.py | 6 ++- 8 files changed, 67 insertions(+), 64 deletions(-) diff --git a/scripts/run_integration_tests.sh b/scripts/run_integration_tests.sh index 74c7239a2..6187c6eb3 100755 --- a/scripts/run_integration_tests.sh +++ b/scripts/run_integration_tests.sh @@ -187,6 +187,7 @@ for handler_name in "${LAMBDA_HANDLERS[@]}"; do sed '/^$/d' | # Normalize Lambda runtime REPORT logs sed -E 's/(RequestId|TraceId|SegmentId|Duration|init|Memory Used|"e"): [a-z0-9\.\-]+/\1: XXXX/g' | + sed -E 's/(python:3.[0-9]+\.v)[0-9]+/\1X/g' | # Normalize HTTP headers sed -E "s/(x-datadog-parent-id:|x-datadog-trace-id:|Content-Length:)[0-9]+/\1XXXX/g" | # Remove Account ID @@ -194,7 +195,7 @@ for handler_name in "${LAMBDA_HANDLERS[@]}"; do # Normalize timestamps in datapoints POSTed to DD sed -E 's/"points": \[\[[0-9\.]+,/"points": \[\[XXXX,/g' | # Strip API key from logged requests - sed -E "s/(api_key=|'api_key': ')[a-z0-9\.\-]+/\1XXXX/g" | + sed -E "s/(api_key=|'api_key': '|DD-API-KEY:)[a-z0-9\.\-]+/\1XXXX/g" | # Normalize package version so that these snapshots aren't broken on version bumps sed -E "s/(dd_lambda_layer:datadog-python[0-9]+_)[0-9]+\.[0-9]+\.[0-9]+/\1X\.X\.X/g" | sed -E "s/(datadog_lambda:v)([0-9]+\.[0-9]+\.[0-9])/\1XX/g" | diff --git a/tests/integration/snapshots/logs/async-metrics_python37.log b/tests/integration/snapshots/logs/async-metrics_python37.log index 867203627..038f7191a 100644 --- a/tests/integration/snapshots/logs/async-metrics_python37.log +++ b/tests/integration/snapshots/logs/async-metrics_python37.log @@ -1,4 +1,4 @@ -INIT_START Runtime Version: python:3.7.v22 Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 +INIT_START Runtime Version: python:3.7.vX Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 START { "m": "aws.lambda.enhanced.invocations", diff --git a/tests/integration/snapshots/logs/async-metrics_python38.log b/tests/integration/snapshots/logs/async-metrics_python38.log index 763622aaf..e38fa8f88 100644 --- a/tests/integration/snapshots/logs/async-metrics_python38.log +++ b/tests/integration/snapshots/logs/async-metrics_python38.log @@ -1,4 +1,4 @@ -INIT_START Runtime Version: python:3.8.v15 Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 +INIT_START Runtime Version: python:3.8.vX Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 START { "m": "aws.lambda.enhanced.invocations", diff --git a/tests/integration/snapshots/logs/async-metrics_python39.log b/tests/integration/snapshots/logs/async-metrics_python39.log index bcf08b79d..c3fa56238 100644 --- a/tests/integration/snapshots/logs/async-metrics_python39.log +++ b/tests/integration/snapshots/logs/async-metrics_python39.log @@ -1,4 +1,4 @@ -INIT_START Runtime Version: python:3.9.v16 Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 +INIT_START Runtime Version: python:3.9.vX Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 START { "m": "aws.lambda.enhanced.invocations", diff --git a/tests/integration/snapshots/logs/sync-metrics_python37.log b/tests/integration/snapshots/logs/sync-metrics_python37.log index 466a0f365..bbf21d602 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python37.log +++ b/tests/integration/snapshots/logs/sync-metrics_python37.log @@ -1,4 +1,4 @@ -INIT_START Runtime Version: python:3.7.v22 Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 +INIT_START Runtime Version: python:3.7.vX Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 START { "m": "aws.lambda.enhanced.invocations", @@ -139,7 +139,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -158,7 +158,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "component": "requests", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -312,7 +312,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -331,7 +331,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "component": "requests", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -478,7 +478,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -497,7 +497,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "component": "requests", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -659,7 +659,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -678,7 +678,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "component": "requests", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -832,7 +832,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -851,7 +851,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "component": "requests", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1002,7 +1002,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -1021,7 +1021,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "component": "requests", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1173,7 +1173,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -1192,7 +1192,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "component": "requests", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1343,7 +1343,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -1362,7 +1362,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "component": "requests", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1521,7 +1521,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -1540,7 +1540,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "component": "requests", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", diff --git a/tests/integration/snapshots/logs/sync-metrics_python38.log b/tests/integration/snapshots/logs/sync-metrics_python38.log index f8f4f4e5c..8c3fb728b 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python38.log +++ b/tests/integration/snapshots/logs/sync-metrics_python38.log @@ -1,4 +1,4 @@ -INIT_START Runtime Version: python:3.8.v15 Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 +INIT_START Runtime Version: python:3.8.vX Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 START { "m": "aws.lambda.enhanced.invocations", @@ -139,7 +139,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -158,7 +158,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "component": "requests", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -312,7 +312,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -331,7 +331,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "component": "requests", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -478,7 +478,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -497,7 +497,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "component": "requests", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -659,7 +659,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -678,7 +678,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "component": "requests", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -832,7 +832,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -851,7 +851,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "component": "requests", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1002,7 +1002,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +END Duration: XXXX ms Memory Used: XXXX MB { "traces": [ [ @@ -1021,7 +1022,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "component": "requests", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1039,7 +1040,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head ] ] } -END Duration: XXXX ms Memory Used: XXXX MB START { "m": "aws.lambda.enhanced.invocations", @@ -1173,7 +1173,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -1192,7 +1192,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "component": "requests", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1343,7 +1343,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -1362,7 +1362,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "component": "requests", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1521,7 +1521,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -1540,7 +1540,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "component": "requests", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", diff --git a/tests/integration/snapshots/logs/sync-metrics_python39.log b/tests/integration/snapshots/logs/sync-metrics_python39.log index d8b07cb16..1c7e071e0 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -1,4 +1,4 @@ -INIT_START Runtime Version: python:3.9.v16 Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 +INIT_START Runtime Version: python:3.9.vX Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 START { "m": "aws.lambda.enhanced.invocations", @@ -139,7 +139,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -158,7 +158,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "component": "requests", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -312,7 +312,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -331,7 +331,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "component": "requests", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -478,7 +478,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -497,7 +497,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "component": "requests", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -659,7 +659,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -678,7 +678,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "component": "requests", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -832,7 +832,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -851,7 +851,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "component": "requests", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1002,7 +1002,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -1021,7 +1021,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "component": "requests", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1173,7 +1173,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -1192,7 +1192,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "component": "requests", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1343,7 +1343,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -1362,7 +1362,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "component": "requests", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1521,7 +1521,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} { "traces": [ [ @@ -1540,7 +1540,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points?api_key=XXXX Head "_dd.origin": "lambda", "component": "requests", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points?", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", diff --git a/tests/test_cold_start.py b/tests/test_cold_start.py index 22e7dc9c5..0fc003260 100644 --- a/tests/test_cold_start.py +++ b/tests/test_cold_start.py @@ -66,9 +66,11 @@ def find_spec(*args, **kwargs): import dummy_module except Exception as e: self.assertEqual(str(e), "Module failed to load") - self.assertEqual(len(cold_start.root_nodes), 1) + meta_path.pop(0) # clean up first before checking test results + self.assertEqual( + len(cold_start.root_nodes), 1 + ) # push_node should have pushed the node self.assertEqual(cold_start.root_nodes[0].module_name, mock_module_spec.name) - meta_path.pop(0) class TestColdStartTracer(unittest.TestCase): From 1688b25ae82cd2c870472253b39cbd89122bbfcf Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Mon, 20 Mar 2023 11:34:51 -0400 Subject: [PATCH 043/403] feat: support LINEAGE field on x-ray trace ID (#310) * feat: support LINEAGE field on x-ray trace ID * fix: flake8 did not like my comment length * feat: temporarily comment out test * Update tests/test_cold_start.py Co-authored-by: Rey Abolofia * feat: use xtest instead of comment * feat: black --------- Co-authored-by: Rey Abolofia --- datadog_lambda/xray.py | 5 +++-- tests/test_cold_start.py | 2 +- tests/test_xray.py | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/datadog_lambda/xray.py b/datadog_lambda/xray.py index 2e3a2fe2e..bbaecb2ed 100644 --- a/datadog_lambda/xray.py +++ b/datadog_lambda/xray.py @@ -45,12 +45,13 @@ def build_segment_payload(payload): def parse_xray_header(raw_trace_id): - # Example: Root=1-5e272390-8c398be037738dc042009320;Parent=94ae789b969f1cc5;Sampled=1 + # Example: + # Root=1-5e272390-8c398be037738dc042009320;Parent=94ae789b969f1cc5;Sampled=1;Lineage=c6c5b1b9:0 logger.debug("Reading trace context from env var %s", raw_trace_id) if len(raw_trace_id) == 0: return None parts = raw_trace_id.split(";") - if len(parts) != 3: + if len(parts) < 3: return None root = parts[0].replace("Root=", "") parent = parts[1].replace("Parent=", "") diff --git a/tests/test_cold_start.py b/tests/test_cold_start.py index 0fc003260..8c4bb15e0 100644 --- a/tests/test_cold_start.py +++ b/tests/test_cold_start.py @@ -43,7 +43,7 @@ def find_spec(*args, **kwargs): meta_path.pop() os.environ["DD_COLD_START_TRACING"] = "true" - def test_exec_module_failure_case(self): + def xtest_exec_module_failure_case(self): mock_importer = MagicMock() mock_module_spec = MagicMock() mock_module_spec.name = "test_name" diff --git a/tests/test_xray.py b/tests/test_xray.py index d996f8e82..ac3594a99 100644 --- a/tests/test_xray.py +++ b/tests/test_xray.py @@ -37,7 +37,7 @@ def test_send_segment_sampled_out(self): os.environ["AWS_XRAY_DAEMON_ADDRESS"] = "fake-agent.com:8080" os.environ[ "_X_AMZN_TRACE_ID" - ] = "Root=1-5e272390-8c398be037738dc042009320;Parent=94ae789b969f1cc5;Sampled=0" + ] = "Root=1-5e272390-8c398be037738dc042009320;Parent=94ae789b969f1cc5;Sampled=0;Lineage=c6c5b1b9:0" with patch( "datadog_lambda.xray.send", MagicMock(return_value=None) @@ -50,7 +50,7 @@ def test_send_segment_sampled(self): os.environ["AWS_XRAY_DAEMON_ADDRESS"] = "fake-agent.com:8080" os.environ[ "_X_AMZN_TRACE_ID" - ] = "Root=1-5e272390-8c398be037738dc042009320;Parent=94ae789b969f1cc5;Sampled=1" + ] = "Root=1-5e272390-8c398be037738dc042009320;Parent=94ae789b969f1cc5;Sampled=1;Lineage=c6c5b1b9:0" with patch( "datadog_lambda.xray.send", MagicMock(return_value=None) ) as mock_send: From c87ff6b8de6e8897b1735889d9d7e94940292760 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Mon, 20 Mar 2023 16:12:41 -0400 Subject: [PATCH 044/403] fix the flaky test_exec_module_failure_case by enforcing the _cold_start= True (#311) --- tests/test_cold_start.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/tests/test_cold_start.py b/tests/test_cold_start.py index 8c4bb15e0..56636deca 100644 --- a/tests/test_cold_start.py +++ b/tests/test_cold_start.py @@ -7,7 +7,9 @@ class TestColdStartTracingSetup(unittest.TestCase): def test_initialize_cold_start_tracing(self): + cold_start._cold_start = True cold_start.initialize_cold_start_tracing() # testing double wrapping + cold_start._cold_start = True cold_start.initialize_cold_start_tracing() cold_start.reset_node_stacks() for module_name in ["ast", "dis", "inspect"]: @@ -22,6 +24,7 @@ def test_initialize_cold_start_tracing(self): def test_bad_importer_find_spec_attribute_error(self): mock_importer = object() # AttributeError when accessing find_spec meta_path.append(mock_importer) + cold_start._cold_start = True cold_start.initialize_cold_start_tracing() # safe to call meta_path.pop() @@ -38,12 +41,13 @@ def find_spec(*args, **kwargs): mock_importer.find_spec = find_spec meta_path.append(mock_importer) + cold_start._cold_start = True cold_start.initialize_cold_start_tracing() self.assertFalse(mock_loader in cold_start.already_wrapped_loaders) meta_path.pop() os.environ["DD_COLD_START_TRACING"] = "true" - def xtest_exec_module_failure_case(self): + def test_exec_module_failure_case(self): mock_importer = MagicMock() mock_module_spec = MagicMock() mock_module_spec.name = "test_name" @@ -60,6 +64,7 @@ def find_spec(*args, **kwargs): mock_importer.find_spec = find_spec meta_path.insert(0, mock_importer) + cold_start._cold_start = True cold_start.initialize_cold_start_tracing() cold_start.reset_node_stacks() try: From 411b29fcc710c96681ec7f03b034780ad43c37e0 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Wed, 22 Mar 2023 08:40:06 -0400 Subject: [PATCH 045/403] v4.69.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 4353970f8..fc9dd5091 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "4.68.0" +version = "4.69.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From ad8140a8aa784f73969e6967699621662ec3c3a8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 10 Apr 2023 17:27:12 -0400 Subject: [PATCH 046/403] update snapshots (#312) Co-authored-by: joeyzhao2018 --- .../snapshots/logs/async-metrics_python37.log | 36 +++++++--- .../snapshots/logs/async-metrics_python38.log | 36 +++++++--- .../snapshots/logs/async-metrics_python39.log | 36 +++++++--- .../snapshots/logs/sync-metrics_python37.log | 63 +++++++++++++----- .../snapshots/logs/sync-metrics_python38.log | 65 +++++++++++++------ .../snapshots/logs/sync-metrics_python39.log | 65 +++++++++++++------ 6 files changed, 218 insertions(+), 83 deletions(-) diff --git a/tests/integration/snapshots/logs/async-metrics_python37.log b/tests/integration/snapshots/logs/async-metrics_python37.log index 038f7191a..46a4f3364 100644 --- a/tests/integration/snapshots/logs/async-metrics_python37.log +++ b/tests/integration/snapshots/logs/async-metrics_python37.log @@ -70,8 +70,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -123,6 +123,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -146,6 +147,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -230,8 +232,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -279,6 +281,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -302,6 +305,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -380,8 +384,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -428,6 +432,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -451,6 +456,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -539,8 +545,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -592,6 +598,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -615,6 +622,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -699,8 +707,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -748,6 +756,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -771,6 +780,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -852,8 +862,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -901,6 +911,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -924,6 +935,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1006,8 +1018,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1055,6 +1067,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1078,6 +1091,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1159,8 +1173,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1208,6 +1222,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1231,6 +1246,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1318,8 +1334,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1369,6 +1385,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1392,6 +1409,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", diff --git a/tests/integration/snapshots/logs/async-metrics_python38.log b/tests/integration/snapshots/logs/async-metrics_python38.log index e38fa8f88..f27dfcd99 100644 --- a/tests/integration/snapshots/logs/async-metrics_python38.log +++ b/tests/integration/snapshots/logs/async-metrics_python38.log @@ -70,8 +70,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -123,6 +123,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -146,6 +147,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -230,8 +232,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -279,6 +281,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -302,6 +305,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -380,8 +384,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -428,6 +432,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -451,6 +456,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -539,8 +545,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -592,6 +598,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -615,6 +622,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -699,8 +707,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -748,6 +756,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -771,6 +780,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -852,8 +862,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -901,6 +911,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -924,6 +935,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1006,8 +1018,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1055,6 +1067,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1078,6 +1091,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1159,8 +1173,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1208,6 +1222,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1231,6 +1246,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1318,8 +1334,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1369,6 +1385,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1392,6 +1409,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", diff --git a/tests/integration/snapshots/logs/async-metrics_python39.log b/tests/integration/snapshots/logs/async-metrics_python39.log index c3fa56238..1968de5e5 100644 --- a/tests/integration/snapshots/logs/async-metrics_python39.log +++ b/tests/integration/snapshots/logs/async-metrics_python39.log @@ -70,8 +70,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -123,6 +123,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -146,6 +147,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -230,8 +232,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -279,6 +281,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -302,6 +305,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -380,8 +384,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -428,6 +432,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -451,6 +456,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -539,8 +545,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -592,6 +598,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -615,6 +622,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -699,8 +707,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -748,6 +756,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -771,6 +780,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -852,8 +862,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -901,6 +911,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -924,6 +935,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1006,8 +1018,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1055,6 +1067,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1078,6 +1091,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1159,8 +1173,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1208,6 +1222,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1231,6 +1246,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1318,8 +1334,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1369,6 +1385,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1392,6 +1409,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", diff --git a/tests/integration/snapshots/logs/sync-metrics_python37.log b/tests/integration/snapshots/logs/sync-metrics_python37.log index bbf21d602..338532935 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python37.log +++ b/tests/integration/snapshots/logs/sync-metrics_python37.log @@ -50,8 +50,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -103,6 +103,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -126,6 +127,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -157,6 +159,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "runtime-id": "XXXX", "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", @@ -165,8 +168,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -227,8 +230,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -276,6 +279,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -299,6 +303,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -330,6 +335,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "runtime-id": "XXXX", "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", @@ -338,8 +344,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -394,8 +400,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -442,6 +448,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -465,6 +472,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -496,6 +504,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "runtime-id": "XXXX", "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", @@ -504,8 +513,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -570,8 +579,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -623,6 +632,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -646,6 +656,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -677,6 +688,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "runtime-id": "XXXX", "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", @@ -685,8 +697,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -747,8 +759,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -796,6 +808,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -819,6 +832,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -850,6 +864,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "runtime-id": "XXXX", "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", @@ -858,8 +873,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -917,8 +932,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -966,6 +981,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -989,6 +1005,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1020,6 +1037,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "runtime-id": "XXXX", "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", @@ -1028,8 +1046,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -1088,8 +1106,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1137,6 +1155,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1160,6 +1179,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1191,6 +1211,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "runtime-id": "XXXX", "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", @@ -1199,8 +1220,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -1258,8 +1279,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1307,6 +1328,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1330,6 +1352,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1361,6 +1384,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "runtime-id": "XXXX", "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", @@ -1369,8 +1393,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -1434,8 +1458,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1485,6 +1509,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1508,6 +1533,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1539,6 +1565,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "runtime-id": "XXXX", "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", @@ -1547,8 +1574,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 diff --git a/tests/integration/snapshots/logs/sync-metrics_python38.log b/tests/integration/snapshots/logs/sync-metrics_python38.log index 8c3fb728b..c62928a3d 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python38.log +++ b/tests/integration/snapshots/logs/sync-metrics_python38.log @@ -50,8 +50,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -103,6 +103,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -126,6 +127,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -157,6 +159,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "runtime-id": "XXXX", "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", @@ -165,8 +168,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -227,8 +230,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -276,6 +279,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -299,6 +303,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -330,6 +335,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "runtime-id": "XXXX", "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", @@ -338,8 +344,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -394,8 +400,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -442,6 +448,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -465,6 +472,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -496,6 +504,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "runtime-id": "XXXX", "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", @@ -504,8 +513,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -570,8 +579,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -623,6 +632,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -646,6 +656,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -677,6 +688,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "runtime-id": "XXXX", "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", @@ -685,8 +697,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -747,8 +759,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -796,6 +808,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -819,6 +832,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -850,6 +864,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "runtime-id": "XXXX", "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", @@ -858,8 +873,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -917,8 +932,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -966,6 +981,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -989,6 +1005,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1003,7 +1020,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] } HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} -END Duration: XXXX ms Memory Used: XXXX MB { "traces": [ [ @@ -1021,6 +1037,7 @@ END Duration: XXXX ms Memory Used: XXXX MB "runtime-id": "XXXX", "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", @@ -1029,8 +1046,8 @@ END Duration: XXXX ms Memory Used: XXXX MB "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -1040,6 +1057,7 @@ END Duration: XXXX ms Memory Used: XXXX MB ] ] } +END Duration: XXXX ms Memory Used: XXXX MB START { "m": "aws.lambda.enhanced.invocations", @@ -1088,8 +1106,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1137,6 +1155,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1160,6 +1179,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1191,6 +1211,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "runtime-id": "XXXX", "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", @@ -1199,8 +1220,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -1258,8 +1279,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1307,6 +1328,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1330,6 +1352,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1361,6 +1384,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "runtime-id": "XXXX", "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", @@ -1369,8 +1393,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -1434,8 +1458,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1485,6 +1509,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1508,6 +1533,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1539,6 +1565,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "runtime-id": "XXXX", "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", @@ -1547,8 +1574,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 diff --git a/tests/integration/snapshots/logs/sync-metrics_python39.log b/tests/integration/snapshots/logs/sync-metrics_python39.log index 1c7e071e0..fbde4bcda 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -50,8 +50,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -103,6 +103,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -126,6 +127,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -140,6 +142,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] } HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB { "traces": [ [ @@ -157,6 +160,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "runtime-id": "XXXX", "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", @@ -165,8 +169,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -176,7 +180,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept ] ] } -END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB START { "m": "aws.lambda.enhanced.invocations", @@ -227,8 +230,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -276,6 +279,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -299,6 +303,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -330,6 +335,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "runtime-id": "XXXX", "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", @@ -338,8 +344,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -394,8 +400,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -442,6 +448,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -465,6 +472,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -496,6 +504,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "runtime-id": "XXXX", "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", @@ -504,8 +513,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -570,8 +579,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -623,6 +632,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -646,6 +656,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -677,6 +688,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "runtime-id": "XXXX", "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", @@ -685,8 +697,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -747,8 +759,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -796,6 +808,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -819,6 +832,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -850,6 +864,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "runtime-id": "XXXX", "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", @@ -858,8 +873,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -917,8 +932,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -966,6 +981,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -989,6 +1005,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1020,6 +1037,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "runtime-id": "XXXX", "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", @@ -1028,8 +1046,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -1088,8 +1106,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1137,6 +1155,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1160,6 +1179,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1191,6 +1211,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "runtime-id": "XXXX", "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", @@ -1199,8 +1220,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -1258,8 +1279,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1307,6 +1328,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1330,6 +1352,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1361,6 +1384,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "runtime-id": "XXXX", "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", @@ -1369,8 +1393,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -1434,8 +1458,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1485,6 +1509,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", "http.status_code": "200", @@ -1508,6 +1533,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "meta": { "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", "http.status_code": "200", @@ -1539,6 +1565,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "runtime-id": "XXXX", "_dd.origin": "lambda", "component": "requests", + "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.status_code": "202", @@ -1547,8 +1574,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "language": "python" }, "metrics": { - "_dd.agent_psr": 1, "process_id": XXXX, + "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 From ce5328077fcb47924432bd81b963c8cd7500982a Mon Sep 17 00:00:00 2001 From: kimi <47579703+kimi-p@users.noreply.github.com> Date: Wed, 12 Apr 2023 11:01:21 -0400 Subject: [PATCH 047/403] Lambda and Step Functions Span Linking (#320) --- datadog_lambda/tracing.py | 41 ++++++++++++++++++++++++++++++++++++++- datadog_lambda/trigger.py | 6 +++++- tests/test_tracing.py | 26 ++++++++++++++++++++++--- 3 files changed, 68 insertions(+), 5 deletions(-) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 19ef8c040..67836e461 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -2,7 +2,7 @@ # under the Apache License Version 2.0. # This product includes software developed at Datadog (https://www.datadoghq.com/). # Copyright 2019 Datadog, Inc. - +import hashlib import logging import os import json @@ -328,6 +328,39 @@ def extract_context_from_kinesis_event(event, lambda_context): return extract_context_from_lambda_context(lambda_context) +def _deterministic_md5_hash(s: str) -> str: + """MD5 here is to generate trace_id, not for any encryption.""" + hex_number = hashlib.md5(s.encode("ascii")).hexdigest() + binary = bin(int(hex_number, 16)) + binary_str = str(binary) + binary_str_remove_0b = binary_str[2:].rjust(128, "0") + most_significant_64_bits_without_leading_1 = "0" + binary_str_remove_0b[1:-64] + result = str(int(most_significant_64_bits_without_leading_1, 2)) + if result == "0" * 64: + return "1" + return result + + +def extract_context_from_step_functions(event, lambda_context): + """ + Only extract datadog trace context when Step Functions Context Object is injected + into lambda's event dict. + """ + try: + execution_id = event.get("Execution").get("Id") + state_name = event.get("State").get("Name") + state_entered_time = event.get("State").get("EnteredTime") + trace_id = _deterministic_md5_hash(execution_id) + parent_id = _deterministic_md5_hash( + execution_id + "#" + state_name + "#" + state_entered_time + ) + sampling_priority = SamplingPriority.AUTO_KEEP + return trace_id, parent_id, sampling_priority + except Exception as e: + logger.debug("The Step Functions trace extractor returned with error %s", e) + return extract_context_from_lambda_context(lambda_context) + + def extract_context_custom_extractor(extractor, event, lambda_context): """ Extract Datadog trace context using a custom trace extractor function @@ -440,6 +473,12 @@ def extract_dd_trace_context( parent_id, sampling_priority, ) = extract_context_from_kinesis_event(event, lambda_context) + elif event_source.equals(EventTypes.STEPFUNCTIONS): + ( + trace_id, + parent_id, + sampling_priority, + ) = extract_context_from_step_functions(event, lambda_context) else: trace_id, parent_id, sampling_priority = extract_context_from_lambda_context( lambda_context diff --git a/datadog_lambda/trigger.py b/datadog_lambda/trigger.py index 0576e3f99..bbb44b30e 100644 --- a/datadog_lambda/trigger.py +++ b/datadog_lambda/trigger.py @@ -34,12 +34,13 @@ class EventTypes(_stringTypedEnum): CLOUDWATCH_EVENTS = "cloudwatch-events" CLOUDFRONT = "cloudfront" DYNAMODB = "dynamodb" + EVENTBRIDGE = "eventbridge" KINESIS = "kinesis" LAMBDA_FUNCTION_URL = "lambda-function-url" S3 = "s3" SNS = "sns" SQS = "sqs" - EVENTBRIDGE = "eventbridge" + STEPFUNCTIONS = "states" class EventSubtypes(_stringTypedEnum): @@ -145,6 +146,9 @@ def parse_event_source(event: dict) -> _EventSource: if event.get("source") == "aws.events" or has_event_categories: event_source = _EventSource(EventTypes.CLOUDWATCH_EVENTS) + if "Execution" in event and "StateMachine" in event and "State" in event: + event_source = _EventSource(EventTypes.STEPFUNCTIONS) + event_record = get_first_record(event) if event_record: aws_event_source = event_record.get( diff --git a/tests/test_tracing.py b/tests/test_tracing.py index 25865d5e6..e19c66aa4 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -5,7 +5,7 @@ from unittest.mock import MagicMock, Mock, patch, call import ddtrace -from ddtrace.constants import ERROR_MSG, ERROR_TYPE + from ddtrace import tracer from ddtrace.context import Context @@ -15,6 +15,7 @@ XraySubsegment, ) from datadog_lambda.tracing import ( + _deterministic_md5_hash, create_inferred_span, extract_dd_trace_context, create_dd_dummy_metadata_subsegment, @@ -1334,9 +1335,7 @@ def test_create_inferred_span_from_api_gateway_event_no_apiid(self): event = json.load(event) ctx = get_mock_context() ctx.aws_request_id = "123" - print(event) span = create_inferred_span(event, ctx) - print(span) self.assertEqual(span.get_tag("operation_name"), "aws.apigateway.rest") self.assertEqual( span.service, @@ -1389,3 +1388,24 @@ def test_no_error_with_nonetype_headers(self): lambda_ctx, ) self.assertEqual(ctx, None) + + +class TestStepFunctionsTraceContext(unittest.TestCase): + def test_deterministic_m5_hash(self): + result = _deterministic_md5_hash("some_testing_random_string") + self.assertEqual("2251275791555400689", result) + + def test_deterministic_m5_hash__result_the_same_as_backend(self): + result = _deterministic_md5_hash( + "arn:aws:states:sa-east-1:601427271234:express:DatadogStateMachine:acaf1a67-336a-e854-1599-2a627eb2dd8a" + ":c8baf081-31f1-464d-971f-70cb17d01111#step-one#2022-12-08T21:08:19.224Z" + ) + self.assertEqual("8034507082463708833", result) + + def test_deterministic_m5_hash__always_leading_with_zero(self): + for i in range(100): + result = _deterministic_md5_hash(str(i)) + result_in_binary = bin(int(result)) + # Leading zeros will be omitted, so only test for full 64 bits present + if len(result_in_binary) == 66: # "0b" + 64 bits. + self.assertTrue(result_in_binary.startswith("0b0")) From 12b2c8bf6feeba6e9ccc682d7ae5db9d1044b192 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Wed, 12 Apr 2023 14:14:36 -0400 Subject: [PATCH 048/403] Modify end time of lambda load span to be last cold start node's end_time (#319) * modify endtime of lambda load span to be the last cold start node endtime --- datadog_lambda/cold_start.py | 13 +++++++++---- datadog_lambda/tracing.py | 2 +- scripts/build_layers.sh | 2 +- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/datadog_lambda/cold_start.py b/datadog_lambda/cold_start.py index fdb43b818..a10a2ad7a 100644 --- a/datadog_lambda/cold_start.py +++ b/datadog_lambda/cold_start.py @@ -134,14 +134,16 @@ def __init__( self, tracer, function_name, - cold_start_span_finish_time_ns, + current_span_start_time_ns, trace_ctx, min_duration_ms: int, - ignored_libs: List[str] = [], + ignored_libs: List[str] = None, ): + if ignored_libs is None: + ignored_libs = [] self._tracer = tracer self.function_name = function_name - self.cold_start_span_finish_time_ns = cold_start_span_finish_time_ns + self.current_span_start_time_ns = current_span_start_time_ns self.min_duration_ms = min_duration_ms self.trace_ctx = trace_ctx self.ignored_libs = ignored_libs @@ -151,11 +153,14 @@ def trace(self, root_nodes: List[ImportNode] = root_nodes): if not root_nodes: return cold_start_span_start_time_ns = root_nodes[0].start_time_ns + cold_start_span_end_time_ns = min( + root_nodes[-1].end_time_ns, self.current_span_start_time_ns + ) cold_start_span = self.create_cold_start_span(cold_start_span_start_time_ns) while root_nodes: root_node = root_nodes.pop() self.trace_tree(root_node, cold_start_span) - self.finish_span(cold_start_span, self.cold_start_span_finish_time_ns) + self.finish_span(cold_start_span, cold_start_span_end_time_ns) def trace_tree(self, import_node: ImportNode, parent_span): if ( diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 67836e461..7879697ee 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -385,7 +385,7 @@ def is_authorizer_response(response) -> bool: and response["principalId"] and response["policyDocument"] ) - except KeyError: + except (KeyError, AttributeError): pass except Exception as e: logger.debug("unknown error while checking is_authorizer_response %s", e) diff --git a/scripts/build_layers.sh b/scripts/build_layers.sh index 0bf67f493..e1bd557e9 100755 --- a/scripts/build_layers.sh +++ b/scripts/build_layers.sh @@ -68,7 +68,7 @@ mkdir $LAYER_DIR for python_version in "${PYTHON_VERSIONS[@]}" do - if [ "$python_version" == "3.8" ] || [ "$python_version" == "3.9" ]; then + if [ "$python_version" != "3.7" ]; then echo "Building layer for Python ${python_version} arch=arm64" docker_build_zip ${python_version} $LAYER_DIR/${LAYER_FILES_PREFIX}-arm64-${python_version}.zip arm64 fi From dc51d5250fba737c345246610cad1a6a99af3ada Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Wed, 12 Apr 2023 15:27:03 -0400 Subject: [PATCH 049/403] v4.70.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index fc9dd5091..3508fcb31 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "4.69.0" +version = "4.70.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 0cfae172953e35143d9f77d30802eae491d84d7f Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Mon, 17 Apr 2023 14:27:03 -0400 Subject: [PATCH 050/403] adding python3.10 (#324) * adding python3.10 * stringify python-version params in build.yml --- .github/workflows/build.yml | 4 +- .vscode/launch.json | 15 + .vscode/settings.json | 5 +- README.md | 2 +- pyproject.toml | 1 + scripts/add_new_region.sh | 12 +- scripts/build_layers.sh | 2 +- scripts/check_layer_size.sh | 2 +- scripts/list_layers.sh | 6 +- scripts/publish_layers.sh | 10 +- scripts/run_integration_tests.sh | 7 +- scripts/run_tests.sh | 4 +- scripts/sign_layers.sh | 6 +- .../logs/async-metrics_python310.log | 1426 +++++++++++++++ .../snapshots/logs/sync-metrics_python310.log | 1588 +++++++++++++++++ ...son => async-metrics_api-gateway-get.json} | 0 ...amodb.json => async-metrics_dynamodb.json} | 0 ... => async-metrics_eventbridge-custom.json} | 0 ....json => async-metrics_http-api copy.json} | 0 ...p-api.json => async-metrics_http-api.json} | 0 ...inesis.json => async-metrics_kinesis.json} | 0 ...sync-metrics_python27_api-gateway-get.json | 8 - .../async-metrics_python27_sns.json | 10 - .../async-metrics_python27_sqs.json | 11 - ...sync-metrics_python38_api-gateway-get.json | 8 - .../async-metrics_python38_dynamodb.json | 8 - ...c-metrics_python38_eventbridge-custom.json | 8 - .../async-metrics_python38_kinesis.json | 8 - .../async-metrics_python38_s3.json | 8 - .../async-metrics_python38_sns.json | 10 - .../async-metrics_python38_sqs.json | 11 - .../async-metrics_python38_websocket.json | 8 - ...sync-metrics_python39_api-gateway-get.json | 8 - .../async-metrics_python39_dynamodb.json | 8 - ...c-metrics_python39_eventbridge-custom.json | 8 - .../async-metrics_python39_http-api.json | 8 - .../async-metrics_python39_kinesis.json | 8 - .../async-metrics_python39_s3.json | 8 - .../async-metrics_python39_sns.json | 10 - .../async-metrics_python39_sqs.json | 11 - .../async-metrics_python39_websocket.json | 8 - ...python36_s3.json => async-metrics_s3.json} | 0 ...thon36_sns.json => async-metrics_sns.json} | 0 ...thon36_sqs.json => async-metrics_sqs.json} | 0 ...cket.json => async-metrics_websocket.json} | 0 ...json => sync-metrics_api-gateway-get.json} | 0 ...namodb.json => sync-metrics_dynamodb.json} | 0 ...n => sync-metrics_eventbridge-custom.json} | 0 ...tp-api.json => sync-metrics_http-api.json} | 0 ...kinesis.json => sync-metrics_kinesis.json} | 0 ...sync-metrics_python27_api-gateway-get.json | 8 - .../sync-metrics_python27_sns.json | 10 - .../sync-metrics_python27_sqs.json | 11 - ...sync-metrics_python36_api-gateway-get.json | 8 - .../sync-metrics_python36_dynamodb.json | 8 - ...c-metrics_python36_eventbridge-custom.json | 8 - .../sync-metrics_python36_http-api.json | 8 - .../sync-metrics_python36_kinesis.json | 8 - .../sync-metrics_python36_s3.json | 8 - .../sync-metrics_python36_sns.json | 10 - .../sync-metrics_python36_sqs.json | 11 - .../sync-metrics_python36_websocket.json | 8 - ...sync-metrics_python37_api-gateway-get.json | 8 - .../sync-metrics_python37_dynamodb.json | 8 - ...c-metrics_python37_eventbridge-custom.json | 8 - .../sync-metrics_python37_http-api.json | 8 - .../sync-metrics_python37_kinesis.json | 8 - .../sync-metrics_python37_s3.json | 8 - .../sync-metrics_python37_sns.json | 10 - .../sync-metrics_python37_sqs.json | 11 - .../sync-metrics_python37_websocket.json | 8 - ...sync-metrics_python38_api-gateway-get.json | 8 - .../sync-metrics_python38_dynamodb.json | 8 - ...c-metrics_python38_eventbridge-custom.json | 8 - .../sync-metrics_python38_http-api.json | 8 - .../sync-metrics_python38_kinesis.json | 8 - .../sync-metrics_python38_s3.json | 8 - .../sync-metrics_python38_sns.json | 10 - .../sync-metrics_python38_sqs.json | 11 - .../sync-metrics_python38_websocket.json | 8 - ...sync-metrics_python39_api-gateway-get.json | 8 - .../sync-metrics_python39_dynamodb.json | 8 - ...c-metrics_python39_eventbridge-custom.json | 8 - .../sync-metrics_python39_http-api.json | 8 - .../sync-metrics_python39_kinesis.json | 8 - .../sync-metrics_python39_s3.json | 8 - .../sync-metrics_python39_sns.json | 10 - .../sync-metrics_python39_sqs.json | 11 - .../sync-metrics_python39_websocket.json | 8 - ..._python37_s3.json => sync-metrics_s3.json} | 0 ...ython37_sns.json => sync-metrics_sns.json} | 0 ...ython37_sqs.json => sync-metrics_sqs.json} | 0 ...ocket.json => sync-metrics_websocket.json} | 0 93 files changed, 3063 insertions(+), 539 deletions(-) create mode 100644 .vscode/launch.json create mode 100644 tests/integration/snapshots/logs/async-metrics_python310.log create mode 100644 tests/integration/snapshots/logs/sync-metrics_python310.log rename tests/integration/snapshots/return_values/{async-metrics_python36_api-gateway-get.json => async-metrics_api-gateway-get.json} (100%) rename tests/integration/snapshots/return_values/{async-metrics_python36_dynamodb.json => async-metrics_dynamodb.json} (100%) rename tests/integration/snapshots/return_values/{async-metrics_python36_eventbridge-custom.json => async-metrics_eventbridge-custom.json} (100%) rename tests/integration/snapshots/return_values/{async-metrics_python36_http-api.json => async-metrics_http-api copy.json} (100%) rename tests/integration/snapshots/return_values/{async-metrics_python37_http-api.json => async-metrics_http-api.json} (100%) rename tests/integration/snapshots/return_values/{async-metrics_python36_kinesis.json => async-metrics_kinesis.json} (100%) delete mode 100644 tests/integration/snapshots/return_values/async-metrics_python27_api-gateway-get.json delete mode 100644 tests/integration/snapshots/return_values/async-metrics_python27_sns.json delete mode 100644 tests/integration/snapshots/return_values/async-metrics_python27_sqs.json delete mode 100644 tests/integration/snapshots/return_values/async-metrics_python38_api-gateway-get.json delete mode 100644 tests/integration/snapshots/return_values/async-metrics_python38_dynamodb.json delete mode 100644 tests/integration/snapshots/return_values/async-metrics_python38_eventbridge-custom.json delete mode 100644 tests/integration/snapshots/return_values/async-metrics_python38_kinesis.json delete mode 100644 tests/integration/snapshots/return_values/async-metrics_python38_s3.json delete mode 100644 tests/integration/snapshots/return_values/async-metrics_python38_sns.json delete mode 100644 tests/integration/snapshots/return_values/async-metrics_python38_sqs.json delete mode 100644 tests/integration/snapshots/return_values/async-metrics_python38_websocket.json delete mode 100644 tests/integration/snapshots/return_values/async-metrics_python39_api-gateway-get.json delete mode 100644 tests/integration/snapshots/return_values/async-metrics_python39_dynamodb.json delete mode 100644 tests/integration/snapshots/return_values/async-metrics_python39_eventbridge-custom.json delete mode 100644 tests/integration/snapshots/return_values/async-metrics_python39_http-api.json delete mode 100644 tests/integration/snapshots/return_values/async-metrics_python39_kinesis.json delete mode 100644 tests/integration/snapshots/return_values/async-metrics_python39_s3.json delete mode 100644 tests/integration/snapshots/return_values/async-metrics_python39_sns.json delete mode 100644 tests/integration/snapshots/return_values/async-metrics_python39_sqs.json delete mode 100644 tests/integration/snapshots/return_values/async-metrics_python39_websocket.json rename tests/integration/snapshots/return_values/{async-metrics_python36_s3.json => async-metrics_s3.json} (100%) rename tests/integration/snapshots/return_values/{async-metrics_python36_sns.json => async-metrics_sns.json} (100%) rename tests/integration/snapshots/return_values/{async-metrics_python36_sqs.json => async-metrics_sqs.json} (100%) rename tests/integration/snapshots/return_values/{async-metrics_python36_websocket.json => async-metrics_websocket.json} (100%) rename tests/integration/snapshots/return_values/{async-metrics_python37_api-gateway-get.json => sync-metrics_api-gateway-get.json} (100%) rename tests/integration/snapshots/return_values/{async-metrics_python37_dynamodb.json => sync-metrics_dynamodb.json} (100%) rename tests/integration/snapshots/return_values/{async-metrics_python37_eventbridge-custom.json => sync-metrics_eventbridge-custom.json} (100%) rename tests/integration/snapshots/return_values/{async-metrics_python38_http-api.json => sync-metrics_http-api.json} (100%) rename tests/integration/snapshots/return_values/{async-metrics_python37_kinesis.json => sync-metrics_kinesis.json} (100%) delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python27_api-gateway-get.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python27_sns.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python27_sqs.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python36_api-gateway-get.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python36_dynamodb.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python36_eventbridge-custom.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python36_http-api.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python36_kinesis.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python36_s3.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python36_sns.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python36_sqs.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python36_websocket.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python37_api-gateway-get.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python37_dynamodb.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python37_eventbridge-custom.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python37_http-api.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python37_kinesis.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python37_s3.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python37_sns.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python37_sqs.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python37_websocket.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python38_api-gateway-get.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python38_dynamodb.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python38_eventbridge-custom.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python38_http-api.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python38_kinesis.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python38_s3.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python38_sns.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python38_sqs.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python38_websocket.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python39_api-gateway-get.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python39_dynamodb.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python39_eventbridge-custom.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python39_http-api.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python39_kinesis.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python39_s3.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python39_sns.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python39_sqs.json delete mode 100644 tests/integration/snapshots/return_values/sync-metrics_python39_websocket.json rename tests/integration/snapshots/return_values/{async-metrics_python37_s3.json => sync-metrics_s3.json} (100%) rename tests/integration/snapshots/return_values/{async-metrics_python37_sns.json => sync-metrics_sns.json} (100%) rename tests/integration/snapshots/return_values/{async-metrics_python37_sqs.json => sync-metrics_sqs.json} (100%) rename tests/integration/snapshots/return_values/{async-metrics_python37_websocket.json => sync-metrics_websocket.json} (100%) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0cc6b753b..bc76a699c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -41,7 +41,7 @@ jobs: strategy: max-parallel: 4 matrix: - python-version: [3.7, 3.8, 3.9] + python-version: ['3.7', '3.8', '3.9', '3.10'] steps: - name: Checkout @@ -68,7 +68,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - runtime-param: [3.7, 3.8, 3.9] + runtime-param: ['3.7', '3.8', '3.9', '3.10'] steps: - name: Checkout uses: actions/checkout@v3 diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 000000000..fb1d43eb9 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,15 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "Python: Module", + "type": "python", + "request": "launch", + "module": "unittest", + "justMyCode": true + } + ] +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json index db92ccf34..e58c4de23 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,4 +1,7 @@ { "python.pythonPath": "/usr/local/bin/python3", - "python.formatting.provider": "black" + "python.formatting.provider": "black", + "python.testing.unittestArgs": ["-v", "-s", "./tests", "-p", "test*.py"], + "python.testing.pytestEnabled": false, + "python.testing.unittestEnabled": true } diff --git a/README.md b/README.md index 9ebcdcde7..87ec805c6 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ [![Slack](https://chat.datadoghq.com/badge.svg?bg=632CA6)](https://chat.datadoghq.com/) [![License](https://img.shields.io/badge/license-Apache--2.0-blue)](https://github.com/DataDog/datadog-lambda-python/blob/main/LICENSE) -Datadog Lambda Library for Python (3.7, 3.8, and 3.9) enables [enhanced Lambda metrics](https://docs.datadoghq.com/serverless/enhanced_lambda_metrics), [distributed tracing](https://docs.datadoghq.com/serverless/distributed_tracing), and [custom metric submission](https://docs.datadoghq.com/serverless/custom_metrics) from AWS Lambda functions. +Datadog Lambda Library for Python (3.7, 3.8, 3.9, and 3.10) enables [enhanced Lambda metrics](https://docs.datadoghq.com/serverless/enhanced_lambda_metrics), [distributed tracing](https://docs.datadoghq.com/serverless/distributed_tracing), and [custom metric submission](https://docs.datadoghq.com/serverless/custom_metrics) from AWS Lambda functions. ## Installation diff --git a/pyproject.toml b/pyproject.toml index 3508fcb31..6e1195bb4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -19,6 +19,7 @@ classifiers = [ "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", ] [tool.poetry.dependencies] diff --git a/scripts/add_new_region.sh b/scripts/add_new_region.sh index 005c8616a..12a27b695 100755 --- a/scripts/add_new_region.sh +++ b/scripts/add_new_region.sh @@ -8,12 +8,12 @@ # Copy layers from us-east-1 to new region # args: [new-region] -set -e +set -e OLD_REGION='us-east-1' -PYTHON_VERSIONS_FOR_AWS_CLI=("python3.7" "python3.8" "python3.9") -LAYER_NAMES=("Datadog-Python37" "Datadog-Python38" "Datadog-Python39") +LAYER_NAMES=("Datadog-Python37" "Datadog-Python38" "Datadog-Python38-ARM" "Datadog-Python39" "Datadog-Python39-ARM" "Datadog-Python310" "Datadog-Python310-ARM") +PYTHON_VERSIONS_FOR_AWS_CLI=("python3.7" "python3.8" "python3.8" "python3.9" "python3.9" "python3.10" "python3.10") NEW_REGION=$1 publish_layer() { @@ -68,11 +68,11 @@ for layer_name in "${LAYER_NAMES[@]}"; do fi # run for each version of layer - for i in $(seq 1 $last_layer_version); do + for i in $(seq 1 $last_layer_version); do layer_path=$layer_name"_"$i.zip aws_version_key="${PYTHON_VERSIONS_FOR_AWS_CLI[$j]}" - # download layer versions + # download layer versions URL=$(AWS_REGION=$OLD_REGION aws lambda get-layer-version --layer-name $layer_name --version-number $i --query Content.Location --output text) curl $URL -o $layer_path @@ -82,4 +82,4 @@ for layer_name in "${LAYER_NAMES[@]}"; do done j=$(expr $j + 1) -done \ No newline at end of file +done diff --git a/scripts/build_layers.sh b/scripts/build_layers.sh index e1bd557e9..1a35a5953 100755 --- a/scripts/build_layers.sh +++ b/scripts/build_layers.sh @@ -14,7 +14,7 @@ set -e LAYER_DIR=".layers" LAYER_FILES_PREFIX="datadog_lambda_py" -AVAILABLE_PYTHON_VERSIONS=("3.7" "3.8" "3.9") +AVAILABLE_PYTHON_VERSIONS=("3.7" "3.8" "3.9" "3.10") # Determine which Python versions to build layers for if [ -z "$PYTHON_VERSION" ]; then diff --git a/scripts/check_layer_size.sh b/scripts/check_layer_size.sh index 448686c90..e3da8ed52 100755 --- a/scripts/check_layer_size.sh +++ b/scripts/check_layer_size.sh @@ -14,7 +14,7 @@ MAX_LAYER_UNCOMPRESSED_SIZE_KB=$(expr 24 \* 1024) LAYER_FILES_PREFIX="datadog_lambda_py" LAYER_DIR=".layers" -VERSIONS=("3.7" "3.8" "3.9") +VERSIONS=("3.7" "3.8" "3.9" "3.10") for version in "${VERSIONS[@]}" do diff --git a/scripts/list_layers.sh b/scripts/list_layers.sh index 2835187e9..2039f31e8 100755 --- a/scripts/list_layers.sh +++ b/scripts/list_layers.sh @@ -10,7 +10,7 @@ set -e -LAYER_NAMES=("Datadog-Python37" "Datadog-Python38" "Datadog-Python38-ARM" "Datadog-Python39" "Datadog-Python39-ARM") +LAYER_NAMES=("Datadog-Python37" "Datadog-Python38" "Datadog-Python38-ARM" "Datadog-Python39" "Datadog-Python39-ARM" "Datadog-Python310" "Datadog-Python310-ARM") AVAILABLE_REGIONS=$(aws ec2 describe-regions | jq -r '.[] | .[] | .RegionName') LAYERS_MISSING_REGIONS=() @@ -63,6 +63,6 @@ done if [ ${#LAYERS_MISSING_REGIONS[@]} -gt 0 ]; then echo "WARNING: Following regions missing layers: ${LAYERS_MISSING_REGIONS[@]}" - echo "Please run ./add_new_region.sh to add layers to the missing regions" + echo "Please run ./add_new_region.sh to add layers to the missing regions" exit 1 -fi \ No newline at end of file +fi diff --git a/scripts/publish_layers.sh b/scripts/publish_layers.sh index d7d12ea45..88b2741f5 100755 --- a/scripts/publish_layers.sh +++ b/scripts/publish_layers.sh @@ -13,10 +13,10 @@ set -e # Makes sure any subprocesses will be terminated with this process trap "pkill -P $$; exit 1;" INT -PYTHON_VERSIONS_FOR_AWS_CLI=("python3.7" "python3.8" "python3.8" "python3.9" "python3.9") -LAYER_PATHS=(".layers/datadog_lambda_py-amd64-3.7.zip" ".layers/datadog_lambda_py-amd64-3.8.zip" ".layers/datadog_lambda_py-arm64-3.8.zip" ".layers/datadog_lambda_py-amd64-3.9.zip" ".layers/datadog_lambda_py-arm64-3.9.zip") -AVAILABLE_LAYERS=("Datadog-Python37" "Datadog-Python38" "Datadog-Python38-ARM" "Datadog-Python39" "Datadog-Python39-ARM") -ARCHS=("amd64" "amd64" "amd64""amd64" "amd64" "arm64") +PYTHON_VERSIONS_FOR_AWS_CLI=("python3.7" "python3.8" "python3.8" "python3.9" "python3.9" "python3.10" "python3.10") +LAYER_PATHS=(".layers/datadog_lambda_py-amd64-3.7.zip" ".layers/datadog_lambda_py-amd64-3.8.zip" ".layers/datadog_lambda_py-arm64-3.8.zip" ".layers/datadog_lambda_py-amd64-3.9.zip" ".layers/datadog_lambda_py-arm64-3.9.zip" ".layers/datadog_lambda_py-amd64-3.10.zip" ".layers/datadog_lambda_py-arm64-3.10.zip") +AVAILABLE_LAYERS=("Datadog-Python37" "Datadog-Python38" "Datadog-Python38-ARM" "Datadog-Python39" "Datadog-Python39-ARM" "Datadog-Python310" "Datadog-Python310-ARM") +ARCHS=("amd64" "amd64" "amd64""amd64" "amd64" "arm64" "amd64" "arm64") AVAILABLE_REGIONS=$(aws ec2 describe-regions | jq -r '.[] | .[] | .RegionName') # Check that the layer files exist @@ -129,7 +129,7 @@ do # This shouldn't happen unless someone manually deleted the latest version, say 28 # and then try to republish it again. The published version is actually be 29, because - # Lambda layers are immutable and AWS will skip deleted version and use the next number. + # Lambda layers are immutable and AWS will skip deleted version and use the next number. if [ $latest_version -gt $VERSION ]; then echo "ERROR: Published version $latest_version is greater than the desired version $VERSION!" echo "Exiting" diff --git a/scripts/run_integration_tests.sh b/scripts/run_integration_tests.sh index 6187c6eb3..85a3dd2f2 100755 --- a/scripts/run_integration_tests.sh +++ b/scripts/run_integration_tests.sh @@ -11,7 +11,7 @@ set -e # These values need to be in sync with serverless.yml, where there needs to be a function # defined for every handler_runtime combination LAMBDA_HANDLERS=("async-metrics" "sync-metrics") -RUNTIMES=("python37" "python38" "python39") +RUNTIMES=("python37" "python38" "python39" "python310") LOGS_WAIT_SECONDS=20 @@ -31,8 +31,9 @@ mismatch_found=false python37=("python3.7" "3.7" $(xxd -l 4 -c 4 -p < /dev/random)) python38=("python3.8" "3.8" $(xxd -l 4 -c 4 -p < /dev/random)) python39=("python3.9" "3.9" $(xxd -l 4 -c 4 -p < /dev/random)) +python310=("python3.10" "3.10" $(xxd -l 4 -c 4 -p < /dev/random)) -PARAMETERS_SETS=("python37" "python38" "python39") +PARAMETERS_SETS=("python37" "python38" "python39" "python310") if [ -z "$RUNTIME_PARAM" ]; then echo "Python version not specified, running for all python versions." @@ -111,7 +112,7 @@ python version : ${!python_version} and run id : ${!run_id}" for input_event_file in "${input_event_files[@]}"; do # Get event name without trailing ".json" so we can build the snapshot file name input_event_name=$(echo "$input_event_file" | sed "s/.json//") - snapshot_path="./snapshots/return_values/${handler_name}_${parameters_set}_${input_event_name}.json" + snapshot_path="./snapshots/return_values/${handler_name}_${input_event_name}.json" return_value=$(PYTHON_VERSION=${!python_version} RUNTIME=$parameters_set SERVERLESS_RUNTIME=${!serverless_runtime} \ serverless invoke --stage ${!run_id} -f "$function_name" --path "./input_events/$input_event_file") diff --git a/scripts/run_tests.sh b/scripts/run_tests.sh index 9d667cd9e..a5bf09b7e 100755 --- a/scripts/run_tests.sh +++ b/scripts/run_tests.sh @@ -8,7 +8,7 @@ # Run unit tests in Docker set -e -PYTHON_VERSIONS=("3.7" "3.8" "3.9") +PYTHON_VERSIONS=("3.7" "3.8" "3.9" "3.10") for python_version in "${PYTHON_VERSIONS[@]}" do @@ -18,7 +18,7 @@ do --build-arg python_version=$python_version docker run -w /test \ datadog-lambda-python-test:$python_version \ - nose2 -v + nose2 -v docker run -w /test \ datadog-lambda-python-test:$python_version \ flake8 datadog_lambda/ diff --git a/scripts/sign_layers.sh b/scripts/sign_layers.sh index 5a7e7921c..166093a44 100755 --- a/scripts/sign_layers.sh +++ b/scripts/sign_layers.sh @@ -14,6 +14,8 @@ LAYER_FILES=( "datadog_lambda_py-arm64-3.8.zip" "datadog_lambda_py-amd64-3.9.zip" "datadog_lambda_py-arm64-3.9.zip" + "datadog_lambda_py-amd64-3.10.zip" + "datadog_lambda_py-arm64-3.10.zip" ) SIGNING_PROFILE_NAME="DatadogLambdaSigningProfile" @@ -38,7 +40,7 @@ fi for LAYER_FILE in "${LAYER_FILES[@]}" do - echo + echo echo "${LAYER_FILE}" echo "-------------------------" @@ -68,7 +70,7 @@ do do sleep 3 SECONDS_WAITED_SO_FAR=$((SECONDS_WAITED_SO_FAR + 3)) - + SIGNING_JOB_DESCRIPTION=$(aws signer describe-signing-job \ --job-id $SIGNING_JOB_ID \ --region $REGION\ diff --git a/tests/integration/snapshots/logs/async-metrics_python310.log b/tests/integration/snapshots/logs/async-metrics_python310.log new file mode 100644 index 000000000..a7ad8826f --- /dev/null +++ b/tests/integration/snapshots/logs/async-metrics_python310.log @@ -0,0 +1,1426 @@ +INIT_START Runtime Version: python:3.10.vX Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python310", + "resource:integration-tests-python-XXXX-async-metrics_python310", + "cold_start:true", + "memorysize:1024", + "runtime:python3.10", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "XXXX.execute-api.us-east-2.amazonaws.com", + "resource": "GET /", + "name": "aws.apigateway", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.apigateway.rest", + "http.url": "XXXX.execute-api.us-east-2.amazonaws.com/", + "endpoint": "/", + "http.method": "GET", + "resource_names": "GET /", + "apiid": "XXXX", + "apiname": "XXXX", + "stage": "Prod", + "request_id": "XXXX", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "http.status_code": "200", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python310", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "true", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python310", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python310", + "functionname": "integration-tests-python-XXXX-async-metrics_python310", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "api-gateway", + "function_trigger.event_source_arn": "XXXX", + "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", + "http.url_details.path": "/Prod/", + "http.method": "GET", + "http.status_code": "200" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python310", + "resource:integration-tests-python-XXXX-async-metrics_python310", + "cold_start:false", + "memorysize:1024", + "runtime:python3.10", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "dynamodb", + "resource": "ExampleTableWithStream", + "name": "aws.dynamodb", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.dynamodb", + "resource_names": "ExampleTableWithStream", + "tablename": "ExampleTableWithStream", + "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", + "event_id": "XXXX", + "event_name": "INSERT", + "event_version": "1.1", + "stream_view_type": "NEW_AND_OLD_IMAGES", + "size_bytes": "26", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python310", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python310", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python310", + "functionname": "integration-tests-python-XXXX-async-metrics_python310", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "dynamodb", + "function_trigger.event_source_arn": "XXXX" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python310", + "resource:integration-tests-python-XXXX-async-metrics_python310", + "cold_start:false", + "memorysize:1024", + "runtime:python3.10", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "eventbridge", + "resource": "eventbridge.custom.event.sender", + "name": "aws.eventbridge", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.eventbridge", + "resource_names": "eventbridge.custom.event.sender", + "detail_type": "testdetail", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python310", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python310", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python310", + "functionname": "integration-tests-python-XXXX-async-metrics_python310", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "eventbridge" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python310", + "resource:integration-tests-python-XXXX-async-metrics_python310", + "cold_start:false", + "memorysize:1024", + "runtime:python3.10", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", + "resource": "GET /httpapi/get", + "name": "aws.httpapi", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.httpapi", + "endpoint": "/httpapi/get", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.method": "GET", + "http.protocol": "HTTP/1.1", + "http.source_ip": "XXXX", + "http.user_agent": "XXXX/7.64.1", + "resource_names": "GET /httpapi/get", + "request_id": "XXXX", + "apiid": "XXXX", + "apiname": "XXXX", + "stage": "$default", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "http.status_code": "200", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python310", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python310", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python310", + "functionname": "integration-tests-python-XXXX-async-metrics_python310", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "api-gateway", + "function_trigger.event_source_arn": "XXXX$default", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url_details.path": "/httpapi/get", + "http.method": "GET", + "http.status_code": "200" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python310", + "resource:integration-tests-python-XXXX-async-metrics_python310", + "cold_start:false", + "memorysize:1024", + "runtime:python3.10", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "kinesis", + "resource": "EXAMPLE", + "name": "aws.kinesis", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.kinesis", + "resource_names": "EXAMPLE", + "streamname": "EXAMPLE", + "shardid": "shardId-XXXX", + "event_source_arn": "arn:aws:kinesis:EXAMPLE", + "event_id": "XXXX", + "event_name": "aws:kinesis:record", + "event_version": "1.0", + "partition_key": "XXXX", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python310", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python310", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python310", + "functionname": "integration-tests-python-XXXX-async-metrics_python310", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "kinesis", + "function_trigger.event_source_arn": "XXXX" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python310", + "resource:integration-tests-python-XXXX-async-metrics_python310", + "cold_start:false", + "memorysize:1024", + "runtime:python3.10", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "s3", + "resource": "example-bucket", + "name": "aws.s3", + "error": 0, + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.s3", + "resource_names": "example-bucket", + "event_name": "ObjectCreated:Put", + "bucketname": "example-bucket", + "bucket_arn": "arn:aws:s3:::example-bucket", + "object_key": "test/key", + "object_size": "1024", + "object_etag": "XXXX", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python310", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python310", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python310", + "functionname": "integration-tests-python-XXXX-async-metrics_python310", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "s3", + "function_trigger.event_source_arn": "XXXX" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python310", + "resource:integration-tests-python-XXXX-async-metrics_python310", + "cold_start:false", + "memorysize:1024", + "runtime:python3.10", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "sns", + "resource": "sns-lambda", + "name": "aws.sns", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.sns", + "resource_names": "sns-lambda", + "topicname": "sns-lambda", + "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", + "message_id": "XXXX", + "type": "Notification", + "subject": "TestInvoke", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python310", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python310", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python310", + "functionname": "integration-tests-python-XXXX-async-metrics_python310", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "sns", + "function_trigger.event_source_arn": "XXXX" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python310", + "resource:integration-tests-python-XXXX-async-metrics_python310", + "cold_start:false", + "memorysize:1024", + "runtime:python3.10", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "sqs", + "resource": "my-queue", + "name": "aws.sqs", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.sqs", + "resource_names": "my-queue", + "queuename": "my-queue", + "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", + "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", + "sender_id": "AIDAIENQZJOLO23YVJ4VO", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python310", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python310", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python310", + "functionname": "integration-tests-python-XXXX-async-metrics_python310", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "sqs", + "function_trigger.event_source_arn": "XXXX" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python310", + "resource:integration-tests-python-XXXX-async-metrics_python310", + "cold_start:false", + "memorysize:1024", + "runtime:python3.10", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", + "resource": "$default", + "name": "aws.apigateway.websocket", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.apigateway.websocket", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com$default", + "endpoint": "$default", + "resource_names": "$default", + "apiid": "XXXX", + "apiname": "XXXX", + "stage": "dev", + "request_id": "XXXX", + "connection_id": "XXXX=", + "event_type": "MESSAGE", + "message_direction": "IN", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "http.status_code": "200", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python310", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python310", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python310", + "functionname": "integration-tests-python-XXXX-async-metrics_python310", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "api-gateway", + "function_trigger.event_source_arn": "XXXX", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.status_code": "200" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB diff --git a/tests/integration/snapshots/logs/sync-metrics_python310.log b/tests/integration/snapshots/logs/sync-metrics_python310.log new file mode 100644 index 000000000..a82665520 --- /dev/null +++ b/tests/integration/snapshots/logs/sync-metrics_python310.log @@ -0,0 +1,1588 @@ +INIT_START Runtime Version: python:3.10.vX Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python310", + "resource:integration-tests-python-XXXX-sync-metrics_python310", + "cold_start:true", + "memorysize:1024", + "runtime:python3.10", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "XXXX.execute-api.us-east-2.amazonaws.com", + "resource": "GET /", + "name": "aws.apigateway", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.apigateway.rest", + "http.url": "XXXX.execute-api.us-east-2.amazonaws.com/", + "endpoint": "/", + "http.method": "GET", + "resource_names": "GET /", + "apiid": "XXXX", + "apiname": "XXXX", + "stage": "Prod", + "request_id": "XXXX", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "http.status_code": "200", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python310", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "true", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python310", + "functionname": "integration-tests-python-XXXX-sync-metrics_python310", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "api-gateway", + "function_trigger.event_source_arn": "XXXX", + "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", + "http.url_details.path": "/Prod/", + "http.method": "GET", + "http.status_code": "200" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}]} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python310", + "resource:integration-tests-python-XXXX-sync-metrics_python310", + "cold_start:false", + "memorysize:1024", + "runtime:python3.10", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "dynamodb", + "resource": "ExampleTableWithStream", + "name": "aws.dynamodb", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.dynamodb", + "resource_names": "ExampleTableWithStream", + "tablename": "ExampleTableWithStream", + "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", + "event_id": "XXXX", + "event_name": "INSERT", + "event_version": "1.1", + "stream_view_type": "NEW_AND_OLD_IMAGES", + "size_bytes": "26", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python310", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python310", + "functionname": "integration-tests-python-XXXX-sync-metrics_python310", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "dynamodb", + "function_trigger.event_source_arn": "XXXX" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}]} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python310", + "resource:integration-tests-python-XXXX-sync-metrics_python310", + "cold_start:false", + "memorysize:1024", + "runtime:python3.10", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "eventbridge", + "resource": "eventbridge.custom.event.sender", + "name": "aws.eventbridge", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.eventbridge", + "resource_names": "eventbridge.custom.event.sender", + "detail_type": "testdetail", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python310", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python310", + "functionname": "integration-tests-python-XXXX-sync-metrics_python310", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "eventbridge" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}]} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python310", + "resource:integration-tests-python-XXXX-sync-metrics_python310", + "cold_start:false", + "memorysize:1024", + "runtime:python3.10", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", + "resource": "GET /httpapi/get", + "name": "aws.httpapi", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.httpapi", + "endpoint": "/httpapi/get", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.method": "GET", + "http.protocol": "HTTP/1.1", + "http.source_ip": "XXXX", + "http.user_agent": "XXXX/7.64.1", + "resource_names": "GET /httpapi/get", + "request_id": "XXXX", + "apiid": "XXXX", + "apiname": "XXXX", + "stage": "$default", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "http.status_code": "200", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python310", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python310", + "functionname": "integration-tests-python-XXXX-sync-metrics_python310", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "api-gateway", + "function_trigger.event_source_arn": "XXXX$default", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url_details.path": "/httpapi/get", + "http.method": "GET", + "http.status_code": "200" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}]} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python310", + "resource:integration-tests-python-XXXX-sync-metrics_python310", + "cold_start:false", + "memorysize:1024", + "runtime:python3.10", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "kinesis", + "resource": "EXAMPLE", + "name": "aws.kinesis", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.kinesis", + "resource_names": "EXAMPLE", + "streamname": "EXAMPLE", + "shardid": "shardId-XXXX", + "event_source_arn": "arn:aws:kinesis:EXAMPLE", + "event_id": "XXXX", + "event_name": "aws:kinesis:record", + "event_version": "1.0", + "partition_key": "XXXX", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python310", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python310", + "functionname": "integration-tests-python-XXXX-sync-metrics_python310", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "kinesis", + "function_trigger.event_source_arn": "XXXX" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}]} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python310", + "resource:integration-tests-python-XXXX-sync-metrics_python310", + "cold_start:false", + "memorysize:1024", + "runtime:python3.10", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "s3", + "resource": "example-bucket", + "name": "aws.s3", + "error": 0, + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.s3", + "resource_names": "example-bucket", + "event_name": "ObjectCreated:Put", + "bucketname": "example-bucket", + "bucket_arn": "arn:aws:s3:::example-bucket", + "object_key": "test/key", + "object_size": "1024", + "object_etag": "XXXX", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python310", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python310", + "functionname": "integration-tests-python-XXXX-sync-metrics_python310", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "s3", + "function_trigger.event_source_arn": "XXXX" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}]} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python310", + "resource:integration-tests-python-XXXX-sync-metrics_python310", + "cold_start:false", + "memorysize:1024", + "runtime:python3.10", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "sns", + "resource": "sns-lambda", + "name": "aws.sns", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.sns", + "resource_names": "sns-lambda", + "topicname": "sns-lambda", + "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", + "message_id": "XXXX", + "type": "Notification", + "subject": "TestInvoke", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python310", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python310", + "functionname": "integration-tests-python-XXXX-sync-metrics_python310", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "sns", + "function_trigger.event_source_arn": "XXXX" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}]} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python310", + "resource:integration-tests-python-XXXX-sync-metrics_python310", + "cold_start:false", + "memorysize:1024", + "runtime:python3.10", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "sqs", + "resource": "my-queue", + "name": "aws.sqs", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.sqs", + "resource_names": "my-queue", + "queuename": "my-queue", + "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", + "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", + "sender_id": "AIDAIENQZJOLO23YVJ4VO", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python310", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python310", + "functionname": "integration-tests-python-XXXX-sync-metrics_python310", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "sqs", + "function_trigger.event_source_arn": "XXXX" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}]} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python310", + "resource:integration-tests-python-XXXX-sync-metrics_python310", + "cold_start:false", + "memorysize:1024", + "runtime:python3.10", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", + "resource": "$default", + "name": "aws.apigateway.websocket", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.apigateway.websocket", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com$default", + "endpoint": "$default", + "resource_names": "$default", + "apiid": "XXXX", + "apiname": "XXXX", + "stage": "dev", + "request_id": "XXXX", + "connection_id": "XXXX=", + "event_type": "MESSAGE", + "message_direction": "IN", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "http.status_code": "200", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python310", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python310", + "functionname": "integration-tests-python-XXXX-sync-metrics_python310", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "api-gateway", + "function_trigger.event_source_arn": "XXXX", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.status_code": "200" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}]} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB diff --git a/tests/integration/snapshots/return_values/async-metrics_python36_api-gateway-get.json b/tests/integration/snapshots/return_values/async-metrics_api-gateway-get.json similarity index 100% rename from tests/integration/snapshots/return_values/async-metrics_python36_api-gateway-get.json rename to tests/integration/snapshots/return_values/async-metrics_api-gateway-get.json diff --git a/tests/integration/snapshots/return_values/async-metrics_python36_dynamodb.json b/tests/integration/snapshots/return_values/async-metrics_dynamodb.json similarity index 100% rename from tests/integration/snapshots/return_values/async-metrics_python36_dynamodb.json rename to tests/integration/snapshots/return_values/async-metrics_dynamodb.json diff --git a/tests/integration/snapshots/return_values/async-metrics_python36_eventbridge-custom.json b/tests/integration/snapshots/return_values/async-metrics_eventbridge-custom.json similarity index 100% rename from tests/integration/snapshots/return_values/async-metrics_python36_eventbridge-custom.json rename to tests/integration/snapshots/return_values/async-metrics_eventbridge-custom.json diff --git a/tests/integration/snapshots/return_values/async-metrics_python36_http-api.json b/tests/integration/snapshots/return_values/async-metrics_http-api copy.json similarity index 100% rename from tests/integration/snapshots/return_values/async-metrics_python36_http-api.json rename to tests/integration/snapshots/return_values/async-metrics_http-api copy.json diff --git a/tests/integration/snapshots/return_values/async-metrics_python37_http-api.json b/tests/integration/snapshots/return_values/async-metrics_http-api.json similarity index 100% rename from tests/integration/snapshots/return_values/async-metrics_python37_http-api.json rename to tests/integration/snapshots/return_values/async-metrics_http-api.json diff --git a/tests/integration/snapshots/return_values/async-metrics_python36_kinesis.json b/tests/integration/snapshots/return_values/async-metrics_kinesis.json similarity index 100% rename from tests/integration/snapshots/return_values/async-metrics_python36_kinesis.json rename to tests/integration/snapshots/return_values/async-metrics_kinesis.json diff --git a/tests/integration/snapshots/return_values/async-metrics_python27_api-gateway-get.json b/tests/integration/snapshots/return_values/async-metrics_python27_api-gateway-get.json deleted file mode 100644 index d8e93bb00..000000000 --- a/tests/integration/snapshots/return_values/async-metrics_python27_api-gateway-get.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "body": { - "message": "hello, dog!", - "event_record_ids": [], - "request_id": "41b45ea3-70b5-11e6-b7bd-69b5aaebc7d9" - }, - "statusCode": 200 -} diff --git a/tests/integration/snapshots/return_values/async-metrics_python27_sns.json b/tests/integration/snapshots/return_values/async-metrics_python27_sns.json deleted file mode 100644 index 08cbae602..000000000 --- a/tests/integration/snapshots/return_values/async-metrics_python27_sns.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "body": { - "message": "hello, dog!", - "event_record_ids": [ - "95df01b4-ee98-5cb9-9903-4c221d41eb5e" - ], - "request_id": null - }, - "statusCode": 200 -} diff --git a/tests/integration/snapshots/return_values/async-metrics_python27_sqs.json b/tests/integration/snapshots/return_values/async-metrics_python27_sqs.json deleted file mode 100644 index 03f2a6cdf..000000000 --- a/tests/integration/snapshots/return_values/async-metrics_python27_sqs.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "body": { - "message": "hello, dog!", - "event_record_ids": [ - "059f36b4-87a3-44ab-83d2-661975830a7d", - "2e1424d4-f796-459a-8184-9c92662be6da" - ], - "request_id": null - }, - "statusCode": 200 -} diff --git a/tests/integration/snapshots/return_values/async-metrics_python38_api-gateway-get.json b/tests/integration/snapshots/return_values/async-metrics_python38_api-gateway-get.json deleted file mode 100644 index 64b724471..000000000 --- a/tests/integration/snapshots/return_values/async-metrics_python38_api-gateway-get.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": "77375676-xmpl-4b79-853a-f982474efe18", - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/async-metrics_python38_dynamodb.json b/tests/integration/snapshots/return_values/async-metrics_python38_dynamodb.json deleted file mode 100644 index 1ad668ecc..000000000 --- a/tests/integration/snapshots/return_values/async-metrics_python38_dynamodb.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/async-metrics_python38_eventbridge-custom.json b/tests/integration/snapshots/return_values/async-metrics_python38_eventbridge-custom.json deleted file mode 100644 index 1ad668ecc..000000000 --- a/tests/integration/snapshots/return_values/async-metrics_python38_eventbridge-custom.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/async-metrics_python38_kinesis.json b/tests/integration/snapshots/return_values/async-metrics_python38_kinesis.json deleted file mode 100644 index 1ad668ecc..000000000 --- a/tests/integration/snapshots/return_values/async-metrics_python38_kinesis.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/async-metrics_python38_s3.json b/tests/integration/snapshots/return_values/async-metrics_python38_s3.json deleted file mode 100644 index 1ad668ecc..000000000 --- a/tests/integration/snapshots/return_values/async-metrics_python38_s3.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/async-metrics_python38_sns.json b/tests/integration/snapshots/return_values/async-metrics_python38_sns.json deleted file mode 100644 index e1f007e65..000000000 --- a/tests/integration/snapshots/return_values/async-metrics_python38_sns.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [ - "95df01b4-ee98-5cb9-9903-4c221d41eb5e" - ] - } -} diff --git a/tests/integration/snapshots/return_values/async-metrics_python38_sqs.json b/tests/integration/snapshots/return_values/async-metrics_python38_sqs.json deleted file mode 100644 index 970f7dff2..000000000 --- a/tests/integration/snapshots/return_values/async-metrics_python38_sqs.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [ - "059f36b4-87a3-44ab-83d2-661975830a7d", - "2e1424d4-f796-459a-8184-9c92662be6da" - ] - } -} diff --git a/tests/integration/snapshots/return_values/async-metrics_python38_websocket.json b/tests/integration/snapshots/return_values/async-metrics_python38_websocket.json deleted file mode 100644 index d888139d2..000000000 --- a/tests/integration/snapshots/return_values/async-metrics_python38_websocket.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": "Fc5S3EvdGjQFtsQ=", - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/async-metrics_python39_api-gateway-get.json b/tests/integration/snapshots/return_values/async-metrics_python39_api-gateway-get.json deleted file mode 100644 index 64b724471..000000000 --- a/tests/integration/snapshots/return_values/async-metrics_python39_api-gateway-get.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": "77375676-xmpl-4b79-853a-f982474efe18", - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/async-metrics_python39_dynamodb.json b/tests/integration/snapshots/return_values/async-metrics_python39_dynamodb.json deleted file mode 100644 index 1ad668ecc..000000000 --- a/tests/integration/snapshots/return_values/async-metrics_python39_dynamodb.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/async-metrics_python39_eventbridge-custom.json b/tests/integration/snapshots/return_values/async-metrics_python39_eventbridge-custom.json deleted file mode 100644 index 1ad668ecc..000000000 --- a/tests/integration/snapshots/return_values/async-metrics_python39_eventbridge-custom.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/async-metrics_python39_http-api.json b/tests/integration/snapshots/return_values/async-metrics_python39_http-api.json deleted file mode 100644 index d279e5e29..000000000 --- a/tests/integration/snapshots/return_values/async-metrics_python39_http-api.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": "FaHnXjKCGjQEJ7A=", - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/async-metrics_python39_kinesis.json b/tests/integration/snapshots/return_values/async-metrics_python39_kinesis.json deleted file mode 100644 index 1ad668ecc..000000000 --- a/tests/integration/snapshots/return_values/async-metrics_python39_kinesis.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/async-metrics_python39_s3.json b/tests/integration/snapshots/return_values/async-metrics_python39_s3.json deleted file mode 100644 index 1ad668ecc..000000000 --- a/tests/integration/snapshots/return_values/async-metrics_python39_s3.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/async-metrics_python39_sns.json b/tests/integration/snapshots/return_values/async-metrics_python39_sns.json deleted file mode 100644 index e1f007e65..000000000 --- a/tests/integration/snapshots/return_values/async-metrics_python39_sns.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [ - "95df01b4-ee98-5cb9-9903-4c221d41eb5e" - ] - } -} diff --git a/tests/integration/snapshots/return_values/async-metrics_python39_sqs.json b/tests/integration/snapshots/return_values/async-metrics_python39_sqs.json deleted file mode 100644 index 970f7dff2..000000000 --- a/tests/integration/snapshots/return_values/async-metrics_python39_sqs.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [ - "059f36b4-87a3-44ab-83d2-661975830a7d", - "2e1424d4-f796-459a-8184-9c92662be6da" - ] - } -} diff --git a/tests/integration/snapshots/return_values/async-metrics_python39_websocket.json b/tests/integration/snapshots/return_values/async-metrics_python39_websocket.json deleted file mode 100644 index d888139d2..000000000 --- a/tests/integration/snapshots/return_values/async-metrics_python39_websocket.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": "Fc5S3EvdGjQFtsQ=", - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/async-metrics_python36_s3.json b/tests/integration/snapshots/return_values/async-metrics_s3.json similarity index 100% rename from tests/integration/snapshots/return_values/async-metrics_python36_s3.json rename to tests/integration/snapshots/return_values/async-metrics_s3.json diff --git a/tests/integration/snapshots/return_values/async-metrics_python36_sns.json b/tests/integration/snapshots/return_values/async-metrics_sns.json similarity index 100% rename from tests/integration/snapshots/return_values/async-metrics_python36_sns.json rename to tests/integration/snapshots/return_values/async-metrics_sns.json diff --git a/tests/integration/snapshots/return_values/async-metrics_python36_sqs.json b/tests/integration/snapshots/return_values/async-metrics_sqs.json similarity index 100% rename from tests/integration/snapshots/return_values/async-metrics_python36_sqs.json rename to tests/integration/snapshots/return_values/async-metrics_sqs.json diff --git a/tests/integration/snapshots/return_values/async-metrics_python36_websocket.json b/tests/integration/snapshots/return_values/async-metrics_websocket.json similarity index 100% rename from tests/integration/snapshots/return_values/async-metrics_python36_websocket.json rename to tests/integration/snapshots/return_values/async-metrics_websocket.json diff --git a/tests/integration/snapshots/return_values/async-metrics_python37_api-gateway-get.json b/tests/integration/snapshots/return_values/sync-metrics_api-gateway-get.json similarity index 100% rename from tests/integration/snapshots/return_values/async-metrics_python37_api-gateway-get.json rename to tests/integration/snapshots/return_values/sync-metrics_api-gateway-get.json diff --git a/tests/integration/snapshots/return_values/async-metrics_python37_dynamodb.json b/tests/integration/snapshots/return_values/sync-metrics_dynamodb.json similarity index 100% rename from tests/integration/snapshots/return_values/async-metrics_python37_dynamodb.json rename to tests/integration/snapshots/return_values/sync-metrics_dynamodb.json diff --git a/tests/integration/snapshots/return_values/async-metrics_python37_eventbridge-custom.json b/tests/integration/snapshots/return_values/sync-metrics_eventbridge-custom.json similarity index 100% rename from tests/integration/snapshots/return_values/async-metrics_python37_eventbridge-custom.json rename to tests/integration/snapshots/return_values/sync-metrics_eventbridge-custom.json diff --git a/tests/integration/snapshots/return_values/async-metrics_python38_http-api.json b/tests/integration/snapshots/return_values/sync-metrics_http-api.json similarity index 100% rename from tests/integration/snapshots/return_values/async-metrics_python38_http-api.json rename to tests/integration/snapshots/return_values/sync-metrics_http-api.json diff --git a/tests/integration/snapshots/return_values/async-metrics_python37_kinesis.json b/tests/integration/snapshots/return_values/sync-metrics_kinesis.json similarity index 100% rename from tests/integration/snapshots/return_values/async-metrics_python37_kinesis.json rename to tests/integration/snapshots/return_values/sync-metrics_kinesis.json diff --git a/tests/integration/snapshots/return_values/sync-metrics_python27_api-gateway-get.json b/tests/integration/snapshots/return_values/sync-metrics_python27_api-gateway-get.json deleted file mode 100644 index d8e93bb00..000000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python27_api-gateway-get.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "body": { - "message": "hello, dog!", - "event_record_ids": [], - "request_id": "41b45ea3-70b5-11e6-b7bd-69b5aaebc7d9" - }, - "statusCode": 200 -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python27_sns.json b/tests/integration/snapshots/return_values/sync-metrics_python27_sns.json deleted file mode 100644 index 08cbae602..000000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python27_sns.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "body": { - "message": "hello, dog!", - "event_record_ids": [ - "95df01b4-ee98-5cb9-9903-4c221d41eb5e" - ], - "request_id": null - }, - "statusCode": 200 -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python27_sqs.json b/tests/integration/snapshots/return_values/sync-metrics_python27_sqs.json deleted file mode 100644 index 03f2a6cdf..000000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python27_sqs.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "body": { - "message": "hello, dog!", - "event_record_ids": [ - "059f36b4-87a3-44ab-83d2-661975830a7d", - "2e1424d4-f796-459a-8184-9c92662be6da" - ], - "request_id": null - }, - "statusCode": 200 -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python36_api-gateway-get.json b/tests/integration/snapshots/return_values/sync-metrics_python36_api-gateway-get.json deleted file mode 100644 index 64b724471..000000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python36_api-gateway-get.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": "77375676-xmpl-4b79-853a-f982474efe18", - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python36_dynamodb.json b/tests/integration/snapshots/return_values/sync-metrics_python36_dynamodb.json deleted file mode 100644 index 1ad668ecc..000000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python36_dynamodb.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python36_eventbridge-custom.json b/tests/integration/snapshots/return_values/sync-metrics_python36_eventbridge-custom.json deleted file mode 100644 index 1ad668ecc..000000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python36_eventbridge-custom.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python36_http-api.json b/tests/integration/snapshots/return_values/sync-metrics_python36_http-api.json deleted file mode 100644 index d279e5e29..000000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python36_http-api.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": "FaHnXjKCGjQEJ7A=", - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python36_kinesis.json b/tests/integration/snapshots/return_values/sync-metrics_python36_kinesis.json deleted file mode 100644 index 1ad668ecc..000000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python36_kinesis.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python36_s3.json b/tests/integration/snapshots/return_values/sync-metrics_python36_s3.json deleted file mode 100644 index 1ad668ecc..000000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python36_s3.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python36_sns.json b/tests/integration/snapshots/return_values/sync-metrics_python36_sns.json deleted file mode 100644 index e1f007e65..000000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python36_sns.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [ - "95df01b4-ee98-5cb9-9903-4c221d41eb5e" - ] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python36_sqs.json b/tests/integration/snapshots/return_values/sync-metrics_python36_sqs.json deleted file mode 100644 index 970f7dff2..000000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python36_sqs.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [ - "059f36b4-87a3-44ab-83d2-661975830a7d", - "2e1424d4-f796-459a-8184-9c92662be6da" - ] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python36_websocket.json b/tests/integration/snapshots/return_values/sync-metrics_python36_websocket.json deleted file mode 100644 index d888139d2..000000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python36_websocket.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": "Fc5S3EvdGjQFtsQ=", - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python37_api-gateway-get.json b/tests/integration/snapshots/return_values/sync-metrics_python37_api-gateway-get.json deleted file mode 100644 index 64b724471..000000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python37_api-gateway-get.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": "77375676-xmpl-4b79-853a-f982474efe18", - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python37_dynamodb.json b/tests/integration/snapshots/return_values/sync-metrics_python37_dynamodb.json deleted file mode 100644 index 1ad668ecc..000000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python37_dynamodb.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python37_eventbridge-custom.json b/tests/integration/snapshots/return_values/sync-metrics_python37_eventbridge-custom.json deleted file mode 100644 index 1ad668ecc..000000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python37_eventbridge-custom.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python37_http-api.json b/tests/integration/snapshots/return_values/sync-metrics_python37_http-api.json deleted file mode 100644 index d279e5e29..000000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python37_http-api.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": "FaHnXjKCGjQEJ7A=", - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python37_kinesis.json b/tests/integration/snapshots/return_values/sync-metrics_python37_kinesis.json deleted file mode 100644 index 1ad668ecc..000000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python37_kinesis.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python37_s3.json b/tests/integration/snapshots/return_values/sync-metrics_python37_s3.json deleted file mode 100644 index 1ad668ecc..000000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python37_s3.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python37_sns.json b/tests/integration/snapshots/return_values/sync-metrics_python37_sns.json deleted file mode 100644 index e1f007e65..000000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python37_sns.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [ - "95df01b4-ee98-5cb9-9903-4c221d41eb5e" - ] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python37_sqs.json b/tests/integration/snapshots/return_values/sync-metrics_python37_sqs.json deleted file mode 100644 index 970f7dff2..000000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python37_sqs.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [ - "059f36b4-87a3-44ab-83d2-661975830a7d", - "2e1424d4-f796-459a-8184-9c92662be6da" - ] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python37_websocket.json b/tests/integration/snapshots/return_values/sync-metrics_python37_websocket.json deleted file mode 100644 index d888139d2..000000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python37_websocket.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": "Fc5S3EvdGjQFtsQ=", - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python38_api-gateway-get.json b/tests/integration/snapshots/return_values/sync-metrics_python38_api-gateway-get.json deleted file mode 100644 index 64b724471..000000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python38_api-gateway-get.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": "77375676-xmpl-4b79-853a-f982474efe18", - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python38_dynamodb.json b/tests/integration/snapshots/return_values/sync-metrics_python38_dynamodb.json deleted file mode 100644 index 1ad668ecc..000000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python38_dynamodb.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python38_eventbridge-custom.json b/tests/integration/snapshots/return_values/sync-metrics_python38_eventbridge-custom.json deleted file mode 100644 index 1ad668ecc..000000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python38_eventbridge-custom.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python38_http-api.json b/tests/integration/snapshots/return_values/sync-metrics_python38_http-api.json deleted file mode 100644 index d279e5e29..000000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python38_http-api.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": "FaHnXjKCGjQEJ7A=", - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python38_kinesis.json b/tests/integration/snapshots/return_values/sync-metrics_python38_kinesis.json deleted file mode 100644 index 1ad668ecc..000000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python38_kinesis.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python38_s3.json b/tests/integration/snapshots/return_values/sync-metrics_python38_s3.json deleted file mode 100644 index 1ad668ecc..000000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python38_s3.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python38_sns.json b/tests/integration/snapshots/return_values/sync-metrics_python38_sns.json deleted file mode 100644 index e1f007e65..000000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python38_sns.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [ - "95df01b4-ee98-5cb9-9903-4c221d41eb5e" - ] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python38_sqs.json b/tests/integration/snapshots/return_values/sync-metrics_python38_sqs.json deleted file mode 100644 index 970f7dff2..000000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python38_sqs.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [ - "059f36b4-87a3-44ab-83d2-661975830a7d", - "2e1424d4-f796-459a-8184-9c92662be6da" - ] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python38_websocket.json b/tests/integration/snapshots/return_values/sync-metrics_python38_websocket.json deleted file mode 100644 index d888139d2..000000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python38_websocket.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": "Fc5S3EvdGjQFtsQ=", - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python39_api-gateway-get.json b/tests/integration/snapshots/return_values/sync-metrics_python39_api-gateway-get.json deleted file mode 100644 index 64b724471..000000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python39_api-gateway-get.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": "77375676-xmpl-4b79-853a-f982474efe18", - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python39_dynamodb.json b/tests/integration/snapshots/return_values/sync-metrics_python39_dynamodb.json deleted file mode 100644 index 1ad668ecc..000000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python39_dynamodb.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python39_eventbridge-custom.json b/tests/integration/snapshots/return_values/sync-metrics_python39_eventbridge-custom.json deleted file mode 100644 index 1ad668ecc..000000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python39_eventbridge-custom.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python39_http-api.json b/tests/integration/snapshots/return_values/sync-metrics_python39_http-api.json deleted file mode 100644 index d279e5e29..000000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python39_http-api.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": "FaHnXjKCGjQEJ7A=", - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python39_kinesis.json b/tests/integration/snapshots/return_values/sync-metrics_python39_kinesis.json deleted file mode 100644 index 1ad668ecc..000000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python39_kinesis.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python39_s3.json b/tests/integration/snapshots/return_values/sync-metrics_python39_s3.json deleted file mode 100644 index 1ad668ecc..000000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python39_s3.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python39_sns.json b/tests/integration/snapshots/return_values/sync-metrics_python39_sns.json deleted file mode 100644 index e1f007e65..000000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python39_sns.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [ - "95df01b4-ee98-5cb9-9903-4c221d41eb5e" - ] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python39_sqs.json b/tests/integration/snapshots/return_values/sync-metrics_python39_sqs.json deleted file mode 100644 index 970f7dff2..000000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python39_sqs.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": null, - "event_record_ids": [ - "059f36b4-87a3-44ab-83d2-661975830a7d", - "2e1424d4-f796-459a-8184-9c92662be6da" - ] - } -} diff --git a/tests/integration/snapshots/return_values/sync-metrics_python39_websocket.json b/tests/integration/snapshots/return_values/sync-metrics_python39_websocket.json deleted file mode 100644 index d888139d2..000000000 --- a/tests/integration/snapshots/return_values/sync-metrics_python39_websocket.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "statusCode": 200, - "body": { - "message": "hello, dog!", - "request_id": "Fc5S3EvdGjQFtsQ=", - "event_record_ids": [] - } -} diff --git a/tests/integration/snapshots/return_values/async-metrics_python37_s3.json b/tests/integration/snapshots/return_values/sync-metrics_s3.json similarity index 100% rename from tests/integration/snapshots/return_values/async-metrics_python37_s3.json rename to tests/integration/snapshots/return_values/sync-metrics_s3.json diff --git a/tests/integration/snapshots/return_values/async-metrics_python37_sns.json b/tests/integration/snapshots/return_values/sync-metrics_sns.json similarity index 100% rename from tests/integration/snapshots/return_values/async-metrics_python37_sns.json rename to tests/integration/snapshots/return_values/sync-metrics_sns.json diff --git a/tests/integration/snapshots/return_values/async-metrics_python37_sqs.json b/tests/integration/snapshots/return_values/sync-metrics_sqs.json similarity index 100% rename from tests/integration/snapshots/return_values/async-metrics_python37_sqs.json rename to tests/integration/snapshots/return_values/sync-metrics_sqs.json diff --git a/tests/integration/snapshots/return_values/async-metrics_python37_websocket.json b/tests/integration/snapshots/return_values/sync-metrics_websocket.json similarity index 100% rename from tests/integration/snapshots/return_values/async-metrics_python37_websocket.json rename to tests/integration/snapshots/return_values/sync-metrics_websocket.json From 3eaecde9dd7c1be6c51bf3711165ebfd880dd288 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Mon, 17 Apr 2023 21:52:57 -0400 Subject: [PATCH 051/403] version 4.71.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 6e1195bb4..495c1247c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "4.70.0" +version = "4.71.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From a3ea6ac7d8ab0298ec5ce4de4aede2e8346004f3 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Tue, 25 Apr 2023 10:33:08 -0400 Subject: [PATCH 052/403] Some env variables depend on DD_TRACE_ENABLED (#323) * Some env variables depend on DD_TRACE_ENABLED * cleanup and add test cases --- datadog_lambda/wrapper.py | 59 ++++++++++++++++++++------------ tests/test_wrapper.py | 71 +++++++++++++++++++++++++-------------- 2 files changed, 84 insertions(+), 46 deletions(-) diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index fb849cec9..e24358d00 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -57,6 +57,20 @@ service_env_var = os.environ.get("DD_SERVICE", "DefaultServiceName") env_env_var = os.environ.get("DD_ENV", None) +DD_FLUSH_TO_LOG = "DD_FLUSH_TO_LOG" +DD_LOGS_INJECTION = "DD_LOGS_INJECTION" +DD_MERGE_XRAY_TRACES = "DD_MERGE_XRAY_TRACES" +AWS_LAMBDA_FUNCTION_NAME = "AWS_LAMBDA_FUNCTION_NAME" +DD_TRACE_EXTRACTOR = "DD_TRACE_EXTRACTOR" +DD_TRACE_MANAGED_SERVICES = "DD_TRACE_MANAGED_SERVICES" +DD_ENCODE_AUTHORIZER_CONTEXT = "DD_ENCODE_AUTHORIZER_CONTEXT" +DD_DECODE_AUTHORIZER_CONTEXT = "DD_DECODE_AUTHORIZER_CONTEXT" +DD_COLD_START_TRACING = "DD_COLD_START_TRACING" +DD_MIN_COLD_START_DURATION = "DD_MIN_COLD_START_DURATION" +DD_COLD_START_TRACE_SKIP_LIB = "DD_COLD_START_TRACE_SKIP_LIB" +DD_REQUESTS_SERVICE_NAME = "DD_REQUESTS_SERVICE_NAME" +DD_SERVICE = "DD_SERVICE" + """ Usage: @@ -110,49 +124,52 @@ def __init__(self, func): """Executes when the wrapped function gets wrapped""" try: self.func = func - self.flush_to_log = os.environ.get("DD_FLUSH_TO_LOG", "").lower() == "true" + self.flush_to_log = os.environ.get(DD_FLUSH_TO_LOG, "").lower() == "true" self.logs_injection = ( - os.environ.get("DD_LOGS_INJECTION", "true").lower() == "true" + os.environ.get(DD_LOGS_INJECTION, "true").lower() == "true" ) self.merge_xray_traces = ( - os.environ.get("DD_MERGE_XRAY_TRACES", "false").lower() == "true" + os.environ.get(DD_MERGE_XRAY_TRACES, "false").lower() == "true" ) - self.function_name = os.environ.get("AWS_LAMBDA_FUNCTION_NAME", "function") - self.extractor_env = os.environ.get("DD_TRACE_EXTRACTOR", None) + self.function_name = os.environ.get(AWS_LAMBDA_FUNCTION_NAME, "function") + self.extractor_env = os.environ.get(DD_TRACE_EXTRACTOR, None) self.trace_extractor = None self.span = None self.inferred_span = None - self.make_inferred_span = ( - os.environ.get("DD_TRACE_MANAGED_SERVICES", "true").lower() == "true" + depends_on_dd_tracing_enabled = ( + lambda original_boolean: dd_tracing_enabled and original_boolean + ) + self.make_inferred_span = depends_on_dd_tracing_enabled( + os.environ.get(DD_TRACE_MANAGED_SERVICES, "true").lower() == "true" ) - self.encode_authorizer_context = ( - os.environ.get("DD_ENCODE_AUTHORIZER_CONTEXT", "true").lower() == "true" + self.encode_authorizer_context = depends_on_dd_tracing_enabled( + os.environ.get(DD_ENCODE_AUTHORIZER_CONTEXT, "true").lower() == "true" ) - self.decode_authorizer_context = ( - os.environ.get("DD_DECODE_AUTHORIZER_CONTEXT", "true").lower() == "true" + self.decode_authorizer_context = depends_on_dd_tracing_enabled( + os.environ.get(DD_DECODE_AUTHORIZER_CONTEXT, "true").lower() == "true" ) - self.cold_start_tracing = ( - os.environ.get("DD_COLD_START_TRACING", "true").lower() == "true" + self.cold_start_tracing = depends_on_dd_tracing_enabled( + os.environ.get(DD_COLD_START_TRACING, "true").lower() == "true" ) self.min_cold_start_trace_duration = 3 - if "DD_MIN_COLD_START_DURATION" in os.environ: + if DD_MIN_COLD_START_DURATION in os.environ: try: self.min_cold_start_trace_duration = int( - os.environ["DD_MIN_COLD_START_DURATION"] + os.environ[DD_MIN_COLD_START_DURATION] ) except Exception: - logger.debug("Malformatted env DD_MIN_COLD_START_DURATION") + logger.debug(f"Malformatted env {DD_MIN_COLD_START_DURATION}") self.cold_start_trace_skip_lib = [ "ddtrace.internal.compat", "ddtrace.filters", ] - if "DD_COLD_START_TRACE_SKIP_LIB" in os.environ: + if DD_COLD_START_TRACE_SKIP_LIB in os.environ: try: self.cold_start_trace_skip_lib = os.environ[ - "DD_COLD_START_TRACE_SKIP_LIB" + DD_COLD_START_TRACE_SKIP_LIB ].split(",") except Exception: - logger.debug("Malformatted for env DD_COLD_START_TRACE_SKIP_LIB") + logger.debug(f"Malformatted for env {DD_COLD_START_TRACE_SKIP_LIB}") self.response = None if profiling_env_var: self.prof = profiler.Profiler(env=env_env_var, service=service_env_var) @@ -170,8 +187,8 @@ def __init__(self, func): # This prevents a breaking change in ddtrace v0.49 regarding the service name # in requests-related spans - os.environ["DD_REQUESTS_SERVICE_NAME"] = os.environ.get( - "DD_SERVICE", "aws.lambda" + os.environ[DD_REQUESTS_SERVICE_NAME] = os.environ.get( + DD_SERVICE, "aws.lambda" ) # Patch third-party libraries for tracing patch_all() diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index bde397c29..f4be6cb0c 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -6,7 +6,7 @@ from unittest.mock import patch, call, ANY, MagicMock from datadog_lambda.constants import TraceHeader -from datadog_lambda.wrapper import datadog_lambda_wrapper +import datadog_lambda.wrapper as wrapper from datadog_lambda.metric import lambda_metric from datadog_lambda.thread_stats_writer import ThreadStatsWriter @@ -31,8 +31,11 @@ class TestDatadogLambdaWrapper(unittest.TestCase): def setUp(self): # Force @datadog_lambda_wrapper to always create a real # (not no-op) wrapper. - datadog_lambda_wrapper._force_wrap = True + patch("ddtrace.internal.remoteconfig.RemoteConfig").start() + patch("ddtrace.internal.writer.AgentWriter.flush_queue").start() + wrapper.datadog_lambda_wrapper._force_wrap = True + wrapper.dd_tracing_enabled = True patcher = patch( "datadog.threadstats.reporters.HttpReporter.flush_distributions" ) @@ -84,7 +87,9 @@ def setUp(self): self.addCleanup(patcher.stop) def test_datadog_lambda_wrapper(self): - @datadog_lambda_wrapper + wrapper.dd_tracing_enabled = False + + @wrapper.datadog_lambda_wrapper def lambda_handler(event, context): lambda_metric("test.metric", 100) @@ -93,7 +98,7 @@ def lambda_handler(event, context): lambda_context = get_mock_context() lambda_handler(lambda_event, lambda_context) - + wrapper.dd_tracing_enabled = True self.mock_threadstats_flush_distributions.assert_has_calls( [ call( @@ -112,7 +117,10 @@ def lambda_handler(event, context): ] ) self.mock_extract_dd_trace_context.assert_called_with( - lambda_event, lambda_context, extractor=None, decode_authorizer_context=True + lambda_event, + lambda_context, + extractor=None, + decode_authorizer_context=False, ) self.mock_set_correlation_ids.assert_called() self.mock_inject_correlation_ids.assert_called() @@ -121,7 +129,7 @@ def lambda_handler(event, context): def test_datadog_lambda_wrapper_flush_to_log(self): os.environ["DD_FLUSH_TO_LOG"] = "True" - @datadog_lambda_wrapper + @wrapper.datadog_lambda_wrapper def lambda_handler(event, context): lambda_metric("test.metric", 100) @@ -139,7 +147,7 @@ def test_datadog_lambda_wrapper_flush_in_thread(self): metric_module.lambda_stats.stop() metric_module.lambda_stats = ThreadStatsWriter(True) - @datadog_lambda_wrapper + @wrapper.datadog_lambda_wrapper def lambda_handler(event, context): import time @@ -166,7 +174,7 @@ def test_datadog_lambda_wrapper_not_flush_in_thread(self): metric_module.lambda_stats.stop() metric_module.lambda_stats = ThreadStatsWriter(False) - @datadog_lambda_wrapper + @wrapper.datadog_lambda_wrapper def lambda_handler(event, context): import time @@ -188,21 +196,22 @@ def lambda_handler(event, context): def test_datadog_lambda_wrapper_inject_correlation_ids(self): os.environ["DD_LOGS_INJECTION"] = "True" + wrapper.dd_tracing_enabled = False - @datadog_lambda_wrapper + @wrapper.datadog_lambda_wrapper def lambda_handler(event, context): lambda_metric("test.metric", 100) lambda_event = {} lambda_handler(lambda_event, get_mock_context()) - + wrapper.dd_tracing_enabled = True self.mock_set_correlation_ids.assert_called() self.mock_inject_correlation_ids.assert_called() del os.environ["DD_LOGS_INJECTION"] def test_invocations_metric(self): - @datadog_lambda_wrapper + @wrapper.datadog_lambda_wrapper def lambda_handler(event, context): lambda_metric("test.metric", 100) @@ -232,7 +241,7 @@ def lambda_handler(event, context): ) def test_errors_metric(self): - @datadog_lambda_wrapper + @wrapper.datadog_lambda_wrapper def lambda_handler(event, context): raise RuntimeError() @@ -288,7 +297,7 @@ def test_5xx_sends_errors_metric_and_set_tags(self, mock_extract_trigger_tags): "http.method": "GET", } - @datadog_lambda_wrapper + @wrapper.datadog_lambda_wrapper def lambda_handler(event, context): return {"statusCode": 500, "body": "fake response body"} @@ -334,7 +343,7 @@ def lambda_handler(event, context): ) def test_enhanced_metrics_cold_start_tag(self): - @datadog_lambda_wrapper + @wrapper.datadog_lambda_wrapper def lambda_handler(event, context): lambda_metric("test.metric", 100) @@ -386,7 +395,7 @@ def lambda_handler(event, context): ) def test_enhanced_metrics_latest(self): - @datadog_lambda_wrapper + @wrapper.datadog_lambda_wrapper def lambda_handler(event, context): lambda_metric("test.metric", 100) @@ -420,7 +429,7 @@ def lambda_handler(event, context): ) def test_enhanced_metrics_alias(self): - @datadog_lambda_wrapper + @wrapper.datadog_lambda_wrapper def lambda_handler(event, context): lambda_metric("test.metric", 100) @@ -456,7 +465,7 @@ def lambda_handler(event, context): def test_no_enhanced_metrics_without_env_var(self): os.environ["DD_ENHANCED_METRICS"] = "false" - @datadog_lambda_wrapper + @wrapper.datadog_lambda_wrapper def lambda_handler(event, context): raise RuntimeError() @@ -474,15 +483,15 @@ def test_only_one_wrapper_in_use(self): self.mock_submit_invocations_metric = patcher.start() self.addCleanup(patcher.stop) - @datadog_lambda_wrapper + @wrapper.datadog_lambda_wrapper def lambda_handler(event, context): lambda_metric("test.metric", 100) # Turn off _force_wrap to emulate the nested wrapper scenario, # the second @datadog_lambda_wrapper should actually be no-op. - datadog_lambda_wrapper._force_wrap = False + wrapper.datadog_lambda_wrapper._force_wrap = False - lambda_handler_double_wrapped = datadog_lambda_wrapper(lambda_handler) + lambda_handler_double_wrapped = wrapper.datadog_lambda_wrapper(lambda_handler) lambda_event = {} @@ -492,7 +501,7 @@ def lambda_handler(event, context): self.mock_submit_invocations_metric.assert_called_once() def test_dd_requests_service_name_default(self): - @datadog_lambda_wrapper + @wrapper.datadog_lambda_wrapper def lambda_handler(event, context): pass @@ -501,7 +510,7 @@ def lambda_handler(event, context): def test_dd_requests_service_name_set(self): os.environ["DD_SERVICE"] = "myAwesomeService" - @datadog_lambda_wrapper + @wrapper.datadog_lambda_wrapper def lambda_handler(event, context): pass @@ -509,7 +518,7 @@ def lambda_handler(event, context): del os.environ["DD_SERVICE"] def test_encode_authorizer_span(self): - @datadog_lambda_wrapper + @wrapper.datadog_lambda_wrapper def lambda_handler(event, context): return { "principalId": "foo", @@ -537,7 +546,7 @@ def lambda_handler(event, context): mock_span.start_ns = 1668127541671386817 mock_span.duration_ns = 1e8 lambda_handler.inferred_span = mock_span - + lambda_handler.make_inferred_span = False result = lambda_handler(lambda_event, lambda_context) inject_data = json.loads(base64.b64decode(result["context"]["_datadog"])) self.assertEquals(inject_data[TraceHeader.PARENT_ID], "123") @@ -551,10 +560,22 @@ def test_different_return_type_no_error(self, MockPrintExc): mock_context = get_mock_context() for test_result in TEST_RESULTS: - @datadog_lambda_wrapper + @wrapper.datadog_lambda_wrapper def return_type_test(event, context): return test_result result = return_type_test({}, mock_context) self.assertEquals(result, test_result) self.assertFalse(MockPrintExc.called) + + +class TestLambdaDecoratorSettings(unittest.TestCase): + def test_some_envs_should_depend_on_dd_tracing_enabled(self): + wrapper.dd_tracing_enabled = False + os.environ[wrapper.DD_TRACE_MANAGED_SERVICES] = "true" + os.environ[wrapper.DD_ENCODE_AUTHORIZER_CONTEXT] = "true" + os.environ[wrapper.DD_DECODE_AUTHORIZER_CONTEXT] = "true" + decorator = wrapper._LambdaDecorator(func=None) + self.assertFalse(decorator.make_inferred_span) + self.assertFalse(decorator.encode_authorizer_context) + self.assertFalse(decorator.decode_authorizer_context) From 046ff89604f58a6aa258a72f771301ab3a325f70 Mon Sep 17 00:00:00 2001 From: Pedro Palacios Avila Date: Tue, 25 Apr 2023 10:26:34 -0500 Subject: [PATCH 053/403] fix: Ensure injected headers are `str` (#325) The python3.7 runtime cannot serialize byte strings --- datadog_lambda/wrapper.py | 2 +- tests/test_wrapper.py | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index e24358d00..57b540f61 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -236,7 +236,7 @@ def _inject_authorizer_span_headers(self, request_id): injected_headers[Headers.Parent_Span_Finish_Time] = finish_time_ns if request_id is not None: injected_headers[Headers.Authorizing_Request_Id] = request_id - datadog_data = base64.b64encode(json.dumps(injected_headers).encode()) + datadog_data = base64.b64encode(json.dumps(injected_headers).encode()).decode() self.response.setdefault("context", {}) self.response["context"]["_datadog"] = datadog_data diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index f4be6cb0c..a2af88468 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -548,7 +548,9 @@ def lambda_handler(event, context): lambda_handler.inferred_span = mock_span lambda_handler.make_inferred_span = False result = lambda_handler(lambda_event, lambda_context) - inject_data = json.loads(base64.b64decode(result["context"]["_datadog"])) + raw_inject_data = result["context"]["_datadog"] + self.assertIsInstance(raw_inject_data, str) + inject_data = json.loads(base64.b64decode(raw_inject_data)) self.assertEquals(inject_data[TraceHeader.PARENT_ID], "123") self.assertEquals(inject_data[TraceHeader.TRACE_ID], "456") self.assertEquals(inject_data[TraceHeader.SAMPLING_PRIORITY], "1") From 309559b01e992e9ff9c9a1fb0ca2eb0033d68da2 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Thu, 27 Apr 2023 13:50:45 -0400 Subject: [PATCH 054/403] feat: Strip setuptools (#322) --- Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Dockerfile b/Dockerfile index 277bac103..225f47976 100644 --- a/Dockerfile +++ b/Dockerfile @@ -17,3 +17,4 @@ RUN find ./python/lib/$runtime/site-packages -name \*.pyc -delete # Remove botocore (40MB) to reduce package size. aws-xray-sdk # installs it, while it's already provided by the Lambda Runtime. RUN rm -rf ./python/lib/$runtime/site-packages/botocore* +RUN rm -rf ./python/lib/$runtime/site-packages/setuptools From 759701d5b7f4f26b8963d31b7d680ebd98ff273c Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Thu, 27 Apr 2023 15:14:14 -0400 Subject: [PATCH 055/403] version 4.72.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 495c1247c..452d82630 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "4.71.0" +version = "4.72.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From a8949387c49575f84970b429913e9ca7f5079454 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Fri, 28 Apr 2023 14:09:41 -0400 Subject: [PATCH 056/403] [downsizing] remove jsonshema/tests dir (#327) --- Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Dockerfile b/Dockerfile index 225f47976..656b109fc 100644 --- a/Dockerfile +++ b/Dockerfile @@ -18,3 +18,4 @@ RUN find ./python/lib/$runtime/site-packages -name \*.pyc -delete # installs it, while it's already provided by the Lambda Runtime. RUN rm -rf ./python/lib/$runtime/site-packages/botocore* RUN rm -rf ./python/lib/$runtime/site-packages/setuptools +RUN rm -rf ./python/lib/$runtime/site-packages/jsonschema/tests From 834aa15e9fd9d0a54c55754e777cdbd02c885f84 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Thu, 18 May 2023 16:23:10 -0400 Subject: [PATCH 057/403] enforce urllib3 version (#335) --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index 452d82630..b60bf1dc3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,6 +27,7 @@ python = ">=3.7.0,<4" datadog = ">=0.41.0,<1.0.0" wrapt = "^1.11.2" ddtrace = "^1.6.4" +urllib3 = "<2.0.0" importlib_metadata = {version = "^1.0", python = "<3.8"} boto3 = { version = "^1.10.33", optional = true } typing_extensions = {version = "^4.0", python = "<3.8"} From 77ade8285682c802512c36e2f16750a696ac5611 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Tue, 23 May 2023 16:31:51 -0400 Subject: [PATCH 058/403] set_correlation_ids should handle the empty context case (#334) * set_correlation_ids handles empty trace context case --- datadog_lambda/tracing.py | 31 ++++++++++++++--------------- tests/test_tracing.py | 41 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 16 deletions(-) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 7879697ee..eca0e10b7 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -515,10 +515,12 @@ def get_dd_trace_context(): automatically, but this function can be used to manually inject the trace context to an outgoing request. """ - global dd_trace_context + if dd_tracing_enabled: + dd_trace_py_context = _get_dd_trace_py_context() + if dd_trace_py_context is not None: + return _context_obj_to_headers(dd_trace_py_context) - context = None - xray_context = None + global dd_trace_context try: xray_context = _get_xray_trace_context() # xray (sub)segment @@ -527,22 +529,17 @@ def get_dd_trace_context(): "get_dd_trace_context couldn't read from segment from x-ray, with error %s" % e ) + if not xray_context: + return {} - if xray_context and not dd_trace_context: - context = xray_context - elif xray_context and dd_trace_context: - context = dd_trace_context.copy() - context["parent-id"] = xray_context.get("parent-id") - logger.debug( - "Set parent id from xray trace context: %s", context.get("parent-id") - ) + if not dd_trace_context: + return _context_obj_to_headers(xray_context) - if dd_tracing_enabled: - dd_trace_py_context = _get_dd_trace_py_context() - if dd_trace_py_context is not None: - context = dd_trace_py_context + context = dd_trace_context.copy() + context["parent-id"] = xray_context.get("parent-id") + logger.debug("Set parent id from xray trace context: %s", context.get("parent-id")) - return _context_obj_to_headers(context) if context is not None else {} + return _context_obj_to_headers(context) def set_correlation_ids(): @@ -561,6 +558,8 @@ def set_correlation_ids(): return context = get_dd_trace_context() + if not context: + return span = tracer.trace("dummy.span") span.trace_id = int(context[TraceHeader.TRACE_ID]) diff --git a/tests/test_tracing.py b/tests/test_tracing.py index e19c66aa4..07a053fad 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -42,6 +42,32 @@ event_samples = "tests/event_samples/" +span_to_finish = None + + +def _clean_up_span(): + global span_to_finish + if span_to_finish is not None: + span_to_finish.finish() + span_to_finish = None + + +def register_span(span): + global span_to_finish + _clean_up_span() + span_to_finish = span + return span + + +def wrapped_span_creator(span_creator_func): + def result_func(*args, **kwargs): + return register_span(span_creator_func(*args, **kwargs)) + + return result_func + + +create_inferred_span = wrapped_span_creator(create_inferred_span) + class ClientContext(object): def __init__(self, custom=None): @@ -482,6 +508,15 @@ def test_set_correlation_ids(self): span = tracer.current_span() self.assertEqual(span.trace_id, 123) self.assertEqual(span.span_id, 456) + span.finish() + + def test_set_correlation_ids_handle_empty_trace_context(self): + # neither x-ray or ddtrace is used. no tracing context at all. + self.mock_get_dd_trace_context.return_value = {} + # no exception thrown + set_correlation_ids() + span = tracer.current_span() + self.assertIsNone(span) class TestFunctionSpanTags(unittest.TestCase): @@ -587,6 +622,9 @@ def setUp(self): self.mock_span_stop = patcher.start() self.addCleanup(patcher.stop) + def tearDown(self): + _clean_up_span() + def test_create_inferred_span_from_authorizer_request_api_gateway_v1_event(self): event_sample_source = "authorizer-request-api-gateway-v1" finish_time = ( @@ -733,6 +771,9 @@ def _basic_common_checks( class TestInferredSpans(unittest.TestCase): + def tearDown(self): + _clean_up_span() + def test_create_inferred_span_from_api_gateway_event(self): event_sample_source = "api-gateway" test_file = event_samples + event_sample_source + ".json" From 16f5e4ca09e2362763e9c63eb6580fb31d98d3c8 Mon Sep 17 00:00:00 2001 From: Andrew Rodriguez <49878080+zARODz11z@users.noreply.github.com> Date: Tue, 6 Jun 2023 13:40:12 -0700 Subject: [PATCH 059/403] DD_SERVICE_MAPPING implementation with tests (#333) * DD_SERVICE_MAPPING implementation with tests * use colon as delimiter * pin urllib3 to below 2.0.0 * use module level dictionary, make control flow easier to understand, refactor tests to work * revert poetry.lock and pyproject.toml * remove my urllib addition * format with black * use generic lambda_api_gateway instead of lambda_api_gateway_websocket * refactor tests and src code to leverage helper functions instead of env vars * add bad input tests and refactor tests to use get and set service mapping in test module --- datadog_lambda/tracing.py | 90 ++++- tests/event_samples/lambda-url.json | 47 +++ tests/test_tracing.py | 507 ++++++++++++++++++++++++++++ 3 files changed, 628 insertions(+), 16 deletions(-) create mode 100644 tests/event_samples/lambda-url.json diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index eca0e10b7..f356e13fa 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -684,9 +684,36 @@ def create_inferred_span( return None +def create_service_mapping(val): + new_service_mapping = {} + for entry in val.split(","): + parts = entry.split(":") + if len(parts) == 2: + key = parts[0].strip() + value = parts[1].strip() + if key != value and key and value: + new_service_mapping[key] = value + return new_service_mapping + + +def determine_service_name(service_mapping, specific_key, generic_key, default_value): + service_name = service_mapping.get(specific_key) + if service_name is None: + service_name = service_mapping.get(generic_key, default_value) + return service_name + + +service_mapping = {} +# Initialization code +service_mapping_str = os.getenv("DD_SERVICE_MAPPING", "") +service_mapping = create_service_mapping(service_mapping_str) + + def create_inferred_span_from_lambda_function_url_event(event, context): request_context = event.get("requestContext") + api_id = request_context.get("apiId") domain = request_context.get("domainName") + service_name = determine_service_name(service_mapping, api_id, "lambda_url", domain) method = request_context.get("http", {}).get("method") path = request_context.get("http", {}).get("path") resource = "{0} {1}".format(method, path) @@ -700,7 +727,7 @@ def create_inferred_span_from_lambda_function_url_event(event, context): } request_time_epoch = request_context.get("timeEpoch") args = { - "service": domain, + "service": service_name, "resource": resource, "span_type": "http", } @@ -789,13 +816,18 @@ def create_inferred_span_from_api_gateway_websocket_event( request_context = event.get("requestContext") domain = request_context.get("domainName") endpoint = request_context.get("routeKey") + api_id = request_context.get("apiId") + + service_name = determine_service_name( + service_mapping, api_id, "lambda_api_gateway", domain + ) tags = { "operation_name": "aws.apigateway.websocket", "http.url": domain + endpoint, "endpoint": endpoint, "resource_names": endpoint, - "apiid": request_context.get("apiId"), - "apiname": request_context.get("apiId"), + "apiid": api_id, + "apiname": api_id, "stage": request_context.get("stage"), "request_id": context.aws_request_id, "connection_id": request_context.get("connectionId"), @@ -808,7 +840,7 @@ def create_inferred_span_from_api_gateway_websocket_event( else: InferredSpanInfo.set_tags(tags, tag_source="self", synchronicity="sync") args = { - "service": domain, + "service": service_name, "resource": endpoint, "span_type": "web", } @@ -837,6 +869,10 @@ def create_inferred_span_from_api_gateway_event( ): request_context = event.get("requestContext") domain = request_context.get("domainName", "") + api_id = request_context.get("apiId") + service_name = determine_service_name( + service_mapping, api_id, "lambda_api_gateway", domain + ) method = event.get("httpMethod") path = event.get("path") resource = "{0} {1}".format(method, path) @@ -846,8 +882,8 @@ def create_inferred_span_from_api_gateway_event( "endpoint": path, "http.method": method, "resource_names": resource, - "apiid": request_context.get("apiId"), - "apiname": request_context.get("apiId"), + "apiid": api_id, + "apiname": api_id, "stage": request_context.get("stage"), "request_id": context.aws_request_id, } @@ -857,7 +893,7 @@ def create_inferred_span_from_api_gateway_event( else: InferredSpanInfo.set_tags(tags, tag_source="self", synchronicity="sync") args = { - "service": domain, + "service": service_name, "resource": resource, "span_type": "http", } @@ -887,6 +923,10 @@ def create_inferred_span_from_http_api_event( ): request_context = event.get("requestContext") domain = request_context.get("domainName") + api_id = request_context.get("apiId") + service_name = determine_service_name( + service_mapping, api_id, "lambda_api_gateway", domain + ) method = request_context.get("http", {}).get("method") path = event.get("rawPath") resource = "{0} {1}".format(method, path) @@ -900,8 +940,8 @@ def create_inferred_span_from_http_api_event( "http.user_agent": request_context.get("http", {}).get("userAgent"), "resource_names": resource, "request_id": context.aws_request_id, - "apiid": request_context.get("apiId"), - "apiname": request_context.get("apiId"), + "apiid": api_id, + "apiname": api_id, "stage": request_context.get("stage"), } request_time_epoch_ms = int(request_context.get("timeEpoch")) @@ -910,7 +950,7 @@ def create_inferred_span_from_http_api_event( else: InferredSpanInfo.set_tags(tags, tag_source="self", synchronicity="sync") args = { - "service": domain, + "service": service_name, "resource": resource, "span_type": "http", } @@ -935,6 +975,9 @@ def create_inferred_span_from_sqs_event(event, context): event_record = get_first_record(event) event_source_arn = event_record.get("eventSourceARN") queue_name = event_source_arn.split(":")[-1] + service_name = determine_service_name( + service_mapping, queue_name, "lambda_sqs", "sqs" + ) tags = { "operation_name": "aws.sqs", "resource_names": queue_name, @@ -946,7 +989,7 @@ def create_inferred_span_from_sqs_event(event, context): InferredSpanInfo.set_tags(tags, tag_source="self", synchronicity="async") request_time_epoch = event_record.get("attributes", {}).get("SentTimestamp") args = { - "service": "sqs", + "service": service_name, "resource": queue_name, "span_type": "web", } @@ -989,6 +1032,9 @@ def create_inferred_span_from_sns_event(event, context): sns_message = event_record.get("Sns") topic_arn = event_record.get("Sns", {}).get("TopicArn") topic_name = topic_arn.split(":")[-1] + service_name = determine_service_name( + service_mapping, topic_name, "lambda_sns", "sns" + ) tags = { "operation_name": "aws.sns", "resource_names": topic_name, @@ -1008,7 +1054,7 @@ def create_inferred_span_from_sns_event(event, context): dt = datetime.strptime(timestamp, sns_dt_format) args = { - "service": "sns", + "service": service_name, "resource": topic_name, "span_type": "web", } @@ -1026,6 +1072,9 @@ def create_inferred_span_from_kinesis_event(event, context): event_id = event_record.get("eventID") stream_name = event_source_arn.split(":")[-1] shard_id = event_id.split(":")[0] + service_name = determine_service_name( + service_mapping, stream_name, "lambda_kinesis", "kinesis" + ) tags = { "operation_name": "aws.kinesis", "resource_names": stream_name, @@ -1043,7 +1092,7 @@ def create_inferred_span_from_kinesis_event(event, context): ) args = { - "service": "kinesis", + "service": service_name, "resource": stream_name, "span_type": "web", } @@ -1059,6 +1108,9 @@ def create_inferred_span_from_dynamodb_event(event, context): event_record = get_first_record(event) event_source_arn = event_record.get("eventSourceARN") table_name = event_source_arn.split("/")[1] + service_name = determine_service_name( + service_mapping, table_name, "lambda_dynamodb", "dynamodb" + ) dynamodb_message = event_record.get("dynamodb") tags = { "operation_name": "aws.dynamodb", @@ -1076,7 +1128,7 @@ def create_inferred_span_from_dynamodb_event(event, context): "ApproximateCreationDateTime" ) args = { - "service": "dynamodb", + "service": service_name, "resource": table_name, "span_type": "web", } @@ -1092,6 +1144,9 @@ def create_inferred_span_from_dynamodb_event(event, context): def create_inferred_span_from_s3_event(event, context): event_record = get_first_record(event) bucket_name = event_record.get("s3", {}).get("bucket", {}).get("name") + service_name = determine_service_name( + service_mapping, bucket_name, "lambda_s3", "s3" + ) tags = { "operation_name": "aws.s3", "resource_names": bucket_name, @@ -1108,7 +1163,7 @@ def create_inferred_span_from_s3_event(event, context): dt = datetime.strptime(timestamp, dt_format) args = { - "service": "s3", + "service": service_name, "resource": bucket_name, "span_type": "web", } @@ -1122,6 +1177,9 @@ def create_inferred_span_from_s3_event(event, context): def create_inferred_span_from_eventbridge_event(event, context): source = event.get("source") + service_name = determine_service_name( + service_mapping, source, "lambda_eventbridge", "eventbridge" + ) tags = { "operation_name": "aws.eventbridge", "resource_names": source, @@ -1137,7 +1195,7 @@ def create_inferred_span_from_eventbridge_event(event, context): dt = datetime.strptime(timestamp, dt_format) args = { - "service": "eventbridge", + "service": service_name, "resource": source, "span_type": "web", } diff --git a/tests/event_samples/lambda-url.json b/tests/event_samples/lambda-url.json new file mode 100644 index 000000000..8e78650a8 --- /dev/null +++ b/tests/event_samples/lambda-url.json @@ -0,0 +1,47 @@ +{ + "version": "2.0", + "routeKey": "$default", + "rawPath": "/", + "rawQueryString": "", + "headers": { + "sec-fetch-mode": "navigate", + "sec-fetch-site": "none", + "accept-language": "en-US,en;q=0.9", + "x-forwarded-proto": "https", + "x-forwarded-port": "443", + "x-forwarded-for": "71.195.30.42", + "sec-fetch-user": "?1", + "pragma": "no-cache", + "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9", + "sec-ch-ua": "\"Google Chrome\";v=\"95\", \"Chromium\";v=\"95\", \";Not A Brand\";v=\"99\"", + "sec-ch-ua-mobile": "?0", + "x-amzn-trace-id": "Root=1-61953929-1ec00c3011062a48477b169e", + "sec-ch-ua-platform": "\"macOS\"", + "host": "a8hyhsshac.lambda-url.eu-south-1.amazonaws.com", + "upgrade-insecure-requests": "1", + "cache-control": "no-cache", + "accept-encoding": "gzip, deflate, br", + "sec-fetch-dest": "document", + "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36" + }, + "requestContext": { + "accountId": "601427279990", + "apiId": "a8hyhsshac", + "domainName": "a8hyhsshac.lambda-url.eu-south-1.amazonaws.com", + "domainPrefix": "a8hyhsshac", + "http": { + "method": "GET", + "path": "/", + "protocol": "HTTP/1.1", + "sourceIp": "71.195.30.42", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36" + }, + "requestId": "ec4d58f8-2b8b-4ceb-a1d5-2be7bff58505", + "routeKey": "$default", + "stage": "$default", + "time": "17/Nov/2021:17:17:29 +0000", + "timeEpoch": 1637169449721 + }, + "isBase64Encoded": false + } + \ No newline at end of file diff --git a/tests/test_tracing.py b/tests/test_tracing.py index 07a053fad..74cebac4c 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -1,6 +1,7 @@ import unittest import json import os +import copy from unittest.mock import MagicMock, Mock, patch, call @@ -29,6 +30,9 @@ _convert_xray_sampling, InferredSpanInfo, extract_context_from_eventbridge_event, + create_service_mapping, + determine_service_name, + service_mapping as global_service_mapping, ) from datadog_lambda.trigger import EventTypes @@ -770,6 +774,509 @@ def _basic_common_checks( self.assertEqual(span.get_tag("request_id"), "abc123") +class TestServiceMapping(unittest.TestCase): + def setUp(self): + self.service_mapping = {} + + def get_service_mapping(self): + return global_service_mapping + + def set_service_mapping(self, new_service_mapping): + global_service_mapping.clear() + global_service_mapping.update(new_service_mapping) + + def test_create_service_mapping_invalid_input(self): + # Test case where the input is a string without a colon to split on + val = "api1" + self.assertEqual(create_service_mapping(val), {}) + + # Test case where the input is an empty string + val = "" + self.assertEqual(create_service_mapping(val), {}) + + # Test case where the key and value are identical + val = "api1:api1" + self.assertEqual(create_service_mapping(val), {}) + + # Test case where the key or value is missing + val = ":api1" + self.assertEqual(create_service_mapping(val), {}) + val = "api1:" + self.assertEqual(create_service_mapping(val), {}) + + def test_create_service_mapping(self): + val = "api1:service1,api2:service2" + expected_output = {"api1": "service1", "api2": "service2"} + self.assertEqual(create_service_mapping(val), expected_output) + + def test_get_service_mapping(self): + os.environ["DD_SERVICE_MAPPING"] = "api1:service1,api2:service2" + expected_output = {"api1": "service1", "api2": "service2"} + self.set_service_mapping( + create_service_mapping(os.environ["DD_SERVICE_MAPPING"]) + ) + self.assertEqual(self.get_service_mapping(), expected_output) + + def test_set_service_mapping(self): + new_service_mapping = {"api3": "service3", "api4": "service4"} + self.set_service_mapping(new_service_mapping) + self.assertEqual(self.get_service_mapping(), new_service_mapping) + + def test_determine_service_name(self): + # Prepare the environment + os.environ["DD_SERVICE_MAPPING"] = "api1:service1,api2:service2" + self.set_service_mapping( + create_service_mapping(os.environ["DD_SERVICE_MAPPING"]) + ) + + # Case where specific key is in the service mapping + specific_key = "api1" + self.assertEqual( + determine_service_name( + self.get_service_mapping(), specific_key, "lambda_url", "default" + ), + "service1", + ) + + # Case where specific key is not in the service mapping, but generic key is + specific_key = "api3" + self.assertEqual( + determine_service_name( + self.get_service_mapping(), specific_key, "api2", "default" + ), + "service2", + ) + + # Case where neither specific nor generic keys are in the service mapping + specific_key = "api3" + self.assertEqual( + determine_service_name( + self.get_service_mapping(), specific_key, "api3", "default" + ), + "default", + ) + + def test_remaps_all_inferred_span_service_names_from_api_gateway_event(self): + new_service_mapping = {"lambda_api_gateway": "new-name"} + self.set_service_mapping(new_service_mapping) + event_sample_source = "api-gateway" + test_file = event_samples + event_sample_source + ".json" + with open(test_file, "r") as event: + original_event = json.load(event) + + ctx = get_mock_context() + ctx.aws_request_id = "123" + + span1 = create_inferred_span(original_event, ctx) + self.assertEqual(span1.get_tag("operation_name"), "aws.apigateway.rest") + self.assertEqual(span1.service, "new-name") + + # Testing the second event + event2 = copy.deepcopy(original_event) + event2["requestContext"][ + "domainName" + ] = "different.execute-api.us-east-2.amazonaws.com" + span2 = create_inferred_span(event2, ctx) + self.assertEqual(span2.get_tag("operation_name"), "aws.apigateway.rest") + self.assertEqual(span2.service, "new-name") + + def test_remaps_specific_inferred_span_service_names_from_api_gateway_event( + self, + ): + new_service_mapping = {"1234567890": "new-name"} + self.set_service_mapping(new_service_mapping) + event_sample_source = "api-gateway" + test_file = event_samples + event_sample_source + ".json" + with open(test_file, "r") as event: + original_event = json.load(event) + + ctx = get_mock_context() + ctx.aws_request_id = "123" + + span1 = create_inferred_span(original_event, ctx) + self.assertEqual(span1.get_tag("operation_name"), "aws.apigateway.rest") + self.assertEqual(span1.service, "new-name") + + # Testing the second event + event2 = copy.deepcopy(original_event) + event2["requestContext"]["apiId"] = "different" + span2 = create_inferred_span(event2, ctx) + self.assertEqual(span2.get_tag("operation_name"), "aws.apigateway.rest") + self.assertEqual( + span2.service, "70ixmpl4fl.execute-api.us-east-2.amazonaws.com" + ) + + def test_remaps_specific_inferred_span_service_names_from_api_gateway_websocket_event( + self, + ): + self.set_service_mapping({"p62c47itsb": "new-name"}) + event_sample_source = "api-gateway-websocket-default" + test_file = event_samples + event_sample_source + ".json" + with open(test_file, "r") as event: + original_event = json.load(event) + + ctx = get_mock_context() + ctx.aws_request_id = "123" + + span1 = create_inferred_span(original_event, ctx) + self.assertEqual(span1.get_tag("operation_name"), "aws.apigateway.websocket") + self.assertEqual(span1.service, "new-name") + + # Testing the second event + event2 = copy.deepcopy(original_event) + event2["requestContext"]["apiId"] = "different" + span2 = create_inferred_span(event2, ctx) + self.assertEqual(span2.get_tag("operation_name"), "aws.apigateway.websocket") + self.assertEqual( + span2.service, "p62c47itsb.execute-api.eu-west-1.amazonaws.com" + ) + + def test_remaps_specific_inferred_span_service_names_from_api_gateway_http_event( + self, + ): + self.set_service_mapping({"x02yirxc7a": "new-name"}) + event_sample_source = "http-api" + test_file = event_samples + event_sample_source + ".json" + with open(test_file, "r") as event: + original_event = json.load(event) + + ctx = get_mock_context() + ctx.aws_request_id = "123" + + span1 = create_inferred_span(original_event, ctx) + self.assertEqual(span1.get_tag("operation_name"), "aws.httpapi") + self.assertEqual(span1.service, "new-name") + + # Testing the second event + event2 = copy.deepcopy(original_event) + event2["requestContext"]["apiId"] = "different" + span2 = create_inferred_span(event2, ctx) + self.assertEqual(span2.get_tag("operation_name"), "aws.httpapi") + self.assertEqual( + span2.service, "x02yirxc7a.execute-api.eu-west-1.amazonaws.com" + ) + + def test_remaps_all_inferred_span_service_names_from_lambda_url_event(self): + self.set_service_mapping({"lambda_url": "new-name"}) + event_sample_source = "lambda-url" + test_file = event_samples + event_sample_source + ".json" + with open(test_file, "r") as event: + original_event = json.load(event) + + ctx = get_mock_context() + ctx.aws_request_id = "123" + + span1 = create_inferred_span(original_event, ctx) + self.assertEqual(span1.get_tag("operation_name"), "aws.lambda.url") + self.assertEqual(span1.service, "new-name") + + # Testing the second event + event2 = copy.deepcopy(original_event) + event2["requestContext"][ + "domainName" + ] = "different.lambda-url.eu-south-1.amazonaws.com" + span2 = create_inferred_span(event2, ctx) + self.assertEqual(span2.get_tag("operation_name"), "aws.lambda.url") + self.assertEqual(span2.service, "new-name") + + def test_remaps_specific_inferred_span_service_names_from_lambda_url_event( + self, + ): + self.set_service_mapping({"a8hyhsshac": "new-name"}) + event_sample_source = "lambda-url" + test_file = event_samples + event_sample_source + ".json" + with open(test_file, "r") as event: + original_event = json.load(event) + + ctx = get_mock_context() + ctx.aws_request_id = "123" + + span1 = create_inferred_span(original_event, ctx) + self.assertEqual(span1.get_tag("operation_name"), "aws.lambda.url") + self.assertEqual(span1.service, "new-name") + + # Testing the second event + event2 = copy.deepcopy(original_event) + event2["requestContext"]["apiId"] = "different" + span2 = create_inferred_span(event2, ctx) + self.assertEqual(span2.get_tag("operation_name"), "aws.lambda.url") + self.assertEqual( + span2.service, "a8hyhsshac.lambda-url.eu-south-1.amazonaws.com" + ) + + def test_remaps_all_inferred_span_service_names_from_sqs_event(self): + self.set_service_mapping({"lambda_sqs": "new-name"}) + event_sample_source = "sqs-string-msg-attribute" + test_file = event_samples + event_sample_source + ".json" + with open(test_file, "r") as event: + original_event = json.load(event) + + ctx = get_mock_context() + ctx.aws_request_id = "123" + + span1 = create_inferred_span(original_event, ctx) + self.assertEqual(span1.get_tag("operation_name"), "aws.sqs") + self.assertEqual(span1.service, "new-name") + + # Testing the second event + event2 = copy.deepcopy(original_event) + event2["Records"][0][ + "eventSourceARN" + ] = "arn:aws:sqs:eu-west-1:123456789012:different-sqs-url" + span2 = create_inferred_span(event2, ctx) + self.assertEqual(span2.get_tag("operation_name"), "aws.sqs") + self.assertEqual(span2.service, "new-name") + + def test_remaps_specific_inferred_span_service_names_from_sqs_event(self): + self.set_service_mapping({"InferredSpansQueueNode": "new-name"}) + event_sample_source = "sqs-string-msg-attribute" + test_file = event_samples + event_sample_source + ".json" + with open(test_file, "r") as event: + original_event = json.load(event) + + ctx = get_mock_context() + ctx.aws_request_id = "123" + + span1 = create_inferred_span(original_event, ctx) + self.assertEqual(span1.get_tag("operation_name"), "aws.sqs") + self.assertEqual(span1.service, "new-name") + + # Testing the second event + event2 = copy.deepcopy(original_event) + event2["Records"][0][ + "eventSourceARN" + ] = "arn:aws:sqs:eu-west-1:123456789012:different-sqs-url" + span2 = create_inferred_span(event2, ctx) + self.assertEqual(span2.get_tag("operation_name"), "aws.sqs") + self.assertEqual(span2.service, "sqs") + + def test_remaps_all_inferred_span_service_names_from_sns_event(self): + self.set_service_mapping({"lambda_sns": "new-name"}) + event_sample_source = "sns-string-msg-attribute" + test_file = event_samples + event_sample_source + ".json" + with open(test_file, "r") as event: + original_event = json.load(event) + + ctx = get_mock_context() + ctx.aws_request_id = "123" + + span1 = create_inferred_span(original_event, ctx) + self.assertEqual(span1.get_tag("operation_name"), "aws.sns") + self.assertEqual(span1.service, "new-name") + + # Testing the second event + event2 = copy.deepcopy(original_event) + event2["Records"][0]["Sns"][ + "TopicArn" + ] = "arn:aws:sns:us-west-2:123456789012:different-sns-topic" + span2 = create_inferred_span(event2, ctx) + self.assertEqual(span2.get_tag("operation_name"), "aws.sns") + self.assertEqual(span2.service, "new-name") + + def test_remaps_specific_inferred_span_service_names_from_sns_event(self): + self.set_service_mapping({"serverlessTracingTopicPy": "new-name"}) + event_sample_source = "sns-string-msg-attribute" + test_file = event_samples + event_sample_source + ".json" + with open(test_file, "r") as event: + original_event = json.load(event) + + ctx = get_mock_context() + ctx.aws_request_id = "123" + + span1 = create_inferred_span(original_event, ctx) + self.assertEqual(span1.get_tag("operation_name"), "aws.sns") + self.assertEqual(span1.service, "new-name") + + # Testing the second event + event2 = copy.deepcopy(original_event) + event2["Records"][0]["Sns"][ + "TopicArn" + ] = "arn:aws:sns:us-west-2:123456789012:different-sns-topic" + span2 = create_inferred_span(event2, ctx) + self.assertEqual(span2.get_tag("operation_name"), "aws.sns") + self.assertEqual(span2.service, "sns") + + def test_remaps_all_inferred_span_service_names_from_kinesis_event(self): + self.set_service_mapping({"lambda_kinesis": "new-name"}) + event_sample_source = "kinesis" + test_file = event_samples + event_sample_source + ".json" + with open(test_file, "r") as event: + original_event = json.load(event) + + ctx = get_mock_context() + ctx.aws_request_id = "123" + + span1 = create_inferred_span(original_event, ctx) + self.assertEqual(span1.get_tag("operation_name"), "aws.kinesis") + self.assertEqual(span1.service, "new-name") + + # Testing the second event + event2 = copy.deepcopy(original_event) + event2["Records"][0][ + "eventSourceARN" + ] = "arn:aws:kinesis:eu-west-1:601427279990:stream/differentKinesisStream" + span2 = create_inferred_span(event2, ctx) + self.assertEqual(span2.get_tag("operation_name"), "aws.kinesis") + self.assertEqual(span2.service, "new-name") + + def test_remaps_specific_inferred_span_service_names_from_kinesis_event(self): + self.set_service_mapping({"Different_EXAMPLE": "new-name"}) + event_sample_source = "kinesis" + test_file = event_samples + event_sample_source + ".json" + with open(test_file, "r") as event: + original_event = json.load(event) + + ctx = get_mock_context() + ctx.aws_request_id = "123" + + span1 = create_inferred_span(original_event, ctx) + self.assertEqual(span1.get_tag("operation_name"), "aws.kinesis") + self.assertEqual(span1.service, "kinesis") + + # Testing the second event + event2 = copy.deepcopy(original_event) + event2["Records"][0][ + "eventSourceARN" + ] = "arn:aws:kinesis:eu-west-1:601427279990:stream/DifferentKinesisStream" + span2 = create_inferred_span(event2, ctx) + self.assertEqual(span2.get_tag("operation_name"), "aws.kinesis") + self.assertEqual(span2.service, "kinesis") + + def test_remaps_all_inferred_span_service_names_from_s3_event(self): + self.set_service_mapping({"lambda_s3": "new-name"}) + event_sample_source = "s3" + test_file = event_samples + event_sample_source + ".json" + with open(test_file, "r") as event: + original_event = json.load(event) + + ctx = get_mock_context() + ctx.aws_request_id = "123" + + span1 = create_inferred_span(original_event, ctx) + self.assertEqual(span1.get_tag("operation_name"), "aws.s3") + self.assertEqual(span1.service, "new-name") + + # Testing the second event + event2 = copy.deepcopy(original_event) + event2["Records"][0]["s3"]["bucket"][ + "arn" + ] = "arn:aws:s3:::different-example-bucket" + span2 = create_inferred_span(event2, ctx) + self.assertEqual(span2.get_tag("operation_name"), "aws.s3") + self.assertEqual(span2.service, "new-name") + + def test_remaps_specific_inferred_span_service_names_from_s3_event(self): + self.set_service_mapping({"example-bucket": "new-name"}) + event_sample_source = "s3" + test_file = event_samples + event_sample_source + ".json" + with open(test_file, "r") as event: + original_event = json.load(event) + + ctx = get_mock_context() + ctx.aws_request_id = "123" + + span1 = create_inferred_span(original_event, ctx) + self.assertEqual(span1.get_tag("operation_name"), "aws.s3") + self.assertEqual(span1.service, "new-name") + + # Testing the second event + event2 = copy.deepcopy(original_event) + event2["Records"][0]["s3"]["bucket"]["name"] = "different-example-bucket" + span2 = create_inferred_span(event2, ctx) + self.assertEqual(span2.get_tag("operation_name"), "aws.s3") + self.assertEqual(span2.service, "s3") + + def test_remaps_all_inferred_span_service_names_from_dynamodb_event(self): + self.set_service_mapping({"lambda_dynamodb": "new-name"}) + event_sample_source = "dynamodb" + test_file = event_samples + event_sample_source + ".json" + with open(test_file, "r") as event: + original_event = json.load(event) + + ctx = get_mock_context() + ctx.aws_request_id = "123" + + span1 = create_inferred_span(original_event, ctx) + self.assertEqual(span1.get_tag("operation_name"), "aws.dynamodb") + self.assertEqual(span1.service, "new-name") + + # Testing the second event + event2 = copy.deepcopy(original_event) + event2["Records"][0][ + "eventSourceARN" + ] = "arn:aws:dynamodb:us-east-1:123456789012:table/DifferentExampleTableWithStream/stream/2015-06-27T00:48:05.899" + span2 = create_inferred_span(event2, ctx) + self.assertEqual(span2.get_tag("operation_name"), "aws.dynamodb") + self.assertEqual(span2.service, "new-name") + + def test_remaps_specific_inferred_span_service_names_from_dynamodb_event(self): + self.set_service_mapping({"ExampleTableWithStream": "new-name"}) + event_sample_source = "dynamodb" + test_file = event_samples + event_sample_source + ".json" + with open(test_file, "r") as event: + original_event = json.load(event) + + ctx = get_mock_context() + ctx.aws_request_id = "123" + + span1 = create_inferred_span(original_event, ctx) + self.assertEqual(span1.get_tag("operation_name"), "aws.dynamodb") + self.assertEqual(span1.service, "new-name") + + # Testing the second event + event2 = copy.deepcopy(original_event) + event2["Records"][0][ + "eventSourceARN" + ] = "arn:aws:dynamodb:us-east-1:123456789012:table/DifferentExampleTableWithStream/stream/2015-06-27T00:48:05.899" + span2 = create_inferred_span(event2, ctx) + self.assertEqual(span2.get_tag("operation_name"), "aws.dynamodb") + self.assertEqual(span2.service, "dynamodb") + + def test_remaps_all_inferred_span_service_names_from_eventbridge_event(self): + self.set_service_mapping({"lambda_eventbridge": "new-name"}) + event_sample_source = "eventbridge-custom" + test_file = event_samples + event_sample_source + ".json" + with open(test_file, "r") as event: + original_event = json.load(event) + + ctx = get_mock_context() + ctx.aws_request_id = "123" + + span1 = create_inferred_span(original_event, ctx) + self.assertEqual(span1.get_tag("operation_name"), "aws.eventbridge") + self.assertEqual(span1.service, "new-name") + + # Testing the second event + event2 = copy.deepcopy(original_event) + event2["source"] = "different.eventbridge.custom.event.sender" + span2 = create_inferred_span(event2, ctx) + self.assertEqual(span2.get_tag("operation_name"), "aws.eventbridge") + self.assertEqual(span2.service, "new-name") + + def test_remaps_specific_inferred_span_service_names_from_eventbridge_event( + self, + ): + self.set_service_mapping({"eventbridge.custom.event.sender": "new-name"}) + event_sample_source = "eventbridge-custom" + test_file = event_samples + event_sample_source + ".json" + with open(test_file, "r") as event: + original_event = json.load(event) + + ctx = get_mock_context() + ctx.aws_request_id = "123" + + span1 = create_inferred_span(original_event, ctx) + self.assertEqual(span1.get_tag("operation_name"), "aws.eventbridge") + self.assertEqual(span1.service, "new-name") + + # Testing the second event + event2 = copy.deepcopy(original_event) + event2["source"] = "different.eventbridge.custom.event.sender" + span2 = create_inferred_span(event2, ctx) + self.assertEqual(span2.get_tag("operation_name"), "aws.eventbridge") + self.assertEqual(span2.service, "eventbridge") + + class TestInferredSpans(unittest.TestCase): def tearDown(self): _clean_up_span() From c9209cbf9752324910fbf7d5f6316b0bf8e0d4b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?jordan=20gonz=C3=A1lez?= <30836115+duncanista@users.noreply.github.com> Date: Thu, 15 Jun 2023 13:41:24 -0400 Subject: [PATCH 060/403] feat: add `peer.service` (#337) * update fallback service on wrapping * add `peer.service` for inferred spans * add tests * update integration tests * change fallback to previous value this should be handled in a profiling PR * remove logic from `tracing.py` * move `peer.service` one level up on span finish * add `service` to integration tests --- datadog_lambda/wrapper.py | 11 +- tests/integration/serverless.yml | 1 + .../logs/async-metrics_python310.log | 72 +++++++----- .../snapshots/logs/async-metrics_python37.log | 72 +++++++----- .../snapshots/logs/async-metrics_python38.log | 72 +++++++----- .../snapshots/logs/async-metrics_python39.log | 72 +++++++----- .../snapshots/logs/sync-metrics_python310.log | 110 ++++++++++-------- .../snapshots/logs/sync-metrics_python37.log | 108 ++++++++++------- .../snapshots/logs/sync-metrics_python38.log | 108 ++++++++++------- .../snapshots/logs/sync-metrics_python39.log | 110 ++++++++++-------- 10 files changed, 443 insertions(+), 293 deletions(-) diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 57b540f61..6e8384214 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -54,8 +54,6 @@ dd_capture_lambda_payload_enabled = ( os.environ.get("DD_CAPTURE_LAMBDA_PAYLOAD", "false").lower() == "true" ) -service_env_var = os.environ.get("DD_SERVICE", "DefaultServiceName") -env_env_var = os.environ.get("DD_ENV", None) DD_FLUSH_TO_LOG = "DD_FLUSH_TO_LOG" DD_LOGS_INJECTION = "DD_LOGS_INJECTION" @@ -70,6 +68,9 @@ DD_COLD_START_TRACE_SKIP_LIB = "DD_COLD_START_TRACE_SKIP_LIB" DD_REQUESTS_SERVICE_NAME = "DD_REQUESTS_SERVICE_NAME" DD_SERVICE = "DD_SERVICE" +DD_ENV = "DD_ENV" + +env_env_var = os.environ.get(DD_ENV, None) """ Usage: @@ -132,6 +133,7 @@ def __init__(self, func): os.environ.get(DD_MERGE_XRAY_TRACES, "false").lower() == "true" ) self.function_name = os.environ.get(AWS_LAMBDA_FUNCTION_NAME, "function") + self.service = os.environ.get(DD_SERVICE, None) self.extractor_env = os.environ.get(DD_TRACE_EXTRACTOR, None) self.trace_extractor = None self.span = None @@ -172,7 +174,7 @@ def __init__(self, func): logger.debug(f"Malformatted for env {DD_COLD_START_TRACE_SKIP_LIB}") self.response = None if profiling_env_var: - self.prof = profiler.Profiler(env=env_env_var, service=service_env_var) + self.prof = profiler.Profiler(env=env_env_var, service=self.service) if self.extractor_env: extractor_parts = self.extractor_env.rsplit(".", 1) if len(extractor_parts) == 2: @@ -315,6 +317,9 @@ def _after(self, event, context): if status_code: self.inferred_span.set_tag("http.status_code", status_code) + if self.service: + self.inferred_span.set_tag("peer.service", self.service) + if InferredSpanInfo.is_async(self.inferred_span) and self.span: self.inferred_span.finish(finish_time=self.span.start) else: diff --git a/tests/integration/serverless.yml b/tests/integration/serverless.yml index 27112f542..bb64c3972 100644 --- a/tests/integration/serverless.yml +++ b/tests/integration/serverless.yml @@ -12,6 +12,7 @@ provider: DD_API_KEY: ${env:DD_API_KEY} DD_TRACE_MANAGED_SERVICES: true DD_COLD_START_TRACING: false + DD_SERVICE: ${self:service} timeout: 15 deploymentBucket: name: integration-tests-serververless-deployment-bucket diff --git a/tests/integration/snapshots/logs/async-metrics_python310.log b/tests/integration/snapshots/logs/async-metrics_python310.log index a7ad8826f..d746aba4f 100644 --- a/tests/integration/snapshots/logs/async-metrics_python310.log +++ b/tests/integration/snapshots/logs/async-metrics_python310.log @@ -66,6 +66,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -114,7 +115,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -130,7 +131,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -138,7 +140,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -228,6 +230,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "size_bytes": "26", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -272,7 +275,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -288,7 +291,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -296,7 +300,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -380,6 +384,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "detail_type": "testdetail", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -423,7 +428,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -439,7 +444,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -447,7 +453,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -541,6 +547,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -589,7 +596,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -605,7 +612,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -613,7 +621,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -703,6 +711,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "partition_key": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -747,7 +756,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -763,7 +772,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -771,7 +781,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -858,6 +868,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "object_etag": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -902,7 +913,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -918,7 +929,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -926,7 +938,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1014,6 +1026,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "subject": "TestInvoke", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -1058,7 +1071,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1074,7 +1087,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -1082,7 +1096,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1169,6 +1183,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "sender_id": "AIDAIENQZJOLO23YVJ4VO", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -1213,7 +1228,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1229,7 +1244,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -1237,7 +1253,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1330,6 +1346,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -1376,7 +1393,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1392,7 +1409,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -1400,7 +1418,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, diff --git a/tests/integration/snapshots/logs/async-metrics_python37.log b/tests/integration/snapshots/logs/async-metrics_python37.log index 46a4f3364..e28bb9b39 100644 --- a/tests/integration/snapshots/logs/async-metrics_python37.log +++ b/tests/integration/snapshots/logs/async-metrics_python37.log @@ -66,6 +66,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -114,7 +115,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -130,7 +131,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -138,7 +140,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -228,6 +230,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "size_bytes": "26", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -272,7 +275,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -288,7 +291,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -296,7 +300,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -380,6 +384,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "detail_type": "testdetail", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -423,7 +428,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -439,7 +444,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -447,7 +453,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -541,6 +547,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -589,7 +596,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -605,7 +612,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -613,7 +621,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -703,6 +711,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "partition_key": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -747,7 +756,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -763,7 +772,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -771,7 +781,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -858,6 +868,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "object_etag": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -902,7 +913,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -918,7 +929,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -926,7 +938,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1014,6 +1026,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "subject": "TestInvoke", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -1058,7 +1071,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1074,7 +1087,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -1082,7 +1096,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1169,6 +1183,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "sender_id": "AIDAIENQZJOLO23YVJ4VO", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -1213,7 +1228,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1229,7 +1244,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -1237,7 +1253,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1330,6 +1346,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -1376,7 +1393,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1392,7 +1409,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -1400,7 +1418,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, diff --git a/tests/integration/snapshots/logs/async-metrics_python38.log b/tests/integration/snapshots/logs/async-metrics_python38.log index f27dfcd99..c146ef0fd 100644 --- a/tests/integration/snapshots/logs/async-metrics_python38.log +++ b/tests/integration/snapshots/logs/async-metrics_python38.log @@ -66,6 +66,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -114,7 +115,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -130,7 +131,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -138,7 +140,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -228,6 +230,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "size_bytes": "26", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -272,7 +275,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -288,7 +291,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -296,7 +300,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -380,6 +384,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "detail_type": "testdetail", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -423,7 +428,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -439,7 +444,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -447,7 +453,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -541,6 +547,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -589,7 +596,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -605,7 +612,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -613,7 +621,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -703,6 +711,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "partition_key": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -747,7 +756,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -763,7 +772,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -771,7 +781,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -858,6 +868,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "object_etag": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -902,7 +913,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -918,7 +929,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -926,7 +938,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1014,6 +1026,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "subject": "TestInvoke", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -1058,7 +1071,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1074,7 +1087,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -1082,7 +1096,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1169,6 +1183,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "sender_id": "AIDAIENQZJOLO23YVJ4VO", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -1213,7 +1228,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1229,7 +1244,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -1237,7 +1253,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1330,6 +1346,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -1376,7 +1393,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1392,7 +1409,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -1400,7 +1418,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, diff --git a/tests/integration/snapshots/logs/async-metrics_python39.log b/tests/integration/snapshots/logs/async-metrics_python39.log index 1968de5e5..bc0fb4e85 100644 --- a/tests/integration/snapshots/logs/async-metrics_python39.log +++ b/tests/integration/snapshots/logs/async-metrics_python39.log @@ -66,6 +66,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -114,7 +115,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -130,7 +131,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -138,7 +140,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -228,6 +230,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "size_bytes": "26", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -272,7 +275,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -288,7 +291,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -296,7 +300,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -380,6 +384,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "detail_type": "testdetail", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -423,7 +428,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -439,7 +444,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -447,7 +453,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -541,6 +547,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -589,7 +596,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -605,7 +612,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -613,7 +621,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -703,6 +711,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "partition_key": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -747,7 +756,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -763,7 +772,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -771,7 +781,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -858,6 +868,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "object_etag": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -902,7 +913,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -918,7 +929,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -926,7 +938,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1014,6 +1026,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "subject": "TestInvoke", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -1058,7 +1071,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1074,7 +1087,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -1082,7 +1096,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1169,6 +1183,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "sender_id": "AIDAIENQZJOLO23YVJ4VO", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -1213,7 +1228,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1229,7 +1244,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -1237,7 +1253,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1330,6 +1346,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -1376,7 +1393,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1392,7 +1409,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -1400,7 +1418,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, diff --git a/tests/integration/snapshots/logs/sync-metrics_python310.log b/tests/integration/snapshots/logs/sync-metrics_python310.log index a82665520..a72a34a9e 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python310.log +++ b/tests/integration/snapshots/logs/sync-metrics_python310.log @@ -46,6 +46,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -94,7 +95,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -110,7 +111,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -118,7 +120,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -141,7 +143,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -149,7 +151,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -226,6 +228,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "size_bytes": "26", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -270,7 +273,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -286,7 +289,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -294,7 +298,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -317,7 +321,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -325,7 +329,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -396,6 +400,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "detail_type": "testdetail", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -439,7 +444,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -455,7 +460,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -463,7 +469,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -486,7 +492,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -494,7 +500,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -575,6 +581,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -623,7 +630,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -639,7 +646,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -647,7 +655,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -670,7 +678,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}]} +END Duration: XXXX ms Memory Used: XXXX MB { "traces": [ [ @@ -678,7 +687,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -708,7 +717,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept ] ] } -END Duration: XXXX ms Memory Used: XXXX MB START { "m": "aws.lambda.enhanced.invocations", @@ -755,6 +763,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "partition_key": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -799,7 +808,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -815,7 +824,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -823,7 +833,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -846,7 +856,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -854,7 +864,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -928,6 +938,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "object_etag": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -972,7 +983,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -988,7 +999,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -996,7 +1008,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1019,7 +1031,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -1027,7 +1039,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1102,6 +1114,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "subject": "TestInvoke", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -1146,7 +1159,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1162,7 +1175,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -1170,7 +1184,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1193,7 +1207,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -1201,7 +1215,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1275,6 +1289,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "sender_id": "AIDAIENQZJOLO23YVJ4VO", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -1319,7 +1334,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1335,7 +1350,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -1343,7 +1359,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1366,7 +1382,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -1374,7 +1390,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1454,6 +1470,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -1500,7 +1517,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1516,7 +1533,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -1524,7 +1542,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1547,7 +1565,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -1555,7 +1573,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, diff --git a/tests/integration/snapshots/logs/sync-metrics_python37.log b/tests/integration/snapshots/logs/sync-metrics_python37.log index 338532935..5bc76a998 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python37.log +++ b/tests/integration/snapshots/logs/sync-metrics_python37.log @@ -46,6 +46,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -94,7 +95,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -110,7 +111,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -118,7 +120,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -141,7 +143,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -149,7 +151,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -226,6 +228,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "size_bytes": "26", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -270,7 +273,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -286,7 +289,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -294,7 +298,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -317,7 +321,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -325,7 +329,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -396,6 +400,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "detail_type": "testdetail", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -439,7 +444,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -455,7 +460,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -463,7 +469,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -486,7 +492,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -494,7 +500,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -575,6 +581,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -623,7 +630,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -639,7 +646,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -647,7 +655,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -670,7 +678,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -678,7 +686,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -755,6 +763,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "partition_key": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -799,7 +808,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -815,7 +824,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -823,7 +833,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -846,7 +856,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -854,7 +864,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -928,6 +938,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "object_etag": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -972,7 +983,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -988,7 +999,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -996,7 +1008,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1019,7 +1031,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -1027,7 +1039,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1102,6 +1114,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "subject": "TestInvoke", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -1146,7 +1159,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1162,7 +1175,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -1170,7 +1184,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1193,7 +1207,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -1201,7 +1215,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1275,6 +1289,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "sender_id": "AIDAIENQZJOLO23YVJ4VO", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -1319,7 +1334,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1335,7 +1350,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -1343,7 +1359,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1366,7 +1382,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -1374,7 +1390,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1454,6 +1470,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -1500,7 +1517,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1516,7 +1533,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -1524,7 +1542,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1547,7 +1565,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -1555,7 +1573,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, diff --git a/tests/integration/snapshots/logs/sync-metrics_python38.log b/tests/integration/snapshots/logs/sync-metrics_python38.log index c62928a3d..213e64aa7 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python38.log +++ b/tests/integration/snapshots/logs/sync-metrics_python38.log @@ -46,6 +46,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -94,7 +95,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -110,7 +111,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -118,7 +120,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -141,7 +143,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -149,7 +151,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -226,6 +228,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "size_bytes": "26", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -270,7 +273,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -286,7 +289,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -294,7 +298,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -317,7 +321,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -325,7 +329,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -396,6 +400,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "detail_type": "testdetail", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -439,7 +444,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -455,7 +460,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -463,7 +469,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -486,7 +492,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -494,7 +500,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -575,6 +581,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -623,7 +630,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -639,7 +646,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -647,7 +655,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -670,7 +678,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -678,7 +686,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -755,6 +763,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "partition_key": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -799,7 +808,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -815,7 +824,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -823,7 +833,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -846,7 +856,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -854,7 +864,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -928,6 +938,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "object_etag": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -972,7 +983,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -988,7 +999,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -996,7 +1008,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1019,7 +1031,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -1027,7 +1039,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1102,6 +1114,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "subject": "TestInvoke", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -1146,7 +1159,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1162,7 +1175,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -1170,7 +1184,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1193,7 +1207,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -1201,7 +1215,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1275,6 +1289,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "sender_id": "AIDAIENQZJOLO23YVJ4VO", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -1319,7 +1334,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1335,7 +1350,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -1343,7 +1359,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1366,7 +1382,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -1374,7 +1390,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1454,6 +1470,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -1500,7 +1517,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1516,7 +1533,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -1524,7 +1542,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1547,7 +1565,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -1555,7 +1573,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, diff --git a/tests/integration/snapshots/logs/sync-metrics_python39.log b/tests/integration/snapshots/logs/sync-metrics_python39.log index fbde4bcda..54ab2bad2 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -46,6 +46,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -94,7 +95,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -110,7 +111,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -118,7 +120,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -141,8 +143,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} -END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -150,7 +151,7 @@ END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -180,6 +181,7 @@ END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB ] ] } +END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB START { "m": "aws.lambda.enhanced.invocations", @@ -226,6 +228,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "size_bytes": "26", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -270,7 +273,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -286,7 +289,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -294,7 +298,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -317,7 +321,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -325,7 +329,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -396,6 +400,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "detail_type": "testdetail", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -439,7 +444,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -455,7 +460,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -463,7 +469,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -486,7 +492,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -494,7 +500,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -575,6 +581,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -623,7 +630,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -639,7 +646,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -647,7 +655,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -670,7 +678,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -678,7 +686,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -755,6 +763,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "partition_key": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -799,7 +808,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -815,7 +824,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -823,7 +833,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -846,7 +856,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -854,7 +864,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -928,6 +938,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "object_etag": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -972,7 +983,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -988,7 +999,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -996,7 +1008,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1019,7 +1031,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -1027,7 +1039,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1102,6 +1114,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "subject": "TestInvoke", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -1146,7 +1159,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1162,7 +1175,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -1170,7 +1184,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1193,7 +1207,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -1201,7 +1215,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1275,6 +1289,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "sender_id": "AIDAIENQZJOLO23YVJ4VO", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -1319,7 +1334,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1335,7 +1350,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -1343,7 +1359,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1366,7 +1382,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -1374,7 +1390,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1454,6 +1470,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "peer.service": "integration-tests-python", "_dd.p.dm": "-0", "language": "python" }, @@ -1500,7 +1517,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1516,7 +1533,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.useragent": "python-requests/X.X.X" }, "metrics": { - "_dd.measured": 1 + "_dd.measured": 1, + "_dd.top_level": 1 }, "type": "http" }, @@ -1524,7 +1542,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, @@ -1547,7 +1565,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}]} { "traces": [ [ @@ -1555,7 +1573,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "requests.request", "name": "requests.request", "error": 0, From 0c848fc4d39710e77edfa3252bcdc10ac70749cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?jordan=20gonz=C3=A1lez?= <30836115+duncanista@users.noreply.github.com> Date: Fri, 16 Jun 2023 11:40:33 -0400 Subject: [PATCH 061/403] change `RemoteConfig` mock to be `worker.RemoteConfigPoller` (#340) --- tests/test_wrapper.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index a2af88468..c85d8bb4f 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -31,7 +31,7 @@ class TestDatadogLambdaWrapper(unittest.TestCase): def setUp(self): # Force @datadog_lambda_wrapper to always create a real # (not no-op) wrapper. - patch("ddtrace.internal.remoteconfig.RemoteConfig").start() + patch("ddtrace.internal.remoteconfig.worker.RemoteConfigPoller").start() patch("ddtrace.internal.writer.AgentWriter.flush_queue").start() wrapper.datadog_lambda_wrapper._force_wrap = True From e750b6d8bbddcb9e7efd9ca19ef09cc01cbea842 Mon Sep 17 00:00:00 2001 From: Andrew Rodriguez <49878080+zARODz11z@users.noreply.github.com> Date: Thu, 22 Jun 2023 06:58:32 -0700 Subject: [PATCH 062/403] =?UTF-8?q?bump=20ddtrace=20to=20take=20advantage?= =?UTF-8?q?=20of=20new=20aws=20sdk=20request=20span=20tags=20&=20reg?= =?UTF-8?q?=E2=80=A6=20(#341)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * bump ddtrace to take advantage of new aws sdk request span tags & regen lock file * bump pyproject.toml minimum to 1.15.0 * remove added comment to publish sandbox script * regen poetry.lock --- poetry.lock | 711 ++++++++++++++++++++++++++++--------------------- pyproject.toml | 2 +- 2 files changed, 412 insertions(+), 301 deletions(-) diff --git a/poetry.lock b/poetry.lock index c1946f576..29fe6c1b0 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,38 +1,41 @@ -# This file is automatically @generated by Poetry and should not be changed by hand. +# This file is automatically @generated by Poetry 1.4.2 and should not be changed by hand. [[package]] name = "attrs" -version = "22.2.0" +version = "23.1.0" description = "Classes Without Boilerplate" category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "attrs-22.2.0-py3-none-any.whl", hash = "sha256:29e95c7f6778868dbd49170f98f8818f78f3dc5e0e37c0b1f474e3561b240836"}, - {file = "attrs-22.2.0.tar.gz", hash = "sha256:c9227bfc2f01993c03f68db37d1d15c9690188323c067c641f1a35ca58185f99"}, + {file = "attrs-23.1.0-py3-none-any.whl", hash = "sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04"}, + {file = "attrs-23.1.0.tar.gz", hash = "sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015"}, ] +[package.dependencies] +importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} + [package.extras] -cov = ["attrs[tests]", "coverage-enable-subprocess", "coverage[toml] (>=5.3)"] -dev = ["attrs[docs,tests]"] -docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope.interface"] -tests = ["attrs[tests-no-zope]", "zope.interface"] -tests-no-zope = ["cloudpickle", "cloudpickle", "hypothesis", "hypothesis", "mypy (>=0.971,<0.990)", "mypy (>=0.971,<0.990)", "pympler", "pympler", "pytest (>=4.3.0)", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-mypy-plugins", "pytest-xdist[psutil]", "pytest-xdist[psutil]"] +cov = ["attrs[tests]", "coverage[toml] (>=5.3)"] +dev = ["attrs[docs,tests]", "pre-commit"] +docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope-interface"] +tests = ["attrs[tests-no-zope]", "zope-interface"] +tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] [[package]] name = "boto3" -version = "1.26.41" +version = "1.26.158" description = "The AWS SDK for Python" category = "main" optional = true python-versions = ">= 3.7" files = [ - {file = "boto3-1.26.41-py3-none-any.whl", hash = "sha256:05a5ce3af2d7419e39d93498c7f56fd5c2cc17870c92c4abc75659553b0b16de"}, - {file = "boto3-1.26.41.tar.gz", hash = "sha256:8cbea352f28ec6b241f348356bcb8f331fc433bec3ad76ebf6194227f1a7f613"}, + {file = "boto3-1.26.158-py3-none-any.whl", hash = "sha256:0be407c2e941b422634766c0d754132ad4d33b5d0f84d9a30426b713b31ce3ab"}, + {file = "boto3-1.26.158.tar.gz", hash = "sha256:7f88d9403f81e6f3fc770c424f7089b15eb0553b168b1d2f979fa0d12b663b42"}, ] [package.dependencies] -botocore = ">=1.29.41,<1.30.0" +botocore = ">=1.29.158,<1.30.0" jmespath = ">=0.7.1,<2.0.0" s3transfer = ">=0.6.0,<0.7.0" @@ -41,14 +44,14 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.29.41" +version = "1.29.158" description = "Low-level, data-driven core of boto 3." category = "main" optional = true python-versions = ">= 3.7" files = [ - {file = "botocore-1.29.41-py3-none-any.whl", hash = "sha256:b670b7f8958a2908167081efb6ea39794bf61d618be729984629a63d85cf8bfe"}, - {file = "botocore-1.29.41.tar.gz", hash = "sha256:78761227d986d393956b6d08fdadcfe142748828e0e9db33f2f4c42a482dcd35"}, + {file = "botocore-1.29.158-py3-none-any.whl", hash = "sha256:267d4e7f36bdb45ea696386143ca6f68a358dc4baef85894cc4d9cffe97c0cd5"}, + {file = "botocore-1.29.158.tar.gz", hash = "sha256:2fd3b625f3d683d9dd6b400aba54d54a1e9b960b84ed07a466d25d1366e59482"}, ] [package.dependencies] @@ -57,7 +60,7 @@ python-dateutil = ">=2.1,<3.0.0" urllib3 = ">=1.25.4,<1.27" [package.extras] -crt = ["awscrt (==0.15.3)"] +crt = ["awscrt (==0.16.9)"] [[package]] name = "bytecode" @@ -73,14 +76,14 @@ files = [ [[package]] name = "bytecode" -version = "0.14.0" +version = "0.14.2" description = "Python module to generate and modify bytecode" category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "bytecode-0.14.0-py3-none-any.whl", hash = "sha256:f7b7cbed3239acee036d6c0f9d04286b100921114601bf844ae569b95bf91a9f"}, - {file = "bytecode-0.14.0.tar.gz", hash = "sha256:d41ad53c657ba0bef1cb4828d9d6e450766e31cb66c6f91fc1851f052889d1b7"}, + {file = "bytecode-0.14.2-py3-none-any.whl", hash = "sha256:e368a2b9bbd7c986133c951250db94fb32f774cfc49752a9db9073bcf9899762"}, + {file = "bytecode-0.14.2.tar.gz", hash = "sha256:386378d9025d68ddb144870ae74330a492717b11b8c9164c4034e88add808f0c"}, ] [package.dependencies] @@ -88,107 +91,195 @@ typing-extensions = {version = "*", markers = "python_version < \"3.10\""} [[package]] name = "cattrs" -version = "22.2.0" +version = "23.1.2" description = "Composable complex class support for attrs and dataclasses." category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "cattrs-22.2.0-py3-none-any.whl", hash = "sha256:bc12b1f0d000b9f9bee83335887d532a1d3e99a833d1bf0882151c97d3e68c21"}, - {file = "cattrs-22.2.0.tar.gz", hash = "sha256:f0eed5642399423cf656e7b66ce92cdc5b963ecafd041d1b24d136fdde7acf6d"}, + {file = "cattrs-23.1.2-py3-none-any.whl", hash = "sha256:b2bb14311ac17bed0d58785e5a60f022e5431aca3932e3fc5cc8ed8639de50a4"}, + {file = "cattrs-23.1.2.tar.gz", hash = "sha256:db1c821b8c537382b2c7c66678c3790091ca0275ac486c76f3c8f3920e83c657"}, ] [package.dependencies] attrs = ">=20" exceptiongroup = {version = "*", markers = "python_version < \"3.11\""} -typing_extensions = {version = "*", markers = "python_version < \"3.8\""} +typing_extensions = {version = ">=4.1.0", markers = "python_version < \"3.11\""} + +[package.extras] +bson = ["pymongo (>=4.2.0,<5.0.0)"] +cbor2 = ["cbor2 (>=5.4.6,<6.0.0)"] +msgpack = ["msgpack (>=1.0.2,<2.0.0)"] +orjson = ["orjson (>=3.5.2,<4.0.0)"] +pyyaml = ["PyYAML (>=6.0,<7.0)"] +tomlkit = ["tomlkit (>=0.11.4,<0.12.0)"] +ujson = ["ujson (>=5.4.0,<6.0.0)"] [[package]] name = "certifi" -version = "2022.12.7" +version = "2023.5.7" description = "Python package for providing Mozilla's CA Bundle." category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2022.12.7-py3-none-any.whl", hash = "sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18"}, - {file = "certifi-2022.12.7.tar.gz", hash = "sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3"}, + {file = "certifi-2023.5.7-py3-none-any.whl", hash = "sha256:c6c2e98f5c7869efca1f8916fed228dd91539f9f1b444c314c06eef02980c716"}, + {file = "certifi-2023.5.7.tar.gz", hash = "sha256:0f0d56dc5a6ad56fd4ba36484d6cc34451e1c6548c61daad8c320169f91eddc7"}, ] [[package]] name = "charset-normalizer" -version = "2.1.1" +version = "3.1.0" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." category = "main" optional = false -python-versions = ">=3.6.0" -files = [ - {file = "charset-normalizer-2.1.1.tar.gz", hash = "sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845"}, - {file = "charset_normalizer-2.1.1-py3-none-any.whl", hash = "sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f"}, +python-versions = ">=3.7.0" +files = [ + {file = "charset-normalizer-3.1.0.tar.gz", hash = "sha256:34e0a2f9c370eb95597aae63bf85eb5e96826d81e3dcf88b8886012906f509b5"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e0ac8959c929593fee38da1c2b64ee9778733cdf03c482c9ff1d508b6b593b2b"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d7fc3fca01da18fbabe4625d64bb612b533533ed10045a2ac3dd194bfa656b60"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:04eefcee095f58eaabe6dc3cc2262f3bcd776d2c67005880894f447b3f2cb9c1"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20064ead0717cf9a73a6d1e779b23d149b53daf971169289ed2ed43a71e8d3b0"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1435ae15108b1cb6fffbcea2af3d468683b7afed0169ad718451f8db5d1aff6f"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c84132a54c750fda57729d1e2599bb598f5fa0344085dbde5003ba429a4798c0"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75f2568b4189dda1c567339b48cba4ac7384accb9c2a7ed655cd86b04055c795"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:11d3bcb7be35e7b1bba2c23beedac81ee893ac9871d0ba79effc7fc01167db6c"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:891cf9b48776b5c61c700b55a598621fdb7b1e301a550365571e9624f270c203"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:5f008525e02908b20e04707a4f704cd286d94718f48bb33edddc7d7b584dddc1"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:b06f0d3bf045158d2fb8837c5785fe9ff9b8c93358be64461a1089f5da983137"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:49919f8400b5e49e961f320c735388ee686a62327e773fa5b3ce6721f7e785ce"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:22908891a380d50738e1f978667536f6c6b526a2064156203d418f4856d6e86a"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-win32.whl", hash = "sha256:12d1a39aa6b8c6f6248bb54550efcc1c38ce0d8096a146638fd4738e42284448"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:65ed923f84a6844de5fd29726b888e58c62820e0769b76565480e1fdc3d062f8"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9a3267620866c9d17b959a84dd0bd2d45719b817245e49371ead79ed4f710d19"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6734e606355834f13445b6adc38b53c0fd45f1a56a9ba06c2058f86893ae8017"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f8303414c7b03f794347ad062c0516cee0e15f7a612abd0ce1e25caf6ceb47df"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aaf53a6cebad0eae578f062c7d462155eada9c172bd8c4d250b8c1d8eb7f916a"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3dc5b6a8ecfdc5748a7e429782598e4f17ef378e3e272eeb1340ea57c9109f41"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e1b25e3ad6c909f398df8921780d6a3d120d8c09466720226fc621605b6f92b1"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ca564606d2caafb0abe6d1b5311c2649e8071eb241b2d64e75a0d0065107e62"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b82fab78e0b1329e183a65260581de4375f619167478dddab510c6c6fb04d9b6"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:bd7163182133c0c7701b25e604cf1611c0d87712e56e88e7ee5d72deab3e76b5"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:11d117e6c63e8f495412d37e7dc2e2fff09c34b2d09dbe2bee3c6229577818be"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:cf6511efa4801b9b38dc5546d7547d5b5c6ef4b081c60b23e4d941d0eba9cbeb"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:abc1185d79f47c0a7aaf7e2412a0eb2c03b724581139193d2d82b3ad8cbb00ac"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cb7b2ab0188829593b9de646545175547a70d9a6e2b63bf2cd87a0a391599324"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-win32.whl", hash = "sha256:c36bcbc0d5174a80d6cccf43a0ecaca44e81d25be4b7f90f0ed7bcfbb5a00909"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:cca4def576f47a09a943666b8f829606bcb17e2bc2d5911a46c8f8da45f56755"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0c95f12b74681e9ae127728f7e5409cbbef9cd914d5896ef238cc779b8152373"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fca62a8301b605b954ad2e9c3666f9d97f63872aa4efcae5492baca2056b74ab"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac0aa6cd53ab9a31d397f8303f92c42f534693528fafbdb997c82bae6e477ad9"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c3af8e0f07399d3176b179f2e2634c3ce9c1301379a6b8c9c9aeecd481da494f"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a5fc78f9e3f501a1614a98f7c54d3969f3ad9bba8ba3d9b438c3bc5d047dd28"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:628c985afb2c7d27a4800bfb609e03985aaecb42f955049957814e0491d4006d"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:74db0052d985cf37fa111828d0dd230776ac99c740e1a758ad99094be4f1803d"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:1e8fcdd8f672a1c4fc8d0bd3a2b576b152d2a349782d1eb0f6b8e52e9954731d"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:04afa6387e2b282cf78ff3dbce20f0cc071c12dc8f685bd40960cc68644cfea6"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:dd5653e67b149503c68c4018bf07e42eeed6b4e956b24c00ccdf93ac79cdff84"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d2686f91611f9e17f4548dbf050e75b079bbc2a82be565832bc8ea9047b61c8c"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-win32.whl", hash = "sha256:4155b51ae05ed47199dc5b2a4e62abccb274cee6b01da5b895099b61b1982974"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:322102cdf1ab682ecc7d9b1c5eed4ec59657a65e1c146a0da342b78f4112db23"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e633940f28c1e913615fd624fcdd72fdba807bf53ea6925d6a588e84e1151531"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3a06f32c9634a8705f4ca9946d667609f52cf130d5548881401f1eb2c39b1e2c"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7381c66e0561c5757ffe616af869b916c8b4e42b367ab29fedc98481d1e74e14"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3573d376454d956553c356df45bb824262c397c6e26ce43e8203c4c540ee0acb"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e89df2958e5159b811af9ff0f92614dabf4ff617c03a4c1c6ff53bf1c399e0e1"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:78cacd03e79d009d95635e7d6ff12c21eb89b894c354bd2b2ed0b4763373693b"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de5695a6f1d8340b12a5d6d4484290ee74d61e467c39ff03b39e30df62cf83a0"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c60b9c202d00052183c9be85e5eaf18a4ada0a47d188a83c8f5c5b23252f649"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f645caaf0008bacf349875a974220f1f1da349c5dbe7c4ec93048cdc785a3326"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ea9f9c6034ea2d93d9147818f17c2a0860d41b71c38b9ce4d55f21b6f9165a11"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:80d1543d58bd3d6c271b66abf454d437a438dff01c3e62fdbcd68f2a11310d4b"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:73dc03a6a7e30b7edc5b01b601e53e7fc924b04e1835e8e407c12c037e81adbd"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6f5c2e7bc8a4bf7c426599765b1bd33217ec84023033672c1e9a8b35eaeaaaf8"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-win32.whl", hash = "sha256:12a2b561af122e3d94cdb97fe6fb2bb2b82cef0cdca131646fdb940a1eda04f0"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:3160a0fd9754aab7d47f95a6b63ab355388d890163eb03b2d2b87ab0a30cfa59"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:38e812a197bf8e71a59fe55b757a84c1f946d0ac114acafaafaf21667a7e169e"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6baf0baf0d5d265fa7944feb9f7451cc316bfe30e8df1a61b1bb08577c554f31"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8f25e17ab3039b05f762b0a55ae0b3632b2e073d9c8fc88e89aca31a6198e88f"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3747443b6a904001473370d7810aa19c3a180ccd52a7157aacc264a5ac79265e"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b116502087ce8a6b7a5f1814568ccbd0e9f6cfd99948aa59b0e241dc57cf739f"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d16fd5252f883eb074ca55cb622bc0bee49b979ae4e8639fff6ca3ff44f9f854"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21fa558996782fc226b529fdd2ed7866c2c6ec91cee82735c98a197fae39f706"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6f6c7a8a57e9405cad7485f4c9d3172ae486cfef1344b5ddd8e5239582d7355e"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ac3775e3311661d4adace3697a52ac0bab17edd166087d493b52d4f4f553f9f0"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:10c93628d7497c81686e8e5e557aafa78f230cd9e77dd0c40032ef90c18f2230"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:6f4f4668e1831850ebcc2fd0b1cd11721947b6dc7c00bf1c6bd3c929ae14f2c7"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:0be65ccf618c1e7ac9b849c315cc2e8a8751d9cfdaa43027d4f6624bd587ab7e"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:53d0a3fa5f8af98a1e261de6a3943ca631c526635eb5817a87a59d9a57ebf48f"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-win32.whl", hash = "sha256:a04f86f41a8916fe45ac5024ec477f41f886b3c435da2d4e3d2709b22ab02af1"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:830d2948a5ec37c386d3170c483063798d7879037492540f10a475e3fd6f244b"}, + {file = "charset_normalizer-3.1.0-py3-none-any.whl", hash = "sha256:3d9098b479e78c85080c98e1e35ff40b4a31d8953102bb0fd7d1b6f8a2111a3d"}, ] -[package.extras] -unicode-backport = ["unicodedata2"] - [[package]] name = "coverage" -version = "7.0.1" +version = "7.2.7" description = "Code coverage measurement for Python" category = "main" optional = true python-versions = ">=3.7" files = [ - {file = "coverage-7.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b3695c4f4750bca943b3e1f74ad4be8d29e4aeab927d50772c41359107bd5d5c"}, - {file = "coverage-7.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fa6a5a224b7f4cfb226f4fc55a57e8537fcc096f42219128c2c74c0e7d0953e1"}, - {file = "coverage-7.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:74f70cd92669394eaf8d7756d1b195c8032cf7bbbdfce3bc489d4e15b3b8cf73"}, - {file = "coverage-7.0.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b66bb21a23680dee0be66557dc6b02a3152ddb55edf9f6723fa4a93368f7158d"}, - {file = "coverage-7.0.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d87717959d4d0ee9db08a0f1d80d21eb585aafe30f9b0a54ecf779a69cb015f6"}, - {file = "coverage-7.0.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:854f22fa361d1ff914c7efa347398374cc7d567bdafa48ac3aa22334650dfba2"}, - {file = "coverage-7.0.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:1e414dc32ee5c3f36544ea466b6f52f28a7af788653744b8570d0bf12ff34bc0"}, - {file = "coverage-7.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6c5ad996c6fa4d8ed669cfa1e8551348729d008a2caf81489ab9ea67cfbc7498"}, - {file = "coverage-7.0.1-cp310-cp310-win32.whl", hash = "sha256:691571f31ace1837838b7e421d3a09a8c00b4aac32efacb4fc9bd0a5c647d25a"}, - {file = "coverage-7.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:89caf4425fe88889e2973a8e9a3f6f5f9bbe5dd411d7d521e86428c08a873a4a"}, - {file = "coverage-7.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:63d56165a7c76265468d7e0c5548215a5ba515fc2cba5232d17df97bffa10f6c"}, - {file = "coverage-7.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4f943a3b2bc520102dd3e0bb465e1286e12c9a54f58accd71b9e65324d9c7c01"}, - {file = "coverage-7.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:830525361249dc4cd013652b0efad645a385707a5ae49350c894b67d23fbb07c"}, - {file = "coverage-7.0.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fd1b9c5adc066db699ccf7fa839189a649afcdd9e02cb5dc9d24e67e7922737d"}, - {file = "coverage-7.0.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e00c14720b8b3b6c23b487e70bd406abafc976ddc50490f645166f111c419c39"}, - {file = "coverage-7.0.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:6d55d840e1b8c0002fce66443e124e8581f30f9ead2e54fbf6709fb593181f2c"}, - {file = "coverage-7.0.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:66b18c3cf8bbab0cce0d7b9e4262dc830e93588986865a8c78ab2ae324b3ed56"}, - {file = "coverage-7.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:12a5aa77783d49e05439fbe6e6b427484f8a0f9f456b46a51d8aac022cfd024d"}, - {file = "coverage-7.0.1-cp311-cp311-win32.whl", hash = "sha256:b77015d1cb8fe941be1222a5a8b4e3fbca88180cfa7e2d4a4e58aeabadef0ab7"}, - {file = "coverage-7.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:fb992c47cb1e5bd6a01e97182400bcc2ba2077080a17fcd7be23aaa6e572e390"}, - {file = "coverage-7.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e78e9dcbf4f3853d3ae18a8f9272111242531535ec9e1009fa8ec4a2b74557dc"}, - {file = "coverage-7.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e60bef2e2416f15fdc05772bf87db06c6a6f9870d1db08fdd019fbec98ae24a9"}, - {file = "coverage-7.0.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9823e4789ab70f3ec88724bba1a203f2856331986cd893dedbe3e23a6cfc1e4e"}, - {file = "coverage-7.0.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9158f8fb06747ac17bd237930c4372336edc85b6e13bdc778e60f9d685c3ca37"}, - {file = "coverage-7.0.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:486ee81fa694b4b796fc5617e376326a088f7b9729c74d9defa211813f3861e4"}, - {file = "coverage-7.0.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:1285648428a6101b5f41a18991c84f1c3959cee359e51b8375c5882fc364a13f"}, - {file = "coverage-7.0.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:2c44fcfb3781b41409d0f060a4ed748537557de9362a8a9282182fafb7a76ab4"}, - {file = "coverage-7.0.1-cp37-cp37m-win32.whl", hash = "sha256:d6814854c02cbcd9c873c0f3286a02e3ac1250625cca822ca6bc1018c5b19f1c"}, - {file = "coverage-7.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:f66460f17c9319ea4f91c165d46840314f0a7c004720b20be58594d162a441d8"}, - {file = "coverage-7.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9b373c9345c584bb4b5f5b8840df7f4ab48c4cbb7934b58d52c57020d911b856"}, - {file = "coverage-7.0.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d3022c3007d3267a880b5adcf18c2a9bf1fc64469b394a804886b401959b8742"}, - {file = "coverage-7.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:92651580bd46519067e36493acb394ea0607b55b45bd81dd4e26379ed1871f55"}, - {file = "coverage-7.0.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3cfc595d2af13856505631be072835c59f1acf30028d1c860b435c5fc9c15b69"}, - {file = "coverage-7.0.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b4b3a4d9915b2be879aff6299c0a6129f3d08a775d5a061f503cf79571f73e4"}, - {file = "coverage-7.0.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b6f22bb64cc39bcb883e5910f99a27b200fdc14cdd79df8696fa96b0005c9444"}, - {file = "coverage-7.0.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:72d1507f152abacea81f65fee38e4ef3ac3c02ff8bc16f21d935fd3a8a4ad910"}, - {file = "coverage-7.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:0a79137fc99815fff6a852c233628e735ec15903cfd16da0f229d9c4d45926ab"}, - {file = "coverage-7.0.1-cp38-cp38-win32.whl", hash = "sha256:b3763e7fcade2ff6c8e62340af9277f54336920489ceb6a8cd6cc96da52fcc62"}, - {file = "coverage-7.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:09f6b5a8415b6b3e136d5fec62b552972187265cb705097bf030eb9d4ffb9b60"}, - {file = "coverage-7.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:978258fec36c154b5e250d356c59af7d4c3ba02bef4b99cda90b6029441d797d"}, - {file = "coverage-7.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:19ec666533f0f70a0993f88b8273057b96c07b9d26457b41863ccd021a043b9a"}, - {file = "coverage-7.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cfded268092a84605f1cc19e5c737f9ce630a8900a3589e9289622db161967e9"}, - {file = "coverage-7.0.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07bcfb1d8ac94af886b54e18a88b393f6a73d5959bb31e46644a02453c36e475"}, - {file = "coverage-7.0.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:397b4a923cc7566bbc7ae2dfd0ba5a039b61d19c740f1373791f2ebd11caea59"}, - {file = "coverage-7.0.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:aec2d1515d9d39ff270059fd3afbb3b44e6ec5758af73caf18991807138c7118"}, - {file = "coverage-7.0.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:c20cfebcc149a4c212f6491a5f9ff56f41829cd4f607b5be71bb2d530ef243b1"}, - {file = "coverage-7.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:fd556ff16a57a070ce4f31c635953cc44e25244f91a0378c6e9bdfd40fdb249f"}, - {file = "coverage-7.0.1-cp39-cp39-win32.whl", hash = "sha256:b9ea158775c7c2d3e54530a92da79496fb3fb577c876eec761c23e028f1e216c"}, - {file = "coverage-7.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:d1991f1dd95eba69d2cd7708ff6c2bbd2426160ffc73c2b81f617a053ebcb1a8"}, - {file = "coverage-7.0.1-pp37.pp38.pp39-none-any.whl", hash = "sha256:3dd4ee135e08037f458425b8842d24a95a0961831a33f89685ff86b77d378f89"}, - {file = "coverage-7.0.1.tar.gz", hash = "sha256:a4a574a19eeb67575a5328a5760bbbb737faa685616586a9f9da4281f940109c"}, + {file = "coverage-7.2.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d39b5b4f2a66ccae8b7263ac3c8170994b65266797fb96cbbfd3fb5b23921db8"}, + {file = "coverage-7.2.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6d040ef7c9859bb11dfeb056ff5b3872436e3b5e401817d87a31e1750b9ae2fb"}, + {file = "coverage-7.2.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba90a9563ba44a72fda2e85302c3abc71c5589cea608ca16c22b9804262aaeb6"}, + {file = "coverage-7.2.7-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e7d9405291c6928619403db1d10bd07888888ec1abcbd9748fdaa971d7d661b2"}, + {file = "coverage-7.2.7-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:31563e97dae5598556600466ad9beea39fb04e0229e61c12eaa206e0aa202063"}, + {file = "coverage-7.2.7-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:ebba1cd308ef115925421d3e6a586e655ca5a77b5bf41e02eb0e4562a111f2d1"}, + {file = "coverage-7.2.7-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:cb017fd1b2603ef59e374ba2063f593abe0fc45f2ad9abdde5b4d83bd922a353"}, + {file = "coverage-7.2.7-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d62a5c7dad11015c66fbb9d881bc4caa5b12f16292f857842d9d1871595f4495"}, + {file = "coverage-7.2.7-cp310-cp310-win32.whl", hash = "sha256:ee57190f24fba796e36bb6d3aa8a8783c643d8fa9760c89f7a98ab5455fbf818"}, + {file = "coverage-7.2.7-cp310-cp310-win_amd64.whl", hash = "sha256:f75f7168ab25dd93110c8a8117a22450c19976afbc44234cbf71481094c1b850"}, + {file = "coverage-7.2.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:06a9a2be0b5b576c3f18f1a241f0473575c4a26021b52b2a85263a00f034d51f"}, + {file = "coverage-7.2.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5baa06420f837184130752b7c5ea0808762083bf3487b5038d68b012e5937dbe"}, + {file = "coverage-7.2.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fdec9e8cbf13a5bf63290fc6013d216a4c7232efb51548594ca3631a7f13c3a3"}, + {file = "coverage-7.2.7-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:52edc1a60c0d34afa421c9c37078817b2e67a392cab17d97283b64c5833f427f"}, + {file = "coverage-7.2.7-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63426706118b7f5cf6bb6c895dc215d8a418d5952544042c8a2d9fe87fcf09cb"}, + {file = "coverage-7.2.7-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:afb17f84d56068a7c29f5fa37bfd38d5aba69e3304af08ee94da8ed5b0865833"}, + {file = "coverage-7.2.7-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:48c19d2159d433ccc99e729ceae7d5293fbffa0bdb94952d3579983d1c8c9d97"}, + {file = "coverage-7.2.7-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0e1f928eaf5469c11e886fe0885ad2bf1ec606434e79842a879277895a50942a"}, + {file = "coverage-7.2.7-cp311-cp311-win32.whl", hash = "sha256:33d6d3ea29d5b3a1a632b3c4e4f4ecae24ef170b0b9ee493883f2df10039959a"}, + {file = "coverage-7.2.7-cp311-cp311-win_amd64.whl", hash = "sha256:5b7540161790b2f28143191f5f8ec02fb132660ff175b7747b95dcb77ac26562"}, + {file = "coverage-7.2.7-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f2f67fe12b22cd130d34d0ef79206061bfb5eda52feb6ce0dba0644e20a03cf4"}, + {file = "coverage-7.2.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a342242fe22407f3c17f4b499276a02b01e80f861f1682ad1d95b04018e0c0d4"}, + {file = "coverage-7.2.7-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:171717c7cb6b453aebac9a2ef603699da237f341b38eebfee9be75d27dc38e01"}, + {file = "coverage-7.2.7-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49969a9f7ffa086d973d91cec8d2e31080436ef0fb4a359cae927e742abfaaa6"}, + {file = "coverage-7.2.7-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b46517c02ccd08092f4fa99f24c3b83d8f92f739b4657b0f146246a0ca6a831d"}, + {file = "coverage-7.2.7-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:a3d33a6b3eae87ceaefa91ffdc130b5e8536182cd6dfdbfc1aa56b46ff8c86de"}, + {file = "coverage-7.2.7-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:976b9c42fb2a43ebf304fa7d4a310e5f16cc99992f33eced91ef6f908bd8f33d"}, + {file = "coverage-7.2.7-cp312-cp312-win32.whl", hash = "sha256:8de8bb0e5ad103888d65abef8bca41ab93721647590a3f740100cd65c3b00511"}, + {file = "coverage-7.2.7-cp312-cp312-win_amd64.whl", hash = "sha256:9e31cb64d7de6b6f09702bb27c02d1904b3aebfca610c12772452c4e6c21a0d3"}, + {file = "coverage-7.2.7-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:58c2ccc2f00ecb51253cbe5d8d7122a34590fac9646a960d1430d5b15321d95f"}, + {file = "coverage-7.2.7-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d22656368f0e6189e24722214ed8d66b8022db19d182927b9a248a2a8a2f67eb"}, + {file = "coverage-7.2.7-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a895fcc7b15c3fc72beb43cdcbdf0ddb7d2ebc959edac9cef390b0d14f39f8a9"}, + {file = "coverage-7.2.7-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e84606b74eb7de6ff581a7915e2dab7a28a0517fbe1c9239eb227e1354064dcd"}, + {file = "coverage-7.2.7-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:0a5f9e1dbd7fbe30196578ca36f3fba75376fb99888c395c5880b355e2875f8a"}, + {file = "coverage-7.2.7-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:419bfd2caae268623dd469eff96d510a920c90928b60f2073d79f8fe2bbc5959"}, + {file = "coverage-7.2.7-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:2aee274c46590717f38ae5e4650988d1af340fe06167546cc32fe2f58ed05b02"}, + {file = "coverage-7.2.7-cp37-cp37m-win32.whl", hash = "sha256:61b9a528fb348373c433e8966535074b802c7a5d7f23c4f421e6c6e2f1697a6f"}, + {file = "coverage-7.2.7-cp37-cp37m-win_amd64.whl", hash = "sha256:b1c546aca0ca4d028901d825015dc8e4d56aac4b541877690eb76490f1dc8ed0"}, + {file = "coverage-7.2.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:54b896376ab563bd38453cecb813c295cf347cf5906e8b41d340b0321a5433e5"}, + {file = "coverage-7.2.7-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3d376df58cc111dc8e21e3b6e24606b5bb5dee6024f46a5abca99124b2229ef5"}, + {file = "coverage-7.2.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e330fc79bd7207e46c7d7fd2bb4af2963f5f635703925543a70b99574b0fea9"}, + {file = "coverage-7.2.7-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e9d683426464e4a252bf70c3498756055016f99ddaec3774bf368e76bbe02b6"}, + {file = "coverage-7.2.7-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d13c64ee2d33eccf7437961b6ea7ad8673e2be040b4f7fd4fd4d4d28d9ccb1e"}, + {file = "coverage-7.2.7-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b7aa5f8a41217360e600da646004f878250a0d6738bcdc11a0a39928d7dc2050"}, + {file = "coverage-7.2.7-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8fa03bce9bfbeeef9f3b160a8bed39a221d82308b4152b27d82d8daa7041fee5"}, + {file = "coverage-7.2.7-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:245167dd26180ab4c91d5e1496a30be4cd721a5cf2abf52974f965f10f11419f"}, + {file = "coverage-7.2.7-cp38-cp38-win32.whl", hash = "sha256:d2c2db7fd82e9b72937969bceac4d6ca89660db0a0967614ce2481e81a0b771e"}, + {file = "coverage-7.2.7-cp38-cp38-win_amd64.whl", hash = "sha256:2e07b54284e381531c87f785f613b833569c14ecacdcb85d56b25c4622c16c3c"}, + {file = "coverage-7.2.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:537891ae8ce59ef63d0123f7ac9e2ae0fc8b72c7ccbe5296fec45fd68967b6c9"}, + {file = "coverage-7.2.7-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:06fb182e69f33f6cd1d39a6c597294cff3143554b64b9825d1dc69d18cc2fff2"}, + {file = "coverage-7.2.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:201e7389591af40950a6480bd9edfa8ed04346ff80002cec1a66cac4549c1ad7"}, + {file = "coverage-7.2.7-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f6951407391b639504e3b3be51b7ba5f3528adbf1a8ac3302b687ecababf929e"}, + {file = "coverage-7.2.7-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f48351d66575f535669306aa7d6d6f71bc43372473b54a832222803eb956fd1"}, + {file = "coverage-7.2.7-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b29019c76039dc3c0fd815c41392a044ce555d9bcdd38b0fb60fb4cd8e475ba9"}, + {file = "coverage-7.2.7-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:81c13a1fc7468c40f13420732805a4c38a105d89848b7c10af65a90beff25250"}, + {file = "coverage-7.2.7-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:975d70ab7e3c80a3fe86001d8751f6778905ec723f5b110aed1e450da9d4b7f2"}, + {file = "coverage-7.2.7-cp39-cp39-win32.whl", hash = "sha256:7ee7d9d4822c8acc74a5e26c50604dff824710bc8de424904c0982e25c39c6cb"}, + {file = "coverage-7.2.7-cp39-cp39-win_amd64.whl", hash = "sha256:eb393e5ebc85245347950143969b241d08b52b88a3dc39479822e073a1a8eb27"}, + {file = "coverage-7.2.7-pp37.pp38.pp39-none-any.whl", hash = "sha256:b7b4c971f05e6ae490fef852c218b0e79d4e52f79ef0c8475566584a8fb3e01d"}, + {file = "coverage-7.2.7.tar.gz", hash = "sha256:924d94291ca674905fe9481f12294eb11f2d3d3fd1adb20314ba89e94f44ed59"}, ] [package.extras] @@ -196,18 +287,17 @@ toml = ["tomli"] [[package]] name = "datadog" -version = "0.41.0" +version = "0.45.0" description = "The Datadog Python library" category = "main" optional = false -python-versions = "*" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ - {file = "datadog-0.41.0-py2.py3-none-any.whl", hash = "sha256:ab79ed38fb09ff1942c341e32849c4eeaf8b2e4d467b9e6bb1c6071808f454d6"}, - {file = "datadog-0.41.0.tar.gz", hash = "sha256:3de1a43b8a8d5f6b19d162ec1b482dc5ab2636c59cf65e60589702304510a689"}, + {file = "datadog-0.45.0-py2.py3-none-any.whl", hash = "sha256:144fce48bda79484b102349f159c4ea4c7cd35361f9e0d031ddf931a922a38a4"}, + {file = "datadog-0.45.0.tar.gz", hash = "sha256:6bffed67448cb4bf5dff559fb2acee1c06e7da8612b8e2a734f278b50b396603"}, ] [package.dependencies] -decorator = ">=3.3.2" requests = ">=2.6.0" [[package]] @@ -228,81 +318,81 @@ six = "*" [[package]] name = "ddtrace" -version = "1.6.4" +version = "1.15.0" description = "Datadog APM client library" category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ - {file = "ddtrace-1.6.4-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:3c4c9a18cf3270fc10801e286410c30a1a603cb848ee1f08bbd118e0b97ddfcc"}, - {file = "ddtrace-1.6.4-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:204c560719c31d3f9ff8456a4c6ca4d0d6b527c13951815cbcf1012ea48ff759"}, - {file = "ddtrace-1.6.4-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:c97a1cf8a8e50a12c6bd09f0f15e172c447ac5a5350a7bd256f6685897c9efbf"}, - {file = "ddtrace-1.6.4-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:93ad24ff023d9c364288f422e0d46eb7b866c91e6c0453a36e5a3fdbfb01a627"}, - {file = "ddtrace-1.6.4-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:6e65f860656488d6b6e005301c7138ba573b5cbf03270ec811c6d34f8aebf0b5"}, - {file = "ddtrace-1.6.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:b77e7d7e2e4de5851d8ff332e63957a46a367e6e3c5c94d4ad37dcaf047f11e1"}, - {file = "ddtrace-1.6.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:96d141807d5e446c67a4dcb16178cfa25523cedd075d73dad254f13a62a1231f"}, - {file = "ddtrace-1.6.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d65e211995e379b06a809dcaa229c09a08a02b161d574ca4716d055a65d9db05"}, - {file = "ddtrace-1.6.4-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0ed65ebd21f80acccba804fe671646e2476ce5e96162b9b2bfb0b8fd417fa6fa"}, - {file = "ddtrace-1.6.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:07ffa019d48175e23f1ccd449c45b0250656cbe210a0603900a981c29ae7786e"}, - {file = "ddtrace-1.6.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:5d9ab8cba1a808da3f6da7aa0303a227245d8b25617e0673a299c3e4cae16506"}, - {file = "ddtrace-1.6.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:72ddb4bfa46660d082be50ae09faec026c46a295524a3a722570c770bf632f98"}, - {file = "ddtrace-1.6.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:03e52db04d3ada8d234d050e66988b8ec559e4db57a03fd56112e50885bc2767"}, - {file = "ddtrace-1.6.4-cp310-cp310-win32.whl", hash = "sha256:aba27dd41468e06fbe0534ce45b182e7cf7fa582eb70a03fd341da63fea07032"}, - {file = "ddtrace-1.6.4-cp310-cp310-win_amd64.whl", hash = "sha256:cf0754548216361ce9de00b750b5a5ff8eb57e9fd1fd85f223b5f23cc36ba68a"}, - {file = "ddtrace-1.6.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4464d1e886450d8c2c149ced95c4ecbe4481bc80225ebc5301385d0bf450e162"}, - {file = "ddtrace-1.6.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d32a006a1919282394e9095abb92d99efbadca7fec304bf07952e2d6f90383c5"}, - {file = "ddtrace-1.6.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a121b3417c444e9bb827c6d0a0b183f1c5517a9c8769c7ca43787ec48ad08bb1"}, - {file = "ddtrace-1.6.4-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7372e54b27d4359fa6d86d664880852a96a1786304ab2580e81796889ada449b"}, - {file = "ddtrace-1.6.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb88df54546891cb738af2d00208d10ab4c391c03b489bbd6a8745f1c8a10d5c"}, - {file = "ddtrace-1.6.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:52ffa9c4324d26f58c4ddf4ca22abcc160386f53bfbdfd56bb772580a72cf958"}, - {file = "ddtrace-1.6.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:bc33cb8501db1d049160a312d9a4e68e2fb35d61fec4a3fa9665c940489246e3"}, - {file = "ddtrace-1.6.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f64498947e696efd1ff192d56f63987cd9b09beabb481e443aa802cca51eb841"}, - {file = "ddtrace-1.6.4-cp311-cp311-win32.whl", hash = "sha256:7766d7253ccab625c07203da36e10c1926d565e465897fdb34f03f532b0610b9"}, - {file = "ddtrace-1.6.4-cp311-cp311-win_amd64.whl", hash = "sha256:981cfe27a13e4347a8fdea9d7a8936b592359ad879df1de98077b1b70e5eeace"}, - {file = "ddtrace-1.6.4-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:cd25cf8e1457c94bb7fe5fc2bab700a9e22378f137cbb73a2fe847dbd2305020"}, - {file = "ddtrace-1.6.4-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:b9bfe5e83a1ea8c8673068a5218f4a80054d87eb9c3e2b581bacbdbac67a28ec"}, - {file = "ddtrace-1.6.4-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:57613420ae32d56a76d67f571210cc134368cbef17607e71b8eb66a5b1ea2d72"}, - {file = "ddtrace-1.6.4-cp35-cp35m-win32.whl", hash = "sha256:d574f29ab02b4f43bd93214891423f27145ff54c34242db6a47fc5a591e0e5d0"}, - {file = "ddtrace-1.6.4-cp35-cp35m-win_amd64.whl", hash = "sha256:89618a300428d53b25428d728bf2ba026a5e996bbd65d82917e8a47a4a0c7815"}, - {file = "ddtrace-1.6.4-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:ee954e1ebc8dc47328b7e145736e7b6d7167cec1d43ba661056210d08594ade8"}, - {file = "ddtrace-1.6.4-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cbda998fd438701a20461cd819a1d1a1d168ea7b3bcaa0ced6f41bac30ba359"}, - {file = "ddtrace-1.6.4-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fcbffb017cdeb468d083b4c07c91fa024a0652416acc35fcfabfbff366f522d2"}, - {file = "ddtrace-1.6.4-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f36f85ff84a7535fbdcbeed40d430f6d047a2cdd0c4de6dc7bc375e82708f646"}, - {file = "ddtrace-1.6.4-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0a016a8d2f666e0e677d00d1f4057035ac5dc753f9b0e4fb378dd4f7882f2ade"}, - {file = "ddtrace-1.6.4-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:0a1be96afa6df810a32cc403a0d133ad87d6c5a9eeec861b178aaa3048d47da6"}, - {file = "ddtrace-1.6.4-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:10accb64d6ad8cc5dfddbb3150c0dd1c96ed5f62161d521d264b0afbaf3f075c"}, - {file = "ddtrace-1.6.4-cp36-cp36m-win32.whl", hash = "sha256:c1c35e16c71dd22c6f21e0d4a135071237fe988082048bc361a3213031e77170"}, - {file = "ddtrace-1.6.4-cp36-cp36m-win_amd64.whl", hash = "sha256:51156177b60331c2d9b024487d25418b1d1308b4d1eaa196cf4673a649bcc057"}, - {file = "ddtrace-1.6.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:04284a33f831ec5efb396f2b7e664d326982008ef8761d4054c3d663e13166bb"}, - {file = "ddtrace-1.6.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1dd4c3743fb93228c7470f447eff1d986417298b7242e80753ec406f67288a75"}, - {file = "ddtrace-1.6.4-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88c90fbfb22b707e6ab07d5c109634c17986d8090363f1e69cc0fb43ccb77098"}, - {file = "ddtrace-1.6.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14430eda72c2d28b92b782201ea4edc6efdc8c74845a407039c1f6a4f244fb24"}, - {file = "ddtrace-1.6.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:a056086975d607acaa0377231615fa1a94c632fd4ece979f0d5554a423663e61"}, - {file = "ddtrace-1.6.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:dae04139b42b42e5eda3f544c7fe9875a5b190aeca9ce09eb01853d35a7f0054"}, - {file = "ddtrace-1.6.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:86a91dc39cc2f2a1c301e8549fb7bd84da78122d4c6ff4b60a97d89601d1c66c"}, - {file = "ddtrace-1.6.4-cp37-cp37m-win32.whl", hash = "sha256:e1efd72c2377f605dc053c763e9449b7188659190d48efb75669158db5a92844"}, - {file = "ddtrace-1.6.4-cp37-cp37m-win_amd64.whl", hash = "sha256:108c045b332a034f3e8e0df8d87b6b7a26e9e94007a8a84000f445450c11c44b"}, - {file = "ddtrace-1.6.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:121c2d6212142fb6815d2dcc56a82fb06e9e3568ee217015e6d72ec3caad7268"}, - {file = "ddtrace-1.6.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3da580615a97e61ffbf564782679b98b81ba026248926619b030d648ff389a40"}, - {file = "ddtrace-1.6.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:73be527f3a2912e74045ee60e9d37fc8f1a8410b90ae3ac8fb94f01e6ee3f6d3"}, - {file = "ddtrace-1.6.4-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae70de026c79a895b2a5beecbbc0e46bb0c07d27af77a1662352a5608068b005"}, - {file = "ddtrace-1.6.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45a4f2c200c22ab4b6dbeb16b6f6b9aafa2a674b3c3e175f86cb2c2e16f69fff"}, - {file = "ddtrace-1.6.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:4a183627202355377d9e369f8d4d18ceee82dd2312d0d098fb1242f387ebcb2b"}, - {file = "ddtrace-1.6.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:97f1ed98e1a14091515aa482d528846ee4437260d68e819bb6ba09af4774fb3c"}, - {file = "ddtrace-1.6.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f08d858a045a9117295e3008ba7c9586865ed16690c682441347508744c338e2"}, - {file = "ddtrace-1.6.4-cp38-cp38-win32.whl", hash = "sha256:71fae938615e77cb5cd04978a36874fa97c1d929c1b697c690affedd538914ed"}, - {file = "ddtrace-1.6.4-cp38-cp38-win_amd64.whl", hash = "sha256:53a0db94ae562222338490e5f409d3e2740d03f7d1099fdd02e769690ca70de2"}, - {file = "ddtrace-1.6.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:d727012ee9b4725cdbb0666e40e4e99cae3418c88b98159e073ec1479d30db73"}, - {file = "ddtrace-1.6.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:102c49d38d67efe6da378509ed7f9f88bc9c6c9a95bcc493c06e02a15e4865c2"}, - {file = "ddtrace-1.6.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5e6cc5ad17a456c6e93d25c6bd06580436fb5c007cef27c89b060a277e35b7a"}, - {file = "ddtrace-1.6.4-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ad9abf5879abad5b143ef9fcd9b557193b19000d8ff798b06ec86f1fe992cb89"}, - {file = "ddtrace-1.6.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:289edf7ea4f506f329b20394b08971487bf72351b0a9b9a63a5c7f4d18e1cda8"}, - {file = "ddtrace-1.6.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:3a3432c72a082e8f4090a55833cda1b6840676b5f58dbaca041d566f581a3062"}, - {file = "ddtrace-1.6.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7504b21d88ce528e86eb8727270e677a7b4a254ee070e54d0e81111bd68a6d0b"}, - {file = "ddtrace-1.6.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5e744e81727d1328e6830de6a749378e7cd31fc0e1c0aceb19b17685e90cb8fa"}, - {file = "ddtrace-1.6.4-cp39-cp39-win32.whl", hash = "sha256:2aed59c1a0ed33f0b752daa801980d9ab395f89ea8fbc2c788fea0b11a3ea826"}, - {file = "ddtrace-1.6.4-cp39-cp39-win_amd64.whl", hash = "sha256:4fb94ee5113141becb7e447bdf57e30bb447f9347785bf20211d0cf06e1e98e7"}, - {file = "ddtrace-1.6.4.tar.gz", hash = "sha256:33effab386caaaab314e08900b798c02ab5771f88697acb9bf64e5ba98c8009a"}, + {file = "ddtrace-1.15.0-cp27-cp27m-macosx_11_0_x86_64.whl", hash = "sha256:b1999cd8566dbb9d39bddf6d4d0c1de29c2664fb450fc29266fead74824c3f5d"}, + {file = "ddtrace-1.15.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:6cf4ec208a17206932537ff111188d2b014b7ef7b10b02490904b47b04282f7f"}, + {file = "ddtrace-1.15.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:017b945d382fee039eed3b6d65c0ff28e45f15fc506fd211c13af342ae080ac8"}, + {file = "ddtrace-1.15.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:ca352bcd44f880a3fc7468e267223ba5104ef788d4c22c81070c91d37db3db2b"}, + {file = "ddtrace-1.15.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:88cbe0f4355eb65cf4791bc6138e92fc7f7499f65671f2111d9d8f2e15265c18"}, + {file = "ddtrace-1.15.0-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:84dbdbf4c5cf3a01200b445565d5113f1377927a30856f98473461368e2342b3"}, + {file = "ddtrace-1.15.0-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:ecec3222ee2f55b39e76390957d68d7f9d44a06d2fe7a174fc3d192e001796dc"}, + {file = "ddtrace-1.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5a2ce601d0db71c98e8f58fdc47071552f39ecfac6b0bf5a543d01856295679"}, + {file = "ddtrace-1.15.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:19b12b51097e002026d8462dc5dc75763127b109e8c99def48e3f977dd8f2d41"}, + {file = "ddtrace-1.15.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5bfd8ec6bb83baca073b139501d51a1f4f17d52f7e43298aadff75ff67ea1996"}, + {file = "ddtrace-1.15.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:36aa6bf7ce975e2a592917e4f06a018940fa56ff42c4e6fe4622ed6e32df9aad"}, + {file = "ddtrace-1.15.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a522c9e104914cd5d05e5635e2155f8ed7e36ca6a9a179b6f3d5e0705ee55da6"}, + {file = "ddtrace-1.15.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4c6d7ef4608f79bf3a7802ff86e5bc752f93938d94c004aca580539e51653e9f"}, + {file = "ddtrace-1.15.0-cp310-cp310-win32.whl", hash = "sha256:e7c997f264440c2190b94928392e59e49c441cea2edfa4d4ed7a9ed1511815f7"}, + {file = "ddtrace-1.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:7a063beaf22cc0935804bbf06deb75b4aaf58b7cad959d42842fce25acaa4278"}, + {file = "ddtrace-1.15.0-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:cd486b653cae16510270900b6ab4fbb81359331e730c6d9ff5310d19a47d3253"}, + {file = "ddtrace-1.15.0-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:cdec6dad5b113d62972e0a8cb1cacd7aa73689a6455f67d82a4f6916ede96a35"}, + {file = "ddtrace-1.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4bc992561a158ecfac3e0cc627eeb90d8d1065d0e8793ae3e04ee06a5b0cf81"}, + {file = "ddtrace-1.15.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:94dfd564551530831fe25e46163f232bf351df087b4bd9701d518ffe37310034"}, + {file = "ddtrace-1.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:275d8e7c7a41f9fa63ed2d370667fd875830fb898121a479554505f6623cd334"}, + {file = "ddtrace-1.15.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:f397f4abb858f53773459c1524e81526cd3cc697c0cec99ad04ab87be9ad172e"}, + {file = "ddtrace-1.15.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:8fa49e1deaf1316e17fd6fc21ac0ea4d92d5ecd2b783b700d370fc6ba70c3988"}, + {file = "ddtrace-1.15.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5a4d8c723ac4a84b993bfeb0b476724d99296b196470c190072cd98855019eee"}, + {file = "ddtrace-1.15.0-cp311-cp311-win32.whl", hash = "sha256:af2760a4d6fe21470ca5af6b04a2c20bc5f69606508a2369c7b5a403248fb518"}, + {file = "ddtrace-1.15.0-cp311-cp311-win_amd64.whl", hash = "sha256:e40151f748c154b116f16b69031b7fbc58e04cb6d40640b7c8358ce2ab5f69df"}, + {file = "ddtrace-1.15.0-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:0737dd77ceceba3510041a1e415a1b95c523d368cb7fd9c1541c07912b0d43b0"}, + {file = "ddtrace-1.15.0-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:07a3b1fc6725abc5cf4bc441ae5e0cc9a567eecea2590222afe432a25067525c"}, + {file = "ddtrace-1.15.0-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:b09772d02a3294d6781eb2b3e51dd755bd24967fecfaa94f266ff21add0a1623"}, + {file = "ddtrace-1.15.0-cp35-cp35m-win32.whl", hash = "sha256:9ff9f3db0cf97f581b2c7a8abd76eb43954a0c4629cdba137f17e35333ffa182"}, + {file = "ddtrace-1.15.0-cp35-cp35m-win_amd64.whl", hash = "sha256:6afee087ae47728ba0506e530958df1cc3f63ed7be4292fabff913a9478b474e"}, + {file = "ddtrace-1.15.0-cp36-cp36m-macosx_11_0_x86_64.whl", hash = "sha256:807b4234c80a11cea987a5b23e0e4d946427e17a6a2264cc34f63bfb17f15012"}, + {file = "ddtrace-1.15.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1695052fa79b8262704e78283be4b9fea50eea762ddfbb2aabc71e70647186bd"}, + {file = "ddtrace-1.15.0-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0bcf0f016c849245d6d240dbc5d641a8e36ca1e5d69e2427a8e07bd23f6094c9"}, + {file = "ddtrace-1.15.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6863a96e692aa1af8a8cdbfecf106feaa1eb6de1ad1c552fad76c0b6923a9b5"}, + {file = "ddtrace-1.15.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:e19143fae1133d6109bb29927c676048cf8d453dd27adc0f6fc153bda5696314"}, + {file = "ddtrace-1.15.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:3f4ffa2200663b92536723209f16f67454a86e88f705df24a156cd266680db10"}, + {file = "ddtrace-1.15.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:26b8450db283d4b378b73046ecd6db01d8eb652f80b1b0888e4ed3e602070f39"}, + {file = "ddtrace-1.15.0-cp36-cp36m-win32.whl", hash = "sha256:68c00db16c7942a327898e4ac077e420d0ccd2bfd8d1adf917211687681ace79"}, + {file = "ddtrace-1.15.0-cp36-cp36m-win_amd64.whl", hash = "sha256:917b90931e6a83268e180e295e1188c218387c524de9552fba946dabdc9f780a"}, + {file = "ddtrace-1.15.0-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:08dae33cbc49c1634458bf3f0b2263ed589f3f0a9d26efd2baa69642d932a8fd"}, + {file = "ddtrace-1.15.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c8d2c8c6d9d0d0aa28826e43f60103da8a1a0b709801547443a9a0f71b6fb39"}, + {file = "ddtrace-1.15.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b5e2dbf357ac907c1724401586fe2a3379f8d77b9b3e7598f1006fa37138bb2e"}, + {file = "ddtrace-1.15.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a435e143b5324453b598923ca87f9f298fd3e3b79a6ebf689d8a6f6991a71bad"}, + {file = "ddtrace-1.15.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:88006fa7755fe3b3c975a9ae4ddba6231929f7961a374105cda53d9b3db2cf56"}, + {file = "ddtrace-1.15.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f8a71a6409df291a38553e980df1bcfbd9018b33b450e5508b5a1518f564dce4"}, + {file = "ddtrace-1.15.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:52e2d5ab754e7b866d43bba7e86b853a7024667994b31cb690ff5183d45f4d43"}, + {file = "ddtrace-1.15.0-cp37-cp37m-win32.whl", hash = "sha256:abeec391239f59257c7a9a0e9ed6d4c0777256bd5ee89cfa057d42ced603ad05"}, + {file = "ddtrace-1.15.0-cp37-cp37m-win_amd64.whl", hash = "sha256:bdae8d560f10da94f3cf77f548b54b537a47ba56462bd96686129f908c7930b1"}, + {file = "ddtrace-1.15.0-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:ed6801ea071cd4879c49d2a30476afe1fc9a969485f95efd5ef754b43df1142c"}, + {file = "ddtrace-1.15.0-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:b17903b46f6ce66e3f8645b0e7553fea7720c2e69fcf38b3e486ca15eb50a618"}, + {file = "ddtrace-1.15.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f03134274f7c4ef11d52764eaefd6e0355233e4e7d0ad88c872275dd344fd7ec"}, + {file = "ddtrace-1.15.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:61a1cc91877c09288e85f742d3659007f4b925fc575aa66e48ce9e116af835e1"}, + {file = "ddtrace-1.15.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b8578c3d5ab888ee9f1fe57d8b63cbc4cbf38c4444b501b830b7ab7abb0e5ef"}, + {file = "ddtrace-1.15.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2623759718ec083ab29a70d3f9902e7785dcc6b226fd4378de2605c3b4cd887a"}, + {file = "ddtrace-1.15.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:15d1db69608dc73a22c123525a66f6ce0e85dce57f322d67c6fbbf7f23d3a21c"}, + {file = "ddtrace-1.15.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:9af6737ba124a791dd632a818fa1e26914be5da7bea530bb11863f35376256b9"}, + {file = "ddtrace-1.15.0-cp38-cp38-win32.whl", hash = "sha256:2b9b76144690a6dd3f8e114baa8263d4eeaea3dd8fe7905201fb3a910451c5c6"}, + {file = "ddtrace-1.15.0-cp38-cp38-win_amd64.whl", hash = "sha256:15701417ce75896041c20d3b076cd04d5a73529a50c38dcc4bd905c4388b24fc"}, + {file = "ddtrace-1.15.0-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:a7e5bc435a75d59c1e24c10b5823d9640728290ddb452c86c9fd6d63ca9d4edb"}, + {file = "ddtrace-1.15.0-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:1db33af2792e5b07f45c6880831edd9bb016000cce580fb023a8fe5130fc0a6f"}, + {file = "ddtrace-1.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0af977fe8e4d7344793dcd447c8687064b49da5a274931bfed4fe9ec3463ea65"}, + {file = "ddtrace-1.15.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a496201556d1ad95219a032a03de8927108411f7bc7d4dbcefda3bf8785b5663"}, + {file = "ddtrace-1.15.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a6ef7c443207b898a25d5899873d8de476c349460c1d501c8c706c4dba0e606a"}, + {file = "ddtrace-1.15.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4f3700a1bc59277e7b576c87cebffe95bd1256b2207dff36cdfb29a0f26416b2"}, + {file = "ddtrace-1.15.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:93269e17aadc054c357c917e66319b966a8a18e735b81796b61ae282946a2170"}, + {file = "ddtrace-1.15.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8f0ed9fc210ba7fd31d64fb1e2435b382fede962b15d5661ed38566ad49d2c6f"}, + {file = "ddtrace-1.15.0-cp39-cp39-win32.whl", hash = "sha256:dd21d45b9a78e94dcbd9171dd73706d02eee762cbf2a3f00ffaad7e69128b159"}, + {file = "ddtrace-1.15.0-cp39-cp39-win_amd64.whl", hash = "sha256:1d1289506153af3c774e375f6aa803bd9d4c91b2ba60d9e0e06d8a25e784c4bc"}, + {file = "ddtrace-1.15.0.tar.gz", hash = "sha256:b275e25cd723cdd01d6901e690cea7852b742cfebfe800eb289e483f8f398bd0"}, ] [package.dependencies] @@ -311,15 +401,14 @@ bytecode = [ {version = ">=0.13.0,<0.14.0", markers = "python_version == \"3.7\""}, {version = "*", markers = "python_version >= \"3.8\""}, ] -cattrs = "*" +cattrs = {version = "*", markers = "python_version >= \"3.7\""} ddsketch = ">=2.0.1" envier = "*" importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} jsonschema = "*" -packaging = ">=17.1" +opentelemetry-api = {version = ">=1", markers = "python_version >= \"3.7\""} protobuf = {version = ">=3", markers = "python_version >= \"3.7\""} six = ">=1.12.0" -tenacity = ">=5" typing-extensions = "*" xmltodict = ">=0.12" @@ -327,17 +416,23 @@ xmltodict = ">=0.12" opentracing = ["opentracing (>=2.0.0)"] [[package]] -name = "decorator" -version = "5.1.1" -description = "Decorators for Humans" +name = "deprecated" +version = "1.2.14" +description = "Python @deprecated decorator to deprecate old python classes, functions or methods." category = "main" optional = false -python-versions = ">=3.5" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ - {file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"}, - {file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"}, + {file = "Deprecated-1.2.14-py2.py3-none-any.whl", hash = "sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c"}, + {file = "Deprecated-1.2.14.tar.gz", hash = "sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3"}, ] +[package.dependencies] +wrapt = ">=1.10,<2" + +[package.extras] +dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "sphinx (<2)", "tox"] + [[package]] name = "envier" version = "0.4.0" @@ -355,14 +450,14 @@ mypy = ["mypy"] [[package]] name = "exceptiongroup" -version = "1.1.0" +version = "1.1.1" description = "Backport of PEP 654 (exception groups)" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "exceptiongroup-1.1.0-py3-none-any.whl", hash = "sha256:327cbda3da756e2de031a3107b81ab7b3770a602c4d16ca618298c526f4bec1e"}, - {file = "exceptiongroup-1.1.0.tar.gz", hash = "sha256:bcb67d800a4497e1b404c2dd44fca47d3b7a5e5433dbab67f96c1a685cdfdf23"}, + {file = "exceptiongroup-1.1.1-py3-none-any.whl", hash = "sha256:232c37c63e4f682982c8b6459f33a8981039e5fb8756b2074364e5055c498c9e"}, + {file = "exceptiongroup-1.1.1.tar.gz", hash = "sha256:d484c3090ba2889ae2928419117447a14daf3c1231d5e30d0aae34f354f01785"}, ] [package.extras] @@ -433,14 +528,14 @@ testing = ["importlib-resources (>=1.3)", "packaging", "pep517"] [[package]] name = "importlib-resources" -version = "5.10.2" +version = "5.12.0" description = "Read resources from Python packages" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "importlib_resources-5.10.2-py3-none-any.whl", hash = "sha256:7d543798b0beca10b6a01ac7cafda9f822c54db9e8376a6bf57e0cbd74d486b6"}, - {file = "importlib_resources-5.10.2.tar.gz", hash = "sha256:e4a96c8cc0339647ff9a5e0550d9f276fc5a01ffa276012b58ec108cfd7b8484"}, + {file = "importlib_resources-5.12.0-py3-none-any.whl", hash = "sha256:7b1deeebbf351c7578e09bf2f63fa2ce8b5ffec296e0d349139d43cca061a81a"}, + {file = "importlib_resources-5.12.0.tar.gz", hash = "sha256:4be82589bf5c1d7999aedf2a45159d10cb3ca4f19b2271f8792bc8e6da7b22f6"}, ] [package.dependencies] @@ -519,17 +614,21 @@ coverage-plugin = ["coverage (>=4.4.1)"] doc = ["Sphinx (>=1.6.5)", "mock", "sphinx-rtd-theme"] [[package]] -name = "packaging" -version = "22.0" -description = "Core utilities for Python packages" +name = "opentelemetry-api" +version = "1.15.0" +description = "OpenTelemetry Python API" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "packaging-22.0-py3-none-any.whl", hash = "sha256:957e2148ba0e1a3b282772e791ef1d8083648bc131c8ab0c1feba110ce1146c3"}, - {file = "packaging-22.0.tar.gz", hash = "sha256:2198ec20bd4c017b8f9717e00f0c8714076fc2fd93816750ab48e2c41de2cfd3"}, + {file = "opentelemetry_api-1.15.0-py3-none-any.whl", hash = "sha256:e6c2d2e42140fd396e96edf75a7ceb11073f4efb4db87565a431cc9d0f93f2e0"}, + {file = "opentelemetry_api-1.15.0.tar.gz", hash = "sha256:79ab791b4aaad27acc3dc3ba01596db5b5aac2ef75c70622c6038051d6c2cded"}, ] +[package.dependencies] +deprecated = ">=1.2.6" +setuptools = ">=16.0" + [[package]] name = "pkgutil-resolve-name" version = "1.3.10" @@ -544,26 +643,25 @@ files = [ [[package]] name = "protobuf" -version = "4.21.12" +version = "4.23.3" description = "" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "protobuf-4.21.12-cp310-abi3-win32.whl", hash = "sha256:b135410244ebe777db80298297a97fbb4c862c881b4403b71bac9d4107d61fd1"}, - {file = "protobuf-4.21.12-cp310-abi3-win_amd64.whl", hash = "sha256:89f9149e4a0169cddfc44c74f230d7743002e3aa0b9472d8c28f0388102fc4c2"}, - {file = "protobuf-4.21.12-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:299ea899484ee6f44604deb71f424234f654606b983cb496ea2a53e3c63ab791"}, - {file = "protobuf-4.21.12-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:d1736130bce8cf131ac7957fa26880ca19227d4ad68b4888b3be0dea1f95df97"}, - {file = "protobuf-4.21.12-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:78a28c9fa223998472886c77042e9b9afb6fe4242bd2a2a5aced88e3f4422aa7"}, - {file = "protobuf-4.21.12-cp37-cp37m-win32.whl", hash = "sha256:3d164928ff0727d97022957c2b849250ca0e64777ee31efd7d6de2e07c494717"}, - {file = "protobuf-4.21.12-cp37-cp37m-win_amd64.whl", hash = "sha256:f45460f9ee70a0ec1b6694c6e4e348ad2019275680bd68a1d9314b8c7e01e574"}, - {file = "protobuf-4.21.12-cp38-cp38-win32.whl", hash = "sha256:6ab80df09e3208f742c98443b6166bcb70d65f52cfeb67357d52032ea1ae9bec"}, - {file = "protobuf-4.21.12-cp38-cp38-win_amd64.whl", hash = "sha256:1f22ac0ca65bb70a876060d96d914dae09ac98d114294f77584b0d2644fa9c30"}, - {file = "protobuf-4.21.12-cp39-cp39-win32.whl", hash = "sha256:27f4d15021da6d2b706ddc3860fac0a5ddaba34ab679dc182b60a8bb4e1121cc"}, - {file = "protobuf-4.21.12-cp39-cp39-win_amd64.whl", hash = "sha256:237216c3326d46808a9f7c26fd1bd4b20015fb6867dc5d263a493ef9a539293b"}, - {file = "protobuf-4.21.12-py2.py3-none-any.whl", hash = "sha256:a53fd3f03e578553623272dc46ac2f189de23862e68565e83dde203d41b76fc5"}, - {file = "protobuf-4.21.12-py3-none-any.whl", hash = "sha256:b98d0148f84e3a3c569e19f52103ca1feacdac0d2df8d6533cf983d1fda28462"}, - {file = "protobuf-4.21.12.tar.gz", hash = "sha256:7cd532c4566d0e6feafecc1059d04c7915aec8e182d1cf7adee8b24ef1e2e6ab"}, + {file = "protobuf-4.23.3-cp310-abi3-win32.whl", hash = "sha256:514b6bbd54a41ca50c86dd5ad6488afe9505901b3557c5e0f7823a0cf67106fb"}, + {file = "protobuf-4.23.3-cp310-abi3-win_amd64.whl", hash = "sha256:cc14358a8742c4e06b1bfe4be1afbdf5c9f6bd094dff3e14edb78a1513893ff5"}, + {file = "protobuf-4.23.3-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:2991f5e7690dab569f8f81702e6700e7364cc3b5e572725098215d3da5ccc6ac"}, + {file = "protobuf-4.23.3-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:08fe19d267608d438aa37019236db02b306e33f6b9902c3163838b8e75970223"}, + {file = "protobuf-4.23.3-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:3b01a5274ac920feb75d0b372d901524f7e3ad39c63b1a2d55043f3887afe0c1"}, + {file = "protobuf-4.23.3-cp37-cp37m-win32.whl", hash = "sha256:aca6e86a08c5c5962f55eac9b5bd6fce6ed98645d77e8bfc2b952ecd4a8e4f6a"}, + {file = "protobuf-4.23.3-cp37-cp37m-win_amd64.whl", hash = "sha256:0149053336a466e3e0b040e54d0b615fc71de86da66791c592cc3c8d18150bf8"}, + {file = "protobuf-4.23.3-cp38-cp38-win32.whl", hash = "sha256:84ea0bd90c2fdd70ddd9f3d3fc0197cc24ecec1345856c2b5ba70e4d99815359"}, + {file = "protobuf-4.23.3-cp38-cp38-win_amd64.whl", hash = "sha256:3bcbeb2bf4bb61fe960dd6e005801a23a43578200ea8ceb726d1f6bd0e562ba1"}, + {file = "protobuf-4.23.3-cp39-cp39-win32.whl", hash = "sha256:5cb9e41188737f321f4fce9a4337bf40a5414b8d03227e1d9fbc59bc3a216e35"}, + {file = "protobuf-4.23.3-cp39-cp39-win_amd64.whl", hash = "sha256:29660574cd769f2324a57fb78127cda59327eb6664381ecfe1c69731b83e8288"}, + {file = "protobuf-4.23.3-py3-none-any.whl", hash = "sha256:447b9786ac8e50ae72cae7a2eec5c5df6a9dbf9aa6f908f1b8bda6032644ea62"}, + {file = "protobuf-4.23.3.tar.gz", hash = "sha256:7a92beb30600332a52cdadbedb40d33fd7c8a0d7f549c440347bc606fb3fe34b"}, ] [[package]] @@ -644,21 +742,21 @@ six = ">=1.5" [[package]] name = "requests" -version = "2.28.1" +version = "2.31.0" description = "Python HTTP for Humans." category = "main" optional = false -python-versions = ">=3.7, <4" +python-versions = ">=3.7" files = [ - {file = "requests-2.28.1-py3-none-any.whl", hash = "sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349"}, - {file = "requests-2.28.1.tar.gz", hash = "sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983"}, + {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, + {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, ] [package.dependencies] certifi = ">=2017.4.17" -charset-normalizer = ">=2,<3" +charset-normalizer = ">=2,<4" idna = ">=2.5,<4" -urllib3 = ">=1.21.1,<1.27" +urllib3 = ">=1.21.1,<3" [package.extras] socks = ["PySocks (>=1.5.6,!=1.5.7)"] @@ -666,14 +764,14 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "s3transfer" -version = "0.6.0" +version = "0.6.1" description = "An Amazon S3 Transfer Manager" category = "main" optional = true python-versions = ">= 3.7" files = [ - {file = "s3transfer-0.6.0-py3-none-any.whl", hash = "sha256:06176b74f3a15f61f1b4f25a1fc29a4429040b7647133a463da8fa5bd28d5ecd"}, - {file = "s3transfer-0.6.0.tar.gz", hash = "sha256:2ed07d3866f523cc561bf4a00fc5535827981b117dd7876f036b0c1aca42c947"}, + {file = "s3transfer-0.6.1-py3-none-any.whl", hash = "sha256:3c0da2d074bf35d6870ef157158641178a4204a6e689e82546083e31e0311346"}, + {file = "s3transfer-0.6.1.tar.gz", hash = "sha256:640bb492711f4c0c0905e1f62b6aaeb771881935ad27884852411f8e9cacbca9"}, ] [package.dependencies] @@ -683,54 +781,56 @@ botocore = ">=1.12.36,<2.0a.0" crt = ["botocore[crt] (>=1.20.29,<2.0a.0)"] [[package]] -name = "six" -version = "1.16.0" -description = "Python 2 and 3 compatibility utilities" +name = "setuptools" +version = "68.0.0" +description = "Easily download, build, install, upgrade, and uninstall Python packages" category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +python-versions = ">=3.7" files = [ - {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, - {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, + {file = "setuptools-68.0.0-py3-none-any.whl", hash = "sha256:11e52c67415a381d10d6b462ced9cfb97066179f0e871399e006c4ab101fc85f"}, + {file = "setuptools-68.0.0.tar.gz", hash = "sha256:baf1fdb41c6da4cd2eae722e135500da913332ab3f2f5c7d33af9b492acb5235"}, ] +[package.extras] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pip-run (>=8.8)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] + [[package]] -name = "tenacity" -version = "8.1.0" -description = "Retry code until it succeeds" +name = "six" +version = "1.16.0" +description = "Python 2 and 3 compatibility utilities" category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" files = [ - {file = "tenacity-8.1.0-py3-none-any.whl", hash = "sha256:35525cd47f82830069f0d6b73f7eb83bc5b73ee2fff0437952cedf98b27653ac"}, - {file = "tenacity-8.1.0.tar.gz", hash = "sha256:e48c437fdf9340f5666b92cd7990e96bc5fc955e1298baf4a907e3972067a445"}, + {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, + {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, ] -[package.extras] -doc = ["reno", "sphinx", "tornado (>=4.5)"] - [[package]] name = "typing-extensions" -version = "4.4.0" +version = "4.6.3" description = "Backported and Experimental Type Hints for Python 3.7+" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "typing_extensions-4.4.0-py3-none-any.whl", hash = "sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e"}, - {file = "typing_extensions-4.4.0.tar.gz", hash = "sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa"}, + {file = "typing_extensions-4.6.3-py3-none-any.whl", hash = "sha256:88a4153d8505aabbb4e13aacb7c486c2b4a33ca3b3f807914a9b4c844c471c26"}, + {file = "typing_extensions-4.6.3.tar.gz", hash = "sha256:d91d5919357fe7f681a9f2b5b4cb2a5f1ef0a1e9f59c4d8ff0d3491e05c0ffd5"}, ] [[package]] name = "urllib3" -version = "1.26.13" +version = "1.26.16" description = "HTTP library with thread-safe connection pooling, file post, and more." category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" files = [ - {file = "urllib3-1.26.13-py2.py3-none-any.whl", hash = "sha256:47cc05d99aaa09c9e72ed5809b60e7ba354e64b59c9c173ac3018642d8bb41fc"}, - {file = "urllib3-1.26.13.tar.gz", hash = "sha256:c083dd0dce68dbfbe1129d5271cb90f9447dea7d52097c6e0126120c521ddea8"}, + {file = "urllib3-1.26.16-py2.py3-none-any.whl", hash = "sha256:8d36afa7616d8ab714608411b4a3b13e58f463aee519024578e062e141dce20f"}, + {file = "urllib3-1.26.16.tar.gz", hash = "sha256:8f135f6502756bde6b2a9b28989df5fbe87c9970cecaa69041edcce7f0589b14"}, ] [package.extras] @@ -740,76 +840,87 @@ socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] [[package]] name = "wrapt" -version = "1.14.1" +version = "1.15.0" description = "Module for decorators, wrappers and monkey patching." category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" files = [ - {file = "wrapt-1.14.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:1b376b3f4896e7930f1f772ac4b064ac12598d1c38d04907e696cc4d794b43d3"}, - {file = "wrapt-1.14.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:903500616422a40a98a5a3c4ff4ed9d0066f3b4c951fa286018ecdf0750194ef"}, - {file = "wrapt-1.14.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:5a9a0d155deafd9448baff28c08e150d9b24ff010e899311ddd63c45c2445e28"}, - {file = "wrapt-1.14.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:ddaea91abf8b0d13443f6dac52e89051a5063c7d014710dcb4d4abb2ff811a59"}, - {file = "wrapt-1.14.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:36f582d0c6bc99d5f39cd3ac2a9062e57f3cf606ade29a0a0d6b323462f4dd87"}, - {file = "wrapt-1.14.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:7ef58fb89674095bfc57c4069e95d7a31cfdc0939e2a579882ac7d55aadfd2a1"}, - {file = "wrapt-1.14.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:e2f83e18fe2f4c9e7db597e988f72712c0c3676d337d8b101f6758107c42425b"}, - {file = "wrapt-1.14.1-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:ee2b1b1769f6707a8a445162ea16dddf74285c3964f605877a20e38545c3c462"}, - {file = "wrapt-1.14.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:833b58d5d0b7e5b9832869f039203389ac7cbf01765639c7309fd50ef619e0b1"}, - {file = "wrapt-1.14.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:80bb5c256f1415f747011dc3604b59bc1f91c6e7150bd7db03b19170ee06b320"}, - {file = "wrapt-1.14.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:07f7a7d0f388028b2df1d916e94bbb40624c59b48ecc6cbc232546706fac74c2"}, - {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02b41b633c6261feff8ddd8d11c711df6842aba629fdd3da10249a53211a72c4"}, - {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2fe803deacd09a233e4762a1adcea5db5d31e6be577a43352936179d14d90069"}, - {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:257fd78c513e0fb5cdbe058c27a0624c9884e735bbd131935fd49e9fe719d310"}, - {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4fcc4649dc762cddacd193e6b55bc02edca674067f5f98166d7713b193932b7f"}, - {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:11871514607b15cfeb87c547a49bca19fde402f32e2b1c24a632506c0a756656"}, - {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8ad85f7f4e20964db4daadcab70b47ab05c7c1cf2a7c1e51087bfaa83831854c"}, - {file = "wrapt-1.14.1-cp310-cp310-win32.whl", hash = "sha256:a9a52172be0b5aae932bef82a79ec0a0ce87288c7d132946d645eba03f0ad8a8"}, - {file = "wrapt-1.14.1-cp310-cp310-win_amd64.whl", hash = "sha256:6d323e1554b3d22cfc03cd3243b5bb815a51f5249fdcbb86fda4bf62bab9e164"}, - {file = "wrapt-1.14.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:43ca3bbbe97af00f49efb06e352eae40434ca9d915906f77def219b88e85d907"}, - {file = "wrapt-1.14.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:6b1a564e6cb69922c7fe3a678b9f9a3c54e72b469875aa8018f18b4d1dd1adf3"}, - {file = "wrapt-1.14.1-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:00b6d4ea20a906c0ca56d84f93065b398ab74b927a7a3dbd470f6fc503f95dc3"}, - {file = "wrapt-1.14.1-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:a85d2b46be66a71bedde836d9e41859879cc54a2a04fad1191eb50c2066f6e9d"}, - {file = "wrapt-1.14.1-cp35-cp35m-win32.whl", hash = "sha256:dbcda74c67263139358f4d188ae5faae95c30929281bc6866d00573783c422b7"}, - {file = "wrapt-1.14.1-cp35-cp35m-win_amd64.whl", hash = "sha256:b21bb4c09ffabfa0e85e3a6b623e19b80e7acd709b9f91452b8297ace2a8ab00"}, - {file = "wrapt-1.14.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:9e0fd32e0148dd5dea6af5fee42beb949098564cc23211a88d799e434255a1f4"}, - {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9736af4641846491aedb3c3f56b9bc5568d92b0692303b5a305301a95dfd38b1"}, - {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5b02d65b9ccf0ef6c34cba6cf5bf2aab1bb2f49c6090bafeecc9cd81ad4ea1c1"}, - {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21ac0156c4b089b330b7666db40feee30a5d52634cc4560e1905d6529a3897ff"}, - {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:9f3e6f9e05148ff90002b884fbc2a86bd303ae847e472f44ecc06c2cd2fcdb2d"}, - {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:6e743de5e9c3d1b7185870f480587b75b1cb604832e380d64f9504a0535912d1"}, - {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:d79d7d5dc8a32b7093e81e97dad755127ff77bcc899e845f41bf71747af0c569"}, - {file = "wrapt-1.14.1-cp36-cp36m-win32.whl", hash = "sha256:81b19725065dcb43df02b37e03278c011a09e49757287dca60c5aecdd5a0b8ed"}, - {file = "wrapt-1.14.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b014c23646a467558be7da3d6b9fa409b2c567d2110599b7cf9a0c5992b3b471"}, - {file = "wrapt-1.14.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:88bd7b6bd70a5b6803c1abf6bca012f7ed963e58c68d76ee20b9d751c74a3248"}, - {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5901a312f4d14c59918c221323068fad0540e34324925c8475263841dbdfe68"}, - {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d77c85fedff92cf788face9bfa3ebaa364448ebb1d765302e9af11bf449ca36d"}, - {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d649d616e5c6a678b26d15ece345354f7c2286acd6db868e65fcc5ff7c24a77"}, - {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7d2872609603cb35ca513d7404a94d6d608fc13211563571117046c9d2bcc3d7"}, - {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:ee6acae74a2b91865910eef5e7de37dc6895ad96fa23603d1d27ea69df545015"}, - {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:2b39d38039a1fdad98c87279b48bc5dce2c0ca0d73483b12cb72aa9609278e8a"}, - {file = "wrapt-1.14.1-cp37-cp37m-win32.whl", hash = "sha256:60db23fa423575eeb65ea430cee741acb7c26a1365d103f7b0f6ec412b893853"}, - {file = "wrapt-1.14.1-cp37-cp37m-win_amd64.whl", hash = "sha256:709fe01086a55cf79d20f741f39325018f4df051ef39fe921b1ebe780a66184c"}, - {file = "wrapt-1.14.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8c0ce1e99116d5ab21355d8ebe53d9460366704ea38ae4d9f6933188f327b456"}, - {file = "wrapt-1.14.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e3fb1677c720409d5f671e39bac6c9e0e422584e5f518bfd50aa4cbbea02433f"}, - {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:642c2e7a804fcf18c222e1060df25fc210b9c58db7c91416fb055897fc27e8cc"}, - {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7b7c050ae976e286906dd3f26009e117eb000fb2cf3533398c5ad9ccc86867b1"}, - {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef3f72c9666bba2bab70d2a8b79f2c6d2c1a42a7f7e2b0ec83bb2f9e383950af"}, - {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:01c205616a89d09827986bc4e859bcabd64f5a0662a7fe95e0d359424e0e071b"}, - {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5a0f54ce2c092aaf439813735584b9537cad479575a09892b8352fea5e988dc0"}, - {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2cf71233a0ed05ccdabe209c606fe0bac7379fdcf687f39b944420d2a09fdb57"}, - {file = "wrapt-1.14.1-cp38-cp38-win32.whl", hash = "sha256:aa31fdcc33fef9eb2552cbcbfee7773d5a6792c137b359e82879c101e98584c5"}, - {file = "wrapt-1.14.1-cp38-cp38-win_amd64.whl", hash = "sha256:d1967f46ea8f2db647c786e78d8cc7e4313dbd1b0aca360592d8027b8508e24d"}, - {file = "wrapt-1.14.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3232822c7d98d23895ccc443bbdf57c7412c5a65996c30442ebe6ed3df335383"}, - {file = "wrapt-1.14.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:988635d122aaf2bdcef9e795435662bcd65b02f4f4c1ae37fbee7401c440b3a7"}, - {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cca3c2cdadb362116235fdbd411735de4328c61425b0aa9f872fd76d02c4e86"}, - {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d52a25136894c63de15a35bc0bdc5adb4b0e173b9c0d07a2be9d3ca64a332735"}, - {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40e7bc81c9e2b2734ea4bc1aceb8a8f0ceaac7c5299bc5d69e37c44d9081d43b"}, - {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b9b7a708dd92306328117d8c4b62e2194d00c365f18eff11a9b53c6f923b01e3"}, - {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6a9a25751acb379b466ff6be78a315e2b439d4c94c1e99cb7266d40a537995d3"}, - {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:34aa51c45f28ba7f12accd624225e2b1e5a3a45206aa191f6f9aac931d9d56fe"}, - {file = "wrapt-1.14.1-cp39-cp39-win32.whl", hash = "sha256:dee0ce50c6a2dd9056c20db781e9c1cfd33e77d2d569f5d1d9321c641bb903d5"}, - {file = "wrapt-1.14.1-cp39-cp39-win_amd64.whl", hash = "sha256:dee60e1de1898bde3b238f18340eec6148986da0455d8ba7848d50470a7a32fb"}, - {file = "wrapt-1.14.1.tar.gz", hash = "sha256:380a85cf89e0e69b7cfbe2ea9f765f004ff419f34194018a6827ac0e3edfed4d"}, + {file = "wrapt-1.15.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:ca1cccf838cd28d5a0883b342474c630ac48cac5df0ee6eacc9c7290f76b11c1"}, + {file = "wrapt-1.15.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:e826aadda3cae59295b95343db8f3d965fb31059da7de01ee8d1c40a60398b29"}, + {file = "wrapt-1.15.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:5fc8e02f5984a55d2c653f5fea93531e9836abbd84342c1d1e17abc4a15084c2"}, + {file = "wrapt-1.15.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:96e25c8603a155559231c19c0349245eeb4ac0096fe3c1d0be5c47e075bd4f46"}, + {file = "wrapt-1.15.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:40737a081d7497efea35ab9304b829b857f21558acfc7b3272f908d33b0d9d4c"}, + {file = "wrapt-1.15.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:f87ec75864c37c4c6cb908d282e1969e79763e0d9becdfe9fe5473b7bb1e5f09"}, + {file = "wrapt-1.15.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:1286eb30261894e4c70d124d44b7fd07825340869945c79d05bda53a40caa079"}, + {file = "wrapt-1.15.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:493d389a2b63c88ad56cdc35d0fa5752daac56ca755805b1b0c530f785767d5e"}, + {file = "wrapt-1.15.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:58d7a75d731e8c63614222bcb21dd992b4ab01a399f1f09dd82af17bbfc2368a"}, + {file = "wrapt-1.15.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:21f6d9a0d5b3a207cdf7acf8e58d7d13d463e639f0c7e01d82cdb671e6cb7923"}, + {file = "wrapt-1.15.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ce42618f67741d4697684e501ef02f29e758a123aa2d669e2d964ff734ee00ee"}, + {file = "wrapt-1.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41d07d029dd4157ae27beab04d22b8e261eddfc6ecd64ff7000b10dc8b3a5727"}, + {file = "wrapt-1.15.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:54accd4b8bc202966bafafd16e69da9d5640ff92389d33d28555c5fd4f25ccb7"}, + {file = "wrapt-1.15.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fbfbca668dd15b744418265a9607baa970c347eefd0db6a518aaf0cfbd153c0"}, + {file = "wrapt-1.15.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:76e9c727a874b4856d11a32fb0b389afc61ce8aaf281ada613713ddeadd1cfec"}, + {file = "wrapt-1.15.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e20076a211cd6f9b44a6be58f7eeafa7ab5720eb796975d0c03f05b47d89eb90"}, + {file = "wrapt-1.15.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a74d56552ddbde46c246b5b89199cb3fd182f9c346c784e1a93e4dc3f5ec9975"}, + {file = "wrapt-1.15.0-cp310-cp310-win32.whl", hash = "sha256:26458da5653aa5b3d8dc8b24192f574a58984c749401f98fff994d41d3f08da1"}, + {file = "wrapt-1.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:75760a47c06b5974aa5e01949bf7e66d2af4d08cb8c1d6516af5e39595397f5e"}, + {file = "wrapt-1.15.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ba1711cda2d30634a7e452fc79eabcadaffedf241ff206db2ee93dd2c89a60e7"}, + {file = "wrapt-1.15.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:56374914b132c702aa9aa9959c550004b8847148f95e1b824772d453ac204a72"}, + {file = "wrapt-1.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a89ce3fd220ff144bd9d54da333ec0de0399b52c9ac3d2ce34b569cf1a5748fb"}, + {file = "wrapt-1.15.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3bbe623731d03b186b3d6b0d6f51865bf598587c38d6f7b0be2e27414f7f214e"}, + {file = "wrapt-1.15.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3abbe948c3cbde2689370a262a8d04e32ec2dd4f27103669a45c6929bcdbfe7c"}, + {file = "wrapt-1.15.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:b67b819628e3b748fd3c2192c15fb951f549d0f47c0449af0764d7647302fda3"}, + {file = "wrapt-1.15.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:7eebcdbe3677e58dd4c0e03b4f2cfa346ed4049687d839adad68cc38bb559c92"}, + {file = "wrapt-1.15.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:74934ebd71950e3db69960a7da29204f89624dde411afbfb3b4858c1409b1e98"}, + {file = "wrapt-1.15.0-cp311-cp311-win32.whl", hash = "sha256:bd84395aab8e4d36263cd1b9308cd504f6cf713b7d6d3ce25ea55670baec5416"}, + {file = "wrapt-1.15.0-cp311-cp311-win_amd64.whl", hash = "sha256:a487f72a25904e2b4bbc0817ce7a8de94363bd7e79890510174da9d901c38705"}, + {file = "wrapt-1.15.0-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:4ff0d20f2e670800d3ed2b220d40984162089a6e2c9646fdb09b85e6f9a8fc29"}, + {file = "wrapt-1.15.0-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9ed6aa0726b9b60911f4aed8ec5b8dd7bf3491476015819f56473ffaef8959bd"}, + {file = "wrapt-1.15.0-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:896689fddba4f23ef7c718279e42f8834041a21342d95e56922e1c10c0cc7afb"}, + {file = "wrapt-1.15.0-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:75669d77bb2c071333417617a235324a1618dba66f82a750362eccbe5b61d248"}, + {file = "wrapt-1.15.0-cp35-cp35m-win32.whl", hash = "sha256:fbec11614dba0424ca72f4e8ba3c420dba07b4a7c206c8c8e4e73f2e98f4c559"}, + {file = "wrapt-1.15.0-cp35-cp35m-win_amd64.whl", hash = "sha256:fd69666217b62fa5d7c6aa88e507493a34dec4fa20c5bd925e4bc12fce586639"}, + {file = "wrapt-1.15.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:b0724f05c396b0a4c36a3226c31648385deb6a65d8992644c12a4963c70326ba"}, + {file = "wrapt-1.15.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bbeccb1aa40ab88cd29e6c7d8585582c99548f55f9b2581dfc5ba68c59a85752"}, + {file = "wrapt-1.15.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:38adf7198f8f154502883242f9fe7333ab05a5b02de7d83aa2d88ea621f13364"}, + {file = "wrapt-1.15.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:578383d740457fa790fdf85e6d346fda1416a40549fe8db08e5e9bd281c6a475"}, + {file = "wrapt-1.15.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:a4cbb9ff5795cd66f0066bdf5947f170f5d63a9274f99bdbca02fd973adcf2a8"}, + {file = "wrapt-1.15.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:af5bd9ccb188f6a5fdda9f1f09d9f4c86cc8a539bd48a0bfdc97723970348418"}, + {file = "wrapt-1.15.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:b56d5519e470d3f2fe4aa7585f0632b060d532d0696c5bdfb5e8319e1d0f69a2"}, + {file = "wrapt-1.15.0-cp36-cp36m-win32.whl", hash = "sha256:77d4c1b881076c3ba173484dfa53d3582c1c8ff1f914c6461ab70c8428b796c1"}, + {file = "wrapt-1.15.0-cp36-cp36m-win_amd64.whl", hash = "sha256:077ff0d1f9d9e4ce6476c1a924a3332452c1406e59d90a2cf24aeb29eeac9420"}, + {file = "wrapt-1.15.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:5c5aa28df055697d7c37d2099a7bc09f559d5053c3349b1ad0c39000e611d317"}, + {file = "wrapt-1.15.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3a8564f283394634a7a7054b7983e47dbf39c07712d7b177b37e03f2467a024e"}, + {file = "wrapt-1.15.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:780c82a41dc493b62fc5884fb1d3a3b81106642c5c5c78d6a0d4cbe96d62ba7e"}, + {file = "wrapt-1.15.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e169e957c33576f47e21864cf3fc9ff47c223a4ebca8960079b8bd36cb014fd0"}, + {file = "wrapt-1.15.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b02f21c1e2074943312d03d243ac4388319f2456576b2c6023041c4d57cd7019"}, + {file = "wrapt-1.15.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f2e69b3ed24544b0d3dbe2c5c0ba5153ce50dcebb576fdc4696d52aa22db6034"}, + {file = "wrapt-1.15.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d787272ed958a05b2c86311d3a4135d3c2aeea4fc655705f074130aa57d71653"}, + {file = "wrapt-1.15.0-cp37-cp37m-win32.whl", hash = "sha256:02fce1852f755f44f95af51f69d22e45080102e9d00258053b79367d07af39c0"}, + {file = "wrapt-1.15.0-cp37-cp37m-win_amd64.whl", hash = "sha256:abd52a09d03adf9c763d706df707c343293d5d106aea53483e0ec8d9e310ad5e"}, + {file = "wrapt-1.15.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cdb4f085756c96a3af04e6eca7f08b1345e94b53af8921b25c72f096e704e145"}, + {file = "wrapt-1.15.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:230ae493696a371f1dbffaad3dafbb742a4d27a0afd2b1aecebe52b740167e7f"}, + {file = "wrapt-1.15.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63424c681923b9f3bfbc5e3205aafe790904053d42ddcc08542181a30a7a51bd"}, + {file = "wrapt-1.15.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6bcbfc99f55655c3d93feb7ef3800bd5bbe963a755687cbf1f490a71fb7794b"}, + {file = "wrapt-1.15.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c99f4309f5145b93eca6e35ac1a988f0dc0a7ccf9ccdcd78d3c0adf57224e62f"}, + {file = "wrapt-1.15.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b130fe77361d6771ecf5a219d8e0817d61b236b7d8b37cc045172e574ed219e6"}, + {file = "wrapt-1.15.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:96177eb5645b1c6985f5c11d03fc2dbda9ad24ec0f3a46dcce91445747e15094"}, + {file = "wrapt-1.15.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5fe3e099cf07d0fb5a1e23d399e5d4d1ca3e6dfcbe5c8570ccff3e9208274f7"}, + {file = "wrapt-1.15.0-cp38-cp38-win32.whl", hash = "sha256:abd8f36c99512755b8456047b7be10372fca271bf1467a1caa88db991e7c421b"}, + {file = "wrapt-1.15.0-cp38-cp38-win_amd64.whl", hash = "sha256:b06fa97478a5f478fb05e1980980a7cdf2712015493b44d0c87606c1513ed5b1"}, + {file = "wrapt-1.15.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2e51de54d4fb8fb50d6ee8327f9828306a959ae394d3e01a1ba8b2f937747d86"}, + {file = "wrapt-1.15.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0970ddb69bba00670e58955f8019bec4a42d1785db3faa043c33d81de2bf843c"}, + {file = "wrapt-1.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76407ab327158c510f44ded207e2f76b657303e17cb7a572ffe2f5a8a48aa04d"}, + {file = "wrapt-1.15.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cd525e0e52a5ff16653a3fc9e3dd827981917d34996600bbc34c05d048ca35cc"}, + {file = "wrapt-1.15.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d37ac69edc5614b90516807de32d08cb8e7b12260a285ee330955604ed9dd29"}, + {file = "wrapt-1.15.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:078e2a1a86544e644a68422f881c48b84fef6d18f8c7a957ffd3f2e0a74a0d4a"}, + {file = "wrapt-1.15.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:2cf56d0e237280baed46f0b5316661da892565ff58309d4d2ed7dba763d984b8"}, + {file = "wrapt-1.15.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7dc0713bf81287a00516ef43137273b23ee414fe41a3c14be10dd95ed98a2df9"}, + {file = "wrapt-1.15.0-cp39-cp39-win32.whl", hash = "sha256:46ed616d5fb42f98630ed70c3529541408166c22cdfd4540b88d5f21006b0eff"}, + {file = "wrapt-1.15.0-cp39-cp39-win_amd64.whl", hash = "sha256:eef4d64c650f33347c1f9266fa5ae001440b232ad9b98f1f43dfe7a79435c0a6"}, + {file = "wrapt-1.15.0-py3-none-any.whl", hash = "sha256:64b1df0f83706b4ef4cfb4fb0e4c2669100fd7ecacfb59e091fad300d4e04640"}, + {file = "wrapt-1.15.0.tar.gz", hash = "sha256:d06730c6aed78cee4126234cf2d071e01b44b915e725a6cb439a879ec9754a3a"}, ] [[package]] @@ -826,24 +937,24 @@ files = [ [[package]] name = "zipp" -version = "3.11.0" +version = "3.15.0" description = "Backport of pathlib-compatible object wrapper for zip files" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "zipp-3.11.0-py3-none-any.whl", hash = "sha256:83a28fcb75844b5c0cdaf5aa4003c2d728c77e05f5aeabe8e95e56727005fbaa"}, - {file = "zipp-3.11.0.tar.gz", hash = "sha256:a7a22e05929290a67401440b39690ae6563279bced5f314609d9d03798f56766"}, + {file = "zipp-3.15.0-py3-none-any.whl", hash = "sha256:48904fc76a60e542af151aded95726c1a5c34ed43ab4134b597665c86d7ad556"}, + {file = "zipp-3.15.0.tar.gz", hash = "sha256:112929ad649da941c23de50f356a2b5570c954b65150642bccdd66bf194d224b"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)"] -testing = ["flake8 (<5)", "func-timeout", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +testing = ["big-O", "flake8 (<5)", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] [extras] -dev = ["boto3", "requests", "nose2", "flake8", "httpretty"] +dev = ["boto3", "flake8", "httpretty", "nose2", "requests"] [metadata] lock-version = "2.0" python-versions = ">=3.7.0,<4" -content-hash = "6ba474ff11bf0665dea4165d426c582eda61054671cd1d0d75889a24bb1bd48c" +content-hash = "220b7348acf7d71f280bee0d89763f562c191d946cb0e4ef7c46c0e6c1ff98c0" diff --git a/pyproject.toml b/pyproject.toml index b60bf1dc3..8479ceff8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -26,7 +26,7 @@ classifiers = [ python = ">=3.7.0,<4" datadog = ">=0.41.0,<1.0.0" wrapt = "^1.11.2" -ddtrace = "^1.6.4" +ddtrace = "^1.15.0" urllib3 = "<2.0.0" importlib_metadata = {version = "^1.0", python = "<3.8"} boto3 = { version = "^1.10.33", optional = true } From 1b67127200495c8139480dfc67bae81ee888c287 Mon Sep 17 00:00:00 2001 From: Andrew Rodriguez Date: Thu, 22 Jun 2023 11:17:04 -0700 Subject: [PATCH 063/403] version 4.74.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 8479ceff8..0b262030b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "4.72.0" +version = "4.74.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From ae76b331502eb082797596ad010c233778ebe2ed Mon Sep 17 00:00:00 2001 From: Andrew Rodriguez <49878080+zARODz11z@users.noreply.github.com> Date: Thu, 22 Jun 2023 13:50:39 -0700 Subject: [PATCH 064/403] add commit step before push (#342) --- scripts/publish_prod.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/publish_prod.sh b/scripts/publish_prod.sh index a1bd55966..fe7bda5dc 100755 --- a/scripts/publish_prod.sh +++ b/scripts/publish_prod.sh @@ -86,6 +86,7 @@ echo "Publishing to https://pypi.org/project/datadog-lambda/" echo echo 'Publishing updates to github' +git commit pyproject.toml -m "Bump version to ${$NEW_VERSION}" git push origin main git tag "v$LAYER_VERSION" git push origin "refs/tags/v$LAYER_VERSION" From 9aef51df18adabb6b89bdbad7ec2c02abfd70a64 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Wed, 28 Jun 2023 14:12:34 -0400 Subject: [PATCH 065/403] Aj/proactive init (#343) * feat: support proactive initialization * feat: 10 sec max init time * fix: specs * fix: format, fix missing import * feat: Only tag if it is a proactive init * feat: add units --- datadog_lambda/cold_start.py | 31 ++++++++++++++++++++++++++++--- datadog_lambda/tracing.py | 3 +++ datadog_lambda/wrapper.py | 17 +++++++++++++---- tests/test_cold_start.py | 29 +++++++++++++++++++++++++++++ tests/test_tracing.py | 13 ++++++++++--- 5 files changed, 83 insertions(+), 10 deletions(-) diff --git a/datadog_lambda/cold_start.py b/datadog_lambda/cold_start.py index a10a2ad7a..0a3ba34d1 100644 --- a/datadog_lambda/cold_start.py +++ b/datadog_lambda/cold_start.py @@ -6,17 +6,28 @@ logger = logging.getLogger(__name__) _cold_start = True +_proactive_initialization = False _lambda_container_initialized = False -def set_cold_start(): +def set_cold_start(init_timestamp_ns): """Set the value of the cold start global This should be executed once per Lambda execution before the execution """ global _cold_start global _lambda_container_initialized - _cold_start = not _lambda_container_initialized + global _proactive_initialization + if not _lambda_container_initialized: + now = time.time_ns() + if (now - init_timestamp_ns) // 1_000_000_000 > 10: + _cold_start = False + _proactive_initialization = True + else: + _cold_start = not _lambda_container_initialized + else: + _cold_start = False + _proactive_initialization = False _lambda_container_initialized = True @@ -25,11 +36,25 @@ def is_cold_start(): return _cold_start +def is_proactive_init(): + """Returns the value of the global proactive_initialization""" + return _proactive_initialization + + +def is_new_sandbox(): + return is_cold_start() or is_proactive_init() + + def get_cold_start_tag(): """Returns the cold start tag to be used in metrics""" return "cold_start:{}".format(str(is_cold_start()).lower()) +def get_proactive_init_tag(): + """Returns the proactive init tag to be used in metrics""" + return "proactive_initialization:{}".format(str(is_proactive_init()).lower()) + + class ImportNode(object): def __init__(self, module_name, full_file_path, start_time_ns, end_time_ns=None): self.module_name = module_name @@ -115,7 +140,7 @@ def wrapped_find_spec(*args, **kwargs): def initialize_cold_start_tracing(): if ( - is_cold_start() + is_new_sandbox() and os.environ.get("DD_TRACE_ENABLED", "true").lower() == "true" and os.environ.get("DD_COLD_START_TRACING", "true").lower() == "true" ): diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index f356e13fa..198332a3e 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -1211,6 +1211,7 @@ def create_function_execution_span( context, function_name, is_cold_start, + is_proactive_init, trace_context_source, merge_xray_traces, trigger_tags, @@ -1235,6 +1236,8 @@ def create_function_execution_span( "dd_trace": ddtrace_version, "span.name": "aws.lambda", } + if is_proactive_init: + tags["proactive_initialization"] = str(is_proactive_init).lower() if trace_context_source == TraceContextSource.XRAY and merge_xray_traces: tags["_dd.parent_source"] = trace_context_source tags.update(trigger_tags) diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 6e8384214..7b9e87f9f 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -11,7 +11,13 @@ from time import time_ns from datadog_lambda.extension import should_use_extension, flush_extension -from datadog_lambda.cold_start import set_cold_start, is_cold_start, ColdStartTracer +from datadog_lambda.cold_start import ( + set_cold_start, + is_cold_start, + is_proactive_init, + is_new_sandbox, + ColdStartTracer, +) from datadog_lambda.constants import ( TraceContextSource, XraySubsegment, @@ -72,6 +78,8 @@ env_env_var = os.environ.get(DD_ENV, None) +init_timestamp_ns = time_ns() + """ Usage: @@ -245,7 +253,7 @@ def _inject_authorizer_span_headers(self, request_id): def _before(self, event, context): try: self.response = None - set_cold_start() + set_cold_start(init_timestamp_ns) submit_invocations_metric(context) self.trigger_tags = extract_trigger_tags(event, context) # Extract Datadog trace context and source from incoming requests @@ -272,6 +280,7 @@ def _before(self, event, context): context, self.function_name, is_cold_start(), + is_proactive_init(), trace_context_source, self.merge_xray_traces, self.trigger_tags, @@ -279,7 +288,7 @@ def _before(self, event, context): ) else: set_correlation_ids() - if profiling_env_var and is_cold_start(): + if profiling_env_var and is_new_sandbox(): self.prof.start(stop_on_exit=False, profile_children=True) logger.debug("datadog_lambda_wrapper _before() done") except Exception: @@ -299,7 +308,7 @@ def _after(self, event, context): self.trigger_tags, XraySubsegment.LAMBDA_FUNCTION_TAGS_KEY ) should_trace_cold_start = ( - dd_tracing_enabled and self.cold_start_tracing and is_cold_start() + dd_tracing_enabled and self.cold_start_tracing and is_new_sandbox() ) if should_trace_cold_start: trace_ctx = tracer.current_trace_context() diff --git a/tests/test_cold_start.py b/tests/test_cold_start.py index 56636deca..65193e1de 100644 --- a/tests/test_cold_start.py +++ b/tests/test_cold_start.py @@ -1,3 +1,4 @@ +import time import unittest import datadog_lambda.cold_start as cold_start from sys import modules, meta_path @@ -6,6 +7,34 @@ class TestColdStartTracingSetup(unittest.TestCase): + def test_proactive_init(self): + cold_start._cold_start = True + cold_start._proactive_initialization = False + cold_start._lambda_container_initialized = False + fifteen_seconds_ago = time.time_ns() - 15_000_000_000 + cold_start.set_cold_start(fifteen_seconds_ago) + self.assertTrue(cold_start.is_proactive_init()) + self.assertTrue(cold_start.is_new_sandbox()) + self.assertFalse(cold_start.is_cold_start()) + self.assertEqual( + cold_start.get_proactive_init_tag(), "proactive_initialization:true" + ) + self.assertEqual(cold_start.get_cold_start_tag(), "cold_start:false") + + def test_cold_start(self): + cold_start._cold_start = True + cold_start._proactive_initialization = False + cold_start._lambda_container_initialized = False + one_second_ago = time.time_ns() - 1_000_000_000 + cold_start.set_cold_start(one_second_ago) + self.assertFalse(cold_start.is_proactive_init()) + self.assertTrue(cold_start.is_new_sandbox()) + self.assertTrue(cold_start.is_cold_start()) + self.assertEqual( + cold_start.get_proactive_init_tag(), "proactive_initialization:false" + ) + self.assertEqual(cold_start.get_cold_start_tag(), "cold_start:true") + def test_initialize_cold_start_tracing(self): cold_start._cold_start = True cold_start.initialize_cold_start_tracing() # testing double wrapping diff --git a/tests/test_tracing.py b/tests/test_tracing.py index 74cebac4c..f5f41f94e 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -526,7 +526,9 @@ def test_set_correlation_ids_handle_empty_trace_context(self): class TestFunctionSpanTags(unittest.TestCase): def test_function(self): ctx = get_mock_context() - span = create_function_execution_span(ctx, "", False, {"source": ""}, False, {}) + span = create_function_execution_span( + ctx, "", False, False, {"source": ""}, False, {} + ) self.assertEqual(span.get_tag("function_arn"), function_arn) self.assertEqual(span.get_tag("function_version"), "$LATEST") self.assertEqual(span.get_tag("resource_names"), "Function") @@ -537,7 +539,9 @@ def test_function_with_version(self): ctx = get_mock_context( invoked_function_arn=function_arn + ":" + function_version ) - span = create_function_execution_span(ctx, "", False, {"source": ""}, False, {}) + span = create_function_execution_span( + ctx, "", False, False, {"source": ""}, False, {} + ) self.assertEqual(span.get_tag("function_arn"), function_arn) self.assertEqual(span.get_tag("function_version"), function_version) self.assertEqual(span.get_tag("resource_names"), "Function") @@ -546,7 +550,9 @@ def test_function_with_version(self): def test_function_with_alias(self): function_alias = "alias" ctx = get_mock_context(invoked_function_arn=function_arn + ":" + function_alias) - span = create_function_execution_span(ctx, "", False, {"source": ""}, False, {}) + span = create_function_execution_span( + ctx, "", False, False, {"source": ""}, False, {} + ) self.assertEqual(span.get_tag("function_arn"), function_arn) self.assertEqual(span.get_tag("function_version"), function_alias) self.assertEqual(span.get_tag("resource_names"), "Function") @@ -558,6 +564,7 @@ def test_function_with_trigger_tags(self): ctx, "", False, + False, {"source": ""}, False, {"function_trigger.event_source": "cloudwatch-logs"}, From 7deccbea164ce34763d7c20d4c22400a5a71046d Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Fri, 30 Jun 2023 10:25:52 -0400 Subject: [PATCH 066/403] bump to v4.75.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 0b262030b..f484d35b8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "4.74.0" +version = "4.75.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 6d6e2ae94b590daf9521281a40af2c2c062dcc30 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Fri, 30 Jun 2023 11:04:36 -0400 Subject: [PATCH 067/403] fix: fix bad substitution error (#345) --- scripts/publish_prod.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/publish_prod.sh b/scripts/publish_prod.sh index fe7bda5dc..a6ea0dee6 100755 --- a/scripts/publish_prod.sh +++ b/scripts/publish_prod.sh @@ -86,7 +86,7 @@ echo "Publishing to https://pypi.org/project/datadog-lambda/" echo echo 'Publishing updates to github' -git commit pyproject.toml -m "Bump version to ${$NEW_VERSION}" +git commit pyproject.toml -m "Bump version to ${NEW_VERSION}" git push origin main git tag "v$LAYER_VERSION" git push origin "refs/tags/v$LAYER_VERSION" From ff0984bf4872affbc63fde0737ac8fa2f23cb5c1 Mon Sep 17 00:00:00 2001 From: Leandro Damascena Date: Mon, 24 Jul 2023 18:00:06 +0100 Subject: [PATCH 068/403] dev: upgrade importlib_metadata dependency (#351) --- poetry.lock | 559 ++++++++++++++++++++----------------------------- pyproject.toml | 2 +- 2 files changed, 224 insertions(+), 337 deletions(-) diff --git a/poetry.lock b/poetry.lock index 29fe6c1b0..efc2f08b1 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,10 +1,9 @@ -# This file is automatically @generated by Poetry 1.4.2 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.5.1 and should not be changed by hand. [[package]] name = "attrs" version = "23.1.0" description = "Classes Without Boilerplate" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -24,18 +23,17 @@ tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pyte [[package]] name = "boto3" -version = "1.26.158" +version = "1.28.9" description = "The AWS SDK for Python" -category = "main" optional = true python-versions = ">= 3.7" files = [ - {file = "boto3-1.26.158-py3-none-any.whl", hash = "sha256:0be407c2e941b422634766c0d754132ad4d33b5d0f84d9a30426b713b31ce3ab"}, - {file = "boto3-1.26.158.tar.gz", hash = "sha256:7f88d9403f81e6f3fc770c424f7089b15eb0553b168b1d2f979fa0d12b663b42"}, + {file = "boto3-1.28.9-py3-none-any.whl", hash = "sha256:01f078047eb4d238c6b9c6cc623f2af33b4ae67980c5326691e35cb5493ff6c7"}, + {file = "boto3-1.28.9.tar.gz", hash = "sha256:4cc0c6005be910e52077227e670930ab55a41ba86cdb6d1c052571d08cd4d32c"}, ] [package.dependencies] -botocore = ">=1.29.158,<1.30.0" +botocore = ">=1.31.9,<1.32.0" jmespath = ">=0.7.1,<2.0.0" s3transfer = ">=0.6.0,<0.7.0" @@ -44,14 +42,13 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.29.158" +version = "1.31.9" description = "Low-level, data-driven core of boto 3." -category = "main" optional = true python-versions = ">= 3.7" files = [ - {file = "botocore-1.29.158-py3-none-any.whl", hash = "sha256:267d4e7f36bdb45ea696386143ca6f68a358dc4baef85894cc4d9cffe97c0cd5"}, - {file = "botocore-1.29.158.tar.gz", hash = "sha256:2fd3b625f3d683d9dd6b400aba54d54a1e9b960b84ed07a466d25d1366e59482"}, + {file = "botocore-1.31.9-py3-none-any.whl", hash = "sha256:e56ccd3536a90094ea5b176b5dd33bfe4f049efdf71af468ea1661bd424c787d"}, + {file = "botocore-1.31.9.tar.gz", hash = "sha256:bd849d3ac95f1781385ed831d753a04a3ec870a59d6598175aaedd71dc2baf5f"}, ] [package.dependencies] @@ -60,13 +57,12 @@ python-dateutil = ">=2.1,<3.0.0" urllib3 = ">=1.25.4,<1.27" [package.extras] -crt = ["awscrt (==0.16.9)"] +crt = ["awscrt (==0.16.26)"] [[package]] name = "bytecode" version = "0.13.0" description = "Python module to generate and modify bytecode" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -78,7 +74,6 @@ files = [ name = "bytecode" version = "0.14.2" description = "Python module to generate and modify bytecode" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -93,7 +88,6 @@ typing-extensions = {version = "*", markers = "python_version < \"3.10\""} name = "cattrs" version = "23.1.2" description = "Composable complex class support for attrs and dataclasses." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -117,106 +111,132 @@ ujson = ["ujson (>=5.4.0,<6.0.0)"] [[package]] name = "certifi" -version = "2023.5.7" +version = "2023.7.22" description = "Python package for providing Mozilla's CA Bundle." -category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2023.5.7-py3-none-any.whl", hash = "sha256:c6c2e98f5c7869efca1f8916fed228dd91539f9f1b444c314c06eef02980c716"}, - {file = "certifi-2023.5.7.tar.gz", hash = "sha256:0f0d56dc5a6ad56fd4ba36484d6cc34451e1c6548c61daad8c320169f91eddc7"}, + {file = "certifi-2023.7.22-py3-none-any.whl", hash = "sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9"}, + {file = "certifi-2023.7.22.tar.gz", hash = "sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082"}, ] [[package]] name = "charset-normalizer" -version = "3.1.0" +version = "3.2.0" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -category = "main" optional = false python-versions = ">=3.7.0" files = [ - {file = "charset-normalizer-3.1.0.tar.gz", hash = "sha256:34e0a2f9c370eb95597aae63bf85eb5e96826d81e3dcf88b8886012906f509b5"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e0ac8959c929593fee38da1c2b64ee9778733cdf03c482c9ff1d508b6b593b2b"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d7fc3fca01da18fbabe4625d64bb612b533533ed10045a2ac3dd194bfa656b60"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:04eefcee095f58eaabe6dc3cc2262f3bcd776d2c67005880894f447b3f2cb9c1"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20064ead0717cf9a73a6d1e779b23d149b53daf971169289ed2ed43a71e8d3b0"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1435ae15108b1cb6fffbcea2af3d468683b7afed0169ad718451f8db5d1aff6f"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c84132a54c750fda57729d1e2599bb598f5fa0344085dbde5003ba429a4798c0"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75f2568b4189dda1c567339b48cba4ac7384accb9c2a7ed655cd86b04055c795"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:11d3bcb7be35e7b1bba2c23beedac81ee893ac9871d0ba79effc7fc01167db6c"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:891cf9b48776b5c61c700b55a598621fdb7b1e301a550365571e9624f270c203"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:5f008525e02908b20e04707a4f704cd286d94718f48bb33edddc7d7b584dddc1"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:b06f0d3bf045158d2fb8837c5785fe9ff9b8c93358be64461a1089f5da983137"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:49919f8400b5e49e961f320c735388ee686a62327e773fa5b3ce6721f7e785ce"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:22908891a380d50738e1f978667536f6c6b526a2064156203d418f4856d6e86a"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-win32.whl", hash = "sha256:12d1a39aa6b8c6f6248bb54550efcc1c38ce0d8096a146638fd4738e42284448"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:65ed923f84a6844de5fd29726b888e58c62820e0769b76565480e1fdc3d062f8"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9a3267620866c9d17b959a84dd0bd2d45719b817245e49371ead79ed4f710d19"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6734e606355834f13445b6adc38b53c0fd45f1a56a9ba06c2058f86893ae8017"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f8303414c7b03f794347ad062c0516cee0e15f7a612abd0ce1e25caf6ceb47df"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aaf53a6cebad0eae578f062c7d462155eada9c172bd8c4d250b8c1d8eb7f916a"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3dc5b6a8ecfdc5748a7e429782598e4f17ef378e3e272eeb1340ea57c9109f41"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e1b25e3ad6c909f398df8921780d6a3d120d8c09466720226fc621605b6f92b1"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ca564606d2caafb0abe6d1b5311c2649e8071eb241b2d64e75a0d0065107e62"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b82fab78e0b1329e183a65260581de4375f619167478dddab510c6c6fb04d9b6"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:bd7163182133c0c7701b25e604cf1611c0d87712e56e88e7ee5d72deab3e76b5"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:11d117e6c63e8f495412d37e7dc2e2fff09c34b2d09dbe2bee3c6229577818be"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:cf6511efa4801b9b38dc5546d7547d5b5c6ef4b081c60b23e4d941d0eba9cbeb"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:abc1185d79f47c0a7aaf7e2412a0eb2c03b724581139193d2d82b3ad8cbb00ac"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cb7b2ab0188829593b9de646545175547a70d9a6e2b63bf2cd87a0a391599324"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-win32.whl", hash = "sha256:c36bcbc0d5174a80d6cccf43a0ecaca44e81d25be4b7f90f0ed7bcfbb5a00909"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:cca4def576f47a09a943666b8f829606bcb17e2bc2d5911a46c8f8da45f56755"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0c95f12b74681e9ae127728f7e5409cbbef9cd914d5896ef238cc779b8152373"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fca62a8301b605b954ad2e9c3666f9d97f63872aa4efcae5492baca2056b74ab"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac0aa6cd53ab9a31d397f8303f92c42f534693528fafbdb997c82bae6e477ad9"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c3af8e0f07399d3176b179f2e2634c3ce9c1301379a6b8c9c9aeecd481da494f"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a5fc78f9e3f501a1614a98f7c54d3969f3ad9bba8ba3d9b438c3bc5d047dd28"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:628c985afb2c7d27a4800bfb609e03985aaecb42f955049957814e0491d4006d"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:74db0052d985cf37fa111828d0dd230776ac99c740e1a758ad99094be4f1803d"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:1e8fcdd8f672a1c4fc8d0bd3a2b576b152d2a349782d1eb0f6b8e52e9954731d"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:04afa6387e2b282cf78ff3dbce20f0cc071c12dc8f685bd40960cc68644cfea6"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:dd5653e67b149503c68c4018bf07e42eeed6b4e956b24c00ccdf93ac79cdff84"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d2686f91611f9e17f4548dbf050e75b079bbc2a82be565832bc8ea9047b61c8c"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-win32.whl", hash = "sha256:4155b51ae05ed47199dc5b2a4e62abccb274cee6b01da5b895099b61b1982974"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:322102cdf1ab682ecc7d9b1c5eed4ec59657a65e1c146a0da342b78f4112db23"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e633940f28c1e913615fd624fcdd72fdba807bf53ea6925d6a588e84e1151531"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3a06f32c9634a8705f4ca9946d667609f52cf130d5548881401f1eb2c39b1e2c"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7381c66e0561c5757ffe616af869b916c8b4e42b367ab29fedc98481d1e74e14"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3573d376454d956553c356df45bb824262c397c6e26ce43e8203c4c540ee0acb"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e89df2958e5159b811af9ff0f92614dabf4ff617c03a4c1c6ff53bf1c399e0e1"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:78cacd03e79d009d95635e7d6ff12c21eb89b894c354bd2b2ed0b4763373693b"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de5695a6f1d8340b12a5d6d4484290ee74d61e467c39ff03b39e30df62cf83a0"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c60b9c202d00052183c9be85e5eaf18a4ada0a47d188a83c8f5c5b23252f649"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f645caaf0008bacf349875a974220f1f1da349c5dbe7c4ec93048cdc785a3326"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ea9f9c6034ea2d93d9147818f17c2a0860d41b71c38b9ce4d55f21b6f9165a11"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:80d1543d58bd3d6c271b66abf454d437a438dff01c3e62fdbcd68f2a11310d4b"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:73dc03a6a7e30b7edc5b01b601e53e7fc924b04e1835e8e407c12c037e81adbd"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6f5c2e7bc8a4bf7c426599765b1bd33217ec84023033672c1e9a8b35eaeaaaf8"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-win32.whl", hash = "sha256:12a2b561af122e3d94cdb97fe6fb2bb2b82cef0cdca131646fdb940a1eda04f0"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:3160a0fd9754aab7d47f95a6b63ab355388d890163eb03b2d2b87ab0a30cfa59"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:38e812a197bf8e71a59fe55b757a84c1f946d0ac114acafaafaf21667a7e169e"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6baf0baf0d5d265fa7944feb9f7451cc316bfe30e8df1a61b1bb08577c554f31"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8f25e17ab3039b05f762b0a55ae0b3632b2e073d9c8fc88e89aca31a6198e88f"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3747443b6a904001473370d7810aa19c3a180ccd52a7157aacc264a5ac79265e"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b116502087ce8a6b7a5f1814568ccbd0e9f6cfd99948aa59b0e241dc57cf739f"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d16fd5252f883eb074ca55cb622bc0bee49b979ae4e8639fff6ca3ff44f9f854"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21fa558996782fc226b529fdd2ed7866c2c6ec91cee82735c98a197fae39f706"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6f6c7a8a57e9405cad7485f4c9d3172ae486cfef1344b5ddd8e5239582d7355e"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ac3775e3311661d4adace3697a52ac0bab17edd166087d493b52d4f4f553f9f0"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:10c93628d7497c81686e8e5e557aafa78f230cd9e77dd0c40032ef90c18f2230"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:6f4f4668e1831850ebcc2fd0b1cd11721947b6dc7c00bf1c6bd3c929ae14f2c7"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:0be65ccf618c1e7ac9b849c315cc2e8a8751d9cfdaa43027d4f6624bd587ab7e"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:53d0a3fa5f8af98a1e261de6a3943ca631c526635eb5817a87a59d9a57ebf48f"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-win32.whl", hash = "sha256:a04f86f41a8916fe45ac5024ec477f41f886b3c435da2d4e3d2709b22ab02af1"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:830d2948a5ec37c386d3170c483063798d7879037492540f10a475e3fd6f244b"}, - {file = "charset_normalizer-3.1.0-py3-none-any.whl", hash = "sha256:3d9098b479e78c85080c98e1e35ff40b4a31d8953102bb0fd7d1b6f8a2111a3d"}, + {file = "charset-normalizer-3.2.0.tar.gz", hash = "sha256:3bb3d25a8e6c0aedd251753a79ae98a093c7e7b471faa3aa9a93a81431987ace"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b87549028f680ca955556e3bd57013ab47474c3124dc069faa0b6545b6c9710"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7c70087bfee18a42b4040bb9ec1ca15a08242cf5867c58726530bdf3945672ed"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a103b3a7069b62f5d4890ae1b8f0597618f628b286b03d4bc9195230b154bfa9"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94aea8eff76ee6d1cdacb07dd2123a68283cb5569e0250feab1240058f53b623"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:db901e2ac34c931d73054d9797383d0f8009991e723dab15109740a63e7f902a"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b0dac0ff919ba34d4df1b6131f59ce95b08b9065233446be7e459f95554c0dc8"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:193cbc708ea3aca45e7221ae58f0fd63f933753a9bfb498a3b474878f12caaad"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09393e1b2a9461950b1c9a45d5fd251dc7c6f228acab64da1c9c0165d9c7765c"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:baacc6aee0b2ef6f3d308e197b5d7a81c0e70b06beae1f1fcacffdbd124fe0e3"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:bf420121d4c8dce6b889f0e8e4ec0ca34b7f40186203f06a946fa0276ba54029"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:c04a46716adde8d927adb9457bbe39cf473e1e2c2f5d0a16ceb837e5d841ad4f"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:aaf63899c94de41fe3cf934601b0f7ccb6b428c6e4eeb80da72c58eab077b19a"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d62e51710986674142526ab9f78663ca2b0726066ae26b78b22e0f5e571238dd"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-win32.whl", hash = "sha256:04e57ab9fbf9607b77f7d057974694b4f6b142da9ed4a199859d9d4d5c63fe96"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:48021783bdf96e3d6de03a6e39a1171ed5bd7e8bb93fc84cc649d11490f87cea"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4957669ef390f0e6719db3613ab3a7631e68424604a7b448f079bee145da6e09"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:46fb8c61d794b78ec7134a715a3e564aafc8f6b5e338417cb19fe9f57a5a9bf2"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f779d3ad205f108d14e99bb3859aa7dd8e9c68874617c72354d7ecaec2a054ac"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f25c229a6ba38a35ae6e25ca1264621cc25d4d38dca2942a7fce0b67a4efe918"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2efb1bd13885392adfda4614c33d3b68dee4921fd0ac1d3988f8cbb7d589e72a"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f30b48dd7fa1474554b0b0f3fdfdd4c13b5c737a3c6284d3cdc424ec0ffff3a"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:246de67b99b6851627d945db38147d1b209a899311b1305dd84916f2b88526c6"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9bd9b3b31adcb054116447ea22caa61a285d92e94d710aa5ec97992ff5eb7cf3"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:8c2f5e83493748286002f9369f3e6607c565a6a90425a3a1fef5ae32a36d749d"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:3170c9399da12c9dc66366e9d14da8bf7147e1e9d9ea566067bbce7bb74bd9c2"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7a4826ad2bd6b07ca615c74ab91f32f6c96d08f6fcc3902ceeedaec8cdc3bcd6"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:3b1613dd5aee995ec6d4c69f00378bbd07614702a315a2cf6c1d21461fe17c23"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9e608aafdb55eb9f255034709e20d5a83b6d60c054df0802fa9c9883d0a937aa"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-win32.whl", hash = "sha256:f2a1d0fd4242bd8643ce6f98927cf9c04540af6efa92323e9d3124f57727bfc1"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:681eb3d7e02e3c3655d1b16059fbfb605ac464c834a0c629048a30fad2b27489"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c57921cda3a80d0f2b8aec7e25c8aa14479ea92b5b51b6876d975d925a2ea346"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41b25eaa7d15909cf3ac4c96088c1f266a9a93ec44f87f1d13d4a0e86c81b982"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f058f6963fd82eb143c692cecdc89e075fa0828db2e5b291070485390b2f1c9c"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a7647ebdfb9682b7bb97e2a5e7cb6ae735b1c25008a70b906aecca294ee96cf4"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eef9df1eefada2c09a5e7a40991b9fc6ac6ef20b1372abd48d2794a316dc0449"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e03b8895a6990c9ab2cdcd0f2fe44088ca1c65ae592b8f795c3294af00a461c3"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:ee4006268ed33370957f55bf2e6f4d263eaf4dc3cfc473d1d90baff6ed36ce4a"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c4983bf937209c57240cff65906b18bb35e64ae872da6a0db937d7b4af845dd7"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:3bb7fda7260735efe66d5107fb7e6af6a7c04c7fce9b2514e04b7a74b06bf5dd"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:72814c01533f51d68702802d74f77ea026b5ec52793c791e2da806a3844a46c3"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:70c610f6cbe4b9fce272c407dd9d07e33e6bf7b4aa1b7ffb6f6ded8e634e3592"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-win32.whl", hash = "sha256:a401b4598e5d3f4a9a811f3daf42ee2291790c7f9d74b18d75d6e21dda98a1a1"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:c0b21078a4b56965e2b12f247467b234734491897e99c1d51cee628da9786959"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:95eb302ff792e12aba9a8b8f8474ab229a83c103d74a750ec0bd1c1eea32e669"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1a100c6d595a7f316f1b6f01d20815d916e75ff98c27a01ae817439ea7726329"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6339d047dab2780cc6220f46306628e04d9750f02f983ddb37439ca47ced7149"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4b749b9cc6ee664a3300bb3a273c1ca8068c46be705b6c31cf5d276f8628a94"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a38856a971c602f98472050165cea2cdc97709240373041b69030be15047691f"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f87f746ee241d30d6ed93969de31e5ffd09a2961a051e60ae6bddde9ec3583aa"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89f1b185a01fe560bc8ae5f619e924407efca2191b56ce749ec84982fc59a32a"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e1c8a2f4c69e08e89632defbfabec2feb8a8d99edc9f89ce33c4b9e36ab63037"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2f4ac36d8e2b4cc1aa71df3dd84ff8efbe3bfb97ac41242fbcfc053c67434f46"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a386ebe437176aab38c041de1260cd3ea459c6ce5263594399880bbc398225b2"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:ccd16eb18a849fd8dcb23e23380e2f0a354e8daa0c984b8a732d9cfaba3a776d"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:e6a5bf2cba5ae1bb80b154ed68a3cfa2fa00fde979a7f50d6598d3e17d9ac20c"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:45de3f87179c1823e6d9e32156fb14c1927fcc9aba21433f088fdfb555b77c10"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-win32.whl", hash = "sha256:1000fba1057b92a65daec275aec30586c3de2401ccdcd41f8a5c1e2c87078706"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:8b2c760cfc7042b27ebdb4a43a4453bd829a5742503599144d54a032c5dc7e9e"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:855eafa5d5a2034b4621c74925d89c5efef61418570e5ef9b37717d9c796419c"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:203f0c8871d5a7987be20c72442488a0b8cfd0f43b7973771640fc593f56321f"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e857a2232ba53ae940d3456f7533ce6ca98b81917d47adc3c7fd55dad8fab858"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e86d77b090dbddbe78867a0275cb4df08ea195e660f1f7f13435a4649e954e5"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c4fb39a81950ec280984b3a44f5bd12819953dc5fa3a7e6fa7a80db5ee853952"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2dee8e57f052ef5353cf608e0b4c871aee320dd1b87d351c28764fc0ca55f9f4"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8700f06d0ce6f128de3ccdbc1acaea1ee264d2caa9ca05daaf492fde7c2a7200"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1920d4ff15ce893210c1f0c0e9d19bfbecb7983c76b33f046c13a8ffbd570252"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c1c76a1743432b4b60ab3358c937a3fe1341c828ae6194108a94c69028247f22"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f7560358a6811e52e9c4d142d497f1a6e10103d3a6881f18d04dbce3729c0e2c"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:c8063cf17b19661471ecbdb3df1c84f24ad2e389e326ccaf89e3fb2484d8dd7e"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:cd6dbe0238f7743d0efe563ab46294f54f9bc8f4b9bcf57c3c666cc5bc9d1299"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:1249cbbf3d3b04902ff081ffbb33ce3377fa6e4c7356f759f3cd076cc138d020"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-win32.whl", hash = "sha256:6c409c0deba34f147f77efaa67b8e4bb83d2f11c8806405f76397ae5b8c0d1c9"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:7095f6fbfaa55defb6b733cfeb14efaae7a29f0b59d8cf213be4e7ca0b857b80"}, + {file = "charset_normalizer-3.2.0-py3-none-any.whl", hash = "sha256:8e098148dd37b4ce3baca71fb394c81dc5d9c7728c95df695d2dca218edf40e6"}, +] + +[[package]] +name = "cmake" +version = "3.27.0" +description = "CMake is an open-source, cross-platform family of tools designed to build, test and package software" +optional = false +python-versions = "*" +files = [ + {file = "cmake-3.27.0-py2.py3-none-macosx_10_10_universal2.macosx_10_10_x86_64.macosx_11_0_arm64.macosx_11_0_universal2.whl", hash = "sha256:9ccab4cd93578d3c2df32e66b44b313b75a7484032645040431dc06a583ca4aa"}, + {file = "cmake-3.27.0-py2.py3-none-manylinux2010_i686.manylinux_2_12_i686.whl", hash = "sha256:199bfaefb752e82d8067aeee5d6a6e0414fe0d60e9a3fd08e95d537a97e0db16"}, + {file = "cmake-3.27.0-py2.py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:8745eff805f36762d3e8e904698b853cb4a9da8b4b07d1c12bcd1e1a6c4a1709"}, + {file = "cmake-3.27.0-py2.py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:58a3f39d3d1bc897f05e531bfa676246a2b25d424c6a47e4b6bbc193fb560db7"}, + {file = "cmake-3.27.0-py2.py3-none-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:b470ccd3f86cf19a63f6b221c9cceebcc58e32d3787d0d5f9f43d1d91a095090"}, + {file = "cmake-3.27.0-py2.py3-none-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:35a8d397ce883e93b5e6561e2803ce9470df52283862264093c1078530f98189"}, + {file = "cmake-3.27.0-py2.py3-none-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:1f38d87b2c65763a0113f4a6c652e6f4b5adf90b384c1e1d69e4f8a3104a57d6"}, + {file = "cmake-3.27.0-py2.py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b9d5811954dcedcaa6c915c4a9bb6d64b55ac189e9cbc74be726307d9d084804"}, + {file = "cmake-3.27.0-py2.py3-none-musllinux_1_1_aarch64.whl", hash = "sha256:073e4f196d0888216e6794c08cd984ddabc108c0e4e66f48fbd7610d1e6d726d"}, + {file = "cmake-3.27.0-py2.py3-none-musllinux_1_1_i686.whl", hash = "sha256:e58e48643903e6fad76274337f9a4d3c575b8e21cd05c6214780b2c98bb0c706"}, + {file = "cmake-3.27.0-py2.py3-none-musllinux_1_1_ppc64le.whl", hash = "sha256:9740ed9f61a3bd8708a41cadd5c057c04f38e5b89bd773e369df2e210a1c55a3"}, + {file = "cmake-3.27.0-py2.py3-none-musllinux_1_1_s390x.whl", hash = "sha256:1b3189171665f5c8d748ae7fe10a29fff1ebeedeaef57b16f1ea54b1ec0fe514"}, + {file = "cmake-3.27.0-py2.py3-none-musllinux_1_1_x86_64.whl", hash = "sha256:c4c968c188e7518deb463a14e64f3a19f242c9dcf7f24e1dbcc1419690cd54e0"}, + {file = "cmake-3.27.0-py2.py3-none-win32.whl", hash = "sha256:5561aca62b65aac844f3931e74cfeb696e4534de145e3307bf942e735736541e"}, + {file = "cmake-3.27.0-py2.py3-none-win_amd64.whl", hash = "sha256:48be3afe62c9513a49be007896a4058fafec512cb1f269a50126da30aacad97f"}, + {file = "cmake-3.27.0-py2.py3-none-win_arm64.whl", hash = "sha256:6f46a170b0c9c552d52da4346534570f818195dfc4f1d0c03264e24cc348fc60"}, + {file = "cmake-3.27.0.tar.gz", hash = "sha256:d03f0a76a2b96805044ad1178b92aeeb5f695caa6776a32522bb5c430a55b4e8"}, ] +[package.extras] +test = ["coverage (>=4.2)", "flake8 (>=3.0.4)", "path.py (>=11.5.0)", "pytest (>=3.0.3)", "pytest-cov (>=2.4.0)", "pytest-runner (>=2.9)", "pytest-virtualenv (>=1.7.0)", "scikit-build (>=0.10.0)", "setuptools (>=28.0.0)", "virtualenv (>=15.0.3)", "wheel"] + [[package]] name = "coverage" version = "7.2.7" description = "Code coverage measurement for Python" -category = "main" optional = true python-versions = ">=3.7" files = [ @@ -287,14 +307,13 @@ toml = ["tomli"] [[package]] name = "datadog" -version = "0.45.0" +version = "0.46.0" description = "The Datadog Python library" -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ - {file = "datadog-0.45.0-py2.py3-none-any.whl", hash = "sha256:144fce48bda79484b102349f159c4ea4c7cd35361f9e0d031ddf931a922a38a4"}, - {file = "datadog-0.45.0.tar.gz", hash = "sha256:6bffed67448cb4bf5dff559fb2acee1c06e7da8612b8e2a734f278b50b396603"}, + {file = "datadog-0.46.0-py2.py3-none-any.whl", hash = "sha256:3d7bcda6177b43be4cdb52e16b4bdd4f9005716c0dd7cfea009e018c36bb7a3d"}, + {file = "datadog-0.46.0.tar.gz", hash = "sha256:e4fbc92a85e2b0919a226896ae45fc5e4b356c0c57f1c2659659dfbe0789c674"}, ] [package.dependencies] @@ -304,7 +323,6 @@ requests = ">=2.6.0" name = "ddsketch" version = "2.0.4" description = "Distributed quantile sketches" -category = "main" optional = false python-versions = ">=2.7" files = [ @@ -318,81 +336,80 @@ six = "*" [[package]] name = "ddtrace" -version = "1.15.0" +version = "1.17.1" description = "Datadog APM client library" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ - {file = "ddtrace-1.15.0-cp27-cp27m-macosx_11_0_x86_64.whl", hash = "sha256:b1999cd8566dbb9d39bddf6d4d0c1de29c2664fb450fc29266fead74824c3f5d"}, - {file = "ddtrace-1.15.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:6cf4ec208a17206932537ff111188d2b014b7ef7b10b02490904b47b04282f7f"}, - {file = "ddtrace-1.15.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:017b945d382fee039eed3b6d65c0ff28e45f15fc506fd211c13af342ae080ac8"}, - {file = "ddtrace-1.15.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:ca352bcd44f880a3fc7468e267223ba5104ef788d4c22c81070c91d37db3db2b"}, - {file = "ddtrace-1.15.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:88cbe0f4355eb65cf4791bc6138e92fc7f7499f65671f2111d9d8f2e15265c18"}, - {file = "ddtrace-1.15.0-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:84dbdbf4c5cf3a01200b445565d5113f1377927a30856f98473461368e2342b3"}, - {file = "ddtrace-1.15.0-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:ecec3222ee2f55b39e76390957d68d7f9d44a06d2fe7a174fc3d192e001796dc"}, - {file = "ddtrace-1.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5a2ce601d0db71c98e8f58fdc47071552f39ecfac6b0bf5a543d01856295679"}, - {file = "ddtrace-1.15.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:19b12b51097e002026d8462dc5dc75763127b109e8c99def48e3f977dd8f2d41"}, - {file = "ddtrace-1.15.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5bfd8ec6bb83baca073b139501d51a1f4f17d52f7e43298aadff75ff67ea1996"}, - {file = "ddtrace-1.15.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:36aa6bf7ce975e2a592917e4f06a018940fa56ff42c4e6fe4622ed6e32df9aad"}, - {file = "ddtrace-1.15.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a522c9e104914cd5d05e5635e2155f8ed7e36ca6a9a179b6f3d5e0705ee55da6"}, - {file = "ddtrace-1.15.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4c6d7ef4608f79bf3a7802ff86e5bc752f93938d94c004aca580539e51653e9f"}, - {file = "ddtrace-1.15.0-cp310-cp310-win32.whl", hash = "sha256:e7c997f264440c2190b94928392e59e49c441cea2edfa4d4ed7a9ed1511815f7"}, - {file = "ddtrace-1.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:7a063beaf22cc0935804bbf06deb75b4aaf58b7cad959d42842fce25acaa4278"}, - {file = "ddtrace-1.15.0-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:cd486b653cae16510270900b6ab4fbb81359331e730c6d9ff5310d19a47d3253"}, - {file = "ddtrace-1.15.0-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:cdec6dad5b113d62972e0a8cb1cacd7aa73689a6455f67d82a4f6916ede96a35"}, - {file = "ddtrace-1.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4bc992561a158ecfac3e0cc627eeb90d8d1065d0e8793ae3e04ee06a5b0cf81"}, - {file = "ddtrace-1.15.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:94dfd564551530831fe25e46163f232bf351df087b4bd9701d518ffe37310034"}, - {file = "ddtrace-1.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:275d8e7c7a41f9fa63ed2d370667fd875830fb898121a479554505f6623cd334"}, - {file = "ddtrace-1.15.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:f397f4abb858f53773459c1524e81526cd3cc697c0cec99ad04ab87be9ad172e"}, - {file = "ddtrace-1.15.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:8fa49e1deaf1316e17fd6fc21ac0ea4d92d5ecd2b783b700d370fc6ba70c3988"}, - {file = "ddtrace-1.15.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5a4d8c723ac4a84b993bfeb0b476724d99296b196470c190072cd98855019eee"}, - {file = "ddtrace-1.15.0-cp311-cp311-win32.whl", hash = "sha256:af2760a4d6fe21470ca5af6b04a2c20bc5f69606508a2369c7b5a403248fb518"}, - {file = "ddtrace-1.15.0-cp311-cp311-win_amd64.whl", hash = "sha256:e40151f748c154b116f16b69031b7fbc58e04cb6d40640b7c8358ce2ab5f69df"}, - {file = "ddtrace-1.15.0-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:0737dd77ceceba3510041a1e415a1b95c523d368cb7fd9c1541c07912b0d43b0"}, - {file = "ddtrace-1.15.0-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:07a3b1fc6725abc5cf4bc441ae5e0cc9a567eecea2590222afe432a25067525c"}, - {file = "ddtrace-1.15.0-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:b09772d02a3294d6781eb2b3e51dd755bd24967fecfaa94f266ff21add0a1623"}, - {file = "ddtrace-1.15.0-cp35-cp35m-win32.whl", hash = "sha256:9ff9f3db0cf97f581b2c7a8abd76eb43954a0c4629cdba137f17e35333ffa182"}, - {file = "ddtrace-1.15.0-cp35-cp35m-win_amd64.whl", hash = "sha256:6afee087ae47728ba0506e530958df1cc3f63ed7be4292fabff913a9478b474e"}, - {file = "ddtrace-1.15.0-cp36-cp36m-macosx_11_0_x86_64.whl", hash = "sha256:807b4234c80a11cea987a5b23e0e4d946427e17a6a2264cc34f63bfb17f15012"}, - {file = "ddtrace-1.15.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1695052fa79b8262704e78283be4b9fea50eea762ddfbb2aabc71e70647186bd"}, - {file = "ddtrace-1.15.0-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0bcf0f016c849245d6d240dbc5d641a8e36ca1e5d69e2427a8e07bd23f6094c9"}, - {file = "ddtrace-1.15.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6863a96e692aa1af8a8cdbfecf106feaa1eb6de1ad1c552fad76c0b6923a9b5"}, - {file = "ddtrace-1.15.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:e19143fae1133d6109bb29927c676048cf8d453dd27adc0f6fc153bda5696314"}, - {file = "ddtrace-1.15.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:3f4ffa2200663b92536723209f16f67454a86e88f705df24a156cd266680db10"}, - {file = "ddtrace-1.15.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:26b8450db283d4b378b73046ecd6db01d8eb652f80b1b0888e4ed3e602070f39"}, - {file = "ddtrace-1.15.0-cp36-cp36m-win32.whl", hash = "sha256:68c00db16c7942a327898e4ac077e420d0ccd2bfd8d1adf917211687681ace79"}, - {file = "ddtrace-1.15.0-cp36-cp36m-win_amd64.whl", hash = "sha256:917b90931e6a83268e180e295e1188c218387c524de9552fba946dabdc9f780a"}, - {file = "ddtrace-1.15.0-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:08dae33cbc49c1634458bf3f0b2263ed589f3f0a9d26efd2baa69642d932a8fd"}, - {file = "ddtrace-1.15.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c8d2c8c6d9d0d0aa28826e43f60103da8a1a0b709801547443a9a0f71b6fb39"}, - {file = "ddtrace-1.15.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b5e2dbf357ac907c1724401586fe2a3379f8d77b9b3e7598f1006fa37138bb2e"}, - {file = "ddtrace-1.15.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a435e143b5324453b598923ca87f9f298fd3e3b79a6ebf689d8a6f6991a71bad"}, - {file = "ddtrace-1.15.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:88006fa7755fe3b3c975a9ae4ddba6231929f7961a374105cda53d9b3db2cf56"}, - {file = "ddtrace-1.15.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f8a71a6409df291a38553e980df1bcfbd9018b33b450e5508b5a1518f564dce4"}, - {file = "ddtrace-1.15.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:52e2d5ab754e7b866d43bba7e86b853a7024667994b31cb690ff5183d45f4d43"}, - {file = "ddtrace-1.15.0-cp37-cp37m-win32.whl", hash = "sha256:abeec391239f59257c7a9a0e9ed6d4c0777256bd5ee89cfa057d42ced603ad05"}, - {file = "ddtrace-1.15.0-cp37-cp37m-win_amd64.whl", hash = "sha256:bdae8d560f10da94f3cf77f548b54b537a47ba56462bd96686129f908c7930b1"}, - {file = "ddtrace-1.15.0-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:ed6801ea071cd4879c49d2a30476afe1fc9a969485f95efd5ef754b43df1142c"}, - {file = "ddtrace-1.15.0-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:b17903b46f6ce66e3f8645b0e7553fea7720c2e69fcf38b3e486ca15eb50a618"}, - {file = "ddtrace-1.15.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f03134274f7c4ef11d52764eaefd6e0355233e4e7d0ad88c872275dd344fd7ec"}, - {file = "ddtrace-1.15.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:61a1cc91877c09288e85f742d3659007f4b925fc575aa66e48ce9e116af835e1"}, - {file = "ddtrace-1.15.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b8578c3d5ab888ee9f1fe57d8b63cbc4cbf38c4444b501b830b7ab7abb0e5ef"}, - {file = "ddtrace-1.15.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2623759718ec083ab29a70d3f9902e7785dcc6b226fd4378de2605c3b4cd887a"}, - {file = "ddtrace-1.15.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:15d1db69608dc73a22c123525a66f6ce0e85dce57f322d67c6fbbf7f23d3a21c"}, - {file = "ddtrace-1.15.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:9af6737ba124a791dd632a818fa1e26914be5da7bea530bb11863f35376256b9"}, - {file = "ddtrace-1.15.0-cp38-cp38-win32.whl", hash = "sha256:2b9b76144690a6dd3f8e114baa8263d4eeaea3dd8fe7905201fb3a910451c5c6"}, - {file = "ddtrace-1.15.0-cp38-cp38-win_amd64.whl", hash = "sha256:15701417ce75896041c20d3b076cd04d5a73529a50c38dcc4bd905c4388b24fc"}, - {file = "ddtrace-1.15.0-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:a7e5bc435a75d59c1e24c10b5823d9640728290ddb452c86c9fd6d63ca9d4edb"}, - {file = "ddtrace-1.15.0-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:1db33af2792e5b07f45c6880831edd9bb016000cce580fb023a8fe5130fc0a6f"}, - {file = "ddtrace-1.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0af977fe8e4d7344793dcd447c8687064b49da5a274931bfed4fe9ec3463ea65"}, - {file = "ddtrace-1.15.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a496201556d1ad95219a032a03de8927108411f7bc7d4dbcefda3bf8785b5663"}, - {file = "ddtrace-1.15.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a6ef7c443207b898a25d5899873d8de476c349460c1d501c8c706c4dba0e606a"}, - {file = "ddtrace-1.15.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4f3700a1bc59277e7b576c87cebffe95bd1256b2207dff36cdfb29a0f26416b2"}, - {file = "ddtrace-1.15.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:93269e17aadc054c357c917e66319b966a8a18e735b81796b61ae282946a2170"}, - {file = "ddtrace-1.15.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8f0ed9fc210ba7fd31d64fb1e2435b382fede962b15d5661ed38566ad49d2c6f"}, - {file = "ddtrace-1.15.0-cp39-cp39-win32.whl", hash = "sha256:dd21d45b9a78e94dcbd9171dd73706d02eee762cbf2a3f00ffaad7e69128b159"}, - {file = "ddtrace-1.15.0-cp39-cp39-win_amd64.whl", hash = "sha256:1d1289506153af3c774e375f6aa803bd9d4c91b2ba60d9e0e06d8a25e784c4bc"}, - {file = "ddtrace-1.15.0.tar.gz", hash = "sha256:b275e25cd723cdd01d6901e690cea7852b742cfebfe800eb289e483f8f398bd0"}, + {file = "ddtrace-1.17.1-cp27-cp27m-macosx_11_0_x86_64.whl", hash = "sha256:c03f33ada5853507fc500e2232c4ec6b5bc17d0f9300ac383a816a937b31c4ae"}, + {file = "ddtrace-1.17.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:4da15eb2508d87bfe8d426f94e6835168e8554ddf651053efebaa4b1aff31506"}, + {file = "ddtrace-1.17.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:8f0472afa42185b033ba31e423fb0d35a851252eb790757547f032450d80e313"}, + {file = "ddtrace-1.17.1-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:7d563b9712fcfa659f5e2f6b93fd1ac3e9f4ecaa3e00127f05efe2553d446515"}, + {file = "ddtrace-1.17.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:2964efad960a8aae2169b1b8654ec2ea71a633c6649a0dc1249a972eb1b2991b"}, + {file = "ddtrace-1.17.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:ffc707f2be400d5ad68ec321eec79393f0da40a84e30792084aa39b2d764510e"}, + {file = "ddtrace-1.17.1-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:d93337e941a408b6027dbe781efb1576cbb04802af5b88dd70f3905d5c3efb16"}, + {file = "ddtrace-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ecedb514e610027a918e749d98d37a42f60bcbba8bee3d24a4b98c453bc50b8f"}, + {file = "ddtrace-1.17.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:63b493934e6e942151400b0bd904554ce0f5b83c46b21dfb7822551a38d4a80d"}, + {file = "ddtrace-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3a1519cddaae319a3060c8a60c08dace6d1b7903adc9ee85daa5967d04348ce"}, + {file = "ddtrace-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:dbe105ebbf7e6a1ea7c0f367b129019925bef69be8797c7f21d6ca798e4f72ec"}, + {file = "ddtrace-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:fe3543f05175617ac03254409a207110e8c598cbc5cf9d3366dfa3b5f245b6af"}, + {file = "ddtrace-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f95187c1016fe83d177caa69cfef5a6c503dc7d3fbed98071b9254944fcb99c2"}, + {file = "ddtrace-1.17.1-cp310-cp310-win32.whl", hash = "sha256:1cfd31b42445d74afcd2b4ea8ae5263e83b1463c9e720d954ca6ee7b016c29d4"}, + {file = "ddtrace-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:7264e83e9ec88a3306e3deb8f75377b60391e27a6fad473d8398fde2cfb089d6"}, + {file = "ddtrace-1.17.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:45d299e36a01b0bfe6e8f4dbcc72d6392c1bb9c37a3c90ff6e446ab6987334fa"}, + {file = "ddtrace-1.17.1-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:69aaca3e2fa60bf6227b9efc178df95624a05766b0c01669989eb26c2a371441"}, + {file = "ddtrace-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9e147b355ebfa5db7f69e9419a6ca36569de2497b7f96323690044f3882a6b2e"}, + {file = "ddtrace-1.17.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:da4422526d2b904dc0e6a284ab1b4137db23f9e87b73afe7faeccb9f7bc7f38e"}, + {file = "ddtrace-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2b8b5674f900e67234d64403d93af599944e1b55c59ca2c911c608743bc32d9"}, + {file = "ddtrace-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ad1488feeead393123cab86c31214902f687810878f03ace6952f8b9ad7802f3"}, + {file = "ddtrace-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:d2aaf7ac883fd736e7ac2e25e3a46686d77e829da31d93e73b7c25cfc8844289"}, + {file = "ddtrace-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:897a26b37ce1d9e33d386831707c0fc5e707170ddf8061500a3d23dcb01670cb"}, + {file = "ddtrace-1.17.1-cp311-cp311-win32.whl", hash = "sha256:45ee0b553bcb28f4c314bd4e172deb7cddb0f3ce1e02e8db7eb7115479002f38"}, + {file = "ddtrace-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:c826f9e4eedb92d58239e0f89eb33282e938dd6532604c77691966b18c53ced8"}, + {file = "ddtrace-1.17.1-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:525f3dcf98e92c18559035bdec8db67c4868b5c4aea8e28173fc2412fb298986"}, + {file = "ddtrace-1.17.1-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:3919586b6bade3f55f45df86b4bf3625047fb814952b6b959d634cd046c38346"}, + {file = "ddtrace-1.17.1-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:3547e4510dc6e6678ca8d69798a55dd30eda32ec04075d74437b957f6018aa47"}, + {file = "ddtrace-1.17.1-cp35-cp35m-win32.whl", hash = "sha256:336e7f51996e27bed4325afa26bcc9159987bb65a2a0313b7966d9cf51329ab8"}, + {file = "ddtrace-1.17.1-cp35-cp35m-win_amd64.whl", hash = "sha256:cd31b7fef4541583e86e98a32a9bb258b571367e453f682c020a0357e34382f2"}, + {file = "ddtrace-1.17.1-cp36-cp36m-macosx_11_0_x86_64.whl", hash = "sha256:01cf264fa1b87c57a2f468bc1e778cfd85172253060243d380ef808cb4fe508b"}, + {file = "ddtrace-1.17.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e59fd650f0b80ee4f6a6c0859f60968ec494a39621def7498aff2e01ea2786d"}, + {file = "ddtrace-1.17.1-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:828fe6f4ba7ab33d849ab4430860ffe6b97645b922eb4a48485f66a4f750368c"}, + {file = "ddtrace-1.17.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ee7a6a00c6ea226b753e996be31aa63fb4046e38dbe705e33d5b6479dad3e5e"}, + {file = "ddtrace-1.17.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:9aac5e9dc01638c54ed7475d430f6367bcbf84ba0085e93bc817c97d322fa708"}, + {file = "ddtrace-1.17.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:20148f79134e7d1624d06b48459f5bdbb653393d48041833be056da4e0468005"}, + {file = "ddtrace-1.17.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:5851034a6cd10712f89cce08100fd6c18e8f003dd44e95020f8d0c3defd677eb"}, + {file = "ddtrace-1.17.1-cp36-cp36m-win32.whl", hash = "sha256:b2672821bcd0e6d05b3717b35b23ad2c498e6ffa2d409cb4f02675acda841ced"}, + {file = "ddtrace-1.17.1-cp36-cp36m-win_amd64.whl", hash = "sha256:23f3a663c7c4b5970996cd8d02490339781db186da691d9a636d0c6efd74f44c"}, + {file = "ddtrace-1.17.1-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:b83770ce0a3e9cc755d206d7c444b8baca564bed888f36f93f7f832cae45f2db"}, + {file = "ddtrace-1.17.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d2cfa5ab6e12565358de637c6e7471d9ccb953308962ebe9f269213ac15963e5"}, + {file = "ddtrace-1.17.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6148358ea8c263219d34bf685949977dd53410bbe4ad0bab312590c73e053c1f"}, + {file = "ddtrace-1.17.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ec1d7477d27368422f5e3a6849205e6072a9ce22e6729bac289ceddb8e90c94"}, + {file = "ddtrace-1.17.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:44a3f465fd14a0fb4a1afd75d569853d58ccf8a5a098832c6feb30973447c347"}, + {file = "ddtrace-1.17.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:5014019b9e05715affdbfc9aef58fad70d5e3577f9ee26806db010429e5f918d"}, + {file = "ddtrace-1.17.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:59d3d25f901e601cb90165a4447806d1b94dfcff4ad51bf525479f4f7cae8da2"}, + {file = "ddtrace-1.17.1-cp37-cp37m-win32.whl", hash = "sha256:5dde643c651a8e96dec6c3ebb2e1b3e56fa3dff82988eaee206eb0010c56036d"}, + {file = "ddtrace-1.17.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a25b20f830630f3dc45ab8af2be811ff3f0f4f9430688c20003fb6fdedd857e9"}, + {file = "ddtrace-1.17.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:878a0dfa195029f0fe8ae1d9788caada72ba326c90137f3df78a19062ade5836"}, + {file = "ddtrace-1.17.1-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:9587a247fd2c5d02ce64fef5d0317beb0455f94525ef53e7fa8d5268d93e8271"}, + {file = "ddtrace-1.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ae0e740e7cf76ae475fa4bf36df1458b82e2fcf6d90731894afe5c92c42a203"}, + {file = "ddtrace-1.17.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96afa2aaf627caee4afd65b919bf8e1fb17d5aa69ea32b345e8076a39327558e"}, + {file = "ddtrace-1.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b14677d9b8db4d58deae8c5128df61f4148d40d0967e5f33cbbebdcf1e94500f"}, + {file = "ddtrace-1.17.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:891df3133de285e08af4fe1c0b22d322bca49554ef63864187115acec9b7455e"}, + {file = "ddtrace-1.17.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:51e26935bdf779723646eea1b651d429eb49ca8cb7ec1cd5a17e9d8252cd8579"}, + {file = "ddtrace-1.17.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:25aa1c136af010ae435751ba917e7fca4bee5d14e7cfcd95a5488abf46e6eb14"}, + {file = "ddtrace-1.17.1-cp38-cp38-win32.whl", hash = "sha256:52558471cb5a33f1e256388d15a1ac41d2e00e07c3db1abf9dd88c76936b0089"}, + {file = "ddtrace-1.17.1-cp38-cp38-win_amd64.whl", hash = "sha256:88b1e205bab48b101d5c0a162a834bc6d40f55ba5a26a8ce5a90baeb5dd630b8"}, + {file = "ddtrace-1.17.1-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:4701394b010609ea49ea1da184b0427da361089d670fc13eeb516f806d201a4c"}, + {file = "ddtrace-1.17.1-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:1adbd17fd4d4492819737775c9f2ed70b667ad6f866ed123eeda2ef127939f9d"}, + {file = "ddtrace-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0044149ccb10fd732c34385500afb3be41c835a136b2734a1e90bb7b4b81bd41"}, + {file = "ddtrace-1.17.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8e669a67541f353ffb95ae165d77d43842e7d909a1ab47ffeeb1564eadcd9c6f"}, + {file = "ddtrace-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:09cb358184c250d2ebef2535d9c037099f9f5e6e1bb74c0c3f10e31224026956"}, + {file = "ddtrace-1.17.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:98e49005001acecdec2616ea063e743bde782f88b1a8c616349ee29a72d44f7e"}, + {file = "ddtrace-1.17.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:c8a204e83d6422521d233c18213b6e7e266422d93ef1d0c7d0e7802887688e23"}, + {file = "ddtrace-1.17.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:2668f87347b364c6ec8f8c3a5c3da82a2219621756e887eb2873fdcf3793c78d"}, + {file = "ddtrace-1.17.1-cp39-cp39-win32.whl", hash = "sha256:2c2ebebb4704d89714f9c9681acc07d3b84aa29bb719c2bc93c4b9e187f5e113"}, + {file = "ddtrace-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:293f0a50891fc79f477b0a268adf42bca8b9b4944475a6018225ffc1e322afb6"}, + {file = "ddtrace-1.17.1.tar.gz", hash = "sha256:7e1639ccfbf00e6fd610798bf6095c068a4648378e0a2e05571604442b33abb0"}, ] [package.dependencies] @@ -402,10 +419,10 @@ bytecode = [ {version = "*", markers = "python_version >= \"3.8\""}, ] cattrs = {version = "*", markers = "python_version >= \"3.7\""} +cmake = {version = ">=3.24.2", markers = "python_version >= \"3.6\""} ddsketch = ">=2.0.1" envier = "*" importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} -jsonschema = "*" opentelemetry-api = {version = ">=1", markers = "python_version >= \"3.7\""} protobuf = {version = ">=3", markers = "python_version >= \"3.7\""} six = ">=1.12.0" @@ -419,7 +436,6 @@ opentracing = ["opentracing (>=2.0.0)"] name = "deprecated" version = "1.2.14" description = "Python @deprecated decorator to deprecate old python classes, functions or methods." -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -437,7 +453,6 @@ dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "sphinx (<2)", "tox"] name = "envier" version = "0.4.0" description = "Python application configuration via the environment" -category = "main" optional = false python-versions = ">=2.7" files = [ @@ -450,14 +465,13 @@ mypy = ["mypy"] [[package]] name = "exceptiongroup" -version = "1.1.1" +version = "1.1.2" description = "Backport of PEP 654 (exception groups)" -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "exceptiongroup-1.1.1-py3-none-any.whl", hash = "sha256:232c37c63e4f682982c8b6459f33a8981039e5fb8756b2074364e5055c498c9e"}, - {file = "exceptiongroup-1.1.1.tar.gz", hash = "sha256:d484c3090ba2889ae2928419117447a14daf3c1231d5e30d0aae34f354f01785"}, + {file = "exceptiongroup-1.1.2-py3-none-any.whl", hash = "sha256:e346e69d186172ca7cf029c8c1d16235aa0e04035e5750b4b95039e65204328f"}, + {file = "exceptiongroup-1.1.2.tar.gz", hash = "sha256:12c3e887d6485d16943a309616de20ae5582633e0a2eda17f4e10fd61c1e8af5"}, ] [package.extras] @@ -467,7 +481,6 @@ test = ["pytest (>=6)"] name = "flake8" version = "3.9.2" description = "the modular source code checker: pep8 pyflakes and co" -category = "main" optional = true python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" files = [ @@ -485,7 +498,6 @@ pyflakes = ">=2.3.0,<2.4.0" name = "httpretty" version = "0.9.7" description = "HTTP client mock for Python" -category = "main" optional = true python-versions = "*" files = [ @@ -499,7 +511,6 @@ six = "*" name = "idna" version = "3.4" description = "Internationalized Domain Names in Applications (IDNA)" -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -509,47 +520,28 @@ files = [ [[package]] name = "importlib-metadata" -version = "1.7.0" +version = "6.7.0" description = "Read metadata from Python packages" -category = "main" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" -files = [ - {file = "importlib_metadata-1.7.0-py2.py3-none-any.whl", hash = "sha256:dc15b2969b4ce36305c51eebe62d418ac7791e9a157911d58bfb1f9ccd8e2070"}, - {file = "importlib_metadata-1.7.0.tar.gz", hash = "sha256:90bb658cdbbf6d1735b6341ce708fc7024a3e14e99ffdc5783edea9f9b077f83"}, -] - -[package.dependencies] -zipp = ">=0.5" - -[package.extras] -docs = ["rst.linker", "sphinx"] -testing = ["importlib-resources (>=1.3)", "packaging", "pep517"] - -[[package]] -name = "importlib-resources" -version = "5.12.0" -description = "Read resources from Python packages" -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "importlib_resources-5.12.0-py3-none-any.whl", hash = "sha256:7b1deeebbf351c7578e09bf2f63fa2ce8b5ffec296e0d349139d43cca061a81a"}, - {file = "importlib_resources-5.12.0.tar.gz", hash = "sha256:4be82589bf5c1d7999aedf2a45159d10cb3ca4f19b2271f8792bc8e6da7b22f6"}, + {file = "importlib_metadata-6.7.0-py3-none-any.whl", hash = "sha256:cb52082e659e97afc5dac71e79de97d8681de3aa07ff18578330904a9d18e5b5"}, + {file = "importlib_metadata-6.7.0.tar.gz", hash = "sha256:1aaf550d4f73e5d6783e7acb77aec43d49da8017410afae93822cc9cca98c4d4"}, ] [package.dependencies] -zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} +typing-extensions = {version = ">=3.6.4", markers = "python_version < \"3.8\""} +zipp = ">=0.5" [package.extras] docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["flake8 (<5)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] +perf = ["ipython"] +testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"] [[package]] name = "jmespath" version = "1.0.1" description = "JSON Matching Expressions" -category = "main" optional = true python-versions = ">=3.7" files = [ @@ -557,35 +549,10 @@ files = [ {file = "jmespath-1.0.1.tar.gz", hash = "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe"}, ] -[[package]] -name = "jsonschema" -version = "4.17.3" -description = "An implementation of JSON Schema validation for Python" -category = "main" -optional = false -python-versions = ">=3.7" -files = [ - {file = "jsonschema-4.17.3-py3-none-any.whl", hash = "sha256:a870ad254da1a8ca84b6a2905cac29d265f805acc57af304784962a2aa6508f6"}, - {file = "jsonschema-4.17.3.tar.gz", hash = "sha256:0f864437ab8b6076ba6707453ef8f98a6a0d512a80e93f8abdb676f737ecb60d"}, -] - -[package.dependencies] -attrs = ">=17.4.0" -importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} -importlib-resources = {version = ">=1.4.0", markers = "python_version < \"3.9\""} -pkgutil-resolve-name = {version = ">=1.3.10", markers = "python_version < \"3.9\""} -pyrsistent = ">=0.14.0,<0.17.0 || >0.17.0,<0.17.1 || >0.17.1,<0.17.2 || >0.17.2" -typing-extensions = {version = "*", markers = "python_version < \"3.8\""} - -[package.extras] -format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"] -format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=1.11)"] - [[package]] name = "mccabe" version = "0.6.1" description = "McCabe checker, plugin for flake8" -category = "main" optional = true python-versions = "*" files = [ @@ -597,7 +564,6 @@ files = [ name = "nose2" version = "0.9.2" description = "unittest2 with plugins, the succesor to nose" -category = "main" optional = true python-versions = "*" files = [ @@ -615,60 +581,45 @@ doc = ["Sphinx (>=1.6.5)", "mock", "sphinx-rtd-theme"] [[package]] name = "opentelemetry-api" -version = "1.15.0" +version = "1.19.0" description = "OpenTelemetry Python API" -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "opentelemetry_api-1.15.0-py3-none-any.whl", hash = "sha256:e6c2d2e42140fd396e96edf75a7ceb11073f4efb4db87565a431cc9d0f93f2e0"}, - {file = "opentelemetry_api-1.15.0.tar.gz", hash = "sha256:79ab791b4aaad27acc3dc3ba01596db5b5aac2ef75c70622c6038051d6c2cded"}, + {file = "opentelemetry_api-1.19.0-py3-none-any.whl", hash = "sha256:dcd2a0ad34b691964947e1d50f9e8c415c32827a1d87f0459a72deb9afdf5597"}, + {file = "opentelemetry_api-1.19.0.tar.gz", hash = "sha256:db374fb5bea00f3c7aa290f5d94cea50b659e6ea9343384c5f6c2bb5d5e8db65"}, ] [package.dependencies] deprecated = ">=1.2.6" -setuptools = ">=16.0" - -[[package]] -name = "pkgutil-resolve-name" -version = "1.3.10" -description = "Resolve a name to an object." -category = "main" -optional = false -python-versions = ">=3.6" -files = [ - {file = "pkgutil_resolve_name-1.3.10-py3-none-any.whl", hash = "sha256:ca27cc078d25c5ad71a9de0a7a330146c4e014c2462d9af19c6b828280649c5e"}, - {file = "pkgutil_resolve_name-1.3.10.tar.gz", hash = "sha256:357d6c9e6a755653cfd78893817c0853af365dd51ec97f3d358a819373bbd174"}, -] +importlib-metadata = ">=6.0,<7.0" [[package]] name = "protobuf" -version = "4.23.3" +version = "4.23.4" description = "" -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "protobuf-4.23.3-cp310-abi3-win32.whl", hash = "sha256:514b6bbd54a41ca50c86dd5ad6488afe9505901b3557c5e0f7823a0cf67106fb"}, - {file = "protobuf-4.23.3-cp310-abi3-win_amd64.whl", hash = "sha256:cc14358a8742c4e06b1bfe4be1afbdf5c9f6bd094dff3e14edb78a1513893ff5"}, - {file = "protobuf-4.23.3-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:2991f5e7690dab569f8f81702e6700e7364cc3b5e572725098215d3da5ccc6ac"}, - {file = "protobuf-4.23.3-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:08fe19d267608d438aa37019236db02b306e33f6b9902c3163838b8e75970223"}, - {file = "protobuf-4.23.3-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:3b01a5274ac920feb75d0b372d901524f7e3ad39c63b1a2d55043f3887afe0c1"}, - {file = "protobuf-4.23.3-cp37-cp37m-win32.whl", hash = "sha256:aca6e86a08c5c5962f55eac9b5bd6fce6ed98645d77e8bfc2b952ecd4a8e4f6a"}, - {file = "protobuf-4.23.3-cp37-cp37m-win_amd64.whl", hash = "sha256:0149053336a466e3e0b040e54d0b615fc71de86da66791c592cc3c8d18150bf8"}, - {file = "protobuf-4.23.3-cp38-cp38-win32.whl", hash = "sha256:84ea0bd90c2fdd70ddd9f3d3fc0197cc24ecec1345856c2b5ba70e4d99815359"}, - {file = "protobuf-4.23.3-cp38-cp38-win_amd64.whl", hash = "sha256:3bcbeb2bf4bb61fe960dd6e005801a23a43578200ea8ceb726d1f6bd0e562ba1"}, - {file = "protobuf-4.23.3-cp39-cp39-win32.whl", hash = "sha256:5cb9e41188737f321f4fce9a4337bf40a5414b8d03227e1d9fbc59bc3a216e35"}, - {file = "protobuf-4.23.3-cp39-cp39-win_amd64.whl", hash = "sha256:29660574cd769f2324a57fb78127cda59327eb6664381ecfe1c69731b83e8288"}, - {file = "protobuf-4.23.3-py3-none-any.whl", hash = "sha256:447b9786ac8e50ae72cae7a2eec5c5df6a9dbf9aa6f908f1b8bda6032644ea62"}, - {file = "protobuf-4.23.3.tar.gz", hash = "sha256:7a92beb30600332a52cdadbedb40d33fd7c8a0d7f549c440347bc606fb3fe34b"}, + {file = "protobuf-4.23.4-cp310-abi3-win32.whl", hash = "sha256:5fea3c64d41ea5ecf5697b83e41d09b9589e6f20b677ab3c48e5f242d9b7897b"}, + {file = "protobuf-4.23.4-cp310-abi3-win_amd64.whl", hash = "sha256:7b19b6266d92ca6a2a87effa88ecc4af73ebc5cfde194dc737cf8ef23a9a3b12"}, + {file = "protobuf-4.23.4-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:8547bf44fe8cec3c69e3042f5c4fb3e36eb2a7a013bb0a44c018fc1e427aafbd"}, + {file = "protobuf-4.23.4-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:fee88269a090ada09ca63551bf2f573eb2424035bcf2cb1b121895b01a46594a"}, + {file = "protobuf-4.23.4-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:effeac51ab79332d44fba74660d40ae79985901ac21bca408f8dc335a81aa597"}, + {file = "protobuf-4.23.4-cp37-cp37m-win32.whl", hash = "sha256:c3e0939433c40796ca4cfc0fac08af50b00eb66a40bbbc5dee711998fb0bbc1e"}, + {file = "protobuf-4.23.4-cp37-cp37m-win_amd64.whl", hash = "sha256:9053df6df8e5a76c84339ee4a9f5a2661ceee4a0dab019e8663c50ba324208b0"}, + {file = "protobuf-4.23.4-cp38-cp38-win32.whl", hash = "sha256:e1c915778d8ced71e26fcf43c0866d7499891bca14c4368448a82edc61fdbc70"}, + {file = "protobuf-4.23.4-cp38-cp38-win_amd64.whl", hash = "sha256:351cc90f7d10839c480aeb9b870a211e322bf05f6ab3f55fcb2f51331f80a7d2"}, + {file = "protobuf-4.23.4-cp39-cp39-win32.whl", hash = "sha256:6dd9b9940e3f17077e820b75851126615ee38643c2c5332aa7a359988820c720"}, + {file = "protobuf-4.23.4-cp39-cp39-win_amd64.whl", hash = "sha256:0a5759f5696895de8cc913f084e27fd4125e8fb0914bb729a17816a33819f474"}, + {file = "protobuf-4.23.4-py3-none-any.whl", hash = "sha256:e9d0be5bf34b275b9f87ba7407796556abeeba635455d036c7351f7c183ef8ff"}, + {file = "protobuf-4.23.4.tar.gz", hash = "sha256:ccd9430c0719dce806b93f89c91de7977304729e55377f872a92465d548329a9"}, ] [[package]] name = "pycodestyle" version = "2.7.0" description = "Python style guide checker" -category = "main" optional = true python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -680,7 +631,6 @@ files = [ name = "pyflakes" version = "2.3.1" description = "passive checker of Python programs" -category = "main" optional = true python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -688,48 +638,10 @@ files = [ {file = "pyflakes-2.3.1.tar.gz", hash = "sha256:f5bc8ecabc05bb9d291eb5203d6810b49040f6ff446a756326104746cc00c1db"}, ] -[[package]] -name = "pyrsistent" -version = "0.19.3" -description = "Persistent/Functional/Immutable data structures" -category = "main" -optional = false -python-versions = ">=3.7" -files = [ - {file = "pyrsistent-0.19.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:20460ac0ea439a3e79caa1dbd560344b64ed75e85d8703943e0b66c2a6150e4a"}, - {file = "pyrsistent-0.19.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4c18264cb84b5e68e7085a43723f9e4c1fd1d935ab240ce02c0324a8e01ccb64"}, - {file = "pyrsistent-0.19.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4b774f9288dda8d425adb6544e5903f1fb6c273ab3128a355c6b972b7df39dcf"}, - {file = "pyrsistent-0.19.3-cp310-cp310-win32.whl", hash = "sha256:5a474fb80f5e0d6c9394d8db0fc19e90fa540b82ee52dba7d246a7791712f74a"}, - {file = "pyrsistent-0.19.3-cp310-cp310-win_amd64.whl", hash = "sha256:49c32f216c17148695ca0e02a5c521e28a4ee6c5089f97e34fe24163113722da"}, - {file = "pyrsistent-0.19.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f0774bf48631f3a20471dd7c5989657b639fd2d285b861237ea9e82c36a415a9"}, - {file = "pyrsistent-0.19.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ab2204234c0ecd8b9368dbd6a53e83c3d4f3cab10ecaf6d0e772f456c442393"}, - {file = "pyrsistent-0.19.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e42296a09e83028b3476f7073fcb69ffebac0e66dbbfd1bd847d61f74db30f19"}, - {file = "pyrsistent-0.19.3-cp311-cp311-win32.whl", hash = "sha256:64220c429e42a7150f4bfd280f6f4bb2850f95956bde93c6fda1b70507af6ef3"}, - {file = "pyrsistent-0.19.3-cp311-cp311-win_amd64.whl", hash = "sha256:016ad1afadf318eb7911baa24b049909f7f3bb2c5b1ed7b6a8f21db21ea3faa8"}, - {file = "pyrsistent-0.19.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c4db1bd596fefd66b296a3d5d943c94f4fac5bcd13e99bffe2ba6a759d959a28"}, - {file = "pyrsistent-0.19.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aeda827381f5e5d65cced3024126529ddc4289d944f75e090572c77ceb19adbf"}, - {file = "pyrsistent-0.19.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:42ac0b2f44607eb92ae88609eda931a4f0dfa03038c44c772e07f43e738bcac9"}, - {file = "pyrsistent-0.19.3-cp37-cp37m-win32.whl", hash = "sha256:e8f2b814a3dc6225964fa03d8582c6e0b6650d68a232df41e3cc1b66a5d2f8d1"}, - {file = "pyrsistent-0.19.3-cp37-cp37m-win_amd64.whl", hash = "sha256:c9bb60a40a0ab9aba40a59f68214eed5a29c6274c83b2cc206a359c4a89fa41b"}, - {file = "pyrsistent-0.19.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a2471f3f8693101975b1ff85ffd19bb7ca7dd7c38f8a81701f67d6b4f97b87d8"}, - {file = "pyrsistent-0.19.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cc5d149f31706762c1f8bda2e8c4f8fead6e80312e3692619a75301d3dbb819a"}, - {file = "pyrsistent-0.19.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3311cb4237a341aa52ab8448c27e3a9931e2ee09561ad150ba94e4cfd3fc888c"}, - {file = "pyrsistent-0.19.3-cp38-cp38-win32.whl", hash = "sha256:f0e7c4b2f77593871e918be000b96c8107da48444d57005b6a6bc61fb4331b2c"}, - {file = "pyrsistent-0.19.3-cp38-cp38-win_amd64.whl", hash = "sha256:c147257a92374fde8498491f53ffa8f4822cd70c0d85037e09028e478cababb7"}, - {file = "pyrsistent-0.19.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:b735e538f74ec31378f5a1e3886a26d2ca6351106b4dfde376a26fc32a044edc"}, - {file = "pyrsistent-0.19.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99abb85579e2165bd8522f0c0138864da97847875ecbd45f3e7e2af569bfc6f2"}, - {file = "pyrsistent-0.19.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3a8cb235fa6d3fd7aae6a4f1429bbb1fec1577d978098da1252f0489937786f3"}, - {file = "pyrsistent-0.19.3-cp39-cp39-win32.whl", hash = "sha256:c74bed51f9b41c48366a286395c67f4e894374306b197e62810e0fdaf2364da2"}, - {file = "pyrsistent-0.19.3-cp39-cp39-win_amd64.whl", hash = "sha256:878433581fc23e906d947a6814336eee031a00e6defba224234169ae3d3d6a98"}, - {file = "pyrsistent-0.19.3-py3-none-any.whl", hash = "sha256:ccf0d6bd208f8111179f0c26fdf84ed7c3891982f2edaeae7422575f47e66b64"}, - {file = "pyrsistent-0.19.3.tar.gz", hash = "sha256:1a2994773706bbb4995c31a97bc94f1418314923bd1048c6d964837040376440"}, -] - [[package]] name = "python-dateutil" version = "2.8.2" description = "Extensions to the standard Python datetime module" -category = "main" optional = true python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ @@ -744,7 +656,6 @@ six = ">=1.5" name = "requests" version = "2.31.0" description = "Python HTTP for Humans." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -766,7 +677,6 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] name = "s3transfer" version = "0.6.1" description = "An Amazon S3 Transfer Manager" -category = "main" optional = true python-versions = ">= 3.7" files = [ @@ -780,28 +690,10 @@ botocore = ">=1.12.36,<2.0a.0" [package.extras] crt = ["botocore[crt] (>=1.20.29,<2.0a.0)"] -[[package]] -name = "setuptools" -version = "68.0.0" -description = "Easily download, build, install, upgrade, and uninstall Python packages" -category = "main" -optional = false -python-versions = ">=3.7" -files = [ - {file = "setuptools-68.0.0-py3-none-any.whl", hash = "sha256:11e52c67415a381d10d6b462ced9cfb97066179f0e871399e006c4ab101fc85f"}, - {file = "setuptools-68.0.0.tar.gz", hash = "sha256:baf1fdb41c6da4cd2eae722e135500da913332ab3f2f5c7d33af9b492acb5235"}, -] - -[package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pip-run (>=8.8)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] -testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] - [[package]] name = "six" version = "1.16.0" description = "Python 2 and 3 compatibility utilities" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -811,21 +703,19 @@ files = [ [[package]] name = "typing-extensions" -version = "4.6.3" +version = "4.7.1" description = "Backported and Experimental Type Hints for Python 3.7+" -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "typing_extensions-4.6.3-py3-none-any.whl", hash = "sha256:88a4153d8505aabbb4e13aacb7c486c2b4a33ca3b3f807914a9b4c844c471c26"}, - {file = "typing_extensions-4.6.3.tar.gz", hash = "sha256:d91d5919357fe7f681a9f2b5b4cb2a5f1ef0a1e9f59c4d8ff0d3491e05c0ffd5"}, + {file = "typing_extensions-4.7.1-py3-none-any.whl", hash = "sha256:440d5dd3af93b060174bf433bccd69b0babc3b15b1a8dca43789fd7f61514b36"}, + {file = "typing_extensions-4.7.1.tar.gz", hash = "sha256:b75ddc264f0ba5615db7ba217daeb99701ad295353c45f9e95963337ceeeffb2"}, ] [[package]] name = "urllib3" version = "1.26.16" description = "HTTP library with thread-safe connection pooling, file post, and more." -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" files = [ @@ -842,7 +732,6 @@ socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] name = "wrapt" version = "1.15.0" description = "Module for decorators, wrappers and monkey patching." -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" files = [ @@ -927,7 +816,6 @@ files = [ name = "xmltodict" version = "0.13.0" description = "Makes working with XML feel like you are working with JSON" -category = "main" optional = false python-versions = ">=3.4" files = [ @@ -939,7 +827,6 @@ files = [ name = "zipp" version = "3.15.0" description = "Backport of pathlib-compatible object wrapper for zip files" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -957,4 +844,4 @@ dev = ["boto3", "flake8", "httpretty", "nose2", "requests"] [metadata] lock-version = "2.0" python-versions = ">=3.7.0,<4" -content-hash = "220b7348acf7d71f280bee0d89763f562c191d946cb0e4ef7c46c0e6c1ff98c0" +content-hash = "eca28227b90c7b8efbec239508900cd72c220e0b43431552f45db99bc12b617d" diff --git a/pyproject.toml b/pyproject.toml index f484d35b8..8e4a3bd99 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -28,7 +28,7 @@ datadog = ">=0.41.0,<1.0.0" wrapt = "^1.11.2" ddtrace = "^1.15.0" urllib3 = "<2.0.0" -importlib_metadata = {version = "^1.0", python = "<3.8"} +importlib_metadata = {version = "*", python = "<3.8"} boto3 = { version = "^1.10.33", optional = true } typing_extensions = {version = "^4.0", python = "<3.8"} requests = { version ="^2.22.0", optional = true } From 8aa1fd39989fdccd8d81438adda80fa95b0f8251 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Mon, 24 Jul 2023 14:57:15 -0400 Subject: [PATCH 069/403] feat: Add peer.service and tracer updates to snapshot tests (#352) --- .../logs/async-metrics_python310.log | 45 ++++++++++++--- .../snapshots/logs/async-metrics_python37.log | 45 ++++++++++++--- .../snapshots/logs/async-metrics_python38.log | 45 ++++++++++++--- .../snapshots/logs/async-metrics_python39.log | 45 ++++++++++++--- .../snapshots/logs/sync-metrics_python310.log | 56 +++++++++++++++---- .../snapshots/logs/sync-metrics_python37.log | 54 +++++++++++++++--- .../snapshots/logs/sync-metrics_python38.log | 54 +++++++++++++++--- .../snapshots/logs/sync-metrics_python39.log | 56 +++++++++++++++---- 8 files changed, 326 insertions(+), 74 deletions(-) diff --git a/tests/integration/snapshots/logs/async-metrics_python310.log b/tests/integration/snapshots/logs/async-metrics_python310.log index d746aba4f..5fc4c6603 100644 --- a/tests/integration/snapshots/logs/async-metrics_python310.log +++ b/tests/integration/snapshots/logs/async-metrics_python310.log @@ -68,7 +68,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -127,6 +128,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -152,6 +154,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -232,7 +235,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -287,6 +291,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -312,6 +317,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -386,7 +392,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -440,6 +447,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -465,6 +473,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -549,7 +558,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -608,6 +618,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -633,6 +644,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -713,7 +725,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -768,6 +781,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -793,6 +807,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -870,7 +885,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -925,6 +941,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -950,6 +967,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1028,7 +1046,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -1083,6 +1102,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1108,6 +1128,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1185,7 +1206,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -1240,6 +1262,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1265,6 +1288,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1348,7 +1372,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -1405,6 +1430,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1430,6 +1456,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python37.log b/tests/integration/snapshots/logs/async-metrics_python37.log index e28bb9b39..10fcca4cf 100644 --- a/tests/integration/snapshots/logs/async-metrics_python37.log +++ b/tests/integration/snapshots/logs/async-metrics_python37.log @@ -68,7 +68,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -127,6 +128,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -152,6 +154,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -232,7 +235,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -287,6 +291,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -312,6 +317,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -386,7 +392,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -440,6 +447,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -465,6 +473,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -549,7 +558,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -608,6 +618,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -633,6 +644,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -713,7 +725,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -768,6 +781,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -793,6 +807,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -870,7 +885,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -925,6 +941,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -950,6 +967,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1028,7 +1046,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -1083,6 +1102,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1108,6 +1128,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1185,7 +1206,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -1240,6 +1262,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1265,6 +1288,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1348,7 +1372,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -1405,6 +1430,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1430,6 +1456,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python38.log b/tests/integration/snapshots/logs/async-metrics_python38.log index c146ef0fd..eb7b9d8b3 100644 --- a/tests/integration/snapshots/logs/async-metrics_python38.log +++ b/tests/integration/snapshots/logs/async-metrics_python38.log @@ -68,7 +68,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -127,6 +128,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -152,6 +154,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -232,7 +235,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -287,6 +291,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -312,6 +317,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -386,7 +392,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -440,6 +447,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -465,6 +473,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -549,7 +558,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -608,6 +618,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -633,6 +644,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -713,7 +725,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -768,6 +781,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -793,6 +807,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -870,7 +885,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -925,6 +941,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -950,6 +967,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1028,7 +1046,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -1083,6 +1102,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1108,6 +1128,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1185,7 +1206,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -1240,6 +1262,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1265,6 +1288,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1348,7 +1372,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -1405,6 +1430,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1430,6 +1456,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python39.log b/tests/integration/snapshots/logs/async-metrics_python39.log index bc0fb4e85..af584ad12 100644 --- a/tests/integration/snapshots/logs/async-metrics_python39.log +++ b/tests/integration/snapshots/logs/async-metrics_python39.log @@ -68,7 +68,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -127,6 +128,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -152,6 +154,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -232,7 +235,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -287,6 +291,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -312,6 +317,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -386,7 +392,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -440,6 +447,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -465,6 +473,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -549,7 +558,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -608,6 +618,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -633,6 +644,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -713,7 +725,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -768,6 +781,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -793,6 +807,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -870,7 +885,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -925,6 +941,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -950,6 +967,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1028,7 +1046,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -1083,6 +1102,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1108,6 +1128,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1185,7 +1206,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -1240,6 +1262,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1265,6 +1288,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1348,7 +1372,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -1405,6 +1430,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1430,6 +1456,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python310.log b/tests/integration/snapshots/logs/sync-metrics_python310.log index a72a34a9e..a3b7f553c 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python310.log +++ b/tests/integration/snapshots/logs/sync-metrics_python310.log @@ -48,7 +48,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -107,6 +108,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -132,6 +134,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -164,6 +167,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -230,7 +234,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -285,6 +290,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -310,6 +316,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -342,6 +349,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -402,7 +410,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -456,6 +465,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -481,6 +491,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -513,6 +524,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -583,7 +595,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -642,6 +655,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -667,6 +681,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -679,7 +694,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] } HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}]} -END Duration: XXXX ms Memory Used: XXXX MB { "traces": [ [ @@ -700,6 +714,7 @@ END Duration: XXXX ms Memory Used: XXXX MB "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -717,6 +732,7 @@ END Duration: XXXX ms Memory Used: XXXX MB ] ] } +END Duration: XXXX ms Memory Used: XXXX MB START { "m": "aws.lambda.enhanced.invocations", @@ -765,7 +781,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -820,6 +837,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -845,6 +863,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -877,6 +896,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -940,7 +960,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -995,6 +1016,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1020,6 +1042,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1052,6 +1075,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1116,7 +1140,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -1171,6 +1196,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1196,6 +1222,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1228,6 +1255,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1291,7 +1319,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -1346,6 +1375,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1371,6 +1401,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1403,6 +1434,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1472,7 +1504,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -1529,6 +1562,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1554,6 +1588,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1586,6 +1621,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", diff --git a/tests/integration/snapshots/logs/sync-metrics_python37.log b/tests/integration/snapshots/logs/sync-metrics_python37.log index 5bc76a998..df14e89ef 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python37.log +++ b/tests/integration/snapshots/logs/sync-metrics_python37.log @@ -48,7 +48,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -107,6 +108,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -132,6 +134,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -164,6 +167,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -230,7 +234,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -285,6 +290,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -310,6 +316,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -342,6 +349,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -402,7 +410,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -456,6 +465,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -481,6 +491,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -513,6 +524,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -583,7 +595,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -642,6 +655,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -667,6 +681,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -699,6 +714,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -765,7 +781,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -820,6 +837,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -845,6 +863,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -877,6 +896,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -940,7 +960,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -995,6 +1016,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1020,6 +1042,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1052,6 +1075,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1116,7 +1140,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -1171,6 +1196,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1196,6 +1222,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1228,6 +1255,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1291,7 +1319,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -1346,6 +1375,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1371,6 +1401,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1403,6 +1434,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1472,7 +1504,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -1529,6 +1562,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1554,6 +1588,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1586,6 +1621,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", diff --git a/tests/integration/snapshots/logs/sync-metrics_python38.log b/tests/integration/snapshots/logs/sync-metrics_python38.log index 213e64aa7..d800af7a7 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python38.log +++ b/tests/integration/snapshots/logs/sync-metrics_python38.log @@ -48,7 +48,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -107,6 +108,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -132,6 +134,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -164,6 +167,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -230,7 +234,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -285,6 +290,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -310,6 +316,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -342,6 +349,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -402,7 +410,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -456,6 +465,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -481,6 +491,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -513,6 +524,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -583,7 +595,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -642,6 +655,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -667,6 +681,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -699,6 +714,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -765,7 +781,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -820,6 +837,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -845,6 +863,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -877,6 +896,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -940,7 +960,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -995,6 +1016,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1020,6 +1042,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1052,6 +1075,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1116,7 +1140,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -1171,6 +1196,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1196,6 +1222,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1228,6 +1255,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1291,7 +1319,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -1346,6 +1375,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1371,6 +1401,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1403,6 +1434,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1472,7 +1504,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -1529,6 +1562,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1554,6 +1588,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1586,6 +1621,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", diff --git a/tests/integration/snapshots/logs/sync-metrics_python39.log b/tests/integration/snapshots/logs/sync-metrics_python39.log index 54ab2bad2..66dd2a4b1 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -48,7 +48,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -107,6 +108,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -132,6 +134,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -164,6 +167,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -230,7 +234,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -285,6 +290,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -310,6 +316,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -342,6 +349,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -402,7 +410,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -456,6 +465,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -481,6 +491,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -513,6 +524,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -583,7 +595,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -642,6 +655,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -667,6 +681,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -679,6 +694,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] } HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}]} +END Duration: XXXX ms Memory Used: XXXX MB { "traces": [ [ @@ -699,6 +715,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -716,7 +733,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept ] ] } -END Duration: XXXX ms Memory Used: XXXX MB START { "m": "aws.lambda.enhanced.invocations", @@ -765,7 +781,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -820,6 +837,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -845,6 +863,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -877,6 +896,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -940,7 +960,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -995,6 +1016,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1020,6 +1042,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1052,6 +1075,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1116,7 +1140,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -1171,6 +1196,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1196,6 +1222,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1228,6 +1255,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1291,7 +1319,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -1346,6 +1375,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1371,6 +1401,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1403,6 +1434,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1472,7 +1504,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service" }, "metrics": { "process_id": XXXX, @@ -1529,6 +1562,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1554,6 +1588,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1586,6 +1621,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", From 6c7851fe640df13a1118660a2c96d78260b8ecc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?jordan=20gonz=C3=A1lez?= <30836115+duncanista@users.noreply.github.com> Date: Thu, 27 Jul 2023 19:05:51 -0400 Subject: [PATCH 070/403] misc: pin `ddtrace` to `1.15.2` (#356) * update `ddtrace` to `^1.17.2` * pin version of `ddtrace@1.15.2` * feat: ints --------- Co-authored-by: AJ Stuyvenberg --- poetry.lock | 186 ++++++++---------- pyproject.toml | 2 +- .../logs/async-metrics_python310.log | 45 +---- .../snapshots/logs/async-metrics_python37.log | 45 +---- .../snapshots/logs/async-metrics_python38.log | 45 +---- .../snapshots/logs/async-metrics_python39.log | 45 +---- .../snapshots/logs/sync-metrics_python310.log | 54 +---- .../snapshots/logs/sync-metrics_python37.log | 54 +---- .../snapshots/logs/sync-metrics_python38.log | 54 +---- .../snapshots/logs/sync-metrics_python39.log | 56 +----- 10 files changed, 152 insertions(+), 434 deletions(-) diff --git a/poetry.lock b/poetry.lock index efc2f08b1..5b473ed9a 100644 --- a/poetry.lock +++ b/poetry.lock @@ -23,17 +23,17 @@ tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pyte [[package]] name = "boto3" -version = "1.28.9" +version = "1.28.13" description = "The AWS SDK for Python" optional = true python-versions = ">= 3.7" files = [ - {file = "boto3-1.28.9-py3-none-any.whl", hash = "sha256:01f078047eb4d238c6b9c6cc623f2af33b4ae67980c5326691e35cb5493ff6c7"}, - {file = "boto3-1.28.9.tar.gz", hash = "sha256:4cc0c6005be910e52077227e670930ab55a41ba86cdb6d1c052571d08cd4d32c"}, + {file = "boto3-1.28.13-py3-none-any.whl", hash = "sha256:b2d178c8a56fe3e4c9b123dccdff20e9555d12a597b72627fa659aa6295e238a"}, + {file = "boto3-1.28.13.tar.gz", hash = "sha256:db6443fd2c65d9f35f671b03bacb0592b62d06884395ed65d75922ccddc34c2e"}, ] [package.dependencies] -botocore = ">=1.31.9,<1.32.0" +botocore = ">=1.31.13,<1.32.0" jmespath = ">=0.7.1,<2.0.0" s3transfer = ">=0.6.0,<0.7.0" @@ -42,13 +42,13 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.31.9" +version = "1.31.13" description = "Low-level, data-driven core of boto 3." optional = true python-versions = ">= 3.7" files = [ - {file = "botocore-1.31.9-py3-none-any.whl", hash = "sha256:e56ccd3536a90094ea5b176b5dd33bfe4f049efdf71af468ea1661bd424c787d"}, - {file = "botocore-1.31.9.tar.gz", hash = "sha256:bd849d3ac95f1781385ed831d753a04a3ec870a59d6598175aaedd71dc2baf5f"}, + {file = "botocore-1.31.13-py3-none-any.whl", hash = "sha256:78b96afbd88b8bd4c0967611a4cedddd9ea33d8601309dc351f81cbb5479d976"}, + {file = "botocore-1.31.13.tar.gz", hash = "sha256:9a5080ea2a444f0447a7a1a79f64252ae2a1417b6c13a54656ee991cb610dd4e"}, ] [package.dependencies] @@ -204,35 +204,6 @@ files = [ {file = "charset_normalizer-3.2.0-py3-none-any.whl", hash = "sha256:8e098148dd37b4ce3baca71fb394c81dc5d9c7728c95df695d2dca218edf40e6"}, ] -[[package]] -name = "cmake" -version = "3.27.0" -description = "CMake is an open-source, cross-platform family of tools designed to build, test and package software" -optional = false -python-versions = "*" -files = [ - {file = "cmake-3.27.0-py2.py3-none-macosx_10_10_universal2.macosx_10_10_x86_64.macosx_11_0_arm64.macosx_11_0_universal2.whl", hash = "sha256:9ccab4cd93578d3c2df32e66b44b313b75a7484032645040431dc06a583ca4aa"}, - {file = "cmake-3.27.0-py2.py3-none-manylinux2010_i686.manylinux_2_12_i686.whl", hash = "sha256:199bfaefb752e82d8067aeee5d6a6e0414fe0d60e9a3fd08e95d537a97e0db16"}, - {file = "cmake-3.27.0-py2.py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:8745eff805f36762d3e8e904698b853cb4a9da8b4b07d1c12bcd1e1a6c4a1709"}, - {file = "cmake-3.27.0-py2.py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:58a3f39d3d1bc897f05e531bfa676246a2b25d424c6a47e4b6bbc193fb560db7"}, - {file = "cmake-3.27.0-py2.py3-none-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:b470ccd3f86cf19a63f6b221c9cceebcc58e32d3787d0d5f9f43d1d91a095090"}, - {file = "cmake-3.27.0-py2.py3-none-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:35a8d397ce883e93b5e6561e2803ce9470df52283862264093c1078530f98189"}, - {file = "cmake-3.27.0-py2.py3-none-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:1f38d87b2c65763a0113f4a6c652e6f4b5adf90b384c1e1d69e4f8a3104a57d6"}, - {file = "cmake-3.27.0-py2.py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b9d5811954dcedcaa6c915c4a9bb6d64b55ac189e9cbc74be726307d9d084804"}, - {file = "cmake-3.27.0-py2.py3-none-musllinux_1_1_aarch64.whl", hash = "sha256:073e4f196d0888216e6794c08cd984ddabc108c0e4e66f48fbd7610d1e6d726d"}, - {file = "cmake-3.27.0-py2.py3-none-musllinux_1_1_i686.whl", hash = "sha256:e58e48643903e6fad76274337f9a4d3c575b8e21cd05c6214780b2c98bb0c706"}, - {file = "cmake-3.27.0-py2.py3-none-musllinux_1_1_ppc64le.whl", hash = "sha256:9740ed9f61a3bd8708a41cadd5c057c04f38e5b89bd773e369df2e210a1c55a3"}, - {file = "cmake-3.27.0-py2.py3-none-musllinux_1_1_s390x.whl", hash = "sha256:1b3189171665f5c8d748ae7fe10a29fff1ebeedeaef57b16f1ea54b1ec0fe514"}, - {file = "cmake-3.27.0-py2.py3-none-musllinux_1_1_x86_64.whl", hash = "sha256:c4c968c188e7518deb463a14e64f3a19f242c9dcf7f24e1dbcc1419690cd54e0"}, - {file = "cmake-3.27.0-py2.py3-none-win32.whl", hash = "sha256:5561aca62b65aac844f3931e74cfeb696e4534de145e3307bf942e735736541e"}, - {file = "cmake-3.27.0-py2.py3-none-win_amd64.whl", hash = "sha256:48be3afe62c9513a49be007896a4058fafec512cb1f269a50126da30aacad97f"}, - {file = "cmake-3.27.0-py2.py3-none-win_arm64.whl", hash = "sha256:6f46a170b0c9c552d52da4346534570f818195dfc4f1d0c03264e24cc348fc60"}, - {file = "cmake-3.27.0.tar.gz", hash = "sha256:d03f0a76a2b96805044ad1178b92aeeb5f695caa6776a32522bb5c430a55b4e8"}, -] - -[package.extras] -test = ["coverage (>=4.2)", "flake8 (>=3.0.4)", "path.py (>=11.5.0)", "pytest (>=3.0.3)", "pytest-cov (>=2.4.0)", "pytest-runner (>=2.9)", "pytest-virtualenv (>=1.7.0)", "scikit-build (>=0.10.0)", "setuptools (>=28.0.0)", "virtualenv (>=15.0.3)", "wheel"] - [[package]] name = "coverage" version = "7.2.7" @@ -336,80 +307,80 @@ six = "*" [[package]] name = "ddtrace" -version = "1.17.1" +version = "1.15.2" description = "Datadog APM client library" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ - {file = "ddtrace-1.17.1-cp27-cp27m-macosx_11_0_x86_64.whl", hash = "sha256:c03f33ada5853507fc500e2232c4ec6b5bc17d0f9300ac383a816a937b31c4ae"}, - {file = "ddtrace-1.17.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:4da15eb2508d87bfe8d426f94e6835168e8554ddf651053efebaa4b1aff31506"}, - {file = "ddtrace-1.17.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:8f0472afa42185b033ba31e423fb0d35a851252eb790757547f032450d80e313"}, - {file = "ddtrace-1.17.1-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:7d563b9712fcfa659f5e2f6b93fd1ac3e9f4ecaa3e00127f05efe2553d446515"}, - {file = "ddtrace-1.17.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:2964efad960a8aae2169b1b8654ec2ea71a633c6649a0dc1249a972eb1b2991b"}, - {file = "ddtrace-1.17.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:ffc707f2be400d5ad68ec321eec79393f0da40a84e30792084aa39b2d764510e"}, - {file = "ddtrace-1.17.1-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:d93337e941a408b6027dbe781efb1576cbb04802af5b88dd70f3905d5c3efb16"}, - {file = "ddtrace-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ecedb514e610027a918e749d98d37a42f60bcbba8bee3d24a4b98c453bc50b8f"}, - {file = "ddtrace-1.17.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:63b493934e6e942151400b0bd904554ce0f5b83c46b21dfb7822551a38d4a80d"}, - {file = "ddtrace-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3a1519cddaae319a3060c8a60c08dace6d1b7903adc9ee85daa5967d04348ce"}, - {file = "ddtrace-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:dbe105ebbf7e6a1ea7c0f367b129019925bef69be8797c7f21d6ca798e4f72ec"}, - {file = "ddtrace-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:fe3543f05175617ac03254409a207110e8c598cbc5cf9d3366dfa3b5f245b6af"}, - {file = "ddtrace-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f95187c1016fe83d177caa69cfef5a6c503dc7d3fbed98071b9254944fcb99c2"}, - {file = "ddtrace-1.17.1-cp310-cp310-win32.whl", hash = "sha256:1cfd31b42445d74afcd2b4ea8ae5263e83b1463c9e720d954ca6ee7b016c29d4"}, - {file = "ddtrace-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:7264e83e9ec88a3306e3deb8f75377b60391e27a6fad473d8398fde2cfb089d6"}, - {file = "ddtrace-1.17.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:45d299e36a01b0bfe6e8f4dbcc72d6392c1bb9c37a3c90ff6e446ab6987334fa"}, - {file = "ddtrace-1.17.1-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:69aaca3e2fa60bf6227b9efc178df95624a05766b0c01669989eb26c2a371441"}, - {file = "ddtrace-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9e147b355ebfa5db7f69e9419a6ca36569de2497b7f96323690044f3882a6b2e"}, - {file = "ddtrace-1.17.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:da4422526d2b904dc0e6a284ab1b4137db23f9e87b73afe7faeccb9f7bc7f38e"}, - {file = "ddtrace-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2b8b5674f900e67234d64403d93af599944e1b55c59ca2c911c608743bc32d9"}, - {file = "ddtrace-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ad1488feeead393123cab86c31214902f687810878f03ace6952f8b9ad7802f3"}, - {file = "ddtrace-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:d2aaf7ac883fd736e7ac2e25e3a46686d77e829da31d93e73b7c25cfc8844289"}, - {file = "ddtrace-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:897a26b37ce1d9e33d386831707c0fc5e707170ddf8061500a3d23dcb01670cb"}, - {file = "ddtrace-1.17.1-cp311-cp311-win32.whl", hash = "sha256:45ee0b553bcb28f4c314bd4e172deb7cddb0f3ce1e02e8db7eb7115479002f38"}, - {file = "ddtrace-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:c826f9e4eedb92d58239e0f89eb33282e938dd6532604c77691966b18c53ced8"}, - {file = "ddtrace-1.17.1-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:525f3dcf98e92c18559035bdec8db67c4868b5c4aea8e28173fc2412fb298986"}, - {file = "ddtrace-1.17.1-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:3919586b6bade3f55f45df86b4bf3625047fb814952b6b959d634cd046c38346"}, - {file = "ddtrace-1.17.1-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:3547e4510dc6e6678ca8d69798a55dd30eda32ec04075d74437b957f6018aa47"}, - {file = "ddtrace-1.17.1-cp35-cp35m-win32.whl", hash = "sha256:336e7f51996e27bed4325afa26bcc9159987bb65a2a0313b7966d9cf51329ab8"}, - {file = "ddtrace-1.17.1-cp35-cp35m-win_amd64.whl", hash = "sha256:cd31b7fef4541583e86e98a32a9bb258b571367e453f682c020a0357e34382f2"}, - {file = "ddtrace-1.17.1-cp36-cp36m-macosx_11_0_x86_64.whl", hash = "sha256:01cf264fa1b87c57a2f468bc1e778cfd85172253060243d380ef808cb4fe508b"}, - {file = "ddtrace-1.17.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e59fd650f0b80ee4f6a6c0859f60968ec494a39621def7498aff2e01ea2786d"}, - {file = "ddtrace-1.17.1-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:828fe6f4ba7ab33d849ab4430860ffe6b97645b922eb4a48485f66a4f750368c"}, - {file = "ddtrace-1.17.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ee7a6a00c6ea226b753e996be31aa63fb4046e38dbe705e33d5b6479dad3e5e"}, - {file = "ddtrace-1.17.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:9aac5e9dc01638c54ed7475d430f6367bcbf84ba0085e93bc817c97d322fa708"}, - {file = "ddtrace-1.17.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:20148f79134e7d1624d06b48459f5bdbb653393d48041833be056da4e0468005"}, - {file = "ddtrace-1.17.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:5851034a6cd10712f89cce08100fd6c18e8f003dd44e95020f8d0c3defd677eb"}, - {file = "ddtrace-1.17.1-cp36-cp36m-win32.whl", hash = "sha256:b2672821bcd0e6d05b3717b35b23ad2c498e6ffa2d409cb4f02675acda841ced"}, - {file = "ddtrace-1.17.1-cp36-cp36m-win_amd64.whl", hash = "sha256:23f3a663c7c4b5970996cd8d02490339781db186da691d9a636d0c6efd74f44c"}, - {file = "ddtrace-1.17.1-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:b83770ce0a3e9cc755d206d7c444b8baca564bed888f36f93f7f832cae45f2db"}, - {file = "ddtrace-1.17.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d2cfa5ab6e12565358de637c6e7471d9ccb953308962ebe9f269213ac15963e5"}, - {file = "ddtrace-1.17.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6148358ea8c263219d34bf685949977dd53410bbe4ad0bab312590c73e053c1f"}, - {file = "ddtrace-1.17.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ec1d7477d27368422f5e3a6849205e6072a9ce22e6729bac289ceddb8e90c94"}, - {file = "ddtrace-1.17.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:44a3f465fd14a0fb4a1afd75d569853d58ccf8a5a098832c6feb30973447c347"}, - {file = "ddtrace-1.17.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:5014019b9e05715affdbfc9aef58fad70d5e3577f9ee26806db010429e5f918d"}, - {file = "ddtrace-1.17.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:59d3d25f901e601cb90165a4447806d1b94dfcff4ad51bf525479f4f7cae8da2"}, - {file = "ddtrace-1.17.1-cp37-cp37m-win32.whl", hash = "sha256:5dde643c651a8e96dec6c3ebb2e1b3e56fa3dff82988eaee206eb0010c56036d"}, - {file = "ddtrace-1.17.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a25b20f830630f3dc45ab8af2be811ff3f0f4f9430688c20003fb6fdedd857e9"}, - {file = "ddtrace-1.17.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:878a0dfa195029f0fe8ae1d9788caada72ba326c90137f3df78a19062ade5836"}, - {file = "ddtrace-1.17.1-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:9587a247fd2c5d02ce64fef5d0317beb0455f94525ef53e7fa8d5268d93e8271"}, - {file = "ddtrace-1.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ae0e740e7cf76ae475fa4bf36df1458b82e2fcf6d90731894afe5c92c42a203"}, - {file = "ddtrace-1.17.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96afa2aaf627caee4afd65b919bf8e1fb17d5aa69ea32b345e8076a39327558e"}, - {file = "ddtrace-1.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b14677d9b8db4d58deae8c5128df61f4148d40d0967e5f33cbbebdcf1e94500f"}, - {file = "ddtrace-1.17.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:891df3133de285e08af4fe1c0b22d322bca49554ef63864187115acec9b7455e"}, - {file = "ddtrace-1.17.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:51e26935bdf779723646eea1b651d429eb49ca8cb7ec1cd5a17e9d8252cd8579"}, - {file = "ddtrace-1.17.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:25aa1c136af010ae435751ba917e7fca4bee5d14e7cfcd95a5488abf46e6eb14"}, - {file = "ddtrace-1.17.1-cp38-cp38-win32.whl", hash = "sha256:52558471cb5a33f1e256388d15a1ac41d2e00e07c3db1abf9dd88c76936b0089"}, - {file = "ddtrace-1.17.1-cp38-cp38-win_amd64.whl", hash = "sha256:88b1e205bab48b101d5c0a162a834bc6d40f55ba5a26a8ce5a90baeb5dd630b8"}, - {file = "ddtrace-1.17.1-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:4701394b010609ea49ea1da184b0427da361089d670fc13eeb516f806d201a4c"}, - {file = "ddtrace-1.17.1-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:1adbd17fd4d4492819737775c9f2ed70b667ad6f866ed123eeda2ef127939f9d"}, - {file = "ddtrace-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0044149ccb10fd732c34385500afb3be41c835a136b2734a1e90bb7b4b81bd41"}, - {file = "ddtrace-1.17.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8e669a67541f353ffb95ae165d77d43842e7d909a1ab47ffeeb1564eadcd9c6f"}, - {file = "ddtrace-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:09cb358184c250d2ebef2535d9c037099f9f5e6e1bb74c0c3f10e31224026956"}, - {file = "ddtrace-1.17.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:98e49005001acecdec2616ea063e743bde782f88b1a8c616349ee29a72d44f7e"}, - {file = "ddtrace-1.17.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:c8a204e83d6422521d233c18213b6e7e266422d93ef1d0c7d0e7802887688e23"}, - {file = "ddtrace-1.17.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:2668f87347b364c6ec8f8c3a5c3da82a2219621756e887eb2873fdcf3793c78d"}, - {file = "ddtrace-1.17.1-cp39-cp39-win32.whl", hash = "sha256:2c2ebebb4704d89714f9c9681acc07d3b84aa29bb719c2bc93c4b9e187f5e113"}, - {file = "ddtrace-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:293f0a50891fc79f477b0a268adf42bca8b9b4944475a6018225ffc1e322afb6"}, - {file = "ddtrace-1.17.1.tar.gz", hash = "sha256:7e1639ccfbf00e6fd610798bf6095c068a4648378e0a2e05571604442b33abb0"}, + {file = "ddtrace-1.15.2-cp27-cp27m-macosx_11_0_x86_64.whl", hash = "sha256:ca0411333fbdb0fafa06d412bbd76ab8d2647cc9dcb8a7833952ce4fe09eb421"}, + {file = "ddtrace-1.15.2-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:e2603749f97a5191b32f710c8ec5248bb58f4f9a1cb337559f93c5f0f8cea33b"}, + {file = "ddtrace-1.15.2-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:8392087809e047f701e38ecc4f2990bcfe399a22c516a1dbcbdff50fb7382a79"}, + {file = "ddtrace-1.15.2-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:2f7649c24a7463be9b86d5f11ac6eaa2014896eaf409e67f3dc813a6bb0ed8b6"}, + {file = "ddtrace-1.15.2-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:dbdbc5bf3b2b56b8e61b241ee372d897b295344e269475f38e837c9bfe03ae2c"}, + {file = "ddtrace-1.15.2-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:23d39c72ad1844977a80d79206d773c3ec1f1346816b9e45427c25ef88597b4e"}, + {file = "ddtrace-1.15.2-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:da458bbbc4de14dd8e8f60aefe42a66c551a9f50c69c6e361acc7edab579a3e4"}, + {file = "ddtrace-1.15.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d07bb0c50d2df7ff9281bea83534db5127cee8ac2f94111c9544d03d49f60613"}, + {file = "ddtrace-1.15.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:499b3e3d0359e492792ecf8ab6efcf4b1991fbaa523338774333e9a2a66d9d37"}, + {file = "ddtrace-1.15.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eedd0937f83e0d7b261960365fec5771f39ced599c90f589548a1738a586799d"}, + {file = "ddtrace-1.15.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7643d20991cd7e1c21e65d8b5c292a9dca8d124f69f9e96cc2b5fb8d47802c3a"}, + {file = "ddtrace-1.15.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:3f6bb76fe33c2e4842236036f78b1bbdd4da0f2b846627ca7d72b01ac49b3076"}, + {file = "ddtrace-1.15.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ebc9b89501c8a557dab43170e4a12e90358130413a87a0276ccaa0038b0636a4"}, + {file = "ddtrace-1.15.2-cp310-cp310-win32.whl", hash = "sha256:c10ca0e3a63310d314ec7fa55d53f4b4434f06c4d321d64d757814679161bf5d"}, + {file = "ddtrace-1.15.2-cp310-cp310-win_amd64.whl", hash = "sha256:6208635442ea52ff3f97b9fc64ac25772cda8f105a607a385e55bf524bceefc5"}, + {file = "ddtrace-1.15.2-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:8524f460be02b402f63b11ad3b1177955c8608f814e1758b87f53f15bf9a7599"}, + {file = "ddtrace-1.15.2-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:5a2dd127a65e12189055818ab72d44d80587acaaf450c65624e0482d63ff9970"}, + {file = "ddtrace-1.15.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b3350c647120fbc3355eb35ce054c88e63bc073d71949f377d59b1152a2ed0f4"}, + {file = "ddtrace-1.15.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:adb76713207f0ef688f68a539f9cb63e19cd149d48d36befb835f67f49395ed7"}, + {file = "ddtrace-1.15.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f8ff5c250c5abfbbbd76a7d3167308a2373ad7e55ecf3c7c26a62fcd2be8a57"}, + {file = "ddtrace-1.15.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:264bed998870b63f548b96f57dd771014cd02ef0b21bb382e745900a7b72ef28"}, + {file = "ddtrace-1.15.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:20bfd8db155167d2ccfddc25b50649338534b12cb00f7ed08514af1eb6a4956e"}, + {file = "ddtrace-1.15.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:72479172bd10f5998188a05b0b4a109ccb2a93467a0aa1e6656d5396c83fb253"}, + {file = "ddtrace-1.15.2-cp311-cp311-win32.whl", hash = "sha256:23bee3d0eb971cc1565caa429620b82f2d69ef648e9c792046b9481188dba9ab"}, + {file = "ddtrace-1.15.2-cp311-cp311-win_amd64.whl", hash = "sha256:65a29d23ecfbc7cc4ca1069a5586aa836ae3978e64251414933432078bc29bc2"}, + {file = "ddtrace-1.15.2-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:3a2852da4a76503211ca8b77a50fc86df36ba15fab04b45a6a17faa386f53839"}, + {file = "ddtrace-1.15.2-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:244180c6decb244c7fda929dc5969b3a510e5a4857239063de1fae139fac9837"}, + {file = "ddtrace-1.15.2-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:46f9ba0c282a62953f03d1add8eae8c80613244bb93a1ff997dad71d07ce6c72"}, + {file = "ddtrace-1.15.2-cp35-cp35m-win32.whl", hash = "sha256:a39dbf1ca657cc3a876143301e5d775e2f9bcf2ed1e9b4366fb3cf9d6a345a82"}, + {file = "ddtrace-1.15.2-cp35-cp35m-win_amd64.whl", hash = "sha256:7cfd9514e82871321e86897fe567c7548fc45da523df591f3e5adc6633a5781c"}, + {file = "ddtrace-1.15.2-cp36-cp36m-macosx_11_0_x86_64.whl", hash = "sha256:3a2978b07d19d4ebf936fde1e455c61b3d88f103f1f9e360b9269fe1a1dc608a"}, + {file = "ddtrace-1.15.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6e7795a7f65a6e844ab57a0b31d400e79c4a1f69d174fab8edc69e6d2db56962"}, + {file = "ddtrace-1.15.2-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aae5306b3b0ec48cb8ade3362629c31bd25999244addff0f4a2f6f3934509894"}, + {file = "ddtrace-1.15.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14fb33bd6d9fa70638d43de7b5170e1c9961d3fbc277314609941e108c45716d"}, + {file = "ddtrace-1.15.2-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:745ce3c9559fa331ef30208ff1ccaafe3ab3c02f2e01177c560c94acd6f4de27"}, + {file = "ddtrace-1.15.2-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:7706d35215d2cca0a89581ec11da56e25742914ae0865b928034ee9ad7278cf3"}, + {file = "ddtrace-1.15.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:0bc18e900d1495deb61093f1af38d94af6a1ca66dd541fd47bd093c3f3b80b4a"}, + {file = "ddtrace-1.15.2-cp36-cp36m-win32.whl", hash = "sha256:b13f4042ef3f391714aca5ca1f03ff3c24c1d201ab5af02f0405335aa5602ff5"}, + {file = "ddtrace-1.15.2-cp36-cp36m-win_amd64.whl", hash = "sha256:eb32e3b3d0f472447b3d427a075007135b3c39488c1fe0f1e097863f326a439b"}, + {file = "ddtrace-1.15.2-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:0953fd9a2555801d68674bb4905f64805efe1e02b3f11def21eb7655be046717"}, + {file = "ddtrace-1.15.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9436ec9cc00b70730d2c1777f11aca7f4863a49ddd27d0b1478e84c1a7667b6f"}, + {file = "ddtrace-1.15.2-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f7215b21c1eaf56b38bf46c66193db3736ecadeb9ae1b9ca780a91addbaa9853"}, + {file = "ddtrace-1.15.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15a5f7155b99fe9393bfa4f0e4ef2610ddf59e70aefcf99a95acae8b31e29cc4"}, + {file = "ddtrace-1.15.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:df103a600c2901dc54929ef58dee41887a0bb558efbf7e41a7489bd6264fcf44"}, + {file = "ddtrace-1.15.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:d51a73238ad8ceff4232ffa94b860d61187b325e7fab746044dafa312d6bc415"}, + {file = "ddtrace-1.15.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:bfc5777204c0c34465fc4ce38d8d1268d9f95ffcbf7e4025e9a5d3e87d3e17c3"}, + {file = "ddtrace-1.15.2-cp37-cp37m-win32.whl", hash = "sha256:9516dbfc974af9632d75e9c32b38e695b88ea18ebfa4580dd0f768bc05272fba"}, + {file = "ddtrace-1.15.2-cp37-cp37m-win_amd64.whl", hash = "sha256:a510252a3d5be6c29db2c69cbd2535268532e8d568fae06b295a06041e1b969d"}, + {file = "ddtrace-1.15.2-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:82995243719c87aefc85d7df0e1ae61bba8ae1f805d48cbaf2132beb215f1968"}, + {file = "ddtrace-1.15.2-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:ca5dd51910a81451d236fccdbf5d3ca8e284aa3be56f08db92644f85ef88c56e"}, + {file = "ddtrace-1.15.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d76f485769c035df3ede4ad9830bac06aa8b69ac4617f2eb1251b1094468009"}, + {file = "ddtrace-1.15.2-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4dd5f5e477021b8810b2b685e1e16ba5a99f31239e22abc71794688b7f3e6e4d"}, + {file = "ddtrace-1.15.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4ec73676c60cc3cf08430f19a59daccbbb5770edc74ad15a99bf4237a40d0fb"}, + {file = "ddtrace-1.15.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6b140f11b89d902174df05e8b9c1eb1b522a63e6c60c5d68ccac8913bb371bbb"}, + {file = "ddtrace-1.15.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:c7c8a0e140d28e49cf8cd96cdec8e17232c5525ed5c154729b8afb6cb93a8e2b"}, + {file = "ddtrace-1.15.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:0112d258c3a681a63e5f057b9e3ee8504b60d773d95baf195462d9ff4096caa9"}, + {file = "ddtrace-1.15.2-cp38-cp38-win32.whl", hash = "sha256:6ea7b80eb8019a70c999ef8cfd34fd6078a2ae154007d124d5e642531bf1a9d6"}, + {file = "ddtrace-1.15.2-cp38-cp38-win_amd64.whl", hash = "sha256:282b8c9b46d7a8450325299cf348a0f1d8f9f34d174a0ea402bc1a1df4ad7cf3"}, + {file = "ddtrace-1.15.2-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:53b171404b59c1e030ea614e194d1483fb42437a02ffdd7f4a45175613dd7cb4"}, + {file = "ddtrace-1.15.2-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:9ba06236dd8bd64776b7b734dd9421709670fef090857448e75c97acb30cdce7"}, + {file = "ddtrace-1.15.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e6abe5ba4396c9f7633cab68d0e81c5fd94f7c77b046b3ee969eded068a522d7"}, + {file = "ddtrace-1.15.2-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:61a1b48f97a07e2f422ec01bb23861716300cebe4afd917ab36bb4db68904da4"}, + {file = "ddtrace-1.15.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86e186dc66802e2d71b94330c1635fd4c3f881a1bb71747be162a57b7602daaa"}, + {file = "ddtrace-1.15.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:762b5a0777454299c4ac62177578969ed551c973063f87a8825d9d073e5250ce"}, + {file = "ddtrace-1.15.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:889d359f4382fde41893ba5c00b412cbea8502e1b6bb6c83bf87fa6e63cbfabe"}, + {file = "ddtrace-1.15.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c4d3c9ce3456181e535b9da42bde7c850dc7224039fd083e95b05010c2ff9748"}, + {file = "ddtrace-1.15.2-cp39-cp39-win32.whl", hash = "sha256:69e47d28327a7afb263c16cc6bf1227e1b2bf1fdb2d559dce913a138a3f36807"}, + {file = "ddtrace-1.15.2-cp39-cp39-win_amd64.whl", hash = "sha256:da780fbfe6dd749ee571a468b8e86f1fd4f51626d35626c2356f8a440efe0dfa"}, + {file = "ddtrace-1.15.2.tar.gz", hash = "sha256:e5c1a5965ea8d8260586769102d79522bc7d9758a271252bb58ee05d6c5cd9a8"}, ] [package.dependencies] @@ -419,7 +390,6 @@ bytecode = [ {version = "*", markers = "python_version >= \"3.8\""}, ] cattrs = {version = "*", markers = "python_version >= \"3.7\""} -cmake = {version = ">=3.24.2", markers = "python_version >= \"3.6\""} ddsketch = ">=2.0.1" envier = "*" importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} @@ -844,4 +814,4 @@ dev = ["boto3", "flake8", "httpretty", "nose2", "requests"] [metadata] lock-version = "2.0" python-versions = ">=3.7.0,<4" -content-hash = "eca28227b90c7b8efbec239508900cd72c220e0b43431552f45db99bc12b617d" +content-hash = "e65f36c4d06687bde43b04ec23d980e60dd755362e54032b4293a3bf0d5c2054" diff --git a/pyproject.toml b/pyproject.toml index 8e4a3bd99..cab0abe7b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -26,7 +26,7 @@ classifiers = [ python = ">=3.7.0,<4" datadog = ">=0.41.0,<1.0.0" wrapt = "^1.11.2" -ddtrace = "^1.15.0" +ddtrace = "1.15.2" urllib3 = "<2.0.0" importlib_metadata = {version = "*", python = "<3.8"} boto3 = { version = "^1.10.33", optional = true } diff --git a/tests/integration/snapshots/logs/async-metrics_python310.log b/tests/integration/snapshots/logs/async-metrics_python310.log index 5fc4c6603..d746aba4f 100644 --- a/tests/integration/snapshots/logs/async-metrics_python310.log +++ b/tests/integration/snapshots/logs/async-metrics_python310.log @@ -68,8 +68,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -128,7 +127,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -154,7 +152,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -235,8 +232,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -291,7 +287,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -317,7 +312,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -392,8 +386,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -447,7 +440,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -473,7 +465,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -558,8 +549,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -618,7 +608,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -644,7 +633,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -725,8 +713,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -781,7 +768,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -807,7 +793,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -885,8 +870,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -941,7 +925,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -967,7 +950,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1046,8 +1028,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -1102,7 +1083,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1128,7 +1108,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1206,8 +1185,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -1262,7 +1240,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1288,7 +1265,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1372,8 +1348,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -1430,7 +1405,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1456,7 +1430,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python37.log b/tests/integration/snapshots/logs/async-metrics_python37.log index 10fcca4cf..e28bb9b39 100644 --- a/tests/integration/snapshots/logs/async-metrics_python37.log +++ b/tests/integration/snapshots/logs/async-metrics_python37.log @@ -68,8 +68,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -128,7 +127,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -154,7 +152,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -235,8 +232,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -291,7 +287,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -317,7 +312,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -392,8 +386,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -447,7 +440,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -473,7 +465,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -558,8 +549,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -618,7 +608,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -644,7 +633,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -725,8 +713,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -781,7 +768,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -807,7 +793,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -885,8 +870,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -941,7 +925,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -967,7 +950,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1046,8 +1028,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -1102,7 +1083,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1128,7 +1108,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1206,8 +1185,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -1262,7 +1240,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1288,7 +1265,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1372,8 +1348,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -1430,7 +1405,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1456,7 +1430,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python38.log b/tests/integration/snapshots/logs/async-metrics_python38.log index eb7b9d8b3..c146ef0fd 100644 --- a/tests/integration/snapshots/logs/async-metrics_python38.log +++ b/tests/integration/snapshots/logs/async-metrics_python38.log @@ -68,8 +68,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -128,7 +127,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -154,7 +152,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -235,8 +232,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -291,7 +287,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -317,7 +312,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -392,8 +386,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -447,7 +440,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -473,7 +465,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -558,8 +549,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -618,7 +608,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -644,7 +633,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -725,8 +713,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -781,7 +768,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -807,7 +793,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -885,8 +870,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -941,7 +925,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -967,7 +950,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1046,8 +1028,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -1102,7 +1083,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1128,7 +1108,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1206,8 +1185,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -1262,7 +1240,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1288,7 +1265,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1372,8 +1348,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -1430,7 +1405,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1456,7 +1430,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python39.log b/tests/integration/snapshots/logs/async-metrics_python39.log index af584ad12..bc0fb4e85 100644 --- a/tests/integration/snapshots/logs/async-metrics_python39.log +++ b/tests/integration/snapshots/logs/async-metrics_python39.log @@ -68,8 +68,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -128,7 +127,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -154,7 +152,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -235,8 +232,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -291,7 +287,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -317,7 +312,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -392,8 +386,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -447,7 +440,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -473,7 +465,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -558,8 +549,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -618,7 +608,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -644,7 +633,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -725,8 +713,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -781,7 +768,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -807,7 +793,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -885,8 +870,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -941,7 +925,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -967,7 +950,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1046,8 +1028,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -1102,7 +1083,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1128,7 +1108,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1206,8 +1185,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -1262,7 +1240,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1288,7 +1265,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1372,8 +1348,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -1430,7 +1405,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1456,7 +1430,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python310.log b/tests/integration/snapshots/logs/sync-metrics_python310.log index a3b7f553c..fc71ef6da 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python310.log +++ b/tests/integration/snapshots/logs/sync-metrics_python310.log @@ -48,8 +48,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -108,7 +107,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -134,7 +132,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -167,7 +164,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -234,8 +230,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -290,7 +285,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -316,7 +310,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -349,7 +342,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -410,8 +402,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -465,7 +456,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -491,7 +481,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -524,7 +513,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -595,8 +583,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -655,7 +642,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -681,7 +667,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -714,7 +699,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -781,8 +765,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -837,7 +820,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -863,7 +845,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -896,7 +877,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -960,8 +940,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -1016,7 +995,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1042,7 +1020,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1075,7 +1052,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1140,8 +1116,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -1196,7 +1171,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1222,7 +1196,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1255,7 +1228,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1319,8 +1291,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -1375,7 +1346,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1401,7 +1371,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1434,7 +1403,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1504,8 +1472,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -1562,7 +1529,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1588,7 +1554,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1621,7 +1586,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", diff --git a/tests/integration/snapshots/logs/sync-metrics_python37.log b/tests/integration/snapshots/logs/sync-metrics_python37.log index df14e89ef..5bc76a998 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python37.log +++ b/tests/integration/snapshots/logs/sync-metrics_python37.log @@ -48,8 +48,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -108,7 +107,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -134,7 +132,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -167,7 +164,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -234,8 +230,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -290,7 +285,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -316,7 +310,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -349,7 +342,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -410,8 +402,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -465,7 +456,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -491,7 +481,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -524,7 +513,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -595,8 +583,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -655,7 +642,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -681,7 +667,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -714,7 +699,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -781,8 +765,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -837,7 +820,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -863,7 +845,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -896,7 +877,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -960,8 +940,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -1016,7 +995,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1042,7 +1020,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1075,7 +1052,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1140,8 +1116,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -1196,7 +1171,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1222,7 +1196,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1255,7 +1228,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1319,8 +1291,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -1375,7 +1346,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1401,7 +1371,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1434,7 +1403,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1504,8 +1472,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -1562,7 +1529,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1588,7 +1554,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1621,7 +1586,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", diff --git a/tests/integration/snapshots/logs/sync-metrics_python38.log b/tests/integration/snapshots/logs/sync-metrics_python38.log index d800af7a7..213e64aa7 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python38.log +++ b/tests/integration/snapshots/logs/sync-metrics_python38.log @@ -48,8 +48,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -108,7 +107,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -134,7 +132,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -167,7 +164,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -234,8 +230,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -290,7 +285,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -316,7 +310,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -349,7 +342,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -410,8 +402,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -465,7 +456,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -491,7 +481,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -524,7 +513,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -595,8 +583,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -655,7 +642,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -681,7 +667,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -714,7 +699,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -781,8 +765,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -837,7 +820,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -863,7 +845,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -896,7 +877,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -960,8 +940,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -1016,7 +995,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1042,7 +1020,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1075,7 +1052,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1140,8 +1116,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -1196,7 +1171,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1222,7 +1196,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1255,7 +1228,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1319,8 +1291,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -1375,7 +1346,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1401,7 +1371,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1434,7 +1403,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1504,8 +1472,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -1562,7 +1529,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1588,7 +1554,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1621,7 +1586,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", diff --git a/tests/integration/snapshots/logs/sync-metrics_python39.log b/tests/integration/snapshots/logs/sync-metrics_python39.log index 66dd2a4b1..54ab2bad2 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -48,8 +48,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -108,7 +107,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -134,7 +132,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -167,7 +164,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -234,8 +230,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -290,7 +285,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -316,7 +310,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -349,7 +342,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -410,8 +402,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -465,7 +456,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -491,7 +481,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -524,7 +513,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -595,8 +583,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -655,7 +642,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -681,7 +667,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -694,7 +679,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] } HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}]} -END Duration: XXXX ms Memory Used: XXXX MB { "traces": [ [ @@ -715,7 +699,6 @@ END Duration: XXXX ms Memory Used: XXXX MB "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -733,6 +716,7 @@ END Duration: XXXX ms Memory Used: XXXX MB ] ] } +END Duration: XXXX ms Memory Used: XXXX MB START { "m": "aws.lambda.enhanced.invocations", @@ -781,8 +765,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -837,7 +820,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -863,7 +845,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -896,7 +877,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -960,8 +940,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -1016,7 +995,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1042,7 +1020,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1075,7 +1052,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1140,8 +1116,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -1196,7 +1171,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1222,7 +1196,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1255,7 +1228,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1319,8 +1291,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -1375,7 +1346,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1401,7 +1371,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1434,7 +1403,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1504,8 +1472,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python", - "_dd.peer.service.source": "peer.service" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -1562,7 +1529,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1588,7 +1554,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1621,7 +1586,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", From 5951821ecd72480f5482f791f7465ec43a112c46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?jordan=20gonz=C3=A1lez?= <30836115+duncanista@users.noreply.github.com> Date: Thu, 27 Jul 2023 23:15:31 -0400 Subject: [PATCH 071/403] feat: support Python 3.11 (#355) * update scripts * update gh actions * update `pyproject.toml` * update `README.md` * add snapshots * fix: ints * fix the potential circular import --------- Co-authored-by: AJ Stuyvenberg Co-authored-by: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> --- .github/workflows/build.yml | 4 +- README.md | 2 +- pyproject.toml | 1 + scripts/add_new_region.sh | 4 +- scripts/build_layers.sh | 2 +- scripts/check_layer_size.sh | 2 +- scripts/list_layers.sh | 2 +- scripts/publish_layers.sh | 8 +- scripts/run_integration_tests.sh | 5 +- scripts/run_tests.sh | 2 +- scripts/sign_layers.sh | 2 + .../logs/async-metrics_python311.log | 1444 +++++++++++++++ .../snapshots/logs/sync-metrics_python311.log | 1606 +++++++++++++++++ tests/test_tracing.py | 2 +- 14 files changed, 3070 insertions(+), 16 deletions(-) create mode 100644 tests/integration/snapshots/logs/async-metrics_python311.log create mode 100644 tests/integration/snapshots/logs/sync-metrics_python311.log diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index bc76a699c..97a4fbbe4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -41,7 +41,7 @@ jobs: strategy: max-parallel: 4 matrix: - python-version: ['3.7', '3.8', '3.9', '3.10'] + python-version: ['3.7', '3.8', '3.9', '3.10', '3.11'] steps: - name: Checkout @@ -68,7 +68,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - runtime-param: ['3.7', '3.8', '3.9', '3.10'] + runtime-param: ['3.7', '3.8', '3.9', '3.10', '3.11'] steps: - name: Checkout uses: actions/checkout@v3 diff --git a/README.md b/README.md index 87ec805c6..757c929d0 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ [![Slack](https://chat.datadoghq.com/badge.svg?bg=632CA6)](https://chat.datadoghq.com/) [![License](https://img.shields.io/badge/license-Apache--2.0-blue)](https://github.com/DataDog/datadog-lambda-python/blob/main/LICENSE) -Datadog Lambda Library for Python (3.7, 3.8, 3.9, and 3.10) enables [enhanced Lambda metrics](https://docs.datadoghq.com/serverless/enhanced_lambda_metrics), [distributed tracing](https://docs.datadoghq.com/serverless/distributed_tracing), and [custom metric submission](https://docs.datadoghq.com/serverless/custom_metrics) from AWS Lambda functions. +Datadog Lambda Library for Python (3.7, 3.8, 3.9, 3.10, and 3.11) enables [enhanced Lambda metrics](https://docs.datadoghq.com/serverless/enhanced_lambda_metrics), [distributed tracing](https://docs.datadoghq.com/serverless/distributed_tracing), and [custom metric submission](https://docs.datadoghq.com/serverless/custom_metrics) from AWS Lambda functions. ## Installation diff --git a/pyproject.toml b/pyproject.toml index cab0abe7b..edcc020ac 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -20,6 +20,7 @@ classifiers = [ "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", ] [tool.poetry.dependencies] diff --git a/scripts/add_new_region.sh b/scripts/add_new_region.sh index 12a27b695..1b1753cfd 100755 --- a/scripts/add_new_region.sh +++ b/scripts/add_new_region.sh @@ -12,8 +12,8 @@ set -e OLD_REGION='us-east-1' -LAYER_NAMES=("Datadog-Python37" "Datadog-Python38" "Datadog-Python38-ARM" "Datadog-Python39" "Datadog-Python39-ARM" "Datadog-Python310" "Datadog-Python310-ARM") -PYTHON_VERSIONS_FOR_AWS_CLI=("python3.7" "python3.8" "python3.8" "python3.9" "python3.9" "python3.10" "python3.10") +LAYER_NAMES=("Datadog-Python37" "Datadog-Python38" "Datadog-Python38-ARM" "Datadog-Python39" "Datadog-Python39-ARM" "Datadog-Python310" "Datadog-Python310-ARM" "Datadog-Python311" "Datadog-Python311-ARM") +PYTHON_VERSIONS_FOR_AWS_CLI=("python3.7" "python3.8" "python3.8" "python3.9" "python3.9" "python3.10" "python3.10" "python3.11" "python3.11") NEW_REGION=$1 publish_layer() { diff --git a/scripts/build_layers.sh b/scripts/build_layers.sh index 1a35a5953..0312ff081 100755 --- a/scripts/build_layers.sh +++ b/scripts/build_layers.sh @@ -14,7 +14,7 @@ set -e LAYER_DIR=".layers" LAYER_FILES_PREFIX="datadog_lambda_py" -AVAILABLE_PYTHON_VERSIONS=("3.7" "3.8" "3.9" "3.10") +AVAILABLE_PYTHON_VERSIONS=("3.7" "3.8" "3.9" "3.10" "3.11") # Determine which Python versions to build layers for if [ -z "$PYTHON_VERSION" ]; then diff --git a/scripts/check_layer_size.sh b/scripts/check_layer_size.sh index e3da8ed52..5d8399087 100755 --- a/scripts/check_layer_size.sh +++ b/scripts/check_layer_size.sh @@ -14,7 +14,7 @@ MAX_LAYER_UNCOMPRESSED_SIZE_KB=$(expr 24 \* 1024) LAYER_FILES_PREFIX="datadog_lambda_py" LAYER_DIR=".layers" -VERSIONS=("3.7" "3.8" "3.9" "3.10") +VERSIONS=("3.7" "3.8" "3.9" "3.10" "3.11") for version in "${VERSIONS[@]}" do diff --git a/scripts/list_layers.sh b/scripts/list_layers.sh index 2039f31e8..c0b541afc 100755 --- a/scripts/list_layers.sh +++ b/scripts/list_layers.sh @@ -10,7 +10,7 @@ set -e -LAYER_NAMES=("Datadog-Python37" "Datadog-Python38" "Datadog-Python38-ARM" "Datadog-Python39" "Datadog-Python39-ARM" "Datadog-Python310" "Datadog-Python310-ARM") +LAYER_NAMES=("Datadog-Python37" "Datadog-Python38" "Datadog-Python38-ARM" "Datadog-Python39" "Datadog-Python39-ARM" "Datadog-Python310" "Datadog-Python310-ARM" "Datadog-Python311" "Datadog-Python311-ARM") AVAILABLE_REGIONS=$(aws ec2 describe-regions | jq -r '.[] | .[] | .RegionName') LAYERS_MISSING_REGIONS=() diff --git a/scripts/publish_layers.sh b/scripts/publish_layers.sh index 88b2741f5..d379cb67e 100755 --- a/scripts/publish_layers.sh +++ b/scripts/publish_layers.sh @@ -13,10 +13,10 @@ set -e # Makes sure any subprocesses will be terminated with this process trap "pkill -P $$; exit 1;" INT -PYTHON_VERSIONS_FOR_AWS_CLI=("python3.7" "python3.8" "python3.8" "python3.9" "python3.9" "python3.10" "python3.10") -LAYER_PATHS=(".layers/datadog_lambda_py-amd64-3.7.zip" ".layers/datadog_lambda_py-amd64-3.8.zip" ".layers/datadog_lambda_py-arm64-3.8.zip" ".layers/datadog_lambda_py-amd64-3.9.zip" ".layers/datadog_lambda_py-arm64-3.9.zip" ".layers/datadog_lambda_py-amd64-3.10.zip" ".layers/datadog_lambda_py-arm64-3.10.zip") -AVAILABLE_LAYERS=("Datadog-Python37" "Datadog-Python38" "Datadog-Python38-ARM" "Datadog-Python39" "Datadog-Python39-ARM" "Datadog-Python310" "Datadog-Python310-ARM") -ARCHS=("amd64" "amd64" "amd64""amd64" "amd64" "arm64" "amd64" "arm64") +PYTHON_VERSIONS_FOR_AWS_CLI=("python3.7" "python3.8" "python3.8" "python3.9" "python3.9" "python3.10" "python3.10" "python3.11" "python3.11") +LAYER_PATHS=(".layers/datadog_lambda_py-amd64-3.7.zip" ".layers/datadog_lambda_py-amd64-3.8.zip" ".layers/datadog_lambda_py-arm64-3.8.zip" ".layers/datadog_lambda_py-amd64-3.9.zip" ".layers/datadog_lambda_py-arm64-3.9.zip" ".layers/datadog_lambda_py-amd64-3.10.zip" ".layers/datadog_lambda_py-arm64-3.10.zip" ".layers/datadog_lambda_py-amd64-3.11.zip" ".layers/datadog_lambda_py-arm64-3.11.zip") +AVAILABLE_LAYERS=("Datadog-Python37" "Datadog-Python38" "Datadog-Python38-ARM" "Datadog-Python39" "Datadog-Python39-ARM" "Datadog-Python310" "Datadog-Python310-ARM" "Datadog-Python311" "Datadog-Python311-ARM") +ARCHS=("amd64" "amd64" "amd64""amd64" "amd64" "arm64" "amd64" "arm64" "amd64" "arm64") AVAILABLE_REGIONS=$(aws ec2 describe-regions | jq -r '.[] | .[] | .RegionName') # Check that the layer files exist diff --git a/scripts/run_integration_tests.sh b/scripts/run_integration_tests.sh index 85a3dd2f2..f3ee5f36c 100755 --- a/scripts/run_integration_tests.sh +++ b/scripts/run_integration_tests.sh @@ -11,7 +11,7 @@ set -e # These values need to be in sync with serverless.yml, where there needs to be a function # defined for every handler_runtime combination LAMBDA_HANDLERS=("async-metrics" "sync-metrics") -RUNTIMES=("python37" "python38" "python39" "python310") +RUNTIMES=("python37" "python38" "python39" "python310" "python311") LOGS_WAIT_SECONDS=20 @@ -32,8 +32,9 @@ python37=("python3.7" "3.7" $(xxd -l 4 -c 4 -p < /dev/random)) python38=("python3.8" "3.8" $(xxd -l 4 -c 4 -p < /dev/random)) python39=("python3.9" "3.9" $(xxd -l 4 -c 4 -p < /dev/random)) python310=("python3.10" "3.10" $(xxd -l 4 -c 4 -p < /dev/random)) +python311=("python3.11" "3.11" $(xxd -l 4 -c 4 -p < /dev/random)) -PARAMETERS_SETS=("python37" "python38" "python39" "python310") +PARAMETERS_SETS=("python37" "python38" "python39" "python310" "python311") if [ -z "$RUNTIME_PARAM" ]; then echo "Python version not specified, running for all python versions." diff --git a/scripts/run_tests.sh b/scripts/run_tests.sh index a5bf09b7e..193a6d001 100755 --- a/scripts/run_tests.sh +++ b/scripts/run_tests.sh @@ -8,7 +8,7 @@ # Run unit tests in Docker set -e -PYTHON_VERSIONS=("3.7" "3.8" "3.9" "3.10") +PYTHON_VERSIONS=("3.7" "3.8" "3.9" "3.10" "3.11") for python_version in "${PYTHON_VERSIONS[@]}" do diff --git a/scripts/sign_layers.sh b/scripts/sign_layers.sh index 166093a44..3c9aa6628 100755 --- a/scripts/sign_layers.sh +++ b/scripts/sign_layers.sh @@ -16,6 +16,8 @@ LAYER_FILES=( "datadog_lambda_py-arm64-3.9.zip" "datadog_lambda_py-amd64-3.10.zip" "datadog_lambda_py-arm64-3.10.zip" + "datadog_lambda_py-amd64-3.11.zip" + "datadog_lambda_py-arm64-3.11.zip" ) SIGNING_PROFILE_NAME="DatadogLambdaSigningProfile" diff --git a/tests/integration/snapshots/logs/async-metrics_python311.log b/tests/integration/snapshots/logs/async-metrics_python311.log new file mode 100644 index 000000000..ff437d8e4 --- /dev/null +++ b/tests/integration/snapshots/logs/async-metrics_python311.log @@ -0,0 +1,1444 @@ +INIT_START Runtime Version: python:3.11.vX Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python311", + "resource:integration-tests-python-XXXX-async-metrics_python311", + "cold_start:true", + "memorysize:1024", + "runtime:python3.11", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "XXXX.execute-api.us-east-2.amazonaws.com", + "resource": "GET /", + "name": "aws.apigateway", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.apigateway.rest", + "http.url": "XXXX.execute-api.us-east-2.amazonaws.com/", + "endpoint": "/", + "http.method": "GET", + "resource_names": "GET /", + "apiid": "XXXX", + "apiname": "XXXX", + "stage": "Prod", + "request_id": "XXXX", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "http.status_code": "200", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python311", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "true", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python311", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python311", + "functionname": "integration-tests-python-XXXX-async-metrics_python311", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "api-gateway", + "function_trigger.event_source_arn": "XXXX", + "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", + "http.url_details.path": "/Prod/", + "http.method": "GET", + "http.status_code": "200" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python311", + "resource:integration-tests-python-XXXX-async-metrics_python311", + "cold_start:false", + "memorysize:1024", + "runtime:python3.11", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "dynamodb", + "resource": "ExampleTableWithStream", + "name": "aws.dynamodb", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.dynamodb", + "resource_names": "ExampleTableWithStream", + "tablename": "ExampleTableWithStream", + "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", + "event_id": "XXXX", + "event_name": "INSERT", + "event_version": "1.1", + "stream_view_type": "NEW_AND_OLD_IMAGES", + "size_bytes": "26", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python311", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python311", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python311", + "functionname": "integration-tests-python-XXXX-async-metrics_python311", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "dynamodb", + "function_trigger.event_source_arn": "XXXX" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python311", + "resource:integration-tests-python-XXXX-async-metrics_python311", + "cold_start:false", + "memorysize:1024", + "runtime:python3.11", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "eventbridge", + "resource": "eventbridge.custom.event.sender", + "name": "aws.eventbridge", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.eventbridge", + "resource_names": "eventbridge.custom.event.sender", + "detail_type": "testdetail", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python311", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python311", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python311", + "functionname": "integration-tests-python-XXXX-async-metrics_python311", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "eventbridge" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python311", + "resource:integration-tests-python-XXXX-async-metrics_python311", + "cold_start:false", + "memorysize:1024", + "runtime:python3.11", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", + "resource": "GET /httpapi/get", + "name": "aws.httpapi", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.httpapi", + "endpoint": "/httpapi/get", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.method": "GET", + "http.protocol": "HTTP/1.1", + "http.source_ip": "XXXX", + "http.user_agent": "XXXX/7.64.1", + "resource_names": "GET /httpapi/get", + "request_id": "XXXX", + "apiid": "XXXX", + "apiname": "XXXX", + "stage": "$default", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "http.status_code": "200", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python311", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python311", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python311", + "functionname": "integration-tests-python-XXXX-async-metrics_python311", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "api-gateway", + "function_trigger.event_source_arn": "XXXX$default", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url_details.path": "/httpapi/get", + "http.method": "GET", + "http.status_code": "200" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python311", + "resource:integration-tests-python-XXXX-async-metrics_python311", + "cold_start:false", + "memorysize:1024", + "runtime:python3.11", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "kinesis", + "resource": "EXAMPLE", + "name": "aws.kinesis", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.kinesis", + "resource_names": "EXAMPLE", + "streamname": "EXAMPLE", + "shardid": "shardId-XXXX", + "event_source_arn": "arn:aws:kinesis:EXAMPLE", + "event_id": "XXXX", + "event_name": "aws:kinesis:record", + "event_version": "1.0", + "partition_key": "XXXX", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python311", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python311", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python311", + "functionname": "integration-tests-python-XXXX-async-metrics_python311", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "kinesis", + "function_trigger.event_source_arn": "XXXX" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python311", + "resource:integration-tests-python-XXXX-async-metrics_python311", + "cold_start:false", + "memorysize:1024", + "runtime:python3.11", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "s3", + "resource": "example-bucket", + "name": "aws.s3", + "error": 0, + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.s3", + "resource_names": "example-bucket", + "event_name": "ObjectCreated:Put", + "bucketname": "example-bucket", + "bucket_arn": "arn:aws:s3:::example-bucket", + "object_key": "test/key", + "object_size": "1024", + "object_etag": "XXXX", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python311", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python311", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python311", + "functionname": "integration-tests-python-XXXX-async-metrics_python311", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "s3", + "function_trigger.event_source_arn": "XXXX" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python311", + "resource:integration-tests-python-XXXX-async-metrics_python311", + "cold_start:false", + "memorysize:1024", + "runtime:python3.11", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "sns", + "resource": "sns-lambda", + "name": "aws.sns", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.sns", + "resource_names": "sns-lambda", + "topicname": "sns-lambda", + "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", + "message_id": "XXXX", + "type": "Notification", + "subject": "TestInvoke", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python311", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python311", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python311", + "functionname": "integration-tests-python-XXXX-async-metrics_python311", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "sns", + "function_trigger.event_source_arn": "XXXX" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python311", + "resource:integration-tests-python-XXXX-async-metrics_python311", + "cold_start:false", + "memorysize:1024", + "runtime:python3.11", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "sqs", + "resource": "my-queue", + "name": "aws.sqs", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.sqs", + "resource_names": "my-queue", + "queuename": "my-queue", + "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", + "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", + "sender_id": "AIDAIENQZJOLO23YVJ4VO", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python311", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python311", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python311", + "functionname": "integration-tests-python-XXXX-async-metrics_python311", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "sqs", + "function_trigger.event_source_arn": "XXXX" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python311", + "resource:integration-tests-python-XXXX-async-metrics_python311", + "cold_start:false", + "memorysize:1024", + "runtime:python3.11", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", + "resource": "$default", + "name": "aws.apigateway.websocket", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.apigateway.websocket", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com$default", + "endpoint": "$default", + "resource_names": "$default", + "apiid": "XXXX", + "apiname": "XXXX", + "stage": "dev", + "request_id": "XXXX", + "connection_id": "XXXX=", + "event_type": "MESSAGE", + "message_direction": "IN", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "http.status_code": "200", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python311", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python311", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python311", + "functionname": "integration-tests-python-XXXX-async-metrics_python311", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "api-gateway", + "function_trigger.event_source_arn": "XXXX", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.status_code": "200" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB diff --git a/tests/integration/snapshots/logs/sync-metrics_python311.log b/tests/integration/snapshots/logs/sync-metrics_python311.log new file mode 100644 index 000000000..b83c99208 --- /dev/null +++ b/tests/integration/snapshots/logs/sync-metrics_python311.log @@ -0,0 +1,1606 @@ +INIT_START Runtime Version: python:3.11.vX Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python311", + "resource:integration-tests-python-XXXX-sync-metrics_python311", + "cold_start:true", + "memorysize:1024", + "runtime:python3.11", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "XXXX.execute-api.us-east-2.amazonaws.com", + "resource": "GET /", + "name": "aws.apigateway", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.apigateway.rest", + "http.url": "XXXX.execute-api.us-east-2.amazonaws.com/", + "endpoint": "/", + "http.method": "GET", + "resource_names": "GET /", + "apiid": "XXXX", + "apiname": "XXXX", + "stage": "Prod", + "request_id": "XXXX", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "http.status_code": "200", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python311", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "true", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python311", + "functionname": "integration-tests-python-XXXX-sync-metrics_python311", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "api-gateway", + "function_trigger.event_source_arn": "XXXX", + "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", + "http.url_details.path": "/Prod/", + "http.method": "GET", + "http.status_code": "200" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}]} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python311", + "resource:integration-tests-python-XXXX-sync-metrics_python311", + "cold_start:false", + "memorysize:1024", + "runtime:python3.11", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "dynamodb", + "resource": "ExampleTableWithStream", + "name": "aws.dynamodb", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.dynamodb", + "resource_names": "ExampleTableWithStream", + "tablename": "ExampleTableWithStream", + "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", + "event_id": "XXXX", + "event_name": "INSERT", + "event_version": "1.1", + "stream_view_type": "NEW_AND_OLD_IMAGES", + "size_bytes": "26", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python311", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python311", + "functionname": "integration-tests-python-XXXX-sync-metrics_python311", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "dynamodb", + "function_trigger.event_source_arn": "XXXX" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}]} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python311", + "resource:integration-tests-python-XXXX-sync-metrics_python311", + "cold_start:false", + "memorysize:1024", + "runtime:python3.11", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "eventbridge", + "resource": "eventbridge.custom.event.sender", + "name": "aws.eventbridge", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.eventbridge", + "resource_names": "eventbridge.custom.event.sender", + "detail_type": "testdetail", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python311", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python311", + "functionname": "integration-tests-python-XXXX-sync-metrics_python311", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "eventbridge" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}]} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python311", + "resource:integration-tests-python-XXXX-sync-metrics_python311", + "cold_start:false", + "memorysize:1024", + "runtime:python3.11", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", + "resource": "GET /httpapi/get", + "name": "aws.httpapi", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.httpapi", + "endpoint": "/httpapi/get", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.method": "GET", + "http.protocol": "HTTP/1.1", + "http.source_ip": "XXXX", + "http.user_agent": "XXXX/7.64.1", + "resource_names": "GET /httpapi/get", + "request_id": "XXXX", + "apiid": "XXXX", + "apiname": "XXXX", + "stage": "$default", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "http.status_code": "200", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python311", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python311", + "functionname": "integration-tests-python-XXXX-sync-metrics_python311", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "api-gateway", + "function_trigger.event_source_arn": "XXXX$default", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url_details.path": "/httpapi/get", + "http.method": "GET", + "http.status_code": "200" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}]} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python311", + "resource:integration-tests-python-XXXX-sync-metrics_python311", + "cold_start:false", + "memorysize:1024", + "runtime:python3.11", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "kinesis", + "resource": "EXAMPLE", + "name": "aws.kinesis", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.kinesis", + "resource_names": "EXAMPLE", + "streamname": "EXAMPLE", + "shardid": "shardId-XXXX", + "event_source_arn": "arn:aws:kinesis:EXAMPLE", + "event_id": "XXXX", + "event_name": "aws:kinesis:record", + "event_version": "1.0", + "partition_key": "XXXX", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python311", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python311", + "functionname": "integration-tests-python-XXXX-sync-metrics_python311", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "kinesis", + "function_trigger.event_source_arn": "XXXX" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}]} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python311", + "resource:integration-tests-python-XXXX-sync-metrics_python311", + "cold_start:false", + "memorysize:1024", + "runtime:python3.11", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "s3", + "resource": "example-bucket", + "name": "aws.s3", + "error": 0, + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.s3", + "resource_names": "example-bucket", + "event_name": "ObjectCreated:Put", + "bucketname": "example-bucket", + "bucket_arn": "arn:aws:s3:::example-bucket", + "object_key": "test/key", + "object_size": "1024", + "object_etag": "XXXX", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python311", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python311", + "functionname": "integration-tests-python-XXXX-sync-metrics_python311", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "s3", + "function_trigger.event_source_arn": "XXXX" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}]} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python311", + "resource:integration-tests-python-XXXX-sync-metrics_python311", + "cold_start:false", + "memorysize:1024", + "runtime:python3.11", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "sns", + "resource": "sns-lambda", + "name": "aws.sns", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.sns", + "resource_names": "sns-lambda", + "topicname": "sns-lambda", + "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", + "message_id": "XXXX", + "type": "Notification", + "subject": "TestInvoke", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python311", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python311", + "functionname": "integration-tests-python-XXXX-sync-metrics_python311", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "sns", + "function_trigger.event_source_arn": "XXXX" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}]} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python311", + "resource:integration-tests-python-XXXX-sync-metrics_python311", + "cold_start:false", + "memorysize:1024", + "runtime:python3.11", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "sqs", + "resource": "my-queue", + "name": "aws.sqs", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.sqs", + "resource_names": "my-queue", + "queuename": "my-queue", + "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", + "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", + "sender_id": "AIDAIENQZJOLO23YVJ4VO", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python311", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python311", + "functionname": "integration-tests-python-XXXX-sync-metrics_python311", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "sqs", + "function_trigger.event_source_arn": "XXXX" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}]} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python311", + "resource:integration-tests-python-XXXX-sync-metrics_python311", + "cold_start:false", + "memorysize:1024", + "runtime:python3.11", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", + "resource": "$default", + "name": "aws.apigateway.websocket", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.apigateway.websocket", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com$default", + "endpoint": "$default", + "resource_names": "$default", + "apiid": "XXXX", + "apiname": "XXXX", + "stage": "dev", + "request_id": "XXXX", + "connection_id": "XXXX=", + "event_type": "MESSAGE", + "message_direction": "IN", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "http.status_code": "200", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python311", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python311", + "functionname": "integration-tests-python-XXXX-sync-metrics_python311", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "api-gateway", + "function_trigger.event_source_arn": "XXXX", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.status_code": "200" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}]} +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "_dd.p.dm": "-0", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.agent_psr": 1, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB diff --git a/tests/test_tracing.py b/tests/test_tracing.py index f5f41f94e..978c0f1fd 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -589,7 +589,7 @@ def setUp(self): self.mock_is_lambda_context = patcher.start() self.mock_is_lambda_context.return_value = True self.addCleanup(patcher.stop) - patcher = patch("ddtrace.tracer.context_provider.activate") + patcher = patch("datadog_lambda.tracing.tracer.context_provider.activate") self.mock_activate = patcher.start() self.mock_activate.return_value = True self.addCleanup(patcher.stop) From faf5b6b648cacadc0b027962dcd022837861f04d Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Mon, 31 Jul 2023 10:14:30 -0400 Subject: [PATCH 072/403] Bump version to 4.77.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index edcc020ac..cf14f7c46 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "4.75.0" +version = "4.77.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 63f708208965730c4e51bf03bd8e0e1edfcaa507 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?jordan=20gonz=C3=A1lez?= <30836115+duncanista@users.noreply.github.com> Date: Mon, 7 Aug 2023 10:57:29 -0400 Subject: [PATCH 073/403] feat: EventBridge to SQS support (#358) * add eventbridge to sqs inferred span support also allowed to properly extract trace context * add unit tests * lint and fix event * lint * fix unpacking * lint * update docs --- datadog_lambda/tracing.py | 71 +++++++++++++++++++++--- tests/event_samples/eventbridge-sqs.json | 21 +++++++ tests/test_tracing.py | 50 +++++++++++++++++ 3 files changed, 134 insertions(+), 8 deletions(-) create mode 100644 tests/event_samples/eventbridge-sqs.json diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 198332a3e..92c3e01c1 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -229,10 +229,29 @@ def create_sns_event(message): def extract_context_from_sqs_or_sns_event_or_context(event, lambda_context): """ - Extract Datadog trace context from the first SQS message attributes. + Extract Datadog trace context from an SQS event. + + The extraction chain goes as follows: + EB => SQS (First records body contains EB context), or + SNS => SQS (First records body contains SNS context), or + SQS or SNS (`messageAttributes` for SQS context, + `MessageAttributes` for SNS context), else + Lambda Context. Falls back to lambda context if no trace data is found in the SQS message attributes. """ + + # EventBridge => SQS + try: + ( + trace_id, + parent_id, + sampling_priority, + ) = _extract_context_from_eventbridge_sqs_event(event) + return trace_id, parent_id, sampling_priority + except Exception: + logger.debug("Failed extracting context as EventBridge to SQS.") + try: first_record = event.get("Records")[0] @@ -283,6 +302,30 @@ def extract_context_from_sqs_or_sns_event_or_context(event, lambda_context): return extract_context_from_lambda_context(lambda_context) +def _extract_context_from_eventbridge_sqs_event(event): + """ + Extracts Datadog trace context from an SQS event triggered by + EventBridge. + + This is only possible if first record in `Records` contains a + `body` field which contains the EventBridge `detail` as a JSON string. + """ + try: + first_record = event.get("Records")[0] + if "body" in first_record: + body_str = first_record.get("body", {}) + body = json.loads(body_str) + + detail = body.get("detail") + dd_context = detail.get("_datadog") + trace_id = dd_context.get(TraceHeader.TRACE_ID) + parent_id = dd_context.get(TraceHeader.PARENT_ID) + sampling_priority = dd_context.get(TraceHeader.SAMPLING_PRIORITY) + return trace_id, parent_id, sampling_priority + except Exception: + raise + + def extract_context_from_eventbridge_event(event, lambda_context): """ Extract datadog trace context from an EventBridge message's Details. @@ -995,21 +1038,33 @@ def create_inferred_span_from_sqs_event(event, context): } start_time = int(request_time_epoch) / 1000 - # logic to deal with SNS => SQS event - sns_span = None + upstream_span = None if "body" in event_record: body_str = event_record.get("body", {}) try: body = json.loads(body_str) + + # logic to deal with SNS => SQS event if body.get("Type", "") == "Notification" and "TopicArn" in body: logger.debug("Found SNS message inside SQS event") - sns_span = create_inferred_span_from_sns_event( + upstream_span = create_inferred_span_from_sns_event( create_sns_event(body), context ) - sns_span.finish(finish_time=start_time) + upstream_span.finish(finish_time=start_time) + + # EventBridge => SQS + elif body.get("detail"): + detail = body.get("detail") + if detail.get("_datadog"): + logger.debug("Found an EventBridge message inside SQS event") + upstream_span = create_inferred_span_from_eventbridge_event( + body, context + ) + upstream_span.finish(finish_time=start_time) + except Exception as e: logger.debug( - "Unable to create SNS span from SQS message, with error %s" % e + "Unable to create upstream span from SQS message, with error %s" % e ) pass @@ -1021,8 +1076,8 @@ def create_inferred_span_from_sqs_event(event, context): if span: span.set_tags(tags) span.start = start_time - if sns_span: - span.parent_id = sns_span.span_id + if upstream_span: + span.parent_id = upstream_span.span_id return span diff --git a/tests/event_samples/eventbridge-sqs.json b/tests/event_samples/eventbridge-sqs.json new file mode 100644 index 000000000..606abc094 --- /dev/null +++ b/tests/event_samples/eventbridge-sqs.json @@ -0,0 +1,21 @@ +{ + "Records": [ + { + "messageId": "e995e54f-1724-41fa-82c0-8b81821f854e", + "receiptHandle": "AQEB4mIfRcyqtzn1X5Ss+ConhTejVGc+qnAcmu3/Z9ZvbNkaPcpuDLX/bzvPD/ZkAXJUXZcemGSJmd7L3snZHKMP2Ck8runZiyl4mubiLb444pZvdiNPuGRJ6a3FvgS/GQPzho/9nNMyOi66m8Viwh70v4EUCPGO4JmD3TTDAUrrcAnqU4WSObjfC/NAp9bI6wH2CEyAYEfex6Nxplbl/jBf9ZUG0I3m3vQd0Q4l4gd4jIR4oxQUglU2Tldl4Kx5fMUAhTRLAENri6HsY81avBkKd9FAuxONlsITB5uj02kOkvLlRGEcalqsKyPJ7AFaDLrOLaL3U+yReroPEJ5R5nwhLOEbeN5HROlZRXeaAwZOIN8BjqdeooYTIOrtvMEVb7a6OPLMdH1XB+ddevtKAH8K9Tm2ZjpaA7dtBGh1zFVHzBk=", + "body": "{\"version\":\"0\",\"id\":\"af718b2a-b987-e8c0-7a2b-a188fad2661a\",\"detail-type\":\"my.Detail\",\"source\":\"my.Source\",\"account\":\"425362996713\",\"time\":\"2023-08-03T22:49:03Z\",\"region\":\"us-east-1\",\"resources\":[],\"detail\":{\"text\":\"Hello, world!\",\"_datadog\":{\"x-datadog-trace-id\":\"7379586022458917877\",\"x-datadog-parent-id\":\"2644033662113726488\",\"x-datadog-sampling-priority\":\"1\",\"x-datadog-tags\":\"_dd.p.dm=-0\",\"traceparent\":\"00-000000000000000066698e63821a03f5-24b17e9b6476c018-01\",\"tracestate\":\"dd=t.dm:-0;s:1\"}}}", + "attributes": { + "ApproximateReceiveCount": "1", + "AWSTraceHeader": "Root=1-64cc2edd-112fbf1701d1355973a11d57;Parent=7d5a9776024b2d42;Sampled=0", + "SentTimestamp": "1691102943638", + "SenderId": "AIDAJXNJGGKNS7OSV23OI", + "ApproximateFirstReceiveTimestamp": "1691102943647" + }, + "messageAttributes": {}, + "md5OfBody": "93d9f0cd8886d1e000a1a0b7007bffc4", + "eventSource": "aws:sqs", + "eventSourceARN": "arn:aws:sqs:us-east-1:425362996713:eventbridge-sqs-queue", + "awsRegion": "us-east-1" + } + ] +} diff --git a/tests/test_tracing.py b/tests/test_tracing.py index 978c0f1fd..24e6dcdd5 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -1785,6 +1785,44 @@ def test_create_inferred_span_from_eventbridge_event(self): self.assertEqual(span.get_tag(InferredSpanInfo.TAG_SOURCE), "self") self.assertEqual(span.get_tag(InferredSpanInfo.SYNCHRONICITY), "async") + def test_create_inferred_span_from_eventbridge_sqs_event(self): + event_sample_name = "eventbridge-sqs" + test_file = event_samples + event_sample_name + ".json" + with open(test_file, "r") as event: + event = json.load(event) + ctx = get_mock_context() + ctx.aws_request_id = "123" + span = create_inferred_span(event, ctx) + self.assertEqual(span.get_tag("operation_name"), "aws.sqs") + self.assertEqual( + span.service, + "sqs", + ) + self.assertEqual( + span.get_tag("http.url"), + None, + ) + self.assertEqual(span.get_tag("endpoint"), None) + self.assertEqual(span.get_tag("http.method"), None) + self.assertEqual( + span.get_tag("resource_names"), + "eventbridge-sqs-queue", + ) + self.assertEqual(span.get_tag("request_id"), None) + self.assertEqual(span.get_tag("queuename"), "eventbridge-sqs-queue") + self.assertEqual( + span.get_tag("event_source_arn"), + "arn:aws:sqs:us-east-1:425362996713:eventbridge-sqs-queue", + ) + self.assertEqual( + span.get_tag("sender_id"), + "AIDAJXNJGGKNS7OSV23OI", + ) + self.assertEqual(span.start, 1691102943.638) + self.assertEqual(span.span_type, "web") + self.assertEqual(span.get_tag(InferredSpanInfo.TAG_SOURCE), "self") + self.assertEqual(span.get_tag(InferredSpanInfo.SYNCHRONICITY), "async") + def test_extract_context_from_eventbridge_event(self): event_sample_source = "eventbridge-custom" test_file = event_samples + event_sample_source + ".json" @@ -1806,6 +1844,18 @@ def test_extract_dd_trace_context_for_eventbridge(self): self.assertEqual(context["trace-id"], "12345") self.assertEqual(context["parent-id"], "67890") + def test_extract_context_from_eventbridge_sqs_event(self): + event_sample_source = "eventbridge-sqs" + test_file = event_samples + event_sample_source + ".json" + with open(test_file, "r") as event: + event = json.load(event) + + ctx = get_mock_context() + context, source, event_type = extract_dd_trace_context(event, ctx) + self.assertEqual(context["trace-id"], "7379586022458917877") + self.assertEqual(context["parent-id"], "2644033662113726488") + self.assertEqual(context["sampling-priority"], "1") + def test_extract_context_from_sqs_event_with_string_msg_attr(self): event_sample_source = "sqs-string-msg-attribute" test_file = event_samples + event_sample_source + ".json" From 8cd7e0dc83bad1359a6c11a1229edd1c6e3d935d Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Mon, 7 Aug 2023 12:26:51 -0400 Subject: [PATCH 074/403] Bump version to 4.78.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index cf14f7c46..70e819979 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "4.77.0" +version = "4.78.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 1ddb8e83a21a669c3e7e27af564fe5714da23046 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Tue, 22 Aug 2023 07:58:28 -0400 Subject: [PATCH 075/403] feat: Support DD_TRACE_OTEL_ENABLED env var (#361) * feat: Support DD_TRACE_OTEL_ENABLED env var * fix: lint * fix: black * fix: Seems that only the ENV var must be set for ddtrace to care * fix: remove space --- datadog_lambda/tracing.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 92c3e01c1..a9c223e30 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -41,6 +41,16 @@ EventSubtypes, ) +dd_trace_otel_enabled = ( + os.environ.get("DD_TRACE_OTEL_ENABLED", "false").lower() == "true" +) +if dd_trace_otel_enabled: + from opentelemetry.trace import set_tracer_provider + from ddtrace.opentelemetry import TracerProvider + + set_tracer_provider(TracerProvider()) + + logger = logging.getLogger(__name__) dd_trace_context = {} From 75d785822c44451dbd51c593de005f62756c02f7 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Tue, 22 Aug 2023 11:44:19 -0400 Subject: [PATCH 076/403] change the traceback format to print in one line (#362) * change the traceback format to print in one line --- datadog_lambda/wrapper.py | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 7b9e87f9f..f9675c689 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -125,8 +125,8 @@ def __new__(cls, func): else: logger.debug("datadog_lambda_wrapper already wrapped") return _NoopDecorator(func) - except Exception: - traceback.print_exc() + except Exception as e: + logger.error(format_err_with_traceback(e)) return func def __init__(self, func): @@ -204,8 +204,8 @@ def __init__(self, func): patch_all() logger.debug("datadog_lambda_wrapper initialized") - except Exception: - traceback.print_exc() + except Exception as e: + logger.error(format_err_with_traceback(e)) def __call__(self, event, context, **kwargs): """Executes when the wrapped function gets called""" @@ -291,8 +291,8 @@ def _before(self, event, context): if profiling_env_var and is_new_sandbox(): self.prof.start(stop_on_exit=False, profile_children=True) logger.debug("datadog_lambda_wrapper _before() done") - except Exception: - traceback.print_exc() + except Exception as e: + logger.error(format_err_with_traceback(e)) def _after(self, event, context): try: @@ -358,8 +358,14 @@ def _after(self, event, context): event.get("requestContext", {}).get("requestId") ) logger.debug("datadog_lambda_wrapper _after() done") - except Exception: - traceback.print_exc() + except Exception as e: + logger.error(format_err_with_traceback(e)) + + +def format_err_with_traceback(e): + return "Error {}. Traceback: {}".format( + e, traceback.format_exc().replace("\n", "\r") + ) datadog_lambda_wrapper = _LambdaDecorator From 8f2686cdcbc8d25b122e3ba24bdec3e5dd3a8f7d Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Thu, 31 Aug 2023 15:07:16 -0400 Subject: [PATCH 077/403] use docker-cp when building layers (#366) --- scripts/build_layers.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/build_layers.sh b/scripts/build_layers.sh index 0312ff081..976ba5d1e 100755 --- a/scripts/build_layers.sh +++ b/scripts/build_layers.sh @@ -51,9 +51,9 @@ function docker_build_zip { --platform linux/${arch} \ --load - # Run the image by runtime tag, tar its generatd `python` directory to sdout, - # then extract it to a temp directory. - docker run datadog-lambda-python-${arch}:$1 tar cf - python | tar -xf - -C $temp_dir + # Run the image by runtime tag and copy the output /build/python to the temp dir + dockerId=$(docker create datadog-lambda-python-${arch}:$1) + docker cp $dockerId:/build/python $temp_dir/python # Zip to destination, and keep directory structure as based in $temp_dir From 1bb4cdafd0cca8d9873c30a38fcdeffb6393f2e6 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Thu, 31 Aug 2023 16:59:31 -0400 Subject: [PATCH 078/403] Update aws-vault usage to sso (#365) --- scripts/publish_prod.sh | 6 +++--- scripts/publish_sandbox.sh | 4 ++-- scripts/run_integration_tests.sh | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/scripts/publish_prod.sh b/scripts/publish_prod.sh index a6ea0dee6..e8838c5a1 100755 --- a/scripts/publish_prod.sh +++ b/scripts/publish_prod.sh @@ -34,7 +34,7 @@ fi # Ensure AWS access before proceeding ddsaml2aws login -a govcloud-us1-fed-human-engineering AWS_PROFILE=govcloud-us1-fed-human-engineering aws sts get-caller-identity -aws-vault exec prod-engineering -- aws sts get-caller-identity +aws-vault exec sso-prod-engineering -- aws sts get-caller-identity # Ensure pypi registry access read -p "Do you have access to PyPI (y/n)?" CONT @@ -64,11 +64,11 @@ echo "Building layers..." echo echo "Signing layers for commercial AWS regions" -aws-vault exec prod-engineering -- ./scripts/sign_layers.sh prod +aws-vault exec sso-prod-engineering -- ./scripts/sign_layers.sh prod echo echo "Publishing layers to commercial AWS regions" -VERSION=$LAYER_VERSION aws-vault exec prod-engineering -- ./scripts/publish_layers.sh +VERSION=$LAYER_VERSION aws-vault exec sso-prod-engineering -- ./scripts/publish_layers.sh echo "Publishing layers to GovCloud AWS regions" ddsaml2aws login -a govcloud-us1-fed-human-engineering diff --git a/scripts/publish_sandbox.sh b/scripts/publish_sandbox.sh index 4dec5889b..8f7d1de54 100755 --- a/scripts/publish_sandbox.sh +++ b/scripts/publish_sandbox.sh @@ -4,8 +4,8 @@ set -e ./scripts/build_layers.sh -aws-vault exec serverless-sandbox-account-admin -- ./scripts/sign_layers.sh sandbox -aws-vault exec serverless-sandbox-account-admin -- ./scripts/publish_layers.sh +aws-vault exec sso-serverless-sandbox-account-admin -- ./scripts/sign_layers.sh sandbox +aws-vault exec sso-serverless-sandbox-account-admin -- ./scripts/publish_layers.sh # Automatically create PR against github.com/DataDog/documentation # If you'd like to test, please uncomment the below line diff --git a/scripts/run_integration_tests.sh b/scripts/run_integration_tests.sh index f3ee5f36c..beb91921c 100755 --- a/scripts/run_integration_tests.sh +++ b/scripts/run_integration_tests.sh @@ -2,9 +2,9 @@ # Usage - run commands from repo root: # To check if new changes to the layer cause changes to any snapshots: -# BUILD_LAYERS=true DD_API_KEY=XXXX aws-vault exec serverless-sandbox-account-admin -- ./scripts/run_integration_tests +# BUILD_LAYERS=true DD_API_KEY=XXXX aws-vault exec sso-serverless-sandbox-account-admin -- ./scripts/run_integration_tests # To regenerate snapshots: -# UPDATE_SNAPSHOTS=true DD_API_KEY=XXXX aws-vault exec serverless-sandbox-account-admin -- ./scripts/run_integration_tests +# UPDATE_SNAPSHOTS=true DD_API_KEY=XXXX aws-vault exec sso-serverless-sandbox-account-admin -- ./scripts/run_integration_tests set -e From 5958375cbe042d8d0aa78c22a1a0187610616c1e Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Thu, 31 Aug 2023 17:32:35 -0400 Subject: [PATCH 079/403] Bump version to 4.79.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 70e819979..e5c2b09a7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "4.78.0" +version = "4.79.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 080274d830f6c04fbbbde883e9be2b1f0e84c2e9 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Mon, 11 Sep 2023 11:11:40 -0400 Subject: [PATCH 080/403] enhancing tag_object (#367) * enhancing tag_object * format --- datadog_lambda/tag_object.py | 17 +++++++--- tests/test_tag_object.py | 61 ++++++++++++++++++++++++++++++------ 2 files changed, 64 insertions(+), 14 deletions(-) diff --git a/datadog_lambda/tag_object.py b/datadog_lambda/tag_object.py index 02dc3ebef..151801f62 100644 --- a/datadog_lambda/tag_object.py +++ b/datadog_lambda/tag_object.py @@ -28,18 +28,27 @@ def tag_object(span, key, obj, depth=0): redacted = _redact_val(key, obj[0:5000]) return span.set_tag(key, redacted) if isinstance(obj, int) or isinstance(obj, float) or isinstance(obj, Decimal): - return span.set_tag(key, obj) + return span.set_tag(key, str(obj)) if isinstance(obj, list): for k, v in enumerate(obj): formatted_key = "{}.{}".format(key, k) tag_object(span, formatted_key, v, depth) return - if isinstance(obj, object): - for k in obj: - v = obj.get(k) + if hasattr(obj, "items"): + for k, v in obj.items(): formatted_key = "{}.{}".format(key, k) tag_object(span, formatted_key, v, depth) return + if hasattr(obj, "to_dict"): + for k, v in obj.to_dict().items(): + formatted_key = "{}.{}".format(key, k) + tag_object(span, formatted_key, v, depth) + return + try: + value_as_str = str(obj) + except Exception: + value_as_str = "UNKNOWN" + return span.set_tag(key, value_as_str) def _should_try_string(obj): diff --git a/tests/test_tag_object.py b/tests/test_tag_object.py index 67622afe7..8e5ac3aa3 100644 --- a/tests/test_tag_object.py +++ b/tests/test_tag_object.py @@ -19,12 +19,12 @@ def test_tag_object(self): tag_object(spanMock, "function.request", payload) spanMock.set_tag.assert_has_calls( [ - call("function.request.vals.0.thingOne", 1), - call("function.request.vals.1.thingTwo", 2), + call("function.request.vals.0.thingOne", "1"), + call("function.request.vals.1.thingTwo", "2"), call("function.request.hello", "world"), call("function.request.anotherThing.blah", None), call("function.request.anotherThing.foo", "bar"), - call("function.request.anotherThing.nice", True), + call("function.request.anotherThing.nice", "True"), ], True, ) @@ -40,12 +40,12 @@ def test_redacted_tag_object(self): tag_object(spanMock, "function.request", payload) spanMock.set_tag.assert_has_calls( [ - call("function.request.vals.0.thingOne", 1), - call("function.request.vals.1.thingTwo", 2), + call("function.request.vals.0.thingOne", "1"), + call("function.request.vals.1.thingTwo", "2"), call("function.request.authorization", "redacted"), call("function.request.anotherThing.blah", None), call("function.request.anotherThing.password", "redacted"), - call("function.request.anotherThing.nice", True), + call("function.request.anotherThing.nice", "True"), ], True, ) @@ -62,7 +62,7 @@ def test_json_tag_object(self): call("function.request.token", "redacted"), call("function.request.jsonString.stringifyThisJson.0.here", "is"), call("function.request.jsonString.stringifyThisJson.0.an", "object"), - call("function.request.jsonString.stringifyThisJson.0.number", 1), + call("function.request.jsonString.stringifyThisJson.0.number", "1"), ], True, ) @@ -79,18 +79,59 @@ def test_unicode_tag_object(self): call("function.request.token", "redacted"), call("function.request.jsonString.stringifyThisJson.0.here", "is"), call("function.request.jsonString.stringifyThisJson.0.an", "object"), - call("function.request.jsonString.stringifyThisJson.0.number", 1), + call("function.request.jsonString.stringifyThisJson.0.number", "1"), ], True, ) def test_decimal_tag_object(self): - payload = {"myValue": Decimal(500.50)} + payload = {"myValue": Decimal(500.5)} spanMock = MagicMock() tag_object(spanMock, "function.request", payload) spanMock.set_tag.assert_has_calls( [ - call("function.request.myValue", Decimal(500.50)), + call("function.request.myValue", "500.5"), + ], + True, + ) + + class CustomResponse(object): + """ + For example, chalice.app.Response class + """ + + def __init__(self, body, headers=None, status_code: int = 200): + self.body = body + if headers is None: + headers = {} + self.headers = headers + self.status_code = status_code + + def __str__(self): + return str(self.body) + + class ResponseHasToDict(CustomResponse): + def to_dict(self): + return self.headers + + def test_custom_response(self): + payload = self.CustomResponse({"hello": "world"}, {"key1": "val1"}, 200) + spanMock = MagicMock() + tag_object(spanMock, "function.response", payload) + spanMock.set_tag.assert_has_calls( + [ + call("function.response", "{'hello': 'world'}"), + ], + True, + ) + + def test_custom_response_to_dict(self): + payload = self.ResponseHasToDict({"hello": "world"}, {"key1": "val1"}, 200) + spanMock = MagicMock() + tag_object(spanMock, "function.response", payload) + spanMock.set_tag.assert_has_calls( + [ + call("function.response.key1", "val1"), ], True, ) From 962813a53c812b9ca8e56c0f48fb0734bdbdbcfe Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Mon, 11 Sep 2023 16:30:26 -0400 Subject: [PATCH 081/403] Bump version to 4.80.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index e5c2b09a7..6227fdf01 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "4.79.0" +version = "4.80.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 29535481f0a3026cc93de68231added6ba7025c9 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Mon, 16 Oct 2023 13:09:05 -0400 Subject: [PATCH 082/403] feat: Pin dd trace below 2 (#374) * feat: Pin dd trace below 2 * feat: poetry install * feat: Fix call to MagicMock which causes ddtrace to fail msgpacking. Replace with a real span. * feat: Update snapshots * feat: strip binaries * feat: whitespace to appease editor lint --- Dockerfile | 2 + poetry.lock | 398 +++++++++--------- pyproject.toml | 2 +- .../logs/async-metrics_python310.log | 90 ++-- .../logs/async-metrics_python311.log | 90 ++-- .../snapshots/logs/async-metrics_python37.log | 90 ++-- .../snapshots/logs/async-metrics_python38.log | 90 ++-- .../snapshots/logs/async-metrics_python39.log | 90 ++-- .../snapshots/logs/sync-metrics_python310.log | 108 +++-- .../snapshots/logs/sync-metrics_python311.log | 108 +++-- .../snapshots/logs/sync-metrics_python37.log | 108 +++-- .../snapshots/logs/sync-metrics_python38.log | 108 +++-- .../snapshots/logs/sync-metrics_python39.log | 108 +++-- tests/test_wrapper.py | 5 +- 14 files changed, 888 insertions(+), 509 deletions(-) diff --git a/Dockerfile b/Dockerfile index 656b109fc..7bd1f6cfd 100644 --- a/Dockerfile +++ b/Dockerfile @@ -16,6 +16,8 @@ RUN find ./python/lib/$runtime/site-packages -name \*.pyc -delete # Remove botocore (40MB) to reduce package size. aws-xray-sdk # installs it, while it's already provided by the Lambda Runtime. +RUN find . -name '*.so' -exec strip -g {} \; + RUN rm -rf ./python/lib/$runtime/site-packages/botocore* RUN rm -rf ./python/lib/$runtime/site-packages/setuptools RUN rm -rf ./python/lib/$runtime/site-packages/jsonschema/tests diff --git a/poetry.lock b/poetry.lock index 5b473ed9a..a8197fea9 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.5.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand. [[package]] name = "attrs" @@ -23,38 +23,41 @@ tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pyte [[package]] name = "boto3" -version = "1.28.13" +version = "1.28.62" description = "The AWS SDK for Python" optional = true python-versions = ">= 3.7" files = [ - {file = "boto3-1.28.13-py3-none-any.whl", hash = "sha256:b2d178c8a56fe3e4c9b123dccdff20e9555d12a597b72627fa659aa6295e238a"}, - {file = "boto3-1.28.13.tar.gz", hash = "sha256:db6443fd2c65d9f35f671b03bacb0592b62d06884395ed65d75922ccddc34c2e"}, + {file = "boto3-1.28.62-py3-none-any.whl", hash = "sha256:0dfa2fc96ccafce4feb23044d6cba8b25075ad428a0c450d369d099c6a1059d2"}, + {file = "boto3-1.28.62.tar.gz", hash = "sha256:148eeba0f1867b3db5b3e5ae2997d75a94d03fad46171374a0819168c36f7ed0"}, ] [package.dependencies] -botocore = ">=1.31.13,<1.32.0" +botocore = ">=1.31.62,<1.32.0" jmespath = ">=0.7.1,<2.0.0" -s3transfer = ">=0.6.0,<0.7.0" +s3transfer = ">=0.7.0,<0.8.0" [package.extras] crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.31.13" +version = "1.31.62" description = "Low-level, data-driven core of boto 3." optional = true python-versions = ">= 3.7" files = [ - {file = "botocore-1.31.13-py3-none-any.whl", hash = "sha256:78b96afbd88b8bd4c0967611a4cedddd9ea33d8601309dc351f81cbb5479d976"}, - {file = "botocore-1.31.13.tar.gz", hash = "sha256:9a5080ea2a444f0447a7a1a79f64252ae2a1417b6c13a54656ee991cb610dd4e"}, + {file = "botocore-1.31.62-py3-none-any.whl", hash = "sha256:be792d806afc064694a2d0b9b25779f3ca0c1584b29a35ac32e67f0064ddb8b7"}, + {file = "botocore-1.31.62.tar.gz", hash = "sha256:272b78ac65256b6294cb9cdb0ac484d447ad3a85642e33cb6a3b1b8afee15a4c"}, ] [package.dependencies] jmespath = ">=0.7.1,<2.0.0" python-dateutil = ">=2.1,<3.0.0" -urllib3 = ">=1.25.4,<1.27" +urllib3 = [ + {version = ">=1.25.4,<1.27", markers = "python_version < \"3.10\""}, + {version = ">=1.25.4,<2.1", markers = "python_version >= \"3.10\""}, +] [package.extras] crt = ["awscrt (==0.16.26)"] @@ -72,13 +75,13 @@ files = [ [[package]] name = "bytecode" -version = "0.14.2" +version = "0.15.0" description = "Python module to generate and modify bytecode" optional = false python-versions = ">=3.8" files = [ - {file = "bytecode-0.14.2-py3-none-any.whl", hash = "sha256:e368a2b9bbd7c986133c951250db94fb32f774cfc49752a9db9073bcf9899762"}, - {file = "bytecode-0.14.2.tar.gz", hash = "sha256:386378d9025d68ddb144870ae74330a492717b11b8c9164c4034e88add808f0c"}, + {file = "bytecode-0.15.0-py3-none-any.whl", hash = "sha256:a66718dc1d246b4fec52b5850c15592344a56c8bdb28fd243c895ccf00f8371f"}, + {file = "bytecode-0.15.0.tar.gz", hash = "sha256:0908a8348cabf366b5c1865daabcdc0d650cb0cbdeb1750cc90564852f81945c"}, ] [package.dependencies] @@ -122,86 +125,101 @@ files = [ [[package]] name = "charset-normalizer" -version = "3.2.0" +version = "3.3.0" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.7.0" files = [ - {file = "charset-normalizer-3.2.0.tar.gz", hash = "sha256:3bb3d25a8e6c0aedd251753a79ae98a093c7e7b471faa3aa9a93a81431987ace"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b87549028f680ca955556e3bd57013ab47474c3124dc069faa0b6545b6c9710"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7c70087bfee18a42b4040bb9ec1ca15a08242cf5867c58726530bdf3945672ed"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a103b3a7069b62f5d4890ae1b8f0597618f628b286b03d4bc9195230b154bfa9"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94aea8eff76ee6d1cdacb07dd2123a68283cb5569e0250feab1240058f53b623"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:db901e2ac34c931d73054d9797383d0f8009991e723dab15109740a63e7f902a"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b0dac0ff919ba34d4df1b6131f59ce95b08b9065233446be7e459f95554c0dc8"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:193cbc708ea3aca45e7221ae58f0fd63f933753a9bfb498a3b474878f12caaad"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09393e1b2a9461950b1c9a45d5fd251dc7c6f228acab64da1c9c0165d9c7765c"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:baacc6aee0b2ef6f3d308e197b5d7a81c0e70b06beae1f1fcacffdbd124fe0e3"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:bf420121d4c8dce6b889f0e8e4ec0ca34b7f40186203f06a946fa0276ba54029"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:c04a46716adde8d927adb9457bbe39cf473e1e2c2f5d0a16ceb837e5d841ad4f"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:aaf63899c94de41fe3cf934601b0f7ccb6b428c6e4eeb80da72c58eab077b19a"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d62e51710986674142526ab9f78663ca2b0726066ae26b78b22e0f5e571238dd"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-win32.whl", hash = "sha256:04e57ab9fbf9607b77f7d057974694b4f6b142da9ed4a199859d9d4d5c63fe96"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:48021783bdf96e3d6de03a6e39a1171ed5bd7e8bb93fc84cc649d11490f87cea"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4957669ef390f0e6719db3613ab3a7631e68424604a7b448f079bee145da6e09"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:46fb8c61d794b78ec7134a715a3e564aafc8f6b5e338417cb19fe9f57a5a9bf2"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f779d3ad205f108d14e99bb3859aa7dd8e9c68874617c72354d7ecaec2a054ac"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f25c229a6ba38a35ae6e25ca1264621cc25d4d38dca2942a7fce0b67a4efe918"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2efb1bd13885392adfda4614c33d3b68dee4921fd0ac1d3988f8cbb7d589e72a"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f30b48dd7fa1474554b0b0f3fdfdd4c13b5c737a3c6284d3cdc424ec0ffff3a"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:246de67b99b6851627d945db38147d1b209a899311b1305dd84916f2b88526c6"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9bd9b3b31adcb054116447ea22caa61a285d92e94d710aa5ec97992ff5eb7cf3"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:8c2f5e83493748286002f9369f3e6607c565a6a90425a3a1fef5ae32a36d749d"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:3170c9399da12c9dc66366e9d14da8bf7147e1e9d9ea566067bbce7bb74bd9c2"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7a4826ad2bd6b07ca615c74ab91f32f6c96d08f6fcc3902ceeedaec8cdc3bcd6"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:3b1613dd5aee995ec6d4c69f00378bbd07614702a315a2cf6c1d21461fe17c23"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9e608aafdb55eb9f255034709e20d5a83b6d60c054df0802fa9c9883d0a937aa"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-win32.whl", hash = "sha256:f2a1d0fd4242bd8643ce6f98927cf9c04540af6efa92323e9d3124f57727bfc1"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:681eb3d7e02e3c3655d1b16059fbfb605ac464c834a0c629048a30fad2b27489"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c57921cda3a80d0f2b8aec7e25c8aa14479ea92b5b51b6876d975d925a2ea346"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41b25eaa7d15909cf3ac4c96088c1f266a9a93ec44f87f1d13d4a0e86c81b982"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f058f6963fd82eb143c692cecdc89e075fa0828db2e5b291070485390b2f1c9c"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a7647ebdfb9682b7bb97e2a5e7cb6ae735b1c25008a70b906aecca294ee96cf4"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eef9df1eefada2c09a5e7a40991b9fc6ac6ef20b1372abd48d2794a316dc0449"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e03b8895a6990c9ab2cdcd0f2fe44088ca1c65ae592b8f795c3294af00a461c3"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:ee4006268ed33370957f55bf2e6f4d263eaf4dc3cfc473d1d90baff6ed36ce4a"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c4983bf937209c57240cff65906b18bb35e64ae872da6a0db937d7b4af845dd7"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:3bb7fda7260735efe66d5107fb7e6af6a7c04c7fce9b2514e04b7a74b06bf5dd"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:72814c01533f51d68702802d74f77ea026b5ec52793c791e2da806a3844a46c3"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:70c610f6cbe4b9fce272c407dd9d07e33e6bf7b4aa1b7ffb6f6ded8e634e3592"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-win32.whl", hash = "sha256:a401b4598e5d3f4a9a811f3daf42ee2291790c7f9d74b18d75d6e21dda98a1a1"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:c0b21078a4b56965e2b12f247467b234734491897e99c1d51cee628da9786959"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:95eb302ff792e12aba9a8b8f8474ab229a83c103d74a750ec0bd1c1eea32e669"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1a100c6d595a7f316f1b6f01d20815d916e75ff98c27a01ae817439ea7726329"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6339d047dab2780cc6220f46306628e04d9750f02f983ddb37439ca47ced7149"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4b749b9cc6ee664a3300bb3a273c1ca8068c46be705b6c31cf5d276f8628a94"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a38856a971c602f98472050165cea2cdc97709240373041b69030be15047691f"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f87f746ee241d30d6ed93969de31e5ffd09a2961a051e60ae6bddde9ec3583aa"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89f1b185a01fe560bc8ae5f619e924407efca2191b56ce749ec84982fc59a32a"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e1c8a2f4c69e08e89632defbfabec2feb8a8d99edc9f89ce33c4b9e36ab63037"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2f4ac36d8e2b4cc1aa71df3dd84ff8efbe3bfb97ac41242fbcfc053c67434f46"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a386ebe437176aab38c041de1260cd3ea459c6ce5263594399880bbc398225b2"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:ccd16eb18a849fd8dcb23e23380e2f0a354e8daa0c984b8a732d9cfaba3a776d"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:e6a5bf2cba5ae1bb80b154ed68a3cfa2fa00fde979a7f50d6598d3e17d9ac20c"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:45de3f87179c1823e6d9e32156fb14c1927fcc9aba21433f088fdfb555b77c10"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-win32.whl", hash = "sha256:1000fba1057b92a65daec275aec30586c3de2401ccdcd41f8a5c1e2c87078706"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:8b2c760cfc7042b27ebdb4a43a4453bd829a5742503599144d54a032c5dc7e9e"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:855eafa5d5a2034b4621c74925d89c5efef61418570e5ef9b37717d9c796419c"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:203f0c8871d5a7987be20c72442488a0b8cfd0f43b7973771640fc593f56321f"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e857a2232ba53ae940d3456f7533ce6ca98b81917d47adc3c7fd55dad8fab858"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e86d77b090dbddbe78867a0275cb4df08ea195e660f1f7f13435a4649e954e5"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c4fb39a81950ec280984b3a44f5bd12819953dc5fa3a7e6fa7a80db5ee853952"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2dee8e57f052ef5353cf608e0b4c871aee320dd1b87d351c28764fc0ca55f9f4"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8700f06d0ce6f128de3ccdbc1acaea1ee264d2caa9ca05daaf492fde7c2a7200"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1920d4ff15ce893210c1f0c0e9d19bfbecb7983c76b33f046c13a8ffbd570252"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c1c76a1743432b4b60ab3358c937a3fe1341c828ae6194108a94c69028247f22"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f7560358a6811e52e9c4d142d497f1a6e10103d3a6881f18d04dbce3729c0e2c"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:c8063cf17b19661471ecbdb3df1c84f24ad2e389e326ccaf89e3fb2484d8dd7e"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:cd6dbe0238f7743d0efe563ab46294f54f9bc8f4b9bcf57c3c666cc5bc9d1299"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:1249cbbf3d3b04902ff081ffbb33ce3377fa6e4c7356f759f3cd076cc138d020"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-win32.whl", hash = "sha256:6c409c0deba34f147f77efaa67b8e4bb83d2f11c8806405f76397ae5b8c0d1c9"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:7095f6fbfaa55defb6b733cfeb14efaae7a29f0b59d8cf213be4e7ca0b857b80"}, - {file = "charset_normalizer-3.2.0-py3-none-any.whl", hash = "sha256:8e098148dd37b4ce3baca71fb394c81dc5d9c7728c95df695d2dca218edf40e6"}, + {file = "charset-normalizer-3.3.0.tar.gz", hash = "sha256:63563193aec44bce707e0c5ca64ff69fa72ed7cf34ce6e11d5127555756fd2f6"}, + {file = "charset_normalizer-3.3.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:effe5406c9bd748a871dbcaf3ac69167c38d72db8c9baf3ff954c344f31c4cbe"}, + {file = "charset_normalizer-3.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4162918ef3098851fcd8a628bf9b6a98d10c380725df9e04caf5ca6dd48c847a"}, + {file = "charset_normalizer-3.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0570d21da019941634a531444364f2482e8db0b3425fcd5ac0c36565a64142c8"}, + {file = "charset_normalizer-3.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5707a746c6083a3a74b46b3a631d78d129edab06195a92a8ece755aac25a3f3d"}, + {file = "charset_normalizer-3.3.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:278c296c6f96fa686d74eb449ea1697f3c03dc28b75f873b65b5201806346a69"}, + {file = "charset_normalizer-3.3.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a4b71f4d1765639372a3b32d2638197f5cd5221b19531f9245fcc9ee62d38f56"}, + {file = "charset_normalizer-3.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5969baeaea61c97efa706b9b107dcba02784b1601c74ac84f2a532ea079403e"}, + {file = "charset_normalizer-3.3.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a3f93dab657839dfa61025056606600a11d0b696d79386f974e459a3fbc568ec"}, + {file = "charset_normalizer-3.3.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:db756e48f9c5c607b5e33dd36b1d5872d0422e960145b08ab0ec7fd420e9d649"}, + {file = "charset_normalizer-3.3.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:232ac332403e37e4a03d209a3f92ed9071f7d3dbda70e2a5e9cff1c4ba9f0678"}, + {file = "charset_normalizer-3.3.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:e5c1502d4ace69a179305abb3f0bb6141cbe4714bc9b31d427329a95acfc8bdd"}, + {file = "charset_normalizer-3.3.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:2502dd2a736c879c0f0d3e2161e74d9907231e25d35794584b1ca5284e43f596"}, + {file = "charset_normalizer-3.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23e8565ab7ff33218530bc817922fae827420f143479b753104ab801145b1d5b"}, + {file = "charset_normalizer-3.3.0-cp310-cp310-win32.whl", hash = "sha256:1872d01ac8c618a8da634e232f24793883d6e456a66593135aeafe3784b0848d"}, + {file = "charset_normalizer-3.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:557b21a44ceac6c6b9773bc65aa1b4cc3e248a5ad2f5b914b91579a32e22204d"}, + {file = "charset_normalizer-3.3.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d7eff0f27edc5afa9e405f7165f85a6d782d308f3b6b9d96016c010597958e63"}, + {file = "charset_normalizer-3.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6a685067d05e46641d5d1623d7c7fdf15a357546cbb2f71b0ebde91b175ffc3e"}, + {file = "charset_normalizer-3.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0d3d5b7db9ed8a2b11a774db2bbea7ba1884430a205dbd54a32d61d7c2a190fa"}, + {file = "charset_normalizer-3.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2935ffc78db9645cb2086c2f8f4cfd23d9b73cc0dc80334bc30aac6f03f68f8c"}, + {file = "charset_normalizer-3.3.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9fe359b2e3a7729010060fbca442ca225280c16e923b37db0e955ac2a2b72a05"}, + {file = "charset_normalizer-3.3.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:380c4bde80bce25c6e4f77b19386f5ec9db230df9f2f2ac1e5ad7af2caa70459"}, + {file = "charset_normalizer-3.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0d1e3732768fecb052d90d62b220af62ead5748ac51ef61e7b32c266cac9293"}, + {file = "charset_normalizer-3.3.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1b2919306936ac6efb3aed1fbf81039f7087ddadb3160882a57ee2ff74fd2382"}, + {file = "charset_normalizer-3.3.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:f8888e31e3a85943743f8fc15e71536bda1c81d5aa36d014a3c0c44481d7db6e"}, + {file = "charset_normalizer-3.3.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:82eb849f085624f6a607538ee7b83a6d8126df6d2f7d3b319cb837b289123078"}, + {file = "charset_normalizer-3.3.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7b8b8bf1189b3ba9b8de5c8db4d541b406611a71a955bbbd7385bbc45fcb786c"}, + {file = "charset_normalizer-3.3.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:5adf257bd58c1b8632046bbe43ee38c04e1038e9d37de9c57a94d6bd6ce5da34"}, + {file = "charset_normalizer-3.3.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c350354efb159b8767a6244c166f66e67506e06c8924ed74669b2c70bc8735b1"}, + {file = "charset_normalizer-3.3.0-cp311-cp311-win32.whl", hash = "sha256:02af06682e3590ab952599fbadac535ede5d60d78848e555aa58d0c0abbde786"}, + {file = "charset_normalizer-3.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:86d1f65ac145e2c9ed71d8ffb1905e9bba3a91ae29ba55b4c46ae6fc31d7c0d4"}, + {file = "charset_normalizer-3.3.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:3b447982ad46348c02cb90d230b75ac34e9886273df3a93eec0539308a6296d7"}, + {file = "charset_normalizer-3.3.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:abf0d9f45ea5fb95051c8bfe43cb40cda383772f7e5023a83cc481ca2604d74e"}, + {file = "charset_normalizer-3.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b09719a17a2301178fac4470d54b1680b18a5048b481cb8890e1ef820cb80455"}, + {file = "charset_normalizer-3.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b3d9b48ee6e3967b7901c052b670c7dda6deb812c309439adaffdec55c6d7b78"}, + {file = "charset_normalizer-3.3.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:edfe077ab09442d4ef3c52cb1f9dab89bff02f4524afc0acf2d46be17dc479f5"}, + {file = "charset_normalizer-3.3.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3debd1150027933210c2fc321527c2299118aa929c2f5a0a80ab6953e3bd1908"}, + {file = "charset_normalizer-3.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86f63face3a527284f7bb8a9d4f78988e3c06823f7bea2bd6f0e0e9298ca0403"}, + {file = "charset_normalizer-3.3.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:24817cb02cbef7cd499f7c9a2735286b4782bd47a5b3516a0e84c50eab44b98e"}, + {file = "charset_normalizer-3.3.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c71f16da1ed8949774ef79f4a0260d28b83b3a50c6576f8f4f0288d109777989"}, + {file = "charset_normalizer-3.3.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:9cf3126b85822c4e53aa28c7ec9869b924d6fcfb76e77a45c44b83d91afd74f9"}, + {file = "charset_normalizer-3.3.0-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:b3b2316b25644b23b54a6f6401074cebcecd1244c0b8e80111c9a3f1c8e83d65"}, + {file = "charset_normalizer-3.3.0-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:03680bb39035fbcffe828eae9c3f8afc0428c91d38e7d61aa992ef7a59fb120e"}, + {file = "charset_normalizer-3.3.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4cc152c5dd831641e995764f9f0b6589519f6f5123258ccaca8c6d34572fefa8"}, + {file = "charset_normalizer-3.3.0-cp312-cp312-win32.whl", hash = "sha256:b8f3307af845803fb0b060ab76cf6dd3a13adc15b6b451f54281d25911eb92df"}, + {file = "charset_normalizer-3.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:8eaf82f0eccd1505cf39a45a6bd0a8cf1c70dcfc30dba338207a969d91b965c0"}, + {file = "charset_normalizer-3.3.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:dc45229747b67ffc441b3de2f3ae5e62877a282ea828a5bdb67883c4ee4a8810"}, + {file = "charset_normalizer-3.3.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f4a0033ce9a76e391542c182f0d48d084855b5fcba5010f707c8e8c34663d77"}, + {file = "charset_normalizer-3.3.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ada214c6fa40f8d800e575de6b91a40d0548139e5dc457d2ebb61470abf50186"}, + {file = "charset_normalizer-3.3.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b1121de0e9d6e6ca08289583d7491e7fcb18a439305b34a30b20d8215922d43c"}, + {file = "charset_normalizer-3.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1063da2c85b95f2d1a430f1c33b55c9c17ffaf5e612e10aeaad641c55a9e2b9d"}, + {file = "charset_normalizer-3.3.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:70f1d09c0d7748b73290b29219e854b3207aea922f839437870d8cc2168e31cc"}, + {file = "charset_normalizer-3.3.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:250c9eb0f4600361dd80d46112213dff2286231d92d3e52af1e5a6083d10cad9"}, + {file = "charset_normalizer-3.3.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:750b446b2ffce1739e8578576092179160f6d26bd5e23eb1789c4d64d5af7dc7"}, + {file = "charset_normalizer-3.3.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:fc52b79d83a3fe3a360902d3f5d79073a993597d48114c29485e9431092905d8"}, + {file = "charset_normalizer-3.3.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:588245972aca710b5b68802c8cad9edaa98589b1b42ad2b53accd6910dad3545"}, + {file = "charset_normalizer-3.3.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e39c7eb31e3f5b1f88caff88bcff1b7f8334975b46f6ac6e9fc725d829bc35d4"}, + {file = "charset_normalizer-3.3.0-cp37-cp37m-win32.whl", hash = "sha256:abecce40dfebbfa6abf8e324e1860092eeca6f7375c8c4e655a8afb61af58f2c"}, + {file = "charset_normalizer-3.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:24a91a981f185721542a0b7c92e9054b7ab4fea0508a795846bc5b0abf8118d4"}, + {file = "charset_normalizer-3.3.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:67b8cc9574bb518ec76dc8e705d4c39ae78bb96237cb533edac149352c1f39fe"}, + {file = "charset_normalizer-3.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ac71b2977fb90c35d41c9453116e283fac47bb9096ad917b8819ca8b943abecd"}, + {file = "charset_normalizer-3.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3ae38d325b512f63f8da31f826e6cb6c367336f95e418137286ba362925c877e"}, + {file = "charset_normalizer-3.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:542da1178c1c6af8873e143910e2269add130a299c9106eef2594e15dae5e482"}, + {file = "charset_normalizer-3.3.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:30a85aed0b864ac88309b7d94be09f6046c834ef60762a8833b660139cfbad13"}, + {file = "charset_normalizer-3.3.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aae32c93e0f64469f74ccc730a7cb21c7610af3a775157e50bbd38f816536b38"}, + {file = "charset_normalizer-3.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15b26ddf78d57f1d143bdf32e820fd8935d36abe8a25eb9ec0b5a71c82eb3895"}, + {file = "charset_normalizer-3.3.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7f5d10bae5d78e4551b7be7a9b29643a95aded9d0f602aa2ba584f0388e7a557"}, + {file = "charset_normalizer-3.3.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:249c6470a2b60935bafd1d1d13cd613f8cd8388d53461c67397ee6a0f5dce741"}, + {file = "charset_normalizer-3.3.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:c5a74c359b2d47d26cdbbc7845e9662d6b08a1e915eb015d044729e92e7050b7"}, + {file = "charset_normalizer-3.3.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:b5bcf60a228acae568e9911f410f9d9e0d43197d030ae5799e20dca8df588287"}, + {file = "charset_normalizer-3.3.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:187d18082694a29005ba2944c882344b6748d5be69e3a89bf3cc9d878e548d5a"}, + {file = "charset_normalizer-3.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:81bf654678e575403736b85ba3a7867e31c2c30a69bc57fe88e3ace52fb17b89"}, + {file = "charset_normalizer-3.3.0-cp38-cp38-win32.whl", hash = "sha256:85a32721ddde63c9df9ebb0d2045b9691d9750cb139c161c80e500d210f5e26e"}, + {file = "charset_normalizer-3.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:468d2a840567b13a590e67dd276c570f8de00ed767ecc611994c301d0f8c014f"}, + {file = "charset_normalizer-3.3.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e0fc42822278451bc13a2e8626cf2218ba570f27856b536e00cfa53099724828"}, + {file = "charset_normalizer-3.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:09c77f964f351a7369cc343911e0df63e762e42bac24cd7d18525961c81754f4"}, + {file = "charset_normalizer-3.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:12ebea541c44fdc88ccb794a13fe861cc5e35d64ed689513a5c03d05b53b7c82"}, + {file = "charset_normalizer-3.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:805dfea4ca10411a5296bcc75638017215a93ffb584c9e344731eef0dcfb026a"}, + {file = "charset_normalizer-3.3.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:96c2b49eb6a72c0e4991d62406e365d87067ca14c1a729a870d22354e6f68115"}, + {file = "charset_normalizer-3.3.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aaf7b34c5bc56b38c931a54f7952f1ff0ae77a2e82496583b247f7c969eb1479"}, + {file = "charset_normalizer-3.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:619d1c96099be5823db34fe89e2582b336b5b074a7f47f819d6b3a57ff7bdb86"}, + {file = "charset_normalizer-3.3.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a0ac5e7015a5920cfce654c06618ec40c33e12801711da6b4258af59a8eff00a"}, + {file = "charset_normalizer-3.3.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:93aa7eef6ee71c629b51ef873991d6911b906d7312c6e8e99790c0f33c576f89"}, + {file = "charset_normalizer-3.3.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7966951325782121e67c81299a031f4c115615e68046f79b85856b86ebffc4cd"}, + {file = "charset_normalizer-3.3.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:02673e456dc5ab13659f85196c534dc596d4ef260e4d86e856c3b2773ce09843"}, + {file = "charset_normalizer-3.3.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:c2af80fb58f0f24b3f3adcb9148e6203fa67dd3f61c4af146ecad033024dde43"}, + {file = "charset_normalizer-3.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:153e7b6e724761741e0974fc4dcd406d35ba70b92bfe3fedcb497226c93b9da7"}, + {file = "charset_normalizer-3.3.0-cp39-cp39-win32.whl", hash = "sha256:d47ecf253780c90ee181d4d871cd655a789da937454045b17b5798da9393901a"}, + {file = "charset_normalizer-3.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:d97d85fa63f315a8bdaba2af9a6a686e0eceab77b3089af45133252618e70884"}, + {file = "charset_normalizer-3.3.0-py3-none-any.whl", hash = "sha256:e46cd37076971c1040fc8c41273a8b3e2c624ce4f2be3f5dfcb7a430c1d3acc2"}, ] [[package]] @@ -278,13 +296,13 @@ toml = ["tomli"] [[package]] name = "datadog" -version = "0.46.0" +version = "0.47.0" description = "The Datadog Python library" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ - {file = "datadog-0.46.0-py2.py3-none-any.whl", hash = "sha256:3d7bcda6177b43be4cdb52e16b4bdd4f9005716c0dd7cfea009e018c36bb7a3d"}, - {file = "datadog-0.46.0.tar.gz", hash = "sha256:e4fbc92a85e2b0919a226896ae45fc5e4b356c0c57f1c2659659dfbe0789c674"}, + {file = "datadog-0.47.0-py2.py3-none-any.whl", hash = "sha256:a45ec997ab554208837e8c44d81d0e1456539dc14da5743687250e028bc809b7"}, + {file = "datadog-0.47.0.tar.gz", hash = "sha256:47be3b2c3d709a7f5b709eb126ed4fe6cc7977d618fe5c158dd89c2a9f7d9916"}, ] [package.dependencies] @@ -307,80 +325,80 @@ six = "*" [[package]] name = "ddtrace" -version = "1.15.2" +version = "1.20.3" description = "Datadog APM client library" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ - {file = "ddtrace-1.15.2-cp27-cp27m-macosx_11_0_x86_64.whl", hash = "sha256:ca0411333fbdb0fafa06d412bbd76ab8d2647cc9dcb8a7833952ce4fe09eb421"}, - {file = "ddtrace-1.15.2-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:e2603749f97a5191b32f710c8ec5248bb58f4f9a1cb337559f93c5f0f8cea33b"}, - {file = "ddtrace-1.15.2-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:8392087809e047f701e38ecc4f2990bcfe399a22c516a1dbcbdff50fb7382a79"}, - {file = "ddtrace-1.15.2-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:2f7649c24a7463be9b86d5f11ac6eaa2014896eaf409e67f3dc813a6bb0ed8b6"}, - {file = "ddtrace-1.15.2-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:dbdbc5bf3b2b56b8e61b241ee372d897b295344e269475f38e837c9bfe03ae2c"}, - {file = "ddtrace-1.15.2-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:23d39c72ad1844977a80d79206d773c3ec1f1346816b9e45427c25ef88597b4e"}, - {file = "ddtrace-1.15.2-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:da458bbbc4de14dd8e8f60aefe42a66c551a9f50c69c6e361acc7edab579a3e4"}, - {file = "ddtrace-1.15.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d07bb0c50d2df7ff9281bea83534db5127cee8ac2f94111c9544d03d49f60613"}, - {file = "ddtrace-1.15.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:499b3e3d0359e492792ecf8ab6efcf4b1991fbaa523338774333e9a2a66d9d37"}, - {file = "ddtrace-1.15.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eedd0937f83e0d7b261960365fec5771f39ced599c90f589548a1738a586799d"}, - {file = "ddtrace-1.15.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7643d20991cd7e1c21e65d8b5c292a9dca8d124f69f9e96cc2b5fb8d47802c3a"}, - {file = "ddtrace-1.15.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:3f6bb76fe33c2e4842236036f78b1bbdd4da0f2b846627ca7d72b01ac49b3076"}, - {file = "ddtrace-1.15.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ebc9b89501c8a557dab43170e4a12e90358130413a87a0276ccaa0038b0636a4"}, - {file = "ddtrace-1.15.2-cp310-cp310-win32.whl", hash = "sha256:c10ca0e3a63310d314ec7fa55d53f4b4434f06c4d321d64d757814679161bf5d"}, - {file = "ddtrace-1.15.2-cp310-cp310-win_amd64.whl", hash = "sha256:6208635442ea52ff3f97b9fc64ac25772cda8f105a607a385e55bf524bceefc5"}, - {file = "ddtrace-1.15.2-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:8524f460be02b402f63b11ad3b1177955c8608f814e1758b87f53f15bf9a7599"}, - {file = "ddtrace-1.15.2-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:5a2dd127a65e12189055818ab72d44d80587acaaf450c65624e0482d63ff9970"}, - {file = "ddtrace-1.15.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b3350c647120fbc3355eb35ce054c88e63bc073d71949f377d59b1152a2ed0f4"}, - {file = "ddtrace-1.15.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:adb76713207f0ef688f68a539f9cb63e19cd149d48d36befb835f67f49395ed7"}, - {file = "ddtrace-1.15.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f8ff5c250c5abfbbbd76a7d3167308a2373ad7e55ecf3c7c26a62fcd2be8a57"}, - {file = "ddtrace-1.15.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:264bed998870b63f548b96f57dd771014cd02ef0b21bb382e745900a7b72ef28"}, - {file = "ddtrace-1.15.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:20bfd8db155167d2ccfddc25b50649338534b12cb00f7ed08514af1eb6a4956e"}, - {file = "ddtrace-1.15.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:72479172bd10f5998188a05b0b4a109ccb2a93467a0aa1e6656d5396c83fb253"}, - {file = "ddtrace-1.15.2-cp311-cp311-win32.whl", hash = "sha256:23bee3d0eb971cc1565caa429620b82f2d69ef648e9c792046b9481188dba9ab"}, - {file = "ddtrace-1.15.2-cp311-cp311-win_amd64.whl", hash = "sha256:65a29d23ecfbc7cc4ca1069a5586aa836ae3978e64251414933432078bc29bc2"}, - {file = "ddtrace-1.15.2-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:3a2852da4a76503211ca8b77a50fc86df36ba15fab04b45a6a17faa386f53839"}, - {file = "ddtrace-1.15.2-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:244180c6decb244c7fda929dc5969b3a510e5a4857239063de1fae139fac9837"}, - {file = "ddtrace-1.15.2-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:46f9ba0c282a62953f03d1add8eae8c80613244bb93a1ff997dad71d07ce6c72"}, - {file = "ddtrace-1.15.2-cp35-cp35m-win32.whl", hash = "sha256:a39dbf1ca657cc3a876143301e5d775e2f9bcf2ed1e9b4366fb3cf9d6a345a82"}, - {file = "ddtrace-1.15.2-cp35-cp35m-win_amd64.whl", hash = "sha256:7cfd9514e82871321e86897fe567c7548fc45da523df591f3e5adc6633a5781c"}, - {file = "ddtrace-1.15.2-cp36-cp36m-macosx_11_0_x86_64.whl", hash = "sha256:3a2978b07d19d4ebf936fde1e455c61b3d88f103f1f9e360b9269fe1a1dc608a"}, - {file = "ddtrace-1.15.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6e7795a7f65a6e844ab57a0b31d400e79c4a1f69d174fab8edc69e6d2db56962"}, - {file = "ddtrace-1.15.2-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aae5306b3b0ec48cb8ade3362629c31bd25999244addff0f4a2f6f3934509894"}, - {file = "ddtrace-1.15.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14fb33bd6d9fa70638d43de7b5170e1c9961d3fbc277314609941e108c45716d"}, - {file = "ddtrace-1.15.2-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:745ce3c9559fa331ef30208ff1ccaafe3ab3c02f2e01177c560c94acd6f4de27"}, - {file = "ddtrace-1.15.2-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:7706d35215d2cca0a89581ec11da56e25742914ae0865b928034ee9ad7278cf3"}, - {file = "ddtrace-1.15.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:0bc18e900d1495deb61093f1af38d94af6a1ca66dd541fd47bd093c3f3b80b4a"}, - {file = "ddtrace-1.15.2-cp36-cp36m-win32.whl", hash = "sha256:b13f4042ef3f391714aca5ca1f03ff3c24c1d201ab5af02f0405335aa5602ff5"}, - {file = "ddtrace-1.15.2-cp36-cp36m-win_amd64.whl", hash = "sha256:eb32e3b3d0f472447b3d427a075007135b3c39488c1fe0f1e097863f326a439b"}, - {file = "ddtrace-1.15.2-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:0953fd9a2555801d68674bb4905f64805efe1e02b3f11def21eb7655be046717"}, - {file = "ddtrace-1.15.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9436ec9cc00b70730d2c1777f11aca7f4863a49ddd27d0b1478e84c1a7667b6f"}, - {file = "ddtrace-1.15.2-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f7215b21c1eaf56b38bf46c66193db3736ecadeb9ae1b9ca780a91addbaa9853"}, - {file = "ddtrace-1.15.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15a5f7155b99fe9393bfa4f0e4ef2610ddf59e70aefcf99a95acae8b31e29cc4"}, - {file = "ddtrace-1.15.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:df103a600c2901dc54929ef58dee41887a0bb558efbf7e41a7489bd6264fcf44"}, - {file = "ddtrace-1.15.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:d51a73238ad8ceff4232ffa94b860d61187b325e7fab746044dafa312d6bc415"}, - {file = "ddtrace-1.15.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:bfc5777204c0c34465fc4ce38d8d1268d9f95ffcbf7e4025e9a5d3e87d3e17c3"}, - {file = "ddtrace-1.15.2-cp37-cp37m-win32.whl", hash = "sha256:9516dbfc974af9632d75e9c32b38e695b88ea18ebfa4580dd0f768bc05272fba"}, - {file = "ddtrace-1.15.2-cp37-cp37m-win_amd64.whl", hash = "sha256:a510252a3d5be6c29db2c69cbd2535268532e8d568fae06b295a06041e1b969d"}, - {file = "ddtrace-1.15.2-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:82995243719c87aefc85d7df0e1ae61bba8ae1f805d48cbaf2132beb215f1968"}, - {file = "ddtrace-1.15.2-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:ca5dd51910a81451d236fccdbf5d3ca8e284aa3be56f08db92644f85ef88c56e"}, - {file = "ddtrace-1.15.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d76f485769c035df3ede4ad9830bac06aa8b69ac4617f2eb1251b1094468009"}, - {file = "ddtrace-1.15.2-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4dd5f5e477021b8810b2b685e1e16ba5a99f31239e22abc71794688b7f3e6e4d"}, - {file = "ddtrace-1.15.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4ec73676c60cc3cf08430f19a59daccbbb5770edc74ad15a99bf4237a40d0fb"}, - {file = "ddtrace-1.15.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6b140f11b89d902174df05e8b9c1eb1b522a63e6c60c5d68ccac8913bb371bbb"}, - {file = "ddtrace-1.15.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:c7c8a0e140d28e49cf8cd96cdec8e17232c5525ed5c154729b8afb6cb93a8e2b"}, - {file = "ddtrace-1.15.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:0112d258c3a681a63e5f057b9e3ee8504b60d773d95baf195462d9ff4096caa9"}, - {file = "ddtrace-1.15.2-cp38-cp38-win32.whl", hash = "sha256:6ea7b80eb8019a70c999ef8cfd34fd6078a2ae154007d124d5e642531bf1a9d6"}, - {file = "ddtrace-1.15.2-cp38-cp38-win_amd64.whl", hash = "sha256:282b8c9b46d7a8450325299cf348a0f1d8f9f34d174a0ea402bc1a1df4ad7cf3"}, - {file = "ddtrace-1.15.2-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:53b171404b59c1e030ea614e194d1483fb42437a02ffdd7f4a45175613dd7cb4"}, - {file = "ddtrace-1.15.2-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:9ba06236dd8bd64776b7b734dd9421709670fef090857448e75c97acb30cdce7"}, - {file = "ddtrace-1.15.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e6abe5ba4396c9f7633cab68d0e81c5fd94f7c77b046b3ee969eded068a522d7"}, - {file = "ddtrace-1.15.2-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:61a1b48f97a07e2f422ec01bb23861716300cebe4afd917ab36bb4db68904da4"}, - {file = "ddtrace-1.15.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86e186dc66802e2d71b94330c1635fd4c3f881a1bb71747be162a57b7602daaa"}, - {file = "ddtrace-1.15.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:762b5a0777454299c4ac62177578969ed551c973063f87a8825d9d073e5250ce"}, - {file = "ddtrace-1.15.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:889d359f4382fde41893ba5c00b412cbea8502e1b6bb6c83bf87fa6e63cbfabe"}, - {file = "ddtrace-1.15.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c4d3c9ce3456181e535b9da42bde7c850dc7224039fd083e95b05010c2ff9748"}, - {file = "ddtrace-1.15.2-cp39-cp39-win32.whl", hash = "sha256:69e47d28327a7afb263c16cc6bf1227e1b2bf1fdb2d559dce913a138a3f36807"}, - {file = "ddtrace-1.15.2-cp39-cp39-win_amd64.whl", hash = "sha256:da780fbfe6dd749ee571a468b8e86f1fd4f51626d35626c2356f8a440efe0dfa"}, - {file = "ddtrace-1.15.2.tar.gz", hash = "sha256:e5c1a5965ea8d8260586769102d79522bc7d9758a271252bb58ee05d6c5cd9a8"}, + {file = "ddtrace-1.20.3-cp27-cp27m-macosx_11_0_x86_64.whl", hash = "sha256:53e118db3ea289d787e000301160e23015758b9d79c3ae4edf80e0f1c923d535"}, + {file = "ddtrace-1.20.3-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:3da9354b38cc069fd7e5b0d46523a3ca096b6de4c4cae5ede206f267fc80e27b"}, + {file = "ddtrace-1.20.3-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:bcff9ccecdb455f8c1690b49363106e1212de467b23205f1ca83b62162d42414"}, + {file = "ddtrace-1.20.3-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:aee97fb3f5d103f717247937b8dc78bc622adc199caccaaf035d82dc9b67e402"}, + {file = "ddtrace-1.20.3-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:8929726b52c8dc58263f66b726321d87e914fc071b581121c8b275b1b15ccc70"}, + {file = "ddtrace-1.20.3-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:c9185d0ec3f7a2d0c4858a7c26dd9c3282aef7c970584b732b722678c379c117"}, + {file = "ddtrace-1.20.3-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:63e04a878c4b5173ac2f9b0fdcad6428fbef32de5fea6fa0ca27be4d14ba7093"}, + {file = "ddtrace-1.20.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:226f078d6525c1d3bbfca28b497df24de9cd626423ae6a0c82f2cd9d694f9f80"}, + {file = "ddtrace-1.20.3-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f0f0ed5f0c98505addaaee272e450372cdefd552b3806314335b2804e2ba15eb"}, + {file = "ddtrace-1.20.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cbdd7f025fa76c221666948ff200c729408b6362992be664055e01fb20a540d9"}, + {file = "ddtrace-1.20.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:f8dfb9b88fb687f54d429931fa372658ad91221c1bf41f721663024b0d8d1f4e"}, + {file = "ddtrace-1.20.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:2f5f4b6b18988e7085de35f42481171984b420cb210fdb2b5e50605f69ce6049"}, + {file = "ddtrace-1.20.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:3470ee06052f1e25a11e6f710a1344928b80cf95dff0306fa5e05d83de2bca1e"}, + {file = "ddtrace-1.20.3-cp310-cp310-win32.whl", hash = "sha256:1240d2b385d8fa31977ae750a0bd9eb1b9378a708e5704685f57229db115e957"}, + {file = "ddtrace-1.20.3-cp310-cp310-win_amd64.whl", hash = "sha256:ff9c2bfb7602df284161fd51f9d4812ad4e8a29ef08292c689ec8600a5463d91"}, + {file = "ddtrace-1.20.3-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:89325721dd269ae4113aa78c031ffbda556771accc79592446d6e49c836da083"}, + {file = "ddtrace-1.20.3-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:1009b8667ea0ce3f5b46d6b2e98cb073e44e61097711dba9618d81dd03ca1d72"}, + {file = "ddtrace-1.20.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0289559d752edc5b99dbe896835bda5791f707f9f2efb98d48a05b8b1ef7375e"}, + {file = "ddtrace-1.20.3-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:55d960c0af5340518980fc77cb5a0fd22d242f68940607cfa94301fa0cf4067b"}, + {file = "ddtrace-1.20.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b249d6f49f48405a36cee5180c9ac28667d3bfaaeb0e4f82f35fd3f9694f18c"}, + {file = "ddtrace-1.20.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:91e20667802ab00e973f832ecb87853a0c59a56053e5c51f611bc2e2e38dd1e8"}, + {file = "ddtrace-1.20.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:ab008b4af0cef3cf0d02452188dcd7126c0787680325a4f2fa7cd5831df22c88"}, + {file = "ddtrace-1.20.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1e8815684f4487fa707b5312ed9ff4ceeaedd1a5af157f15405d27c266d6e99e"}, + {file = "ddtrace-1.20.3-cp311-cp311-win32.whl", hash = "sha256:5c44a4a5a5274eb2728e6dd05ad333bf9bfafec850e220b43f1171df9ec92c9b"}, + {file = "ddtrace-1.20.3-cp311-cp311-win_amd64.whl", hash = "sha256:293678013c7f060ae0027baf2807625da367656575204438dd53df7dd209cc0f"}, + {file = "ddtrace-1.20.3-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:6afa8a78d6cf998098c0fc6f18975113f8180584889dd91fa8dafe0203f1dc74"}, + {file = "ddtrace-1.20.3-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:272db8a94aef1483f3023d09cfd4cd9fdbe80cc0b8b22c6cbdcb28c9ca3c45da"}, + {file = "ddtrace-1.20.3-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:58f95016c0d364437a9f0986e9fd02714a9215870c1d79e3e3b6ff81fb5d3113"}, + {file = "ddtrace-1.20.3-cp35-cp35m-win32.whl", hash = "sha256:1a0cc4abe979d288eb58aed00895a35e6dc68ebb76d01dfd1cf3d8c80fbd6e72"}, + {file = "ddtrace-1.20.3-cp35-cp35m-win_amd64.whl", hash = "sha256:71e24d61571c0b854f61433c7e4303fb4278b4ed1a76c2cabceb79477e7ca9eb"}, + {file = "ddtrace-1.20.3-cp36-cp36m-macosx_11_0_x86_64.whl", hash = "sha256:f31e162f43cc3ebd570409683976c03b536e561a3c3afd8ca1ed837aa1552e25"}, + {file = "ddtrace-1.20.3-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:64ca09f911444e78fcdefece1140914bdafd7dd1217b848a1b2578d5ac341a4b"}, + {file = "ddtrace-1.20.3-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9cfc459cb52d56150548764dbef763be3945b8e2f522bedf2c7ba47fa23b34bb"}, + {file = "ddtrace-1.20.3-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d0a9c7e87ec009bc856ff252672a278b106a4e7ee8a7c99179e589576263743d"}, + {file = "ddtrace-1.20.3-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:7563d5110d78259cba087f9424cfb36f0666413439a3c4fb384284a3e4e076cf"}, + {file = "ddtrace-1.20.3-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:dc2ca4a6ad3219ad0ff4ad82caf31fd64c9c4d45611e62ae4bca0a5f6b6cff21"}, + {file = "ddtrace-1.20.3-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:818bd589c38d4a7b1689b20b0f235cdf421297257328a192a4dff004e43fed8d"}, + {file = "ddtrace-1.20.3-cp36-cp36m-win32.whl", hash = "sha256:9a1e09211d6030b6e75172c2b7cf4ec600c38013c70fb48f9c11db9ae0354950"}, + {file = "ddtrace-1.20.3-cp36-cp36m-win_amd64.whl", hash = "sha256:999287700d26362e9651becdd07f2ccf856a78016549d31d47da627bdd7e0b39"}, + {file = "ddtrace-1.20.3-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:fa5a174acd453022f925cacbcfd86d8a012bce9f7605cb020a6fe0dc85f0f435"}, + {file = "ddtrace-1.20.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:315d7835d97e9f78f988d7fdf32a98ed59ef509a07a16d3b77f49fd992b9d304"}, + {file = "ddtrace-1.20.3-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7674827d57aeff15fbde7cd730e906d509fd77b6d2cda8ce7b6da7f7dcfa1464"}, + {file = "ddtrace-1.20.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:16fb4d625d233c8719d37e11e2a08ec968a98877b2083140803d5d76a6fc6498"}, + {file = "ddtrace-1.20.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:470381b364d8adaa7e87a3a78cdaaa82a74d4418f9c79c1239eabc5b62ef824f"}, + {file = "ddtrace-1.20.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:8c87f7ea1ea7114950fdbcdad8a1e2bff6c1f4e20232563c3c88ee1224764fee"}, + {file = "ddtrace-1.20.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:84b0acecc372ae9755b0271abc19ac023491e6c84873df4d8af0305ebc7244b8"}, + {file = "ddtrace-1.20.3-cp37-cp37m-win32.whl", hash = "sha256:895a26e595852943203f6d0d04018b6f2fab56592fe6c63e33d862a7a9a4eb64"}, + {file = "ddtrace-1.20.3-cp37-cp37m-win_amd64.whl", hash = "sha256:8dfc439dd3e23bad60e74aab117013d49a9dbce3bd36b66e133206b435384ffa"}, + {file = "ddtrace-1.20.3-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:55b39c09cee3cc25ea3d3ad9dc430a344affbecb017ef4758374b22c050cfaef"}, + {file = "ddtrace-1.20.3-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:1546084f68a6b9218124725be32c42441f3cc44640656fbe6a911c5c92c2f742"}, + {file = "ddtrace-1.20.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a364f1f0942096a4e7d38324d4f5781aefb8581efaa211cdd454dcf2906f00b3"}, + {file = "ddtrace-1.20.3-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:34d5e9bd4f2148a247c4921cb531d247b430eac23c86d188dfbb267f33875365"}, + {file = "ddtrace-1.20.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b5483abd5ee0d40b5c0b46baa57da1df499700e5f2e4672ccaf2b6e7f783781e"}, + {file = "ddtrace-1.20.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2fa3c584e30c628a25978e9e1e884581e98e838b7234b4d66223713cfe7d7ece"}, + {file = "ddtrace-1.20.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:2f38e4a455ceaa05e5933958799506fd3b4682bf1803b50bd1d0fb57fb603eab"}, + {file = "ddtrace-1.20.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:bd3ebc0e9ae1159fd7b66b90bee2613bdf1b2ac59e9b164e34276f29e68ab032"}, + {file = "ddtrace-1.20.3-cp38-cp38-win32.whl", hash = "sha256:8628ca382e728204c18744f220e80c2cc5a54a61b825cd0c269d1017a235feaa"}, + {file = "ddtrace-1.20.3-cp38-cp38-win_amd64.whl", hash = "sha256:8216ee3990c7744e12351d843aec2f08ce0d18c9370ebb5c5dde597b8a188a3b"}, + {file = "ddtrace-1.20.3-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:2c91ca946ae543dee0e75ca2a1380db48291804ad6a740a4670fc5950f826109"}, + {file = "ddtrace-1.20.3-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:34c035588bc41c3e3985f04f7ba8bc79d725ba81d840e36b15355e22bc7545db"}, + {file = "ddtrace-1.20.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:301247561b8ab714aa8d955b9fb93a09dc8ff69898a3255a24126055ac3e6157"}, + {file = "ddtrace-1.20.3-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:73b541160d49c5ef08a652140cf537ef2cb35feb1441ed229c292994af735f80"}, + {file = "ddtrace-1.20.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b79fb270b6daf211454a82577ec27db8a8be0df65c545c7f8ea4878fd53d245c"}, + {file = "ddtrace-1.20.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7b92f57d076318c29c219d30e263727625a2cbce69ff7b72b48adaa248820a9d"}, + {file = "ddtrace-1.20.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:95ecc029e32ecc23ce052bf96b25a18b8165d6f9fe5b638bda99c3d1f958894a"}, + {file = "ddtrace-1.20.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6d68857b8643330519f3171b0c055cc738a441fb373060d6862755c89ae16874"}, + {file = "ddtrace-1.20.3-cp39-cp39-win32.whl", hash = "sha256:00d6efc0f909442f960b4246a20adf173cb385643686f7fae31f2367226b1858"}, + {file = "ddtrace-1.20.3-cp39-cp39-win_amd64.whl", hash = "sha256:fb06e0e535044570579683d0cf32b28e576bdc460c81aeddfa05bb6da7327a82"}, + {file = "ddtrace-1.20.3.tar.gz", hash = "sha256:c94beafc8ce6d973c054ccceba6437a6a12fcf136e5f94eab6326e1a4ce72310"}, ] [package.dependencies] @@ -435,13 +453,13 @@ mypy = ["mypy"] [[package]] name = "exceptiongroup" -version = "1.1.2" +version = "1.1.3" description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" files = [ - {file = "exceptiongroup-1.1.2-py3-none-any.whl", hash = "sha256:e346e69d186172ca7cf029c8c1d16235aa0e04035e5750b4b95039e65204328f"}, - {file = "exceptiongroup-1.1.2.tar.gz", hash = "sha256:12c3e887d6485d16943a309616de20ae5582633e0a2eda17f4e10fd61c1e8af5"}, + {file = "exceptiongroup-1.1.3-py3-none-any.whl", hash = "sha256:343280667a4585d195ca1cf9cef84a4e178c4b6cf2274caef9859782b567d5e3"}, + {file = "exceptiongroup-1.1.3.tar.gz", hash = "sha256:097acd85d473d75af5bb98e41b61ff7fe35efe6675e4f9370ec6ec5126d160e9"}, ] [package.extras] @@ -551,13 +569,13 @@ doc = ["Sphinx (>=1.6.5)", "mock", "sphinx-rtd-theme"] [[package]] name = "opentelemetry-api" -version = "1.19.0" +version = "1.20.0" description = "OpenTelemetry Python API" optional = false python-versions = ">=3.7" files = [ - {file = "opentelemetry_api-1.19.0-py3-none-any.whl", hash = "sha256:dcd2a0ad34b691964947e1d50f9e8c415c32827a1d87f0459a72deb9afdf5597"}, - {file = "opentelemetry_api-1.19.0.tar.gz", hash = "sha256:db374fb5bea00f3c7aa290f5d94cea50b659e6ea9343384c5f6c2bb5d5e8db65"}, + {file = "opentelemetry_api-1.20.0-py3-none-any.whl", hash = "sha256:982b76036fec0fdaf490ae3dfd9f28c81442a33414f737abc687a32758cdcba5"}, + {file = "opentelemetry_api-1.20.0.tar.gz", hash = "sha256:06abe351db7572f8afdd0fb889ce53f3c992dbf6f6262507b385cc1963e06983"}, ] [package.dependencies] @@ -566,24 +584,24 @@ importlib-metadata = ">=6.0,<7.0" [[package]] name = "protobuf" -version = "4.23.4" +version = "4.24.4" description = "" optional = false python-versions = ">=3.7" files = [ - {file = "protobuf-4.23.4-cp310-abi3-win32.whl", hash = "sha256:5fea3c64d41ea5ecf5697b83e41d09b9589e6f20b677ab3c48e5f242d9b7897b"}, - {file = "protobuf-4.23.4-cp310-abi3-win_amd64.whl", hash = "sha256:7b19b6266d92ca6a2a87effa88ecc4af73ebc5cfde194dc737cf8ef23a9a3b12"}, - {file = "protobuf-4.23.4-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:8547bf44fe8cec3c69e3042f5c4fb3e36eb2a7a013bb0a44c018fc1e427aafbd"}, - {file = "protobuf-4.23.4-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:fee88269a090ada09ca63551bf2f573eb2424035bcf2cb1b121895b01a46594a"}, - {file = "protobuf-4.23.4-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:effeac51ab79332d44fba74660d40ae79985901ac21bca408f8dc335a81aa597"}, - {file = "protobuf-4.23.4-cp37-cp37m-win32.whl", hash = "sha256:c3e0939433c40796ca4cfc0fac08af50b00eb66a40bbbc5dee711998fb0bbc1e"}, - {file = "protobuf-4.23.4-cp37-cp37m-win_amd64.whl", hash = "sha256:9053df6df8e5a76c84339ee4a9f5a2661ceee4a0dab019e8663c50ba324208b0"}, - {file = "protobuf-4.23.4-cp38-cp38-win32.whl", hash = "sha256:e1c915778d8ced71e26fcf43c0866d7499891bca14c4368448a82edc61fdbc70"}, - {file = "protobuf-4.23.4-cp38-cp38-win_amd64.whl", hash = "sha256:351cc90f7d10839c480aeb9b870a211e322bf05f6ab3f55fcb2f51331f80a7d2"}, - {file = "protobuf-4.23.4-cp39-cp39-win32.whl", hash = "sha256:6dd9b9940e3f17077e820b75851126615ee38643c2c5332aa7a359988820c720"}, - {file = "protobuf-4.23.4-cp39-cp39-win_amd64.whl", hash = "sha256:0a5759f5696895de8cc913f084e27fd4125e8fb0914bb729a17816a33819f474"}, - {file = "protobuf-4.23.4-py3-none-any.whl", hash = "sha256:e9d0be5bf34b275b9f87ba7407796556abeeba635455d036c7351f7c183ef8ff"}, - {file = "protobuf-4.23.4.tar.gz", hash = "sha256:ccd9430c0719dce806b93f89c91de7977304729e55377f872a92465d548329a9"}, + {file = "protobuf-4.24.4-cp310-abi3-win32.whl", hash = "sha256:ec9912d5cb6714a5710e28e592ee1093d68c5ebfeda61983b3f40331da0b1ebb"}, + {file = "protobuf-4.24.4-cp310-abi3-win_amd64.whl", hash = "sha256:1badab72aa8a3a2b812eacfede5020472e16c6b2212d737cefd685884c191085"}, + {file = "protobuf-4.24.4-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:8e61a27f362369c2f33248a0ff6896c20dcd47b5d48239cb9720134bef6082e4"}, + {file = "protobuf-4.24.4-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:bffa46ad9612e6779d0e51ae586fde768339b791a50610d85eb162daeb23661e"}, + {file = "protobuf-4.24.4-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:b493cb590960ff863743b9ff1452c413c2ee12b782f48beca77c8da3e2ffe9d9"}, + {file = "protobuf-4.24.4-cp37-cp37m-win32.whl", hash = "sha256:dbbed8a56e56cee8d9d522ce844a1379a72a70f453bde6243e3c86c30c2a3d46"}, + {file = "protobuf-4.24.4-cp37-cp37m-win_amd64.whl", hash = "sha256:6b7d2e1c753715dcfe9d284a25a52d67818dd43c4932574307daf836f0071e37"}, + {file = "protobuf-4.24.4-cp38-cp38-win32.whl", hash = "sha256:02212557a76cd99574775a81fefeba8738d0f668d6abd0c6b1d3adcc75503dbe"}, + {file = "protobuf-4.24.4-cp38-cp38-win_amd64.whl", hash = "sha256:2fa3886dfaae6b4c5ed2730d3bf47c7a38a72b3a1f0acb4d4caf68e6874b947b"}, + {file = "protobuf-4.24.4-cp39-cp39-win32.whl", hash = "sha256:b77272f3e28bb416e2071186cb39efd4abbf696d682cbb5dc731308ad37fa6dd"}, + {file = "protobuf-4.24.4-cp39-cp39-win_amd64.whl", hash = "sha256:9fee5e8aa20ef1b84123bb9232b3f4a5114d9897ed89b4b8142d81924e05d79b"}, + {file = "protobuf-4.24.4-py3-none-any.whl", hash = "sha256:80797ce7424f8c8d2f2547e2d42bfbb6c08230ce5832d6c099a37335c9c90a92"}, + {file = "protobuf-4.24.4.tar.gz", hash = "sha256:5a70731910cd9104762161719c3d883c960151eea077134458503723b60e3667"}, ] [[package]] @@ -645,13 +663,13 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "s3transfer" -version = "0.6.1" +version = "0.7.0" description = "An Amazon S3 Transfer Manager" optional = true python-versions = ">= 3.7" files = [ - {file = "s3transfer-0.6.1-py3-none-any.whl", hash = "sha256:3c0da2d074bf35d6870ef157158641178a4204a6e689e82546083e31e0311346"}, - {file = "s3transfer-0.6.1.tar.gz", hash = "sha256:640bb492711f4c0c0905e1f62b6aaeb771881935ad27884852411f8e9cacbca9"}, + {file = "s3transfer-0.7.0-py3-none-any.whl", hash = "sha256:10d6923c6359175f264811ef4bf6161a3156ce8e350e705396a7557d6293c33a"}, + {file = "s3transfer-0.7.0.tar.gz", hash = "sha256:fd3889a66f5fe17299fe75b82eae6cf722554edca744ca5d5fe308b104883d2e"}, ] [package.dependencies] @@ -684,17 +702,17 @@ files = [ [[package]] name = "urllib3" -version = "1.26.16" +version = "1.26.17" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" files = [ - {file = "urllib3-1.26.16-py2.py3-none-any.whl", hash = "sha256:8d36afa7616d8ab714608411b4a3b13e58f463aee519024578e062e141dce20f"}, - {file = "urllib3-1.26.16.tar.gz", hash = "sha256:8f135f6502756bde6b2a9b28989df5fbe87c9970cecaa69041edcce7f0589b14"}, + {file = "urllib3-1.26.17-py2.py3-none-any.whl", hash = "sha256:94a757d178c9be92ef5539b8840d48dc9cf1b2709c9d6b588232a055c524458b"}, + {file = "urllib3-1.26.17.tar.gz", hash = "sha256:24d6a242c28d29af46c3fae832c36db3bbebcc533dd1bb549172cd739c82df21"}, ] [package.extras] -brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"] +brotli = ["brotli (==1.0.9)", "brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"] secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] @@ -814,4 +832,4 @@ dev = ["boto3", "flake8", "httpretty", "nose2", "requests"] [metadata] lock-version = "2.0" python-versions = ">=3.7.0,<4" -content-hash = "e65f36c4d06687bde43b04ec23d980e60dd755362e54032b4293a3bf0d5c2054" +content-hash = "171dcd184163df36156c63fa97ab16f1f063756aac2181c97b9a5a101735839a" diff --git a/pyproject.toml b/pyproject.toml index 6227fdf01..7e84b19d3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,7 +27,7 @@ classifiers = [ python = ">=3.7.0,<4" datadog = ">=0.41.0,<1.0.0" wrapt = "^1.11.2" -ddtrace = "1.15.2" +ddtrace = "<2.0.0" urllib3 = "<2.0.0" importlib_metadata = {version = "*", python = "<3.8"} boto3 = { version = "^1.10.33", optional = true } diff --git a/tests/integration/snapshots/logs/async-metrics_python310.log b/tests/integration/snapshots/logs/async-metrics_python310.log index d746aba4f..1637612fd 100644 --- a/tests/integration/snapshots/logs/async-metrics_python310.log +++ b/tests/integration/snapshots/logs/async-metrics_python310.log @@ -68,11 +68,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -104,7 +105,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", - "http.status_code": "200" + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -127,6 +129,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -152,6 +155,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -232,11 +236,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -264,7 +269,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -287,6 +293,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -312,6 +319,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -386,11 +394,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -417,7 +426,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "function_trigger.event_source": "eventbridge" + "function_trigger.event_source": "eventbridge", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -440,6 +450,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -465,6 +476,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -549,11 +561,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -585,7 +598,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", - "http.status_code": "200" + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -608,6 +622,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -633,6 +648,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -713,11 +729,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -745,7 +762,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -768,6 +786,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -793,6 +812,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -870,11 +890,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -902,7 +923,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -925,6 +947,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -950,6 +973,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1028,11 +1052,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1060,7 +1085,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -1083,6 +1109,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1108,6 +1135,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1185,11 +1213,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1217,7 +1246,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -1240,6 +1270,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1265,6 +1296,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1348,11 +1380,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1382,7 +1415,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", - "http.status_code": "200" + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -1405,6 +1439,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1430,6 +1465,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python311.log b/tests/integration/snapshots/logs/async-metrics_python311.log index ff437d8e4..7eedbe888 100644 --- a/tests/integration/snapshots/logs/async-metrics_python311.log +++ b/tests/integration/snapshots/logs/async-metrics_python311.log @@ -68,11 +68,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -104,7 +105,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", - "http.status_code": "200" + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -127,6 +129,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -152,6 +155,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -232,11 +236,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -264,7 +269,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -287,6 +293,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -312,6 +319,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -386,11 +394,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -417,7 +426,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "function_trigger.event_source": "eventbridge" + "function_trigger.event_source": "eventbridge", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -440,6 +450,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -465,6 +476,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -549,11 +561,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -585,7 +598,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", - "http.status_code": "200" + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -608,6 +622,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -633,6 +648,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -713,11 +729,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -745,7 +762,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -768,6 +786,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -793,6 +812,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -870,11 +890,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -902,7 +923,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -925,6 +947,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -950,6 +973,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1028,11 +1052,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1060,7 +1085,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -1083,6 +1109,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1108,6 +1135,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1185,11 +1213,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1217,7 +1246,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -1240,6 +1270,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1265,6 +1296,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1348,11 +1380,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1382,7 +1415,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", - "http.status_code": "200" + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -1405,6 +1439,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1430,6 +1465,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python37.log b/tests/integration/snapshots/logs/async-metrics_python37.log index e28bb9b39..080113f27 100644 --- a/tests/integration/snapshots/logs/async-metrics_python37.log +++ b/tests/integration/snapshots/logs/async-metrics_python37.log @@ -68,11 +68,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -104,7 +105,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", - "http.status_code": "200" + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -127,6 +129,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -152,6 +155,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -232,11 +236,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -264,7 +269,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -287,6 +293,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -312,6 +319,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -386,11 +394,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -417,7 +426,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "function_trigger.event_source": "eventbridge" + "function_trigger.event_source": "eventbridge", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -440,6 +450,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -465,6 +476,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -549,11 +561,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -585,7 +598,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", - "http.status_code": "200" + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -608,6 +622,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -633,6 +648,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -713,11 +729,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -745,7 +762,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -768,6 +786,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -793,6 +812,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -870,11 +890,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -902,7 +923,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -925,6 +947,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -950,6 +973,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1028,11 +1052,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1060,7 +1085,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -1083,6 +1109,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1108,6 +1135,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1185,11 +1213,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1217,7 +1246,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -1240,6 +1270,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1265,6 +1296,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1348,11 +1380,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1382,7 +1415,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", - "http.status_code": "200" + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -1405,6 +1439,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1430,6 +1465,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python38.log b/tests/integration/snapshots/logs/async-metrics_python38.log index c146ef0fd..913ef7601 100644 --- a/tests/integration/snapshots/logs/async-metrics_python38.log +++ b/tests/integration/snapshots/logs/async-metrics_python38.log @@ -68,11 +68,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -104,7 +105,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", - "http.status_code": "200" + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -127,6 +129,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -152,6 +155,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -232,11 +236,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -264,7 +269,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -287,6 +293,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -312,6 +319,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -386,11 +394,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -417,7 +426,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "function_trigger.event_source": "eventbridge" + "function_trigger.event_source": "eventbridge", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -440,6 +450,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -465,6 +476,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -549,11 +561,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -585,7 +598,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", - "http.status_code": "200" + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -608,6 +622,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -633,6 +648,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -713,11 +729,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -745,7 +762,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -768,6 +786,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -793,6 +812,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -870,11 +890,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -902,7 +923,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -925,6 +947,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -950,6 +973,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1028,11 +1052,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1060,7 +1085,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -1083,6 +1109,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1108,6 +1135,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1185,11 +1213,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1217,7 +1246,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -1240,6 +1270,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1265,6 +1296,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1348,11 +1380,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1382,7 +1415,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", - "http.status_code": "200" + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -1405,6 +1439,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1430,6 +1465,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python39.log b/tests/integration/snapshots/logs/async-metrics_python39.log index bc0fb4e85..6708ebb09 100644 --- a/tests/integration/snapshots/logs/async-metrics_python39.log +++ b/tests/integration/snapshots/logs/async-metrics_python39.log @@ -68,11 +68,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -104,7 +105,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", - "http.status_code": "200" + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -127,6 +129,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -152,6 +155,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -232,11 +236,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -264,7 +269,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -287,6 +293,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -312,6 +319,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -386,11 +394,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -417,7 +426,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "function_trigger.event_source": "eventbridge" + "function_trigger.event_source": "eventbridge", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -440,6 +450,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -465,6 +476,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -549,11 +561,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -585,7 +598,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", - "http.status_code": "200" + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -608,6 +622,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -633,6 +648,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -713,11 +729,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -745,7 +762,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -768,6 +786,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -793,6 +812,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -870,11 +890,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -902,7 +923,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -925,6 +947,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -950,6 +973,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1028,11 +1052,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1060,7 +1085,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -1083,6 +1109,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1108,6 +1135,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1185,11 +1213,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1217,7 +1246,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -1240,6 +1270,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1265,6 +1296,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1348,11 +1380,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1382,7 +1415,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", - "http.status_code": "200" + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -1405,6 +1439,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1430,6 +1465,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python310.log b/tests/integration/snapshots/logs/sync-metrics_python310.log index fc71ef6da..01cf87004 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python310.log +++ b/tests/integration/snapshots/logs/sync-metrics_python310.log @@ -48,11 +48,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -84,7 +85,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", - "http.status_code": "200" + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -107,6 +109,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -132,6 +135,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -164,6 +168,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -171,7 +176,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -230,11 +234,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -262,7 +267,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -285,6 +291,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -310,6 +317,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -342,6 +350,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -349,7 +358,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -402,11 +410,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -433,7 +442,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "function_trigger.event_source": "eventbridge" + "function_trigger.event_source": "eventbridge", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -456,6 +466,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -481,6 +492,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -513,6 +525,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -520,7 +533,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -583,11 +595,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -619,7 +632,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", - "http.status_code": "200" + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -642,6 +656,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -667,6 +682,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -699,6 +715,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -706,7 +723,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -765,11 +781,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -797,7 +814,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -820,6 +838,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -845,6 +864,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -877,6 +897,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -884,7 +905,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -940,11 +960,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -972,7 +993,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -995,6 +1017,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1020,6 +1043,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1052,6 +1076,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1059,7 +1084,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -1116,11 +1140,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1148,7 +1173,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -1171,6 +1197,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1196,6 +1223,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1228,6 +1256,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1235,7 +1264,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -1291,11 +1319,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1323,7 +1352,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -1346,6 +1376,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1371,6 +1402,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1403,6 +1435,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1410,7 +1443,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -1472,11 +1504,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1506,7 +1539,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", - "http.status_code": "200" + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -1529,6 +1563,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1554,6 +1589,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1586,6 +1622,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1593,7 +1630,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 diff --git a/tests/integration/snapshots/logs/sync-metrics_python311.log b/tests/integration/snapshots/logs/sync-metrics_python311.log index b83c99208..79d3a9a5b 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python311.log +++ b/tests/integration/snapshots/logs/sync-metrics_python311.log @@ -48,11 +48,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -84,7 +85,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", - "http.status_code": "200" + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -107,6 +109,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -132,6 +135,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -164,6 +168,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -171,7 +176,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -230,11 +234,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -262,7 +267,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -285,6 +291,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -310,6 +317,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -342,6 +350,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -349,7 +358,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -402,11 +410,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -433,7 +442,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "function_trigger.event_source": "eventbridge" + "function_trigger.event_source": "eventbridge", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -456,6 +466,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -481,6 +492,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -513,6 +525,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -520,7 +533,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -583,11 +595,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -619,7 +632,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", - "http.status_code": "200" + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -642,6 +656,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -667,6 +682,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -699,6 +715,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -706,7 +723,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -765,11 +781,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -797,7 +814,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -820,6 +838,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -845,6 +864,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -877,6 +897,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -884,7 +905,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -940,11 +960,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -972,7 +993,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -995,6 +1017,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1020,6 +1043,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1052,6 +1076,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1059,7 +1084,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -1116,11 +1140,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1148,7 +1173,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -1171,6 +1197,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1196,6 +1223,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1228,6 +1256,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1235,7 +1264,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -1291,11 +1319,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1323,7 +1352,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -1346,6 +1376,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1371,6 +1402,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1403,6 +1435,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1410,7 +1443,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -1472,11 +1504,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1506,7 +1539,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", - "http.status_code": "200" + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -1529,6 +1563,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1554,6 +1589,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1586,6 +1622,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1593,7 +1630,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 diff --git a/tests/integration/snapshots/logs/sync-metrics_python37.log b/tests/integration/snapshots/logs/sync-metrics_python37.log index 5bc76a998..31518039c 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python37.log +++ b/tests/integration/snapshots/logs/sync-metrics_python37.log @@ -48,11 +48,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -84,7 +85,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", - "http.status_code": "200" + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -107,6 +109,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -132,6 +135,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -164,6 +168,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -171,7 +176,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -230,11 +234,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -262,7 +267,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -285,6 +291,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -310,6 +317,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -342,6 +350,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -349,7 +358,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -402,11 +410,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -433,7 +442,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "function_trigger.event_source": "eventbridge" + "function_trigger.event_source": "eventbridge", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -456,6 +466,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -481,6 +492,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -513,6 +525,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -520,7 +533,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -583,11 +595,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -619,7 +632,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", - "http.status_code": "200" + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -642,6 +656,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -667,6 +682,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -699,6 +715,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -706,7 +723,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -765,11 +781,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -797,7 +814,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -820,6 +838,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -845,6 +864,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -877,6 +897,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -884,7 +905,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -940,11 +960,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -972,7 +993,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -995,6 +1017,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1020,6 +1043,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1052,6 +1076,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1059,7 +1084,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -1116,11 +1140,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1148,7 +1173,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -1171,6 +1197,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1196,6 +1223,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1228,6 +1256,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1235,7 +1264,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -1291,11 +1319,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1323,7 +1352,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -1346,6 +1376,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1371,6 +1402,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1403,6 +1435,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1410,7 +1443,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -1472,11 +1504,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1506,7 +1539,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", - "http.status_code": "200" + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -1529,6 +1563,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1554,6 +1589,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1586,6 +1622,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1593,7 +1630,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 diff --git a/tests/integration/snapshots/logs/sync-metrics_python38.log b/tests/integration/snapshots/logs/sync-metrics_python38.log index 213e64aa7..dbdb9550d 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python38.log +++ b/tests/integration/snapshots/logs/sync-metrics_python38.log @@ -48,11 +48,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -84,7 +85,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", - "http.status_code": "200" + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -107,6 +109,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -132,6 +135,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -164,6 +168,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -171,7 +176,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -230,11 +234,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -262,7 +267,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -285,6 +291,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -310,6 +317,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -342,6 +350,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -349,7 +358,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -402,11 +410,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -433,7 +442,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "function_trigger.event_source": "eventbridge" + "function_trigger.event_source": "eventbridge", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -456,6 +466,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -481,6 +492,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -513,6 +525,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -520,7 +533,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -583,11 +595,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -619,7 +632,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", - "http.status_code": "200" + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -642,6 +656,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -667,6 +682,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -699,6 +715,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -706,7 +723,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -765,11 +781,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -797,7 +814,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -820,6 +838,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -845,6 +864,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -877,6 +897,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -884,7 +905,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -940,11 +960,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -972,7 +993,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -995,6 +1017,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1020,6 +1043,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1052,6 +1076,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1059,7 +1084,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -1116,11 +1140,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1148,7 +1173,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -1171,6 +1197,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1196,6 +1223,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1228,6 +1256,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1235,7 +1264,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -1291,11 +1319,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1323,7 +1352,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -1346,6 +1376,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1371,6 +1402,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1403,6 +1435,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1410,7 +1443,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -1472,11 +1504,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1506,7 +1539,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", - "http.status_code": "200" + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -1529,6 +1563,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1554,6 +1589,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1586,6 +1622,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1593,7 +1630,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 diff --git a/tests/integration/snapshots/logs/sync-metrics_python39.log b/tests/integration/snapshots/logs/sync-metrics_python39.log index 54ab2bad2..f0def45d8 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -48,11 +48,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -84,7 +85,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", - "http.status_code": "200" + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -107,6 +109,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -132,6 +135,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -164,6 +168,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -171,7 +176,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -230,11 +234,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -262,7 +267,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -285,6 +291,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -310,6 +317,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -342,6 +350,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -349,7 +358,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -402,11 +410,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -433,7 +442,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "function_trigger.event_source": "eventbridge" + "function_trigger.event_source": "eventbridge", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -456,6 +466,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -481,6 +492,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -513,6 +525,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -520,7 +533,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -583,11 +595,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -619,7 +632,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", - "http.status_code": "200" + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -642,6 +656,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -667,6 +682,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -699,6 +715,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -706,7 +723,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -765,11 +781,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -797,7 +814,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -820,6 +838,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -845,6 +864,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -877,6 +897,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -884,7 +905,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -940,11 +960,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -972,7 +993,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -995,6 +1017,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1020,6 +1043,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1052,6 +1076,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1059,7 +1084,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -1116,11 +1140,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1148,7 +1173,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -1171,6 +1197,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1196,6 +1223,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1228,6 +1256,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1235,7 +1264,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -1291,11 +1319,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1323,7 +1352,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX" + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -1346,6 +1376,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1371,6 +1402,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1403,6 +1435,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1410,7 +1443,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 @@ -1472,11 +1504,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", - "language": "python" + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1506,7 +1539,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", - "http.status_code": "200" + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.top_level": 1 @@ -1529,6 +1563,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1554,6 +1589,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "span.kind": "client", "http.method": "GET", "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", "http.status_code": "200", "http.useragent": "python-requests/X.X.X" }, @@ -1586,6 +1622,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "span.kind": "client", "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", @@ -1593,7 +1630,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept }, "metrics": { "process_id": XXXX, - "_dd.agent_psr": 1, "_dd.measured": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index c85d8bb4f..57c5de45d 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -9,6 +9,7 @@ import datadog_lambda.wrapper as wrapper from datadog_lambda.metric import lambda_metric from datadog_lambda.thread_stats_writer import ThreadStatsWriter +from ddtrace import Span def get_mock_context( @@ -538,9 +539,7 @@ def lambda_handler(event, context): lambda_event = {} lambda_context = get_mock_context() - mock_span = MagicMock() - mock_span.context.span_id = "123" - mock_span.context.trace_id = "456" + mock_span = Span(name="my_inferred_span", span_id=123, trace_id=456) mock_span.context.sampling_priority = "1" mock_span.context.dd_origin = None mock_span.start_ns = 1668127541671386817 From 73e1b3a9ee9747b4dc3646878d74d7e6250177e8 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Wed, 18 Oct 2023 10:26:47 -0400 Subject: [PATCH 083/403] feat: Support urllib3 <= 2.1 for py 3.11 (#380) --- poetry.lock | 187 +++++++++++++++++++++++++++---------------------- pyproject.toml | 7 +- 2 files changed, 107 insertions(+), 87 deletions(-) diff --git a/poetry.lock b/poetry.lock index a8197fea9..ff63c621a 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.5.0 and should not be changed by hand. [[package]] name = "attrs" @@ -23,17 +23,17 @@ tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pyte [[package]] name = "boto3" -version = "1.28.62" +version = "1.28.65" description = "The AWS SDK for Python" optional = true python-versions = ">= 3.7" files = [ - {file = "boto3-1.28.62-py3-none-any.whl", hash = "sha256:0dfa2fc96ccafce4feb23044d6cba8b25075ad428a0c450d369d099c6a1059d2"}, - {file = "boto3-1.28.62.tar.gz", hash = "sha256:148eeba0f1867b3db5b3e5ae2997d75a94d03fad46171374a0819168c36f7ed0"}, + {file = "boto3-1.28.65-py3-none-any.whl", hash = "sha256:ff3d0116e0ca6c096547652390025780eace3a28f6c04c9ffbf38448f1e5a87b"}, + {file = "boto3-1.28.65.tar.gz", hash = "sha256:9d52a1605657aeb5b19b09cfc01d9a92f88a616a5daf5479a59656d6341ea6b3"}, ] [package.dependencies] -botocore = ">=1.31.62,<1.32.0" +botocore = ">=1.31.65,<1.32.0" jmespath = ">=0.7.1,<2.0.0" s3transfer = ">=0.7.0,<0.8.0" @@ -42,13 +42,13 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.31.62" +version = "1.31.65" description = "Low-level, data-driven core of boto 3." optional = true python-versions = ">= 3.7" files = [ - {file = "botocore-1.31.62-py3-none-any.whl", hash = "sha256:be792d806afc064694a2d0b9b25779f3ca0c1584b29a35ac32e67f0064ddb8b7"}, - {file = "botocore-1.31.62.tar.gz", hash = "sha256:272b78ac65256b6294cb9cdb0ac484d447ad3a85642e33cb6a3b1b8afee15a4c"}, + {file = "botocore-1.31.65-py3-none-any.whl", hash = "sha256:f74e3da98dfcec17bc63ef58f82c643bf5bd7ec6cc11a26ede21cc4cd064917f"}, + {file = "botocore-1.31.65.tar.gz", hash = "sha256:90716c6f1af97e5c2f516e9a3379767ebdddcc6cbed79b026fa5038ce4e5e43e"}, ] [package.dependencies] @@ -75,13 +75,13 @@ files = [ [[package]] name = "bytecode" -version = "0.15.0" +version = "0.15.1" description = "Python module to generate and modify bytecode" optional = false python-versions = ">=3.8" files = [ - {file = "bytecode-0.15.0-py3-none-any.whl", hash = "sha256:a66718dc1d246b4fec52b5850c15592344a56c8bdb28fd243c895ccf00f8371f"}, - {file = "bytecode-0.15.0.tar.gz", hash = "sha256:0908a8348cabf366b5c1865daabcdc0d650cb0cbdeb1750cc90564852f81945c"}, + {file = "bytecode-0.15.1-py3-none-any.whl", hash = "sha256:0a1dc340cac823cff605609b8b214f7f9bf80418c6b9e0fc8c6db1793c27137d"}, + {file = "bytecode-0.15.1.tar.gz", hash = "sha256:7263239a8d3f70fc7c303862b20cd2c6788052e37ce0a26e67309d280e985984"}, ] [package.dependencies] @@ -325,80 +325,80 @@ six = "*" [[package]] name = "ddtrace" -version = "1.20.3" +version = "1.20.5" description = "Datadog APM client library" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ - {file = "ddtrace-1.20.3-cp27-cp27m-macosx_11_0_x86_64.whl", hash = "sha256:53e118db3ea289d787e000301160e23015758b9d79c3ae4edf80e0f1c923d535"}, - {file = "ddtrace-1.20.3-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:3da9354b38cc069fd7e5b0d46523a3ca096b6de4c4cae5ede206f267fc80e27b"}, - {file = "ddtrace-1.20.3-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:bcff9ccecdb455f8c1690b49363106e1212de467b23205f1ca83b62162d42414"}, - {file = "ddtrace-1.20.3-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:aee97fb3f5d103f717247937b8dc78bc622adc199caccaaf035d82dc9b67e402"}, - {file = "ddtrace-1.20.3-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:8929726b52c8dc58263f66b726321d87e914fc071b581121c8b275b1b15ccc70"}, - {file = "ddtrace-1.20.3-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:c9185d0ec3f7a2d0c4858a7c26dd9c3282aef7c970584b732b722678c379c117"}, - {file = "ddtrace-1.20.3-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:63e04a878c4b5173ac2f9b0fdcad6428fbef32de5fea6fa0ca27be4d14ba7093"}, - {file = "ddtrace-1.20.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:226f078d6525c1d3bbfca28b497df24de9cd626423ae6a0c82f2cd9d694f9f80"}, - {file = "ddtrace-1.20.3-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f0f0ed5f0c98505addaaee272e450372cdefd552b3806314335b2804e2ba15eb"}, - {file = "ddtrace-1.20.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cbdd7f025fa76c221666948ff200c729408b6362992be664055e01fb20a540d9"}, - {file = "ddtrace-1.20.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:f8dfb9b88fb687f54d429931fa372658ad91221c1bf41f721663024b0d8d1f4e"}, - {file = "ddtrace-1.20.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:2f5f4b6b18988e7085de35f42481171984b420cb210fdb2b5e50605f69ce6049"}, - {file = "ddtrace-1.20.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:3470ee06052f1e25a11e6f710a1344928b80cf95dff0306fa5e05d83de2bca1e"}, - {file = "ddtrace-1.20.3-cp310-cp310-win32.whl", hash = "sha256:1240d2b385d8fa31977ae750a0bd9eb1b9378a708e5704685f57229db115e957"}, - {file = "ddtrace-1.20.3-cp310-cp310-win_amd64.whl", hash = "sha256:ff9c2bfb7602df284161fd51f9d4812ad4e8a29ef08292c689ec8600a5463d91"}, - {file = "ddtrace-1.20.3-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:89325721dd269ae4113aa78c031ffbda556771accc79592446d6e49c836da083"}, - {file = "ddtrace-1.20.3-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:1009b8667ea0ce3f5b46d6b2e98cb073e44e61097711dba9618d81dd03ca1d72"}, - {file = "ddtrace-1.20.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0289559d752edc5b99dbe896835bda5791f707f9f2efb98d48a05b8b1ef7375e"}, - {file = "ddtrace-1.20.3-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:55d960c0af5340518980fc77cb5a0fd22d242f68940607cfa94301fa0cf4067b"}, - {file = "ddtrace-1.20.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b249d6f49f48405a36cee5180c9ac28667d3bfaaeb0e4f82f35fd3f9694f18c"}, - {file = "ddtrace-1.20.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:91e20667802ab00e973f832ecb87853a0c59a56053e5c51f611bc2e2e38dd1e8"}, - {file = "ddtrace-1.20.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:ab008b4af0cef3cf0d02452188dcd7126c0787680325a4f2fa7cd5831df22c88"}, - {file = "ddtrace-1.20.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1e8815684f4487fa707b5312ed9ff4ceeaedd1a5af157f15405d27c266d6e99e"}, - {file = "ddtrace-1.20.3-cp311-cp311-win32.whl", hash = "sha256:5c44a4a5a5274eb2728e6dd05ad333bf9bfafec850e220b43f1171df9ec92c9b"}, - {file = "ddtrace-1.20.3-cp311-cp311-win_amd64.whl", hash = "sha256:293678013c7f060ae0027baf2807625da367656575204438dd53df7dd209cc0f"}, - {file = "ddtrace-1.20.3-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:6afa8a78d6cf998098c0fc6f18975113f8180584889dd91fa8dafe0203f1dc74"}, - {file = "ddtrace-1.20.3-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:272db8a94aef1483f3023d09cfd4cd9fdbe80cc0b8b22c6cbdcb28c9ca3c45da"}, - {file = "ddtrace-1.20.3-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:58f95016c0d364437a9f0986e9fd02714a9215870c1d79e3e3b6ff81fb5d3113"}, - {file = "ddtrace-1.20.3-cp35-cp35m-win32.whl", hash = "sha256:1a0cc4abe979d288eb58aed00895a35e6dc68ebb76d01dfd1cf3d8c80fbd6e72"}, - {file = "ddtrace-1.20.3-cp35-cp35m-win_amd64.whl", hash = "sha256:71e24d61571c0b854f61433c7e4303fb4278b4ed1a76c2cabceb79477e7ca9eb"}, - {file = "ddtrace-1.20.3-cp36-cp36m-macosx_11_0_x86_64.whl", hash = "sha256:f31e162f43cc3ebd570409683976c03b536e561a3c3afd8ca1ed837aa1552e25"}, - {file = "ddtrace-1.20.3-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:64ca09f911444e78fcdefece1140914bdafd7dd1217b848a1b2578d5ac341a4b"}, - {file = "ddtrace-1.20.3-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9cfc459cb52d56150548764dbef763be3945b8e2f522bedf2c7ba47fa23b34bb"}, - {file = "ddtrace-1.20.3-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d0a9c7e87ec009bc856ff252672a278b106a4e7ee8a7c99179e589576263743d"}, - {file = "ddtrace-1.20.3-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:7563d5110d78259cba087f9424cfb36f0666413439a3c4fb384284a3e4e076cf"}, - {file = "ddtrace-1.20.3-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:dc2ca4a6ad3219ad0ff4ad82caf31fd64c9c4d45611e62ae4bca0a5f6b6cff21"}, - {file = "ddtrace-1.20.3-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:818bd589c38d4a7b1689b20b0f235cdf421297257328a192a4dff004e43fed8d"}, - {file = "ddtrace-1.20.3-cp36-cp36m-win32.whl", hash = "sha256:9a1e09211d6030b6e75172c2b7cf4ec600c38013c70fb48f9c11db9ae0354950"}, - {file = "ddtrace-1.20.3-cp36-cp36m-win_amd64.whl", hash = "sha256:999287700d26362e9651becdd07f2ccf856a78016549d31d47da627bdd7e0b39"}, - {file = "ddtrace-1.20.3-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:fa5a174acd453022f925cacbcfd86d8a012bce9f7605cb020a6fe0dc85f0f435"}, - {file = "ddtrace-1.20.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:315d7835d97e9f78f988d7fdf32a98ed59ef509a07a16d3b77f49fd992b9d304"}, - {file = "ddtrace-1.20.3-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7674827d57aeff15fbde7cd730e906d509fd77b6d2cda8ce7b6da7f7dcfa1464"}, - {file = "ddtrace-1.20.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:16fb4d625d233c8719d37e11e2a08ec968a98877b2083140803d5d76a6fc6498"}, - {file = "ddtrace-1.20.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:470381b364d8adaa7e87a3a78cdaaa82a74d4418f9c79c1239eabc5b62ef824f"}, - {file = "ddtrace-1.20.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:8c87f7ea1ea7114950fdbcdad8a1e2bff6c1f4e20232563c3c88ee1224764fee"}, - {file = "ddtrace-1.20.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:84b0acecc372ae9755b0271abc19ac023491e6c84873df4d8af0305ebc7244b8"}, - {file = "ddtrace-1.20.3-cp37-cp37m-win32.whl", hash = "sha256:895a26e595852943203f6d0d04018b6f2fab56592fe6c63e33d862a7a9a4eb64"}, - {file = "ddtrace-1.20.3-cp37-cp37m-win_amd64.whl", hash = "sha256:8dfc439dd3e23bad60e74aab117013d49a9dbce3bd36b66e133206b435384ffa"}, - {file = "ddtrace-1.20.3-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:55b39c09cee3cc25ea3d3ad9dc430a344affbecb017ef4758374b22c050cfaef"}, - {file = "ddtrace-1.20.3-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:1546084f68a6b9218124725be32c42441f3cc44640656fbe6a911c5c92c2f742"}, - {file = "ddtrace-1.20.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a364f1f0942096a4e7d38324d4f5781aefb8581efaa211cdd454dcf2906f00b3"}, - {file = "ddtrace-1.20.3-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:34d5e9bd4f2148a247c4921cb531d247b430eac23c86d188dfbb267f33875365"}, - {file = "ddtrace-1.20.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b5483abd5ee0d40b5c0b46baa57da1df499700e5f2e4672ccaf2b6e7f783781e"}, - {file = "ddtrace-1.20.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2fa3c584e30c628a25978e9e1e884581e98e838b7234b4d66223713cfe7d7ece"}, - {file = "ddtrace-1.20.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:2f38e4a455ceaa05e5933958799506fd3b4682bf1803b50bd1d0fb57fb603eab"}, - {file = "ddtrace-1.20.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:bd3ebc0e9ae1159fd7b66b90bee2613bdf1b2ac59e9b164e34276f29e68ab032"}, - {file = "ddtrace-1.20.3-cp38-cp38-win32.whl", hash = "sha256:8628ca382e728204c18744f220e80c2cc5a54a61b825cd0c269d1017a235feaa"}, - {file = "ddtrace-1.20.3-cp38-cp38-win_amd64.whl", hash = "sha256:8216ee3990c7744e12351d843aec2f08ce0d18c9370ebb5c5dde597b8a188a3b"}, - {file = "ddtrace-1.20.3-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:2c91ca946ae543dee0e75ca2a1380db48291804ad6a740a4670fc5950f826109"}, - {file = "ddtrace-1.20.3-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:34c035588bc41c3e3985f04f7ba8bc79d725ba81d840e36b15355e22bc7545db"}, - {file = "ddtrace-1.20.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:301247561b8ab714aa8d955b9fb93a09dc8ff69898a3255a24126055ac3e6157"}, - {file = "ddtrace-1.20.3-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:73b541160d49c5ef08a652140cf537ef2cb35feb1441ed229c292994af735f80"}, - {file = "ddtrace-1.20.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b79fb270b6daf211454a82577ec27db8a8be0df65c545c7f8ea4878fd53d245c"}, - {file = "ddtrace-1.20.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7b92f57d076318c29c219d30e263727625a2cbce69ff7b72b48adaa248820a9d"}, - {file = "ddtrace-1.20.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:95ecc029e32ecc23ce052bf96b25a18b8165d6f9fe5b638bda99c3d1f958894a"}, - {file = "ddtrace-1.20.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6d68857b8643330519f3171b0c055cc738a441fb373060d6862755c89ae16874"}, - {file = "ddtrace-1.20.3-cp39-cp39-win32.whl", hash = "sha256:00d6efc0f909442f960b4246a20adf173cb385643686f7fae31f2367226b1858"}, - {file = "ddtrace-1.20.3-cp39-cp39-win_amd64.whl", hash = "sha256:fb06e0e535044570579683d0cf32b28e576bdc460c81aeddfa05bb6da7327a82"}, - {file = "ddtrace-1.20.3.tar.gz", hash = "sha256:c94beafc8ce6d973c054ccceba6437a6a12fcf136e5f94eab6326e1a4ce72310"}, + {file = "ddtrace-1.20.5-cp27-cp27m-macosx_11_0_x86_64.whl", hash = "sha256:8e848f4d4efd02f887633aa6eca284a820e42b316ebbbd9ed25599f777e8090f"}, + {file = "ddtrace-1.20.5-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:3aff8d055aa57de51a814dc86aaee5602b5ea665e7502d60b8467b07fb5018d2"}, + {file = "ddtrace-1.20.5-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:ec89b97c50b2ccc27ecef9d9d084a412f174002d665140a5710928909a2d592e"}, + {file = "ddtrace-1.20.5-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:8216d010c7206544de46053638ec5a9ed1ac3a56908621a958aaa390d8cffb27"}, + {file = "ddtrace-1.20.5-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:3c16686ed141dc847ed8cd09528649cccd833d896b2d5878f8ee370f15de6de6"}, + {file = "ddtrace-1.20.5-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:834e49122cf1e75c299c0ac54886de7b776f4f292c2679d88c1ea31e866d8514"}, + {file = "ddtrace-1.20.5-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:4f28220ce9cbdd58d02a9851d41b7c2424270ffe3a08fd042299ffc3d92c96f5"}, + {file = "ddtrace-1.20.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7228037265efbd74656e65f8d3f17ea28854c280aa86db1a7adaf642d9ffaa63"}, + {file = "ddtrace-1.20.5-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1f01a2a06974716fb516063369ab973fad38ffb33ca5ca15b3b7b128c06a2490"}, + {file = "ddtrace-1.20.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:be2570b7348eb9b561fe148997af3c11a50904870503a3fe7c2b6348e87dac7f"}, + {file = "ddtrace-1.20.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:6ca5b6ef30a300518e535a8291c9008d68fc1cde8fc4ed476af1b3c9377ab675"}, + {file = "ddtrace-1.20.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:ecd7e3a15e73c1f86cdb6e4c7874e99023f412ba9f63e1b342ecd593313fad2f"}, + {file = "ddtrace-1.20.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:86a052d8fe5cb380702bc4ee49857c2f12b019c7a3f4c78f8b2dfd43c72668ca"}, + {file = "ddtrace-1.20.5-cp310-cp310-win32.whl", hash = "sha256:3fd4d252224a74ff72b27b8371a2ac9500dc0ba08d3e009c3052ea63ad514824"}, + {file = "ddtrace-1.20.5-cp310-cp310-win_amd64.whl", hash = "sha256:90a641673b29521ec73ce572896011653cd222152b92ec744b6f162b4ccdb27f"}, + {file = "ddtrace-1.20.5-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:345c7a2910309547fa9b53d4386912a4cbd9c24c0a9f0b771404c7c2b82f8764"}, + {file = "ddtrace-1.20.5-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:07f97e1d94e3fe3f79d9656baa7283441c5d155adb2a0ca5d2defbdfbb12a28c"}, + {file = "ddtrace-1.20.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6e3718c0804cdd2def4b80f9bd51c55b2f44dca914086f647a21356980022668"}, + {file = "ddtrace-1.20.5-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b0acd401c52bf617474c4cac8bca0aa8cf6253d82b31c4e892b30294b397f10d"}, + {file = "ddtrace-1.20.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b36954f49c82e9e2e42615a5b70ba04dfd12d71011f4c9931effb6957c63fbd"}, + {file = "ddtrace-1.20.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:51523c55618a6b26ecdaab1c4540e3679e96723d0f883e1df7ffaa5010231cb2"}, + {file = "ddtrace-1.20.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:61d538c2c6e7a460cbdc19735093c993a62abc3381def43d5940a8facc4a280f"}, + {file = "ddtrace-1.20.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:59635b9fef2e02fefd46876f93e63eaa857503eb64aced6bcffaa81a199cfa4e"}, + {file = "ddtrace-1.20.5-cp311-cp311-win32.whl", hash = "sha256:7c4b6b121ec72736c9004c83d40d4d64155b935fb1c033390370de78af001fdb"}, + {file = "ddtrace-1.20.5-cp311-cp311-win_amd64.whl", hash = "sha256:cdaff774e88feb6d0229609ecdbaecbf50a220428bb29f863734b167d910a658"}, + {file = "ddtrace-1.20.5-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:ec41eff870ceba145306daab76f003a6977986dd65074b9a74f50cd0a985e431"}, + {file = "ddtrace-1.20.5-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:89dfaf4133ad8dcb6c63db843624e10175e9813a1f867e24d1c2a8e724088119"}, + {file = "ddtrace-1.20.5-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:7b625af8eb772bc242b850a011ba9294721f85d3f965cecdcc430fb73da1a11a"}, + {file = "ddtrace-1.20.5-cp35-cp35m-win32.whl", hash = "sha256:8cd282d38a394417e65b360ff9fb1d982bb3270ab18239f3ad3c70a1ec9cb9a3"}, + {file = "ddtrace-1.20.5-cp35-cp35m-win_amd64.whl", hash = "sha256:2d1086c5178be1763af7f30a18dd5bf6b77de855bbaa1c6c1d10e98fa7ad0931"}, + {file = "ddtrace-1.20.5-cp36-cp36m-macosx_11_0_x86_64.whl", hash = "sha256:af4eac36813863e08cb71f72f86e9c5a060841ce66acdf2a090d831bf6886895"}, + {file = "ddtrace-1.20.5-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7a2a15a3672331ffbdf32f8b8a387979b070510fbc2bc90e2c33c4669cd846bc"}, + {file = "ddtrace-1.20.5-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c9f8071a9b4ea0be1fe62e39a68e95592742c56e336fbd0e4e99d18c39eca27"}, + {file = "ddtrace-1.20.5-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa49ab583816163b4cc133da234c5c2bc75d37cf459004c8319dc4026ac96c9b"}, + {file = "ddtrace-1.20.5-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:a37cc5871b0dc6a18f19228280927d6b22d04fb30522eebcc48371481e447709"}, + {file = "ddtrace-1.20.5-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:e1f4ad4eab735f092d9a23b80d9ffd7d33f7bb8fecba001f222155a7dc03d6ed"}, + {file = "ddtrace-1.20.5-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:253c75018b412a6f90c26ddfd2f265fc950751dbf76cd8529f8537b4fa4c031d"}, + {file = "ddtrace-1.20.5-cp36-cp36m-win32.whl", hash = "sha256:a61ec2a2874ab9f7228b3cf430a7048803a1ce2db22fde021c1f61ed38a1e5b4"}, + {file = "ddtrace-1.20.5-cp36-cp36m-win_amd64.whl", hash = "sha256:2c6ff4e1118d4530b80fbf9432414e0fad38ef33bc64e39a00648b396c4c44a7"}, + {file = "ddtrace-1.20.5-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:f0eaf682acaed72427c9f05831e44050e6145ca0b227fc25a123c22d1c7d4c89"}, + {file = "ddtrace-1.20.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d952483633e637c9bb6364baf0dd3b805872b121746a7243d9de647c6f2c9417"}, + {file = "ddtrace-1.20.5-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ac292a54a8b3b00d424e8c6451d7c21d247ff7e223ab6280ee541319428cd41a"}, + {file = "ddtrace-1.20.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:07eae27732d63ac4e7370b575e59ff4f8c1396f8e40992feeca45425b4fce4cc"}, + {file = "ddtrace-1.20.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:5678feec55fc77771eae9ff80a34037af14a140b4f6bf68a454cf86204db6401"}, + {file = "ddtrace-1.20.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:1b23c154a3ca0f60b9324be0886655e05db40ea98cd33cb8111091ba9adea8f2"}, + {file = "ddtrace-1.20.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d73cb8a34112d80caadd6b088d02f9c6070264abc71733ecb537b2f9a97d6f10"}, + {file = "ddtrace-1.20.5-cp37-cp37m-win32.whl", hash = "sha256:ca8eabcd59c965086de4067475ba8e70895f81f601ce9660c5080cefd66d655c"}, + {file = "ddtrace-1.20.5-cp37-cp37m-win_amd64.whl", hash = "sha256:7ad29dcea031b6ba03f77de4ad6f85d749294fd9e8ba8af871a73811c47d1e5a"}, + {file = "ddtrace-1.20.5-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:67fea1d08dbca04eff521cc013adba1dd0d80c6e5c75a02cb4a7c42c0e973993"}, + {file = "ddtrace-1.20.5-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:79536cfa68338db9c95e728585e1f5f059e321cfcf145fce6b14e8cd1d12892c"}, + {file = "ddtrace-1.20.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c746d3546f69b7718fb61508826552a197fc981bb26c66408e1a20f7ac0952a3"}, + {file = "ddtrace-1.20.5-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8fb3aaf24760d8e4d23d01e497d15ac1b52be202e82a63140afd0c2b799e8571"}, + {file = "ddtrace-1.20.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d6602c52359dbf009ef762c4110ee1ca7dfb9a163aa7bc43515c920a3ddf545f"}, + {file = "ddtrace-1.20.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:7d1cc510f3a4be3df3282415b045cd85dc83a3a2051d219a24546dfb9fdcb39d"}, + {file = "ddtrace-1.20.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:774d48d7e050fc4fec35317348f04326d8f781348e11ff937e739fd7ad555c6b"}, + {file = "ddtrace-1.20.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:7094dd13bf2e17dac2f555a2a0ec85f89e330e6d9327122a6e16fac2b6765f34"}, + {file = "ddtrace-1.20.5-cp38-cp38-win32.whl", hash = "sha256:264cadc7caf89f45d225b1323a09c73a2706f38b754266660fc93a19b2ccb1d7"}, + {file = "ddtrace-1.20.5-cp38-cp38-win_amd64.whl", hash = "sha256:815a14133c25ed9a6deb0df043c7095107a2a900faaf458af153352bb329ccd5"}, + {file = "ddtrace-1.20.5-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:3faff82c1c0b809faa6b79ecb37a7402ca2e452241607db3ca4f8d79e30d8695"}, + {file = "ddtrace-1.20.5-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:6a94fc30efcf753cb40f37a1c8d440139ac63db6cc346ecaf3a409f12410297b"}, + {file = "ddtrace-1.20.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a43168df3b30fa228720d7c900a51a4fdaae145efaba6e6f37b678e2714f846"}, + {file = "ddtrace-1.20.5-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dad47a4058ed2b703843f0615411e5bd8edcaad54b0d8bc3de811252d8dd242e"}, + {file = "ddtrace-1.20.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a415b779b34d4af9880665b25ffcab8463c2e75dc82eed0228756a9fa93ed16"}, + {file = "ddtrace-1.20.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:6750dcf7f84895e136452a5c03ff66d4a9e022994b961b1cf7a983fcfc65afba"}, + {file = "ddtrace-1.20.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:76e8f5f07784c8ec26a7bfd5150c359429a3423179776e075735a2e685148095"}, + {file = "ddtrace-1.20.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c4e56bd317578d34663b399b213d8b22801267b8d4faf7a1b645eb1918feaf1b"}, + {file = "ddtrace-1.20.5-cp39-cp39-win32.whl", hash = "sha256:247d8206686ef6c0b1263ce63e37a99eee5fee20ad1456bcb78edcb77519c6f5"}, + {file = "ddtrace-1.20.5-cp39-cp39-win_amd64.whl", hash = "sha256:bafc1c668b8f32a8e980f75c121c33464188270c01ef87430baa489e55fb1590"}, + {file = "ddtrace-1.20.5.tar.gz", hash = "sha256:3a15940d03a4c35d253d93b6c3acf82e0cd70d72f4ec9d8c3d0ca0d0c398dda3"}, ] [package.dependencies] @@ -702,13 +702,13 @@ files = [ [[package]] name = "urllib3" -version = "1.26.17" +version = "1.26.18" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" files = [ - {file = "urllib3-1.26.17-py2.py3-none-any.whl", hash = "sha256:94a757d178c9be92ef5539b8840d48dc9cf1b2709c9d6b588232a055c524458b"}, - {file = "urllib3-1.26.17.tar.gz", hash = "sha256:24d6a242c28d29af46c3fae832c36db3bbebcc533dd1bb549172cd739c82df21"}, + {file = "urllib3-1.26.18-py2.py3-none-any.whl", hash = "sha256:34b97092d7e0a3a8cf7cd10e386f401b3737364026c45e622aa02903dffe0f07"}, + {file = "urllib3-1.26.18.tar.gz", hash = "sha256:f8ecc1bba5667413457c529ab955bf8c67b45db799d159066261719e328580a0"}, ] [package.extras] @@ -716,6 +716,23 @@ brotli = ["brotli (==1.0.9)", "brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotl secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] +[[package]] +name = "urllib3" +version = "2.0.7" +description = "HTTP library with thread-safe connection pooling, file post, and more." +optional = false +python-versions = ">=3.7" +files = [ + {file = "urllib3-2.0.7-py3-none-any.whl", hash = "sha256:fdb6d215c776278489906c2f8916e6e7d4f5a9b602ccbcfdf7f016fc8da0596e"}, + {file = "urllib3-2.0.7.tar.gz", hash = "sha256:c97dfde1f7bd43a71c8d2a58e369e9b2bf692d1334ea9f9cae55add7d0dd0f84"}, +] + +[package.extras] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +secure = ["certifi", "cryptography (>=1.9)", "idna (>=2.0.0)", "pyopenssl (>=17.1.0)", "urllib3-secure-extra"] +socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] +zstd = ["zstandard (>=0.18.0)"] + [[package]] name = "wrapt" version = "1.15.0" @@ -832,4 +849,4 @@ dev = ["boto3", "flake8", "httpretty", "nose2", "requests"] [metadata] lock-version = "2.0" python-versions = ">=3.7.0,<4" -content-hash = "171dcd184163df36156c63fa97ab16f1f063756aac2181c97b9a5a101735839a" +content-hash = "49c1c17e09ec0fe82e8f8ba0815078369669dcbedf681c78994173eeed020f05" diff --git a/pyproject.toml b/pyproject.toml index 7e84b19d3..a2f840ff7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -28,9 +28,12 @@ python = ">=3.7.0,<4" datadog = ">=0.41.0,<1.0.0" wrapt = "^1.11.2" ddtrace = "<2.0.0" -urllib3 = "<2.0.0" +urllib3 = [ + {version = "<2.0.0", python = "<3.11", optional = true}, + {version = "<2.1.0", python = ">=3.11", optional = true}, +] importlib_metadata = {version = "*", python = "<3.8"} -boto3 = { version = "^1.10.33", optional = true } +boto3 = { version = "^1.28.0", optional = true } typing_extensions = {version = "^4.0", python = "<3.8"} requests = { version ="^2.22.0", optional = true } nose2 = { version= "^0.9.1", optional = true } From 5ffdc80c15dc4e95c417dda72c9c118ed2ecdf70 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Wed, 18 Oct 2023 11:37:25 -0400 Subject: [PATCH 084/403] Bump version to 4.81.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index a2f840ff7..d5eac7cae 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "4.80.0" +version = "4.81.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From b32813df3c78d3791402a342a5796be90b274112 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Thu, 2 Nov 2023 09:26:58 -0400 Subject: [PATCH 085/403] feat: Fix comments in dockerfile (#385) --- Dockerfile | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 7bd1f6cfd..2cf569a7f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -14,10 +14,12 @@ RUN pip install . -t ./python/lib/$runtime/site-packages # Remove *.pyc files RUN find ./python/lib/$runtime/site-packages -name \*.pyc -delete -# Remove botocore (40MB) to reduce package size. aws-xray-sdk -# installs it, while it's already provided by the Lambda Runtime. +# Strip symbols from ddtrace's binaries. +# TODO (AJ): remove when ddtrace fixes this upstream RUN find . -name '*.so' -exec strip -g {} \; +# Remove botocore (40MB) to reduce package size. aws-xray-sdk +# installs it, while it's already provided by the Lambda Runtime. RUN rm -rf ./python/lib/$runtime/site-packages/botocore* RUN rm -rf ./python/lib/$runtime/site-packages/setuptools RUN rm -rf ./python/lib/$runtime/site-packages/jsonschema/tests From a45283c739f2cb6514658d96bddcf2bfe7bfbea5 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Tue, 7 Nov 2023 08:39:26 -0500 Subject: [PATCH 086/403] feat: Fix regex for ddtrace version (#389) --- scripts/run_integration_tests.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/run_integration_tests.sh b/scripts/run_integration_tests.sh index beb91921c..64a3248bc 100755 --- a/scripts/run_integration_tests.sh +++ b/scripts/run_integration_tests.sh @@ -234,7 +234,7 @@ for handler_name in "${LAMBDA_HANDLERS[@]}"; do sed -E "s/(\"datadog_lambda\"\: \")([0-9]+\.[0-9]+\.[0-9])/\1X.X.X/g" | sed -E "s/(\"partition_key\"\:\ \")[a-zA-Z0-9\-]+/\1XXXX/g" | sed -E "s/(\"object_etag\"\:\ \")[a-zA-Z0-9\-]+/\1XXXX/g" | - sed -E "s/(\"dd_trace\"\: \")([0-9]+\.[0-9]+\.[0-9])/\1X.X.X/g" | + sed -E "s/(\"dd_trace\"\: \")([0-9]+\.[0-9]+\.[0-9]+)/\1X.X.X/g" | sed -E "s/(traceparent\:)([A-Za-z0-9\-]+)/\1XXX/g" | # Parse out account ID in ARN sed -E "s/([a-zA-Z0-9]+):([a-zA-Z0-9]+):([a-zA-Z0-9]+):([a-zA-Z0-9\-]+):([a-zA-Z0-9\-\:]+)/\1:\2:\3:\4:XXXX:\4/g" | From 1dc0502818db9e2d0f31f002e891a7d4d3055254 Mon Sep 17 00:00:00 2001 From: Julio Guerra Date: Tue, 7 Nov 2023 14:41:01 +0100 Subject: [PATCH 087/403] feat: opt-in enablement of the instrumentation telemetry client (#386) * feat: opt-in enablement of the instrumentation telemetry client * Update datadog_lambda/tracing.py Co-authored-by: Alberto Vara * Fix linter --------- Co-authored-by: Alberto Vara --- datadog_lambda/tracing.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index a9c223e30..de6e76b4a 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -55,6 +55,15 @@ dd_trace_context = {} dd_tracing_enabled = os.environ.get("DD_TRACE_ENABLED", "false").lower() == "true" +if dd_tracing_enabled: + # Enable the telemetry client if the user has opted in + if ( + os.environ.get("DD_INSTRUMENTATION_TELEMETRY_ENABLED", "false").lower() + == "true" + ): + from ddtrace.internal.telemetry import telemetry_writer + + telemetry_writer.enable() propagator = HTTPPropagator() From df70de2d12ed8766e9563e16c8433fe8932dfa3d Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Fri, 10 Nov 2023 10:39:47 -0500 Subject: [PATCH 088/403] expose DD_CAPTURE_LAMBDA_PAYLOAD_MAX_DEPTH [SVLS-3853] (#387) * expose DD_CAPTURE_LAMBDA_PAYLOAD_MAX_DEPTH * Update README.md Co-authored-by: Brett Blue <84536271+brett0000FF@users.noreply.github.com> * improve readme.md --------- Co-authored-by: Brett Blue <84536271+brett0000FF@users.noreply.github.com> --- README.md | 17 +++++++++++ datadog_lambda/tag_object.py | 7 ++--- datadog_lambda/wrapper.py | 48 ++++++++++++++++++++------------ datadog_lambda/xray.py | 1 - scripts/run_integration_tests.sh | 6 ++-- tests/test_tag_object.py | 34 +++++++++++++++++++++- 6 files changed, 86 insertions(+), 27 deletions(-) diff --git a/README.md b/README.md index 757c929d0..e3702b1ba 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,21 @@ Follow the [installation instructions](https://docs.datadoghq.com/serverless/ins Follow the [configuration instructions](https://docs.datadoghq.com/serverless/configuration) to tag your telemetry, capture request/response payloads, filter or scrub sensitive information from logs or traces, and more. +For additional tracing configuration options, check out the [official documentation for Datadog trace client](https://ddtrace.readthedocs.io/en/stable/configuration.html). + +Besides the environment variables supported by dd-trace-py, the datadog-lambda-python library added following environment variables. + +| Environment Variables | Description | Default Value | +| -------------------- | ------------ | ------------- | +| DD_ENCODE_AUTHORIZER_CONTEXT | When set to `true` for Lambda authorizers, the tracing context will be encoded into the response for propagation. Supported for NodeJS and Python. | `true` | +| DD_DECODE_AUTHORIZER_CONTEXT | When set to `true` for Lambdas that are authorized via Lambda authorizers, it will parse and use the encoded tracing context (if found). Supported for NodeJS and Python. | `true` | +| DD_COLD_START_TRACING | Set to `false` to disable Cold Start Tracing. Used in NodeJS and Python. | `true` | +| DD_MIN_COLD_START_DURATION | Sets the minimum duration (in milliseconds) for a module load event to be traced via Cold Start Tracing. Number. | `3` | +| DD_COLD_START_TRACE_SKIP_LIB | optionally skip creating Cold Start Spans for a comma-separated list of libraries. Useful to limit depth or skip known libraries. | `ddtrace.internal.compat,ddtrace.filters` | +| DD_CAPTURE_LAMBDA_PAYLOAD | [Captures incoming and outgoing AWS Lambda payloads][1] in the Datadog APM spans for Lambda invocations. | `false` | +| DD_CAPTURE_LAMBDA_PAYLOAD_MAX_DEPTH | Determines the level of detail captured from AWS Lambda payloads, which are then assigned as tags for the `aws.lambda` span. It specifies the nesting depth of the JSON payload structure to process. Once the specified maximum depth is reached, the tag's value is set to the stringified value of any nested elements beyond this level.
For example, given the input payload:
{
"lv1" : {
"lv2": {
"lv3": "val"
}
}
}
If the depth is set to `2`, the resulting tag's key is set to `function.request.lv1.lv2` and the value is `{\"lv3\": \"val\"}`.
If the depth is set to `0`, the resulting tag's key is set to `function.request` and value is `{\"lv1\":{\"lv2\":{\"lv3\": \"val\"}}}` | `10` | + + ## Opening Issues If you encounter a bug with this package, we want to hear about it. Before opening a new issue, search the existing issues to avoid duplicates. @@ -51,3 +66,5 @@ For product feedback and questions, join the `#serverless` channel in the [Datad Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0. This product includes software developed at Datadog (https://www.datadoghq.com/). Copyright 2019 Datadog, Inc. + +[1]: https://www.datadoghq.com/blog/troubleshoot-lambda-function-request-response-payloads/ diff --git a/datadog_lambda/tag_object.py b/datadog_lambda/tag_object.py index 151801f62..b8e26934c 100644 --- a/datadog_lambda/tag_object.py +++ b/datadog_lambda/tag_object.py @@ -13,12 +13,11 @@ def tag_object(span, key, obj, depth=0): - if depth >= max_depth: - return - else: - depth += 1 if obj is None: return span.set_tag(key, obj) + if depth >= max_depth: + return tag_object(span, key, _redact_val(key, str(obj)[0:5000])) + depth += 1 if _should_try_string(obj): parsed = None try: diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index f9675c689..811188486 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -49,7 +49,6 @@ extract_trigger_tags, extract_http_status_code_tag, ) -from datadog_lambda.tag_object import tag_object profiling_env_var = os.environ.get("DD_PROFILING_ENABLED", "false").lower() == "true" if profiling_env_var: @@ -57,10 +56,6 @@ logger = logging.getLogger(__name__) -dd_capture_lambda_payload_enabled = ( - os.environ.get("DD_CAPTURE_LAMBDA_PAYLOAD", "false").lower() == "true" -) - DD_FLUSH_TO_LOG = "DD_FLUSH_TO_LOG" DD_LOGS_INJECTION = "DD_LOGS_INJECTION" DD_MERGE_XRAY_TRACES = "DD_MERGE_XRAY_TRACES" @@ -72,10 +67,34 @@ DD_COLD_START_TRACING = "DD_COLD_START_TRACING" DD_MIN_COLD_START_DURATION = "DD_MIN_COLD_START_DURATION" DD_COLD_START_TRACE_SKIP_LIB = "DD_COLD_START_TRACE_SKIP_LIB" +DD_CAPTURE_LAMBDA_PAYLOAD = "DD_CAPTURE_LAMBDA_PAYLOAD" +DD_CAPTURE_LAMBDA_PAYLOAD_MAX_DEPTH = "DD_CAPTURE_LAMBDA_PAYLOAD_MAX_DEPTH" DD_REQUESTS_SERVICE_NAME = "DD_REQUESTS_SERVICE_NAME" DD_SERVICE = "DD_SERVICE" DD_ENV = "DD_ENV" + +def get_env_as_int(env_key, default_value: int) -> int: + try: + return int(os.environ.get(env_key, default_value)) + except Exception as e: + logger.warn( + f"Failed to parse {env_key} as int. Using default value: {default_value}. Error: {e}" + ) + return default_value + + +dd_capture_lambda_payload_enabled = ( + os.environ.get(DD_CAPTURE_LAMBDA_PAYLOAD, "false").lower() == "true" +) + +if dd_capture_lambda_payload_enabled: + import datadog_lambda.tag_object as tag_object + + tag_object.max_depth = get_env_as_int( + DD_CAPTURE_LAMBDA_PAYLOAD_MAX_DEPTH, tag_object.max_depth + ) + env_env_var = os.environ.get(DD_ENV, None) init_timestamp_ns = time_ns() @@ -161,14 +180,9 @@ def __init__(self, func): self.cold_start_tracing = depends_on_dd_tracing_enabled( os.environ.get(DD_COLD_START_TRACING, "true").lower() == "true" ) - self.min_cold_start_trace_duration = 3 - if DD_MIN_COLD_START_DURATION in os.environ: - try: - self.min_cold_start_trace_duration = int( - os.environ[DD_MIN_COLD_START_DURATION] - ) - except Exception: - logger.debug(f"Malformatted env {DD_MIN_COLD_START_DURATION}") + self.min_cold_start_trace_duration = get_env_as_int( + DD_MIN_COLD_START_DURATION, 3 + ) self.cold_start_trace_skip_lib = [ "ddtrace.internal.compat", "ddtrace.filters", @@ -307,16 +321,14 @@ def _after(self, event, context): create_dd_dummy_metadata_subsegment( self.trigger_tags, XraySubsegment.LAMBDA_FUNCTION_TAGS_KEY ) - should_trace_cold_start = ( - dd_tracing_enabled and self.cold_start_tracing and is_new_sandbox() - ) + should_trace_cold_start = self.cold_start_tracing and is_new_sandbox() if should_trace_cold_start: trace_ctx = tracer.current_trace_context() if self.span: if dd_capture_lambda_payload_enabled: - tag_object(self.span, "function.request", event) - tag_object(self.span, "function.response", self.response) + tag_object.tag_object(self.span, "function.request", event) + tag_object.tag_object(self.span, "function.response", self.response) if status_code: self.span.set_tag("http.status_code", status_code) diff --git a/datadog_lambda/xray.py b/datadog_lambda/xray.py index bbaecb2ed..88d108f56 100644 --- a/datadog_lambda/xray.py +++ b/datadog_lambda/xray.py @@ -75,7 +75,6 @@ def generate_random_id(): def build_segment(context, key, metadata): - segment = json.dumps( { "id": generate_random_id(), diff --git a/scripts/run_integration_tests.sh b/scripts/run_integration_tests.sh index 64a3248bc..903824583 100755 --- a/scripts/run_integration_tests.sh +++ b/scripts/run_integration_tests.sh @@ -200,8 +200,8 @@ for handler_name in "${LAMBDA_HANDLERS[@]}"; do sed -E "s/(api_key=|'api_key': '|DD-API-KEY:)[a-z0-9\.\-]+/\1XXXX/g" | # Normalize package version so that these snapshots aren't broken on version bumps sed -E "s/(dd_lambda_layer:datadog-python[0-9]+_)[0-9]+\.[0-9]+\.[0-9]+/\1X\.X\.X/g" | - sed -E "s/(datadog_lambda:v)([0-9]+\.[0-9]+\.[0-9])/\1XX/g" | - sed -E "s/(datadogpy\/)([0-9]+\.[0-9]+\.[0-9])/\1XX/g" | + sed -E "s/(datadog_lambda:v)([0-9]+\.[0-9]+\.[0-9]+)/\1XX/g" | + sed -E "s/(datadogpy\/)([0-9]+\.[0-9]+\.[0-9]+)/\1XX/g" | sed -E "s/(python )([0-9]\.[0-9]+\.[0-9]+)/\1XX/g" | # Strip out run ID (from function name, resource, etc.) sed -E "s/${!run_id}/XXXX/g" | @@ -231,7 +231,7 @@ for handler_name in "${LAMBDA_HANDLERS[@]}"; do sed -E "s/(\"connection_id\"\:\ \")[a-zA-Z0-9\-]+/\1XXXX/g" | sed -E "s/(\"shardId\-)([0-9]+)\:([a-zA-Z0-9]+)[a-zA-Z0-9]/\1XXXX:XXXX/g" | sed -E "s/(\"shardId\-)[0-9a-zA-Z]+/\1XXXX/g" | - sed -E "s/(\"datadog_lambda\"\: \")([0-9]+\.[0-9]+\.[0-9])/\1X.X.X/g" | + sed -E "s/(\"datadog_lambda\"\: \")([0-9]+\.[0-9]+\.[0-9]+)/\1X.X.X/g" | sed -E "s/(\"partition_key\"\:\ \")[a-zA-Z0-9\-]+/\1XXXX/g" | sed -E "s/(\"object_etag\"\:\ \")[a-zA-Z0-9\-]+/\1XXXX/g" | sed -E "s/(\"dd_trace\"\: \")([0-9]+\.[0-9]+\.[0-9]+)/\1X.X.X/g" | diff --git a/tests/test_tag_object.py b/tests/test_tag_object.py index 8e5ac3aa3..eac84f7c7 100644 --- a/tests/test_tag_object.py +++ b/tests/test_tag_object.py @@ -28,7 +28,39 @@ def test_tag_object(self): ], True, ) - self.assertEqual(1, 1) + + def test_tag_object_max_depth(self): + payload = { + "hello": "world", + "level1": { + "level2_dict": {"level3": 3}, + "level2_list": [None, True, "nice", {"l3": "v3"}], + "level2_bool": True, + "level2_int": 2, + }, + "vals": [{"thingOne": 1}, {"thingTwo": 2}], + } + spanMock = MagicMock() + import datadog_lambda.tag_object as lib_ref + + lib_ref.max_depth = 2 # setting up the test + tag_object(spanMock, "function.request", payload) + lib_ref.max_depth = 10 # revert the setup + spanMock.set_tag.assert_has_calls( + [ + call("function.request.vals.0", "{'thingOne': 1}"), + call("function.request.vals.1", "{'thingTwo': 2}"), + call("function.request.hello", "world"), + call("function.request.level1.level2_dict", "{'level3': 3}"), + call( + "function.request.level1.level2_list", + "[None, True, 'nice', {'l3': 'v3'}]", + ), + call("function.request.level1.level2_bool", "True"), + call("function.request.level1.level2_int", "2"), + ], + True, + ) def test_redacted_tag_object(self): payload = { From 10063a6a1833420ea0af7eb78991dfc1dfee2601 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Fri, 10 Nov 2023 13:52:49 -0500 Subject: [PATCH 089/403] bugfix for tag_object (#390) --- datadog_lambda/tag_object.py | 2 +- tests/test_tag_object.py | 27 +++++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/datadog_lambda/tag_object.py b/datadog_lambda/tag_object.py index b8e26934c..ec1c5a669 100644 --- a/datadog_lambda/tag_object.py +++ b/datadog_lambda/tag_object.py @@ -16,7 +16,7 @@ def tag_object(span, key, obj, depth=0): if obj is None: return span.set_tag(key, obj) if depth >= max_depth: - return tag_object(span, key, _redact_val(key, str(obj)[0:5000])) + return span.set_tag(key, _redact_val(key, str(obj)[0:5000])) depth += 1 if _should_try_string(obj): parsed = None diff --git a/tests/test_tag_object.py b/tests/test_tag_object.py index eac84f7c7..77512164f 100644 --- a/tests/test_tag_object.py +++ b/tests/test_tag_object.py @@ -62,6 +62,33 @@ def test_tag_object_max_depth(self): True, ) + def test_tag_object_max_depth_0(self): + payload = { + "hello": "world", + "level1": { + "level2_dict": {"level3": 3}, + "level2_list": [None, True, "nice", {"l3": "v3"}], + "level2_bool": True, + "level2_int": 2, + }, + "vals": [{"thingOne": 1}, {"thingTwo": 2}], + } + spanMock = MagicMock() + import datadog_lambda.tag_object as lib_ref + + lib_ref.max_depth = 0 # setting up the test + tag_object(spanMock, "function.request", payload) + lib_ref.max_depth = 10 # revert the setup + spanMock.set_tag.assert_has_calls( + [ + call( + "function.request", + "{'hello': 'world', 'level1': {'level2_dict': {'level3': 3}, 'level2_list': [None, True, 'nice', {'l3': 'v3'}], 'level2_bool': True, 'level2_int': 2}, 'vals': [{'thingOne': 1}, {'thingTwo': 2}]}", + ), + ], + True, + ) + def test_redacted_tag_object(self): payload = { "authorization": "world", From aa5a1c9514e98c90d765264f86d814d8c65cb3fb Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Fri, 10 Nov 2023 16:01:53 -0500 Subject: [PATCH 090/403] Bump version to 4.82.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index d5eac7cae..de4a780e8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "4.81.0" +version = "4.82.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 60ab01c0183b3eeabe1ca779a36aa727f1a74412 Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Tue, 21 Nov 2023 09:55:06 -0800 Subject: [PATCH 091/403] Defer trace context extraction to ddtrace. (#391) * Defer trace context extraction to ddtrace. * Adds testing for w3c traceparent extraction. * Inject headers when patching http requests. --- datadog_lambda/tracing.py | 277 +++++++++-------------- tests/test_tracing.py | 448 ++++++++++++++++++++++++++++---------- 2 files changed, 441 insertions(+), 284 deletions(-) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index de6e76b4a..058827498 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -20,7 +20,6 @@ from datadog_lambda.constants import ( SamplingPriority, - TraceHeader, TraceContextSource, XrayDaemon, Headers, @@ -32,6 +31,7 @@ from ddtrace import tracer, patch, Span from ddtrace import __version__ as ddtrace_version from ddtrace.propagation.http import HTTPPropagator +from ddtrace.context import Context from datadog_lambda import __version__ as datadog_lambda_version from datadog_lambda.trigger import ( _EventSource, @@ -53,7 +53,7 @@ logger = logging.getLogger(__name__) -dd_trace_context = {} +dd_trace_context = None dd_tracing_enabled = os.environ.get("DD_TRACE_ENABLED", "false").lower() == "true" if dd_tracing_enabled: # Enable the telemetry client if the user has opted in @@ -72,25 +72,21 @@ def _convert_xray_trace_id(xray_trace_id): """ Convert X-Ray trace id (hex)'s last 63 bits to a Datadog trace id (int). """ - return str(0x7FFFFFFFFFFFFFFF & int(xray_trace_id[-16:], 16)) + return 0x7FFFFFFFFFFFFFFF & int(xray_trace_id[-16:], 16) def _convert_xray_entity_id(xray_entity_id): """ Convert X-Ray (sub)segement id (hex) to a Datadog span id (int). """ - return str(int(xray_entity_id, 16)) + return int(xray_entity_id, 16) def _convert_xray_sampling(xray_sampled): """ Convert X-Ray sampled (True/False) to its Datadog counterpart. """ - return ( - str(SamplingPriority.USER_KEEP) - if xray_sampled - else str(SamplingPriority.USER_REJECT) - ) + return SamplingPriority.USER_KEEP if xray_sampled else SamplingPriority.USER_REJECT def _get_xray_trace_context(): @@ -102,11 +98,11 @@ def _get_xray_trace_context(): ) if xray_trace_entity is None: return None - trace_context = { - "trace-id": _convert_xray_trace_id(xray_trace_entity.get("trace_id")), - "parent-id": _convert_xray_entity_id(xray_trace_entity.get("parent_id")), - "sampling-priority": _convert_xray_sampling(xray_trace_entity.get("sampled")), - } + trace_context = Context( + trace_id=_convert_xray_trace_id(xray_trace_entity.get("trace_id")), + span_id=_convert_xray_entity_id(xray_trace_entity.get("parent_id")), + sampling_priority=_convert_xray_sampling(xray_trace_entity.get("sampled")), + ) logger.debug( "Converted trace context %s from X-Ray segment %s", trace_context, @@ -124,26 +120,19 @@ def _get_dd_trace_py_context(): if not span: return None - parent_id = span.context.span_id - trace_id = span.context.trace_id - sampling_priority = span.context.sampling_priority logger.debug( "found dd trace context: %s", (span.context.trace_id, span.context.span_id) ) - return { - "parent-id": str(parent_id), - "trace-id": str(trace_id), - "sampling-priority": str(sampling_priority), - "source": TraceContextSource.DDTRACE, - } + return span.context -def _context_obj_to_headers(obj): - return { - TraceHeader.TRACE_ID: str(obj.get("trace-id")), - TraceHeader.PARENT_ID: str(obj.get("parent-id")), - TraceHeader.SAMPLING_PRIORITY: str(obj.get("sampling-priority")), - } +def _is_context_complete(context): + return ( + context + and context.trace_id + and context.span_id + and context.sampling_priority is not None + ) def create_dd_dummy_metadata_subsegment( @@ -164,28 +153,14 @@ def extract_context_from_lambda_context(lambda_context): dd_trace libraries inject this trace context on synchronous invocations """ + dd_data = None client_context = lambda_context.client_context - trace_id = None - parent_id = None - sampling_priority = None if client_context and client_context.custom: + dd_data = client_context.custom if "_datadog" in client_context.custom: # Legacy trace propagation dict - dd_data = client_context.custom.get("_datadog", {}) - trace_id = dd_data.get(TraceHeader.TRACE_ID) - parent_id = dd_data.get(TraceHeader.PARENT_ID) - sampling_priority = dd_data.get(TraceHeader.SAMPLING_PRIORITY) - elif ( - TraceHeader.TRACE_ID in client_context.custom - and TraceHeader.PARENT_ID in client_context.custom - and TraceHeader.SAMPLING_PRIORITY in client_context.custom - ): - # New trace propagation keys - trace_id = client_context.custom.get(TraceHeader.TRACE_ID) - parent_id = client_context.custom.get(TraceHeader.PARENT_ID) - sampling_priority = client_context.custom.get(TraceHeader.SAMPLING_PRIORITY) - - return trace_id, parent_id, sampling_priority + dd_data = client_context.custom.get("_datadog") + return propagator.extract(dd_data) def extract_context_from_http_event_or_context( @@ -205,33 +180,17 @@ def extract_context_from_http_event_or_context( EventTypes.API_GATEWAY, subtype=EventSubtypes.HTTP_API ) injected_authorizer_data = get_injected_authorizer_data(event, is_http_api) - if injected_authorizer_data: - try: - # fail fast on any KeyError here - trace_id = injected_authorizer_data[TraceHeader.TRACE_ID] - parent_id = injected_authorizer_data[TraceHeader.PARENT_ID] - sampling_priority = injected_authorizer_data.get( - TraceHeader.SAMPLING_PRIORITY - ) - return trace_id, parent_id, sampling_priority - except Exception as e: - logger.debug( - "extract_context_from_authorizer_event returned with error. \ - Continue without injecting the authorizer span %s", - e, - ) - - headers = event.get("headers", {}) or {} - lowercase_headers = {k.lower(): v for k, v in headers.items()} + context = propagator.extract(injected_authorizer_data) + if _is_context_complete(context): + return context - trace_id = lowercase_headers.get(TraceHeader.TRACE_ID) - parent_id = lowercase_headers.get(TraceHeader.PARENT_ID) - sampling_priority = lowercase_headers.get(TraceHeader.SAMPLING_PRIORITY) + headers = event.get("headers") + context = propagator.extract(headers) - if not trace_id or not parent_id or not sampling_priority: + if not _is_context_complete(context): return extract_context_from_lambda_context(lambda_context) - return trace_id, parent_id, sampling_priority + return context def create_sns_event(message): @@ -262,12 +221,9 @@ def extract_context_from_sqs_or_sns_event_or_context(event, lambda_context): # EventBridge => SQS try: - ( - trace_id, - parent_id, - sampling_priority, - ) = _extract_context_from_eventbridge_sqs_event(event) - return trace_id, parent_id, sampling_priority + context = _extract_context_from_eventbridge_sqs_event(event) + if _is_context_complete(context): + return context except Exception: logger.debug("Failed extracting context as EventBridge to SQS.") @@ -311,11 +267,7 @@ def extract_context_from_sqs_or_sns_event_or_context(event, lambda_context): "context from String or Binary SQS/SNS message attributes" ) dd_data = json.loads(dd_json_data) - trace_id = dd_data.get(TraceHeader.TRACE_ID) - parent_id = dd_data.get(TraceHeader.PARENT_ID) - sampling_priority = dd_data.get(TraceHeader.SAMPLING_PRIORITY) - - return trace_id, parent_id, sampling_priority + return propagator.extract(dd_data) except Exception as e: logger.debug("The trace extractor returned with error %s", e) return extract_context_from_lambda_context(lambda_context) @@ -329,20 +281,12 @@ def _extract_context_from_eventbridge_sqs_event(event): This is only possible if first record in `Records` contains a `body` field which contains the EventBridge `detail` as a JSON string. """ - try: - first_record = event.get("Records")[0] - if "body" in first_record: - body_str = first_record.get("body", {}) - body = json.loads(body_str) - - detail = body.get("detail") - dd_context = detail.get("_datadog") - trace_id = dd_context.get(TraceHeader.TRACE_ID) - parent_id = dd_context.get(TraceHeader.PARENT_ID) - sampling_priority = dd_context.get(TraceHeader.SAMPLING_PRIORITY) - return trace_id, parent_id, sampling_priority - except Exception: - raise + first_record = event.get("Records")[0] + body_str = first_record.get("body") + body = json.loads(body_str) + detail = body.get("detail") + dd_context = detail.get("_datadog") + return propagator.extract(dd_context) def extract_context_from_eventbridge_event(event, lambda_context): @@ -355,10 +299,7 @@ def extract_context_from_eventbridge_event(event, lambda_context): dd_context = detail.get("_datadog") if not dd_context: return extract_context_from_lambda_context(lambda_context) - trace_id = dd_context.get(TraceHeader.TRACE_ID) - parent_id = dd_context.get(TraceHeader.PARENT_ID) - sampling_priority = dd_context.get(TraceHeader.SAMPLING_PRIORITY) - return trace_id, parent_id, sampling_priority + return propagator.extract(dd_context) except Exception as e: logger.debug("The trace extractor returned with error %s", e) return extract_context_from_lambda_context(lambda_context) @@ -381,25 +322,22 @@ def extract_context_from_kinesis_event(event, lambda_context): if not dd_ctx: return extract_context_from_lambda_context(lambda_context) - trace_id = dd_ctx.get(TraceHeader.TRACE_ID) - parent_id = dd_ctx.get(TraceHeader.PARENT_ID) - sampling_priority = dd_ctx.get(TraceHeader.SAMPLING_PRIORITY) - return trace_id, parent_id, sampling_priority + return propagator.extract(dd_ctx) except Exception as e: logger.debug("The trace extractor returned with error %s", e) return extract_context_from_lambda_context(lambda_context) -def _deterministic_md5_hash(s: str) -> str: +def _deterministic_md5_hash(s: str) -> int: """MD5 here is to generate trace_id, not for any encryption.""" hex_number = hashlib.md5(s.encode("ascii")).hexdigest() binary = bin(int(hex_number, 16)) binary_str = str(binary) binary_str_remove_0b = binary_str[2:].rjust(128, "0") most_significant_64_bits_without_leading_1 = "0" + binary_str_remove_0b[1:-64] - result = str(int(most_significant_64_bits_without_leading_1, 2)) - if result == "0" * 64: - return "1" + result = int(most_significant_64_bits_without_leading_1, 2) + if result == 0: + return 1 return result @@ -417,7 +355,9 @@ def extract_context_from_step_functions(event, lambda_context): execution_id + "#" + state_name + "#" + state_entered_time ) sampling_priority = SamplingPriority.AUTO_KEEP - return trace_id, parent_id, sampling_priority + return Context( + trace_id=trace_id, span_id=parent_id, sampling_priority=sampling_priority + ) except Exception as e: logger.debug("The Step Functions trace extractor returned with error %s", e) return extract_context_from_lambda_context(lambda_context) @@ -433,12 +373,14 @@ def extract_context_custom_extractor(extractor, event, lambda_context): parent_id, sampling_priority, ) = extractor(event, lambda_context) - return trace_id, parent_id, sampling_priority + return Context( + trace_id=int(trace_id), + span_id=int(parent_id), + sampling_priority=int(sampling_priority), + ) except Exception as e: logger.debug("The trace extractor returned with error %s", e) - return None, None, None - def is_authorizer_response(response) -> bool: try: @@ -504,56 +446,27 @@ def extract_dd_trace_context( event_source = parse_event_source(event) if extractor is not None: - ( - trace_id, - parent_id, - sampling_priority, - ) = extract_context_custom_extractor(extractor, event, lambda_context) + context = extract_context_custom_extractor(extractor, event, lambda_context) elif isinstance(event, (set, dict)) and "headers" in event: - ( - trace_id, - parent_id, - sampling_priority, - ) = extract_context_from_http_event_or_context( + context = extract_context_from_http_event_or_context( event, lambda_context, event_source, decode_authorizer_context ) elif event_source.equals(EventTypes.SNS) or event_source.equals(EventTypes.SQS): - ( - trace_id, - parent_id, - sampling_priority, - ) = extract_context_from_sqs_or_sns_event_or_context(event, lambda_context) + context = extract_context_from_sqs_or_sns_event_or_context( + event, lambda_context + ) elif event_source.equals(EventTypes.EVENTBRIDGE): - ( - trace_id, - parent_id, - sampling_priority, - ) = extract_context_from_eventbridge_event(event, lambda_context) + context = extract_context_from_eventbridge_event(event, lambda_context) elif event_source.equals(EventTypes.KINESIS): - ( - trace_id, - parent_id, - sampling_priority, - ) = extract_context_from_kinesis_event(event, lambda_context) + context = extract_context_from_kinesis_event(event, lambda_context) elif event_source.equals(EventTypes.STEPFUNCTIONS): - ( - trace_id, - parent_id, - sampling_priority, - ) = extract_context_from_step_functions(event, lambda_context) + context = extract_context_from_step_functions(event, lambda_context) else: - trace_id, parent_id, sampling_priority = extract_context_from_lambda_context( - lambda_context - ) + context = extract_context_from_lambda_context(lambda_context) - if trace_id and parent_id and sampling_priority: + if _is_context_complete(context): logger.debug("Extracted Datadog trace context from event or context") - metadata = { - "trace-id": trace_id, - "parent-id": parent_id, - "sampling-priority": sampling_priority, - } - dd_trace_context = metadata.copy() + dd_trace_context = context trace_context_source = TraceContextSource.EVENT else: # AWS Lambda runtime caches global variables between invocations, @@ -565,7 +478,7 @@ def extract_dd_trace_context( return dd_trace_context, trace_context_source, event_source -def get_dd_trace_context(): +def get_dd_trace_context_obj(): """ Return the Datadog trace context to be propagated on the outgoing requests. @@ -579,8 +492,8 @@ def get_dd_trace_context(): """ if dd_tracing_enabled: dd_trace_py_context = _get_dd_trace_py_context() - if dd_trace_py_context is not None: - return _context_obj_to_headers(dd_trace_py_context) + if _is_context_complete(dd_trace_py_context): + return dd_trace_py_context global dd_trace_context @@ -592,16 +505,32 @@ def get_dd_trace_context(): % e ) if not xray_context: - return {} + return None + + if not _is_context_complete(dd_trace_context): + return xray_context - if not dd_trace_context: - return _context_obj_to_headers(xray_context) + logger.debug("Set parent id from xray trace context: %s", xray_context.span_id) + return Context( + trace_id=dd_trace_context.trace_id, + span_id=xray_context.span_id, + sampling_priority=dd_trace_context.sampling_priority, + meta=dd_trace_context._meta.copy(), + metrics=dd_trace_context._metrics.copy(), + ) - context = dd_trace_context.copy() - context["parent-id"] = xray_context.get("parent-id") - logger.debug("Set parent id from xray trace context: %s", context.get("parent-id")) - return _context_obj_to_headers(context) +def get_dd_trace_context(): + """ + Return the Datadog trace context to be propagated on the outgoing requests, + as a dict of headers. + """ + headers = {} + context = get_dd_trace_context_obj() + if not _is_context_complete(context): + return headers + propagator.inject(context, headers) + return headers def set_correlation_ids(): @@ -619,14 +548,12 @@ def set_correlation_ids(): logger.debug("using ddtrace implementation for spans") return - context = get_dd_trace_context() - if not context: + context = get_dd_trace_context_obj() + if not _is_context_complete(context): return - span = tracer.trace("dummy.span") - span.trace_id = int(context[TraceHeader.TRACE_ID]) - span.span_id = int(context[TraceHeader.PARENT_ID]) - + tracer.context_provider.activate(context) + tracer.trace("dummy.span") logger.debug("correlation ids set") @@ -669,18 +596,20 @@ def is_lambda_context(): def set_dd_trace_py_root(trace_context_source, merge_xray_traces): if trace_context_source == TraceContextSource.EVENT or merge_xray_traces: - context = dict(dd_trace_context) + context = Context( + trace_id=dd_trace_context.trace_id, + span_id=dd_trace_context.span_id, + sampling_priority=dd_trace_context.sampling_priority, + ) if merge_xray_traces: xray_context = _get_xray_trace_context() - if xray_context is not None: - context["parent-id"] = xray_context.get("parent-id") + if xray_context.span_id: + context.span_id = xray_context.span_id - headers = _context_obj_to_headers(context) - span_context = propagator.extract(headers) - tracer.context_provider.activate(span_context) + tracer.context_provider.activate(context) logger.debug( "Set dd trace root context to: %s", - (span_context.trace_id, span_context.span_id), + (context.trace_id, context.span_id), ) diff --git a/tests/test_tracing.py b/tests/test_tracing.py index 24e6dcdd5..745bf5d1c 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -1,4 +1,5 @@ import unittest +import functools import json import os import copy @@ -29,7 +30,6 @@ _convert_xray_entity_id, _convert_xray_sampling, InferredSpanInfo, - extract_context_from_eventbridge_event, create_service_mapping, determine_service_name, service_mapping as global_service_mapping, @@ -96,6 +96,29 @@ def get_mock_context( return lambda_context +def with_trace_propagation_style(style): + style_list = list(style.split(",")) + + def _wrapper(fn): + @functools.wraps(fn) + def _wrap(*args, **kwargs): + from ddtrace.propagation.http import config + + orig_extract = config._propagation_style_extract + orig_inject = config._propagation_style_inject + config._propagation_style_extract = style_list + config._propagation_style_inject = style_list + try: + return fn(*args, **kwargs) + finally: + config._propagation_style_extract = orig_extract + config._propagation_style_inject = orig_inject + + return _wrap + + return _wrapper + + class TestExtractAndGetDDTraceContext(unittest.TestCase): def setUp(self): global dd_tracing_enabled @@ -114,17 +137,18 @@ def tearDown(self): dd_tracing_enabled = False del os.environ["_X_AMZN_TRACE_ID"] + @with_trace_propagation_style("datadog") def test_without_datadog_trace_headers(self): lambda_ctx = get_mock_context() ctx, source, event_source = extract_dd_trace_context({}, lambda_ctx) self.assertEqual(source, "xray") - self.assertDictEqual( + self.assertEqual( ctx, - { - "trace-id": fake_xray_header_value_root_decimal, - "parent-id": fake_xray_header_value_parent_decimal, - "sampling-priority": "2", - }, + Context( + trace_id=int(fake_xray_header_value_root_decimal), + span_id=int(fake_xray_header_value_parent_decimal), + sampling_priority=2, + ), ) self.assertDictEqual( get_dd_trace_context(), @@ -136,17 +160,18 @@ def test_without_datadog_trace_headers(self): {}, ) + @with_trace_propagation_style("datadog") def test_with_non_object_event(self): lambda_ctx = get_mock_context() ctx, source, event_source = extract_dd_trace_context(b"", lambda_ctx) self.assertEqual(source, "xray") - self.assertDictEqual( + self.assertEqual( ctx, - { - "trace-id": fake_xray_header_value_root_decimal, - "parent-id": fake_xray_header_value_parent_decimal, - "sampling-priority": "2", - }, + Context( + trace_id=int(fake_xray_header_value_root_decimal), + span_id=int(fake_xray_header_value_parent_decimal), + sampling_priority=2, + ), ) self.assertDictEqual( get_dd_trace_context(), @@ -158,6 +183,7 @@ def test_with_non_object_event(self): {}, ) + @with_trace_propagation_style("datadog") def test_with_incomplete_datadog_trace_headers(self): lambda_ctx = get_mock_context() ctx, source, event_source = extract_dd_trace_context( @@ -165,13 +191,13 @@ def test_with_incomplete_datadog_trace_headers(self): lambda_ctx, ) self.assertEqual(source, "xray") - self.assertDictEqual( + self.assertEqual( ctx, - { - "trace-id": fake_xray_header_value_root_decimal, - "parent-id": fake_xray_header_value_parent_decimal, - "sampling-priority": "2", - }, + Context( + trace_id=int(fake_xray_header_value_root_decimal), + span_id=int(fake_xray_header_value_parent_decimal), + sampling_priority=2, + ), ) self.assertDictEqual( get_dd_trace_context(), @@ -182,6 +208,7 @@ def test_with_incomplete_datadog_trace_headers(self): }, ) + @with_trace_propagation_style("datadog") def test_with_complete_datadog_trace_headers(self): lambda_ctx = get_mock_context() ctx, source, event_source = extract_dd_trace_context( @@ -195,10 +222,8 @@ def test_with_complete_datadog_trace_headers(self): lambda_ctx, ) self.assertEqual(source, "event") - self.assertDictEqual( - ctx, - {"trace-id": "123", "parent-id": "321", "sampling-priority": "1"}, - ) + expected_context = Context(trace_id=123, span_id=321, sampling_priority=1) + self.assertEqual(ctx, expected_context) self.assertDictEqual( get_dd_trace_context(), { @@ -211,9 +236,48 @@ def test_with_complete_datadog_trace_headers(self): self.mock_send_segment.assert_called() self.mock_send_segment.assert_called_with( XraySubsegment.TRACE_KEY, - {"trace-id": "123", "parent-id": "321", "sampling-priority": "1"}, + expected_context, + ) + + @with_trace_propagation_style("tracecontext") + def test_with_w3c_trace_headers(self): + lambda_ctx = get_mock_context() + ctx, source, event_source = extract_dd_trace_context( + { + "headers": { + "traceparent": "00-0000000000000000000000000000007b-0000000000000141-01", + "tracestate": "dd=s:2;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", + } + }, + lambda_ctx, + ) + self.assertEqual(source, "event") + expected_context = Context( + trace_id=123, + span_id=321, + sampling_priority=2, + meta={ + "traceparent": "00-0000000000000000000000000000007b-0000000000000141-01", + "tracestate": "dd=s:2;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", + "_dd.p.dm": "-0", + }, + ) + self.assertEqual(ctx, expected_context) + self.assertDictEqual( + get_dd_trace_context(), + { + "traceparent": "00-0000000000000000000000000000007b-94ae789b969f1cc5-01", + "tracestate": "dd=s:2;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", + }, + ) + create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) + self.mock_send_segment.assert_called() + self.mock_send_segment.assert_called_with( + XraySubsegment.TRACE_KEY, + expected_context, ) + @with_trace_propagation_style("datadog") def test_with_extractor_function(self): def extractor_foo(event, context): foo = event.get("foo", {}) @@ -237,13 +301,13 @@ def extractor_foo(event, context): extractor=extractor_foo, ) self.assertEqual(ctx_source, "event") - self.assertDictEqual( + self.assertEqual( ctx, - { - "trace-id": "123", - "parent-id": "321", - "sampling-priority": "1", - }, + Context( + trace_id=123, + span_id=321, + sampling_priority=1, + ), ) self.assertDictEqual( get_dd_trace_context(), @@ -254,6 +318,7 @@ def extractor_foo(event, context): }, ) + @with_trace_propagation_style("datadog") def test_graceful_fail_of_extractor_function(self): def extractor_raiser(event, context): raise Exception("kreator") @@ -271,13 +336,13 @@ def extractor_raiser(event, context): extractor=extractor_raiser, ) self.assertEqual(ctx_source, "xray") - self.assertDictEqual( + self.assertEqual( ctx, - { - "trace-id": fake_xray_header_value_root_decimal, - "parent-id": fake_xray_header_value_parent_decimal, - "sampling-priority": "2", - }, + Context( + trace_id=int(fake_xray_header_value_root_decimal), + span_id=int(fake_xray_header_value_parent_decimal), + sampling_priority=2, + ), ) self.assertDictEqual( get_dd_trace_context(), @@ -288,6 +353,7 @@ def extractor_raiser(event, context): }, ) + @with_trace_propagation_style("datadog") def test_with_sqs_distributed_datadog_trace_data(self): lambda_ctx = get_mock_context() sqs_event = { @@ -323,14 +389,12 @@ def test_with_sqs_distributed_datadog_trace_data(self): } ctx, source, event_source = extract_dd_trace_context(sqs_event, lambda_ctx) self.assertEqual(source, "event") - self.assertDictEqual( - ctx, - { - "trace-id": "123", - "parent-id": "321", - "sampling-priority": "1", - }, + expected_context = Context( + trace_id=123, + span_id=321, + sampling_priority=1, ) + self.assertEqual(ctx, expected_context) self.assertDictEqual( get_dd_trace_context(), { @@ -342,9 +406,69 @@ def test_with_sqs_distributed_datadog_trace_data(self): create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) self.mock_send_segment.assert_called_with( XraySubsegment.TRACE_KEY, - {"trace-id": "123", "parent-id": "321", "sampling-priority": "1"}, + expected_context, + ) + + @with_trace_propagation_style("tracecontext") + def test_with_sqs_distributed_w3c_trace_data(self): + lambda_ctx = get_mock_context() + sqs_event = { + "Records": [ + { + "messageId": "059f36b4-87a3-44ab-83d2-661975830a7d", + "receiptHandle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", + "body": "Test message.", + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "1545082649183", + "SenderId": "AIDAIENQZJOLO23YVJ4VO", + "ApproximateFirstReceiveTimestamp": "1545082649185", + }, + "messageAttributes": { + "_datadog": { + "stringValue": json.dumps( + { + "traceparent": "00-0000000000000000000000000000007b-0000000000000141-01", + "tracestate": "dd=s:2;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", + } + ), + "dataType": "String", + } + }, + "md5OfBody": "e4e68fb7bd0e697a0ae8f1bb342846b3", + "eventSource": "aws:sqs", + "eventSourceARN": "arn:aws:sqs:us-east-2:123456789012:my-queue", + "awsRegion": "us-east-2", + } + ] + } + ctx, source, event_source = extract_dd_trace_context(sqs_event, lambda_ctx) + self.assertEqual(source, "event") + expected_context = Context( + trace_id=123, + span_id=321, + sampling_priority=2, + meta={ + "traceparent": "00-0000000000000000000000000000007b-0000000000000141-01", + "tracestate": "dd=s:2;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", + "_dd.p.dm": "-0", + }, + ) + self.assertEqual(ctx, expected_context) + self.assertDictEqual( + get_dd_trace_context(), + { + "traceparent": "00-0000000000000000000000000000007b-94ae789b969f1cc5-01", + "tracestate": "dd=s:2;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", + }, + ) + create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) + self.mock_send_segment.assert_called_with( + XraySubsegment.TRACE_KEY, + expected_context, ) + @with_trace_propagation_style("datadog") def test_with_legacy_client_context_datadog_trace_data(self): lambda_ctx = get_mock_context( custom={ @@ -357,14 +481,12 @@ def test_with_legacy_client_context_datadog_trace_data(self): ) ctx, source, event_source = extract_dd_trace_context({}, lambda_ctx) self.assertEqual(source, "event") - self.assertDictEqual( - ctx, - { - "trace-id": "666", - "parent-id": "777", - "sampling-priority": "1", - }, + expected_context = Context( + trace_id=666, + span_id=777, + sampling_priority=1, ) + self.assertEqual(ctx, expected_context) self.assertDictEqual( get_dd_trace_context(), { @@ -377,9 +499,47 @@ def test_with_legacy_client_context_datadog_trace_data(self): self.mock_send_segment.assert_called() self.mock_send_segment.assert_called_with( XraySubsegment.TRACE_KEY, - {"trace-id": "666", "parent-id": "777", "sampling-priority": "1"}, + expected_context, + ) + + @with_trace_propagation_style("tracecontext") + def test_with_legacy_client_context_w3c_trace_data(self): + lambda_ctx = get_mock_context( + custom={ + "_datadog": { + "traceparent": "00-0000000000000000000000000000029a-0000000000000309-01", + "tracestate": "dd=s:1;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", + } + } + ) + ctx, source, event_source = extract_dd_trace_context({}, lambda_ctx) + self.assertEqual(source, "event") + expected_context = Context( + trace_id=666, + span_id=777, + sampling_priority=1, + meta={ + "traceparent": "00-0000000000000000000000000000029a-0000000000000309-01", + "tracestate": "dd=s:1;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", + "_dd.p.dm": "-0", + }, + ) + self.assertEqual(ctx, expected_context) + self.assertDictEqual( + get_dd_trace_context(), + { + "traceparent": "00-0000000000000000000000000000029a-94ae789b969f1cc5-01", + "tracestate": "dd=s:1;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", + }, + ) + create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) + self.mock_send_segment.assert_called() + self.mock_send_segment.assert_called_with( + XraySubsegment.TRACE_KEY, + expected_context, ) + @with_trace_propagation_style("datadog") def test_with_new_client_context_datadog_trace_data(self): lambda_ctx = get_mock_context( custom={ @@ -390,14 +550,12 @@ def test_with_new_client_context_datadog_trace_data(self): ) ctx, source, event_source = extract_dd_trace_context({}, lambda_ctx) self.assertEqual(source, "event") - self.assertDictEqual( - ctx, - { - "trace-id": "666", - "parent-id": "777", - "sampling-priority": "1", - }, + expected_context = Context( + trace_id=666, + span_id=777, + sampling_priority=1, ) + self.assertEqual(ctx, expected_context) self.assertDictEqual( get_dd_trace_context(), { @@ -410,9 +568,45 @@ def test_with_new_client_context_datadog_trace_data(self): self.mock_send_segment.assert_called() self.mock_send_segment.assert_called_with( XraySubsegment.TRACE_KEY, - {"trace-id": "666", "parent-id": "777", "sampling-priority": "1"}, + expected_context, ) + @with_trace_propagation_style("tracecontext") + def test_with_new_client_context_w3c_trace_data(self): + lambda_ctx = get_mock_context( + custom={ + "traceparent": "00-0000000000000000000000000000029a-0000000000000309-01", + "tracestate": "dd=s:1;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", + } + ) + ctx, source, event_source = extract_dd_trace_context({}, lambda_ctx) + self.assertEqual(source, "event") + expected_context = Context( + trace_id=666, + span_id=777, + sampling_priority=1, + meta={ + "traceparent": "00-0000000000000000000000000000029a-0000000000000309-01", + "tracestate": "dd=s:1;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", + "_dd.p.dm": "-0", + }, + ) + self.assertEqual(ctx, expected_context) + self.assertDictEqual( + get_dd_trace_context(), + { + "traceparent": "00-0000000000000000000000000000029a-94ae789b969f1cc5-01", + "tracestate": "dd=s:1;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", + }, + ) + create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) + self.mock_send_segment.assert_called() + self.mock_send_segment.assert_called_with( + XraySubsegment.TRACE_KEY, + expected_context, + ) + + @with_trace_propagation_style("datadog") def test_with_complete_datadog_trace_headers_with_mixed_casing(self): lambda_ctx = get_mock_context() extract_dd_trace_context( @@ -455,51 +649,85 @@ def test_with_complete_datadog_trace_headers_with_trigger_tags(self): ] ) + @with_trace_propagation_style("datadog") + def test_step_function_trace_data(self): + lambda_ctx = get_mock_context() + sqs_event = { + "Execution": { + "Id": "665c417c-1237-4742-aaca-8b3becbb9e75", + }, + "StateMachine": {}, + "State": { + "Name": "my-awesome-state", + "EnteredTime": "Mon Nov 13 12:43:33 PST 2023", + }, + } + ctx, source, event_source = extract_dd_trace_context(sqs_event, lambda_ctx) + self.assertEqual(source, "event") + expected_context = Context( + trace_id=1074655265866231755, + span_id=4776286484851030060, + sampling_priority=1, + ) + self.assertEqual(ctx, expected_context) + self.assertEqual( + get_dd_trace_context(), + { + TraceHeader.TRACE_ID: "1074655265866231755", + TraceHeader.PARENT_ID: fake_xray_header_value_parent_decimal, + TraceHeader.SAMPLING_PRIORITY: "1", + }, + ) + create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) + self.mock_send_segment.assert_called_with( + XraySubsegment.TRACE_KEY, + expected_context, + ) + class TestXRayContextConversion(unittest.TestCase): def test_convert_xray_trace_id(self): self.assertEqual( - _convert_xray_trace_id("00000000e1be46a994272793"), "7043144561403045779" + _convert_xray_trace_id("00000000e1be46a994272793"), 7043144561403045779 ) self.assertEqual( - _convert_xray_trace_id("bd862e3fe1be46a994272793"), "7043144561403045779" + _convert_xray_trace_id("bd862e3fe1be46a994272793"), 7043144561403045779 ) self.assertEqual( _convert_xray_trace_id("ffffffffffffffffffffffff"), - "9223372036854775807", # 0x7FFFFFFFFFFFFFFF + 9223372036854775807, # 0x7FFFFFFFFFFFFFFF ) def test_convert_xray_entity_id(self): self.assertEqual( - _convert_xray_entity_id("53995c3f42cd8ad8"), "6023947403358210776" + _convert_xray_entity_id("53995c3f42cd8ad8"), 6023947403358210776 ) self.assertEqual( - _convert_xray_entity_id("1000000000000000"), "1152921504606846976" + _convert_xray_entity_id("1000000000000000"), 1152921504606846976 ) self.assertEqual( - _convert_xray_entity_id("ffffffffffffffff"), "18446744073709551615" + _convert_xray_entity_id("ffffffffffffffff"), 18446744073709551615 ) def test_convert_xray_sampling(self): - self.assertEqual(_convert_xray_sampling(True), str(SamplingPriority.USER_KEEP)) + self.assertEqual(_convert_xray_sampling(True), SamplingPriority.USER_KEEP) - self.assertEqual( - _convert_xray_sampling(False), str(SamplingPriority.USER_REJECT) - ) + self.assertEqual(_convert_xray_sampling(False), SamplingPriority.USER_REJECT) class TestLogsInjection(unittest.TestCase): def setUp(self): - patcher = patch("datadog_lambda.tracing.get_dd_trace_context") + patcher = patch("datadog_lambda.tracing.get_dd_trace_context_obj") self.mock_get_dd_trace_context = patcher.start() - self.mock_get_dd_trace_context.return_value = { - TraceHeader.TRACE_ID: "123", - TraceHeader.PARENT_ID: "456", - } + self.mock_get_dd_trace_context.return_value = Context( + trace_id=int(fake_xray_header_value_root_decimal), + span_id=int(fake_xray_header_value_parent_decimal), + sampling_priority=1, + ) self.addCleanup(patcher.stop) patcher = patch("datadog_lambda.tracing.is_lambda_context") @@ -510,13 +738,13 @@ def setUp(self): def test_set_correlation_ids(self): set_correlation_ids() span = tracer.current_span() - self.assertEqual(span.trace_id, 123) - self.assertEqual(span.span_id, 456) + self.assertEqual(span.trace_id, int(fake_xray_header_value_root_decimal)) + self.assertEqual(span.parent_id, int(fake_xray_header_value_parent_decimal)) span.finish() def test_set_correlation_ids_handle_empty_trace_context(self): # neither x-ray or ddtrace is used. no tracing context at all. - self.mock_get_dd_trace_context.return_value = {} + self.mock_get_dd_trace_context.return_value = Context() # no exception thrown set_correlation_ids() span = tracer.current_span() @@ -1829,10 +2057,10 @@ def test_extract_context_from_eventbridge_event(self): with open(test_file, "r") as event: event = json.load(event) ctx = get_mock_context() - trace, parent, sampling = extract_context_from_eventbridge_event(event, ctx) - self.assertEqual(trace, "12345") - self.assertEqual(parent, "67890"), - self.assertEqual(sampling, "2") + context, source, event_type = extract_dd_trace_context(event, ctx) + self.assertEqual(context.trace_id, 12345) + self.assertEqual(context.span_id, 67890), + self.assertEqual(context.sampling_priority, 2) def test_extract_dd_trace_context_for_eventbridge(self): event_sample_source = "eventbridge-custom" @@ -1841,8 +2069,8 @@ def test_extract_dd_trace_context_for_eventbridge(self): event = json.load(event) ctx = get_mock_context() context, source, event_type = extract_dd_trace_context(event, ctx) - self.assertEqual(context["trace-id"], "12345") - self.assertEqual(context["parent-id"], "67890") + self.assertEqual(context.trace_id, 12345) + self.assertEqual(context.span_id, 67890) def test_extract_context_from_eventbridge_sqs_event(self): event_sample_source = "eventbridge-sqs" @@ -1852,9 +2080,9 @@ def test_extract_context_from_eventbridge_sqs_event(self): ctx = get_mock_context() context, source, event_type = extract_dd_trace_context(event, ctx) - self.assertEqual(context["trace-id"], "7379586022458917877") - self.assertEqual(context["parent-id"], "2644033662113726488") - self.assertEqual(context["sampling-priority"], "1") + self.assertEqual(context.trace_id, 7379586022458917877) + self.assertEqual(context.span_id, 2644033662113726488) + self.assertEqual(context.sampling_priority, 1) def test_extract_context_from_sqs_event_with_string_msg_attr(self): event_sample_source = "sqs-string-msg-attribute" @@ -1863,9 +2091,9 @@ def test_extract_context_from_sqs_event_with_string_msg_attr(self): event = json.load(event) ctx = get_mock_context() context, source, event_type = extract_dd_trace_context(event, ctx) - self.assertEqual(context["trace-id"], "2684756524522091840") - self.assertEqual(context["parent-id"], "7431398482019833808") - self.assertEqual(context["sampling-priority"], "1") + self.assertEqual(context.trace_id, 2684756524522091840) + self.assertEqual(context.span_id, 7431398482019833808) + self.assertEqual(context.sampling_priority, 1) def test_extract_context_from_sqs_batch_event(self): event_sample_source = "sqs-batch" @@ -1874,9 +2102,9 @@ def test_extract_context_from_sqs_batch_event(self): event = json.load(event) ctx = get_mock_context() context, source, event_source = extract_dd_trace_context(event, ctx) - self.assertEqual(context["trace-id"], "2684756524522091840") - self.assertEqual(context["parent-id"], "7431398482019833808") - self.assertEqual(context["sampling-priority"], "1") + self.assertEqual(context.trace_id, 2684756524522091840) + self.assertEqual(context.span_id, 7431398482019833808) + self.assertEqual(context.sampling_priority, 1) def test_extract_context_from_sns_event_with_string_msg_attr(self): event_sample_source = "sns-string-msg-attribute" @@ -1885,9 +2113,9 @@ def test_extract_context_from_sns_event_with_string_msg_attr(self): event = json.load(event) ctx = get_mock_context() context, source, event_source = extract_dd_trace_context(event, ctx) - self.assertEqual(context["trace-id"], "4948377316357291421") - self.assertEqual(context["parent-id"], "6746998015037429512") - self.assertEqual(context["sampling-priority"], "1") + self.assertEqual(context.trace_id, 4948377316357291421) + self.assertEqual(context.span_id, 6746998015037429512) + self.assertEqual(context.sampling_priority, 1) def test_extract_context_from_sns_event_with_b64_msg_attr(self): event_sample_source = "sns-b64-msg-attribute" @@ -1896,9 +2124,9 @@ def test_extract_context_from_sns_event_with_b64_msg_attr(self): event = json.load(event) ctx = get_mock_context() context, source, event_source = extract_dd_trace_context(event, ctx) - self.assertEqual(context["trace-id"], "4948377316357291421") - self.assertEqual(context["parent-id"], "6746998015037429512") - self.assertEqual(context["sampling-priority"], "1") + self.assertEqual(context.trace_id, 4948377316357291421) + self.assertEqual(context.span_id, 6746998015037429512) + self.assertEqual(context.sampling_priority, 1) def test_extract_context_from_sns_batch_event(self): event_sample_source = "sns-batch" @@ -1907,9 +2135,9 @@ def test_extract_context_from_sns_batch_event(self): event = json.load(event) ctx = get_mock_context() context, source, event_source = extract_dd_trace_context(event, ctx) - self.assertEqual(context["trace-id"], "4948377316357291421") - self.assertEqual(context["parent-id"], "6746998015037429512") - self.assertEqual(context["sampling-priority"], "1") + self.assertEqual(context.trace_id, 4948377316357291421) + self.assertEqual(context.span_id, 6746998015037429512) + self.assertEqual(context.sampling_priority, 1) def test_extract_context_from_kinesis_event(self): event_sample_source = "kinesis" @@ -1918,9 +2146,9 @@ def test_extract_context_from_kinesis_event(self): event = json.load(event) ctx = get_mock_context() context, source, event_source = extract_dd_trace_context(event, ctx) - self.assertEqual(context["trace-id"], "4948377316357291421") - self.assertEqual(context["parent-id"], "2876253380018681026") - self.assertEqual(context["sampling-priority"], "1") + self.assertEqual(context.trace_id, 4948377316357291421) + self.assertEqual(context.span_id, 2876253380018681026) + self.assertEqual(context.sampling_priority, 1) def test_extract_context_from_kinesis_batch_event(self): event_sample_source = "kinesis-batch" @@ -1929,9 +2157,9 @@ def test_extract_context_from_kinesis_batch_event(self): event = json.load(event) ctx = get_mock_context() context, source, event_source = extract_dd_trace_context(event, ctx) - self.assertEqual(context["trace-id"], "4948377316357291421") - self.assertEqual(context["parent-id"], "2876253380018681026") - self.assertEqual(context["sampling-priority"], "1") + self.assertEqual(context.trace_id, 4948377316357291421) + self.assertEqual(context.span_id, 2876253380018681026) + self.assertEqual(context.sampling_priority, 1) def test_create_inferred_span_from_api_gateway_event_no_apiid(self): event_sample_source = "api-gateway-no-apiid" @@ -1998,14 +2226,14 @@ def test_no_error_with_nonetype_headers(self): class TestStepFunctionsTraceContext(unittest.TestCase): def test_deterministic_m5_hash(self): result = _deterministic_md5_hash("some_testing_random_string") - self.assertEqual("2251275791555400689", result) + self.assertEqual(2251275791555400689, result) def test_deterministic_m5_hash__result_the_same_as_backend(self): result = _deterministic_md5_hash( "arn:aws:states:sa-east-1:601427271234:express:DatadogStateMachine:acaf1a67-336a-e854-1599-2a627eb2dd8a" ":c8baf081-31f1-464d-971f-70cb17d01111#step-one#2022-12-08T21:08:19.224Z" ) - self.assertEqual("8034507082463708833", result) + self.assertEqual(8034507082463708833, result) def test_deterministic_m5_hash__always_leading_with_zero(self): for i in range(100): From 23ff7fcc9c9917b0406d133864f694998376ca78 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Tue, 21 Nov 2023 12:57:21 -0500 Subject: [PATCH 092/403] feat: push layers in batches (#393) * feat: push layers in batches * feat: Check latest inside region loop to prevent early return on our backfill processes --- scripts/publish_layers.sh | 60 +++++++++++++++++++++++++++------------ 1 file changed, 42 insertions(+), 18 deletions(-) diff --git a/scripts/publish_layers.sh b/scripts/publish_layers.sh index d379cb67e..bd8d3a7e8 100755 --- a/scripts/publish_layers.sh +++ b/scripts/publish_layers.sh @@ -19,6 +19,12 @@ AVAILABLE_LAYERS=("Datadog-Python37" "Datadog-Python38" "Datadog-Python38-ARM" " ARCHS=("amd64" "amd64" "amd64""amd64" "amd64" "arm64" "amd64" "arm64" "amd64" "arm64") AVAILABLE_REGIONS=$(aws ec2 describe-regions | jq -r '.[] | .[] | .RegionName') +BATCH_SIZE=60 +PIDS=() + +# Makes sure any subprocesses will be terminated with this process +trap "pkill -P $$; exit 1;" INT + # Check that the layer files exist for layer_file in "${LAYER_PATHS[@]}" do @@ -102,6 +108,35 @@ publish_layer() { echo $version_nbr } +wait_for_processes() { + for pid in "${PIDS[@]}"; do + wait $pid + done + PIDS=() +} + +backfill_layers() { + latest_version=$1 + region=$2 + layer_name=$3 + aws_version_key=$4 + layer_path=$5 + + while [ $latest_version -lt $VERSION ]; do + latest_version=$(publish_layer $region $layer_name $aws_version_key $layer_path) + echo "Published version $latest_version for layer $layer_name in region $region" + + # This shouldn't happen unless someone manually deleted the latest version, say 28, and + # then tries to republish 28 again. The published version would actually be 29, because + # Lambda layers are immutable and AWS will skip deleted version and use the next number. + if [ $latest_version -gt $VERSION ]; then + echo "ERROR: Published version $latest_version is greater than the desired version $VERSION!" + echo "Exiting" + exit 1 + fi + done +} + for region in $REGIONS do echo "Starting publishing layer for region $region..." @@ -112,31 +147,20 @@ do echo "Layer $layer_name version $VERSION already exists in region $region, skipping..." continue elif [ $latest_version -lt $((VERSION-1)) ]; then - read -p "WARNING: The latest version of layer $layer_name in region $region is $latest_version, publish all the missing versions including $VERSION or EXIT the script (y/n)?" CONT - if [ "$CONT" != "y" ]; then - echo "Exiting" - exit 1 - fi + echo "WARNING: The latest version of layer $layer_name in region $region is $latest_version, this will publish all the missing versions including $VERSION" fi index=$(index_of_layer $layer_name) aws_version_key="${PYTHON_VERSIONS_FOR_AWS_CLI[$index]}" layer_path="${LAYER_PATHS[$index]}" - while [ $latest_version -lt $VERSION ]; do - latest_version=$(publish_layer $region $layer_name $aws_version_key $layer_path) - echo "Published version $latest_version for layer $layer_name in region $region" - - # This shouldn't happen unless someone manually deleted the latest version, say 28 - # and then try to republish it again. The published version is actually be 29, because - # Lambda layers are immutable and AWS will skip deleted version and use the next number. - if [ $latest_version -gt $VERSION ]; then - echo "ERROR: Published version $latest_version is greater than the desired version $VERSION!" - echo "Exiting" - exit 1 - fi - done + backfill_layers $latest_version $region $layer_name $aws_version_key $layer_path & + PIDS+=($!) + if [ ${#PIDS[@]} -ge $BATCH_SIZE ]; then + wait_for_processes + fi done done +wait_for_processes echo "Done !" From 7334375d296643f30502f53b76bb743dc7a6e2b5 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Tue, 21 Nov 2023 12:58:06 -0500 Subject: [PATCH 093/403] feat(breaking): ddtrace 2.3 (#394) * feat(breaking): ddtrace 2.3 * feat: Fix ints --- poetry.lock | 521 +++++++++--------- pyproject.toml | 2 +- scripts/run_integration_tests.sh | 3 + .../logs/async-metrics_python310.log | 54 +- .../logs/async-metrics_python311.log | 54 +- .../snapshots/logs/async-metrics_python37.log | 54 +- .../snapshots/logs/async-metrics_python38.log | 56 +- .../snapshots/logs/async-metrics_python39.log | 54 +- .../snapshots/logs/sync-metrics_python310.log | 81 ++- .../snapshots/logs/sync-metrics_python311.log | 81 ++- .../snapshots/logs/sync-metrics_python37.log | 83 ++- .../snapshots/logs/sync-metrics_python38.log | 83 ++- .../snapshots/logs/sync-metrics_python39.log | 83 ++- 13 files changed, 720 insertions(+), 489 deletions(-) diff --git a/poetry.lock b/poetry.lock index ff63c621a..da1c04338 100644 --- a/poetry.lock +++ b/poetry.lock @@ -23,17 +23,17 @@ tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pyte [[package]] name = "boto3" -version = "1.28.65" +version = "1.29.4" description = "The AWS SDK for Python" optional = true python-versions = ">= 3.7" files = [ - {file = "boto3-1.28.65-py3-none-any.whl", hash = "sha256:ff3d0116e0ca6c096547652390025780eace3a28f6c04c9ffbf38448f1e5a87b"}, - {file = "boto3-1.28.65.tar.gz", hash = "sha256:9d52a1605657aeb5b19b09cfc01d9a92f88a616a5daf5479a59656d6341ea6b3"}, + {file = "boto3-1.29.4-py3-none-any.whl", hash = "sha256:d1135647309b89376a014d21407aabfa322998206175f2297def812bf4d824a9"}, + {file = "boto3-1.29.4.tar.gz", hash = "sha256:ca9b04fc2c75990c2be84c43b9d6edecce828960fc27e07ab29036587a1ca635"}, ] [package.dependencies] -botocore = ">=1.31.65,<1.32.0" +botocore = ">=1.32.4,<1.33.0" jmespath = ">=0.7.1,<2.0.0" s3transfer = ">=0.7.0,<0.8.0" @@ -42,13 +42,13 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.31.65" +version = "1.32.4" description = "Low-level, data-driven core of boto 3." optional = true python-versions = ">= 3.7" files = [ - {file = "botocore-1.31.65-py3-none-any.whl", hash = "sha256:f74e3da98dfcec17bc63ef58f82c643bf5bd7ec6cc11a26ede21cc4cd064917f"}, - {file = "botocore-1.31.65.tar.gz", hash = "sha256:90716c6f1af97e5c2f516e9a3379767ebdddcc6cbed79b026fa5038ce4e5e43e"}, + {file = "botocore-1.32.4-py3-none-any.whl", hash = "sha256:3ee73c0d93bdb944d0c46772f08f09cdcf25ef58bd86962e6f4a24e531198bfa"}, + {file = "botocore-1.32.4.tar.gz", hash = "sha256:6bfa75e28c9ad0321cefefa51b00ff233b16b2416f8b95229796263edba45a39"}, ] [package.dependencies] @@ -60,7 +60,7 @@ urllib3 = [ ] [package.extras] -crt = ["awscrt (==0.16.26)"] +crt = ["awscrt (==0.19.12)"] [[package]] name = "bytecode" @@ -114,112 +114,112 @@ ujson = ["ujson (>=5.4.0,<6.0.0)"] [[package]] name = "certifi" -version = "2023.7.22" +version = "2023.11.17" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2023.7.22-py3-none-any.whl", hash = "sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9"}, - {file = "certifi-2023.7.22.tar.gz", hash = "sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082"}, + {file = "certifi-2023.11.17-py3-none-any.whl", hash = "sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474"}, + {file = "certifi-2023.11.17.tar.gz", hash = "sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1"}, ] [[package]] name = "charset-normalizer" -version = "3.3.0" +version = "3.3.2" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.7.0" files = [ - {file = "charset-normalizer-3.3.0.tar.gz", hash = "sha256:63563193aec44bce707e0c5ca64ff69fa72ed7cf34ce6e11d5127555756fd2f6"}, - {file = "charset_normalizer-3.3.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:effe5406c9bd748a871dbcaf3ac69167c38d72db8c9baf3ff954c344f31c4cbe"}, - {file = "charset_normalizer-3.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4162918ef3098851fcd8a628bf9b6a98d10c380725df9e04caf5ca6dd48c847a"}, - {file = "charset_normalizer-3.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0570d21da019941634a531444364f2482e8db0b3425fcd5ac0c36565a64142c8"}, - {file = "charset_normalizer-3.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5707a746c6083a3a74b46b3a631d78d129edab06195a92a8ece755aac25a3f3d"}, - {file = "charset_normalizer-3.3.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:278c296c6f96fa686d74eb449ea1697f3c03dc28b75f873b65b5201806346a69"}, - {file = "charset_normalizer-3.3.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a4b71f4d1765639372a3b32d2638197f5cd5221b19531f9245fcc9ee62d38f56"}, - {file = "charset_normalizer-3.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5969baeaea61c97efa706b9b107dcba02784b1601c74ac84f2a532ea079403e"}, - {file = "charset_normalizer-3.3.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a3f93dab657839dfa61025056606600a11d0b696d79386f974e459a3fbc568ec"}, - {file = "charset_normalizer-3.3.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:db756e48f9c5c607b5e33dd36b1d5872d0422e960145b08ab0ec7fd420e9d649"}, - {file = "charset_normalizer-3.3.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:232ac332403e37e4a03d209a3f92ed9071f7d3dbda70e2a5e9cff1c4ba9f0678"}, - {file = "charset_normalizer-3.3.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:e5c1502d4ace69a179305abb3f0bb6141cbe4714bc9b31d427329a95acfc8bdd"}, - {file = "charset_normalizer-3.3.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:2502dd2a736c879c0f0d3e2161e74d9907231e25d35794584b1ca5284e43f596"}, - {file = "charset_normalizer-3.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23e8565ab7ff33218530bc817922fae827420f143479b753104ab801145b1d5b"}, - {file = "charset_normalizer-3.3.0-cp310-cp310-win32.whl", hash = "sha256:1872d01ac8c618a8da634e232f24793883d6e456a66593135aeafe3784b0848d"}, - {file = "charset_normalizer-3.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:557b21a44ceac6c6b9773bc65aa1b4cc3e248a5ad2f5b914b91579a32e22204d"}, - {file = "charset_normalizer-3.3.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d7eff0f27edc5afa9e405f7165f85a6d782d308f3b6b9d96016c010597958e63"}, - {file = "charset_normalizer-3.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6a685067d05e46641d5d1623d7c7fdf15a357546cbb2f71b0ebde91b175ffc3e"}, - {file = "charset_normalizer-3.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0d3d5b7db9ed8a2b11a774db2bbea7ba1884430a205dbd54a32d61d7c2a190fa"}, - {file = "charset_normalizer-3.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2935ffc78db9645cb2086c2f8f4cfd23d9b73cc0dc80334bc30aac6f03f68f8c"}, - {file = "charset_normalizer-3.3.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9fe359b2e3a7729010060fbca442ca225280c16e923b37db0e955ac2a2b72a05"}, - {file = "charset_normalizer-3.3.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:380c4bde80bce25c6e4f77b19386f5ec9db230df9f2f2ac1e5ad7af2caa70459"}, - {file = "charset_normalizer-3.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0d1e3732768fecb052d90d62b220af62ead5748ac51ef61e7b32c266cac9293"}, - {file = "charset_normalizer-3.3.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1b2919306936ac6efb3aed1fbf81039f7087ddadb3160882a57ee2ff74fd2382"}, - {file = "charset_normalizer-3.3.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:f8888e31e3a85943743f8fc15e71536bda1c81d5aa36d014a3c0c44481d7db6e"}, - {file = "charset_normalizer-3.3.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:82eb849f085624f6a607538ee7b83a6d8126df6d2f7d3b319cb837b289123078"}, - {file = "charset_normalizer-3.3.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7b8b8bf1189b3ba9b8de5c8db4d541b406611a71a955bbbd7385bbc45fcb786c"}, - {file = "charset_normalizer-3.3.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:5adf257bd58c1b8632046bbe43ee38c04e1038e9d37de9c57a94d6bd6ce5da34"}, - {file = "charset_normalizer-3.3.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c350354efb159b8767a6244c166f66e67506e06c8924ed74669b2c70bc8735b1"}, - {file = "charset_normalizer-3.3.0-cp311-cp311-win32.whl", hash = "sha256:02af06682e3590ab952599fbadac535ede5d60d78848e555aa58d0c0abbde786"}, - {file = "charset_normalizer-3.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:86d1f65ac145e2c9ed71d8ffb1905e9bba3a91ae29ba55b4c46ae6fc31d7c0d4"}, - {file = "charset_normalizer-3.3.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:3b447982ad46348c02cb90d230b75ac34e9886273df3a93eec0539308a6296d7"}, - {file = "charset_normalizer-3.3.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:abf0d9f45ea5fb95051c8bfe43cb40cda383772f7e5023a83cc481ca2604d74e"}, - {file = "charset_normalizer-3.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b09719a17a2301178fac4470d54b1680b18a5048b481cb8890e1ef820cb80455"}, - {file = "charset_normalizer-3.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b3d9b48ee6e3967b7901c052b670c7dda6deb812c309439adaffdec55c6d7b78"}, - {file = "charset_normalizer-3.3.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:edfe077ab09442d4ef3c52cb1f9dab89bff02f4524afc0acf2d46be17dc479f5"}, - {file = "charset_normalizer-3.3.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3debd1150027933210c2fc321527c2299118aa929c2f5a0a80ab6953e3bd1908"}, - {file = "charset_normalizer-3.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86f63face3a527284f7bb8a9d4f78988e3c06823f7bea2bd6f0e0e9298ca0403"}, - {file = "charset_normalizer-3.3.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:24817cb02cbef7cd499f7c9a2735286b4782bd47a5b3516a0e84c50eab44b98e"}, - {file = "charset_normalizer-3.3.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c71f16da1ed8949774ef79f4a0260d28b83b3a50c6576f8f4f0288d109777989"}, - {file = "charset_normalizer-3.3.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:9cf3126b85822c4e53aa28c7ec9869b924d6fcfb76e77a45c44b83d91afd74f9"}, - {file = "charset_normalizer-3.3.0-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:b3b2316b25644b23b54a6f6401074cebcecd1244c0b8e80111c9a3f1c8e83d65"}, - {file = "charset_normalizer-3.3.0-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:03680bb39035fbcffe828eae9c3f8afc0428c91d38e7d61aa992ef7a59fb120e"}, - {file = "charset_normalizer-3.3.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4cc152c5dd831641e995764f9f0b6589519f6f5123258ccaca8c6d34572fefa8"}, - {file = "charset_normalizer-3.3.0-cp312-cp312-win32.whl", hash = "sha256:b8f3307af845803fb0b060ab76cf6dd3a13adc15b6b451f54281d25911eb92df"}, - {file = "charset_normalizer-3.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:8eaf82f0eccd1505cf39a45a6bd0a8cf1c70dcfc30dba338207a969d91b965c0"}, - {file = "charset_normalizer-3.3.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:dc45229747b67ffc441b3de2f3ae5e62877a282ea828a5bdb67883c4ee4a8810"}, - {file = "charset_normalizer-3.3.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f4a0033ce9a76e391542c182f0d48d084855b5fcba5010f707c8e8c34663d77"}, - {file = "charset_normalizer-3.3.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ada214c6fa40f8d800e575de6b91a40d0548139e5dc457d2ebb61470abf50186"}, - {file = "charset_normalizer-3.3.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b1121de0e9d6e6ca08289583d7491e7fcb18a439305b34a30b20d8215922d43c"}, - {file = "charset_normalizer-3.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1063da2c85b95f2d1a430f1c33b55c9c17ffaf5e612e10aeaad641c55a9e2b9d"}, - {file = "charset_normalizer-3.3.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:70f1d09c0d7748b73290b29219e854b3207aea922f839437870d8cc2168e31cc"}, - {file = "charset_normalizer-3.3.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:250c9eb0f4600361dd80d46112213dff2286231d92d3e52af1e5a6083d10cad9"}, - {file = "charset_normalizer-3.3.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:750b446b2ffce1739e8578576092179160f6d26bd5e23eb1789c4d64d5af7dc7"}, - {file = "charset_normalizer-3.3.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:fc52b79d83a3fe3a360902d3f5d79073a993597d48114c29485e9431092905d8"}, - {file = "charset_normalizer-3.3.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:588245972aca710b5b68802c8cad9edaa98589b1b42ad2b53accd6910dad3545"}, - {file = "charset_normalizer-3.3.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e39c7eb31e3f5b1f88caff88bcff1b7f8334975b46f6ac6e9fc725d829bc35d4"}, - {file = "charset_normalizer-3.3.0-cp37-cp37m-win32.whl", hash = "sha256:abecce40dfebbfa6abf8e324e1860092eeca6f7375c8c4e655a8afb61af58f2c"}, - {file = "charset_normalizer-3.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:24a91a981f185721542a0b7c92e9054b7ab4fea0508a795846bc5b0abf8118d4"}, - {file = "charset_normalizer-3.3.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:67b8cc9574bb518ec76dc8e705d4c39ae78bb96237cb533edac149352c1f39fe"}, - {file = "charset_normalizer-3.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ac71b2977fb90c35d41c9453116e283fac47bb9096ad917b8819ca8b943abecd"}, - {file = "charset_normalizer-3.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3ae38d325b512f63f8da31f826e6cb6c367336f95e418137286ba362925c877e"}, - {file = "charset_normalizer-3.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:542da1178c1c6af8873e143910e2269add130a299c9106eef2594e15dae5e482"}, - {file = "charset_normalizer-3.3.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:30a85aed0b864ac88309b7d94be09f6046c834ef60762a8833b660139cfbad13"}, - {file = "charset_normalizer-3.3.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aae32c93e0f64469f74ccc730a7cb21c7610af3a775157e50bbd38f816536b38"}, - {file = "charset_normalizer-3.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15b26ddf78d57f1d143bdf32e820fd8935d36abe8a25eb9ec0b5a71c82eb3895"}, - {file = "charset_normalizer-3.3.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7f5d10bae5d78e4551b7be7a9b29643a95aded9d0f602aa2ba584f0388e7a557"}, - {file = "charset_normalizer-3.3.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:249c6470a2b60935bafd1d1d13cd613f8cd8388d53461c67397ee6a0f5dce741"}, - {file = "charset_normalizer-3.3.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:c5a74c359b2d47d26cdbbc7845e9662d6b08a1e915eb015d044729e92e7050b7"}, - {file = "charset_normalizer-3.3.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:b5bcf60a228acae568e9911f410f9d9e0d43197d030ae5799e20dca8df588287"}, - {file = "charset_normalizer-3.3.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:187d18082694a29005ba2944c882344b6748d5be69e3a89bf3cc9d878e548d5a"}, - {file = "charset_normalizer-3.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:81bf654678e575403736b85ba3a7867e31c2c30a69bc57fe88e3ace52fb17b89"}, - {file = "charset_normalizer-3.3.0-cp38-cp38-win32.whl", hash = "sha256:85a32721ddde63c9df9ebb0d2045b9691d9750cb139c161c80e500d210f5e26e"}, - {file = "charset_normalizer-3.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:468d2a840567b13a590e67dd276c570f8de00ed767ecc611994c301d0f8c014f"}, - {file = "charset_normalizer-3.3.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e0fc42822278451bc13a2e8626cf2218ba570f27856b536e00cfa53099724828"}, - {file = "charset_normalizer-3.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:09c77f964f351a7369cc343911e0df63e762e42bac24cd7d18525961c81754f4"}, - {file = "charset_normalizer-3.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:12ebea541c44fdc88ccb794a13fe861cc5e35d64ed689513a5c03d05b53b7c82"}, - {file = "charset_normalizer-3.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:805dfea4ca10411a5296bcc75638017215a93ffb584c9e344731eef0dcfb026a"}, - {file = "charset_normalizer-3.3.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:96c2b49eb6a72c0e4991d62406e365d87067ca14c1a729a870d22354e6f68115"}, - {file = "charset_normalizer-3.3.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aaf7b34c5bc56b38c931a54f7952f1ff0ae77a2e82496583b247f7c969eb1479"}, - {file = "charset_normalizer-3.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:619d1c96099be5823db34fe89e2582b336b5b074a7f47f819d6b3a57ff7bdb86"}, - {file = "charset_normalizer-3.3.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a0ac5e7015a5920cfce654c06618ec40c33e12801711da6b4258af59a8eff00a"}, - {file = "charset_normalizer-3.3.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:93aa7eef6ee71c629b51ef873991d6911b906d7312c6e8e99790c0f33c576f89"}, - {file = "charset_normalizer-3.3.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7966951325782121e67c81299a031f4c115615e68046f79b85856b86ebffc4cd"}, - {file = "charset_normalizer-3.3.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:02673e456dc5ab13659f85196c534dc596d4ef260e4d86e856c3b2773ce09843"}, - {file = "charset_normalizer-3.3.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:c2af80fb58f0f24b3f3adcb9148e6203fa67dd3f61c4af146ecad033024dde43"}, - {file = "charset_normalizer-3.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:153e7b6e724761741e0974fc4dcd406d35ba70b92bfe3fedcb497226c93b9da7"}, - {file = "charset_normalizer-3.3.0-cp39-cp39-win32.whl", hash = "sha256:d47ecf253780c90ee181d4d871cd655a789da937454045b17b5798da9393901a"}, - {file = "charset_normalizer-3.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:d97d85fa63f315a8bdaba2af9a6a686e0eceab77b3089af45133252618e70884"}, - {file = "charset_normalizer-3.3.0-py3-none-any.whl", hash = "sha256:e46cd37076971c1040fc8c41273a8b3e2c624ce4f2be3f5dfcb7a430c1d3acc2"}, + {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, + {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, ] [[package]] @@ -325,94 +325,86 @@ six = "*" [[package]] name = "ddtrace" -version = "1.20.5" +version = "2.3.0" description = "Datadog APM client library" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -files = [ - {file = "ddtrace-1.20.5-cp27-cp27m-macosx_11_0_x86_64.whl", hash = "sha256:8e848f4d4efd02f887633aa6eca284a820e42b316ebbbd9ed25599f777e8090f"}, - {file = "ddtrace-1.20.5-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:3aff8d055aa57de51a814dc86aaee5602b5ea665e7502d60b8467b07fb5018d2"}, - {file = "ddtrace-1.20.5-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:ec89b97c50b2ccc27ecef9d9d084a412f174002d665140a5710928909a2d592e"}, - {file = "ddtrace-1.20.5-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:8216d010c7206544de46053638ec5a9ed1ac3a56908621a958aaa390d8cffb27"}, - {file = "ddtrace-1.20.5-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:3c16686ed141dc847ed8cd09528649cccd833d896b2d5878f8ee370f15de6de6"}, - {file = "ddtrace-1.20.5-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:834e49122cf1e75c299c0ac54886de7b776f4f292c2679d88c1ea31e866d8514"}, - {file = "ddtrace-1.20.5-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:4f28220ce9cbdd58d02a9851d41b7c2424270ffe3a08fd042299ffc3d92c96f5"}, - {file = "ddtrace-1.20.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7228037265efbd74656e65f8d3f17ea28854c280aa86db1a7adaf642d9ffaa63"}, - {file = "ddtrace-1.20.5-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1f01a2a06974716fb516063369ab973fad38ffb33ca5ca15b3b7b128c06a2490"}, - {file = "ddtrace-1.20.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:be2570b7348eb9b561fe148997af3c11a50904870503a3fe7c2b6348e87dac7f"}, - {file = "ddtrace-1.20.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:6ca5b6ef30a300518e535a8291c9008d68fc1cde8fc4ed476af1b3c9377ab675"}, - {file = "ddtrace-1.20.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:ecd7e3a15e73c1f86cdb6e4c7874e99023f412ba9f63e1b342ecd593313fad2f"}, - {file = "ddtrace-1.20.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:86a052d8fe5cb380702bc4ee49857c2f12b019c7a3f4c78f8b2dfd43c72668ca"}, - {file = "ddtrace-1.20.5-cp310-cp310-win32.whl", hash = "sha256:3fd4d252224a74ff72b27b8371a2ac9500dc0ba08d3e009c3052ea63ad514824"}, - {file = "ddtrace-1.20.5-cp310-cp310-win_amd64.whl", hash = "sha256:90a641673b29521ec73ce572896011653cd222152b92ec744b6f162b4ccdb27f"}, - {file = "ddtrace-1.20.5-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:345c7a2910309547fa9b53d4386912a4cbd9c24c0a9f0b771404c7c2b82f8764"}, - {file = "ddtrace-1.20.5-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:07f97e1d94e3fe3f79d9656baa7283441c5d155adb2a0ca5d2defbdfbb12a28c"}, - {file = "ddtrace-1.20.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6e3718c0804cdd2def4b80f9bd51c55b2f44dca914086f647a21356980022668"}, - {file = "ddtrace-1.20.5-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b0acd401c52bf617474c4cac8bca0aa8cf6253d82b31c4e892b30294b397f10d"}, - {file = "ddtrace-1.20.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b36954f49c82e9e2e42615a5b70ba04dfd12d71011f4c9931effb6957c63fbd"}, - {file = "ddtrace-1.20.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:51523c55618a6b26ecdaab1c4540e3679e96723d0f883e1df7ffaa5010231cb2"}, - {file = "ddtrace-1.20.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:61d538c2c6e7a460cbdc19735093c993a62abc3381def43d5940a8facc4a280f"}, - {file = "ddtrace-1.20.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:59635b9fef2e02fefd46876f93e63eaa857503eb64aced6bcffaa81a199cfa4e"}, - {file = "ddtrace-1.20.5-cp311-cp311-win32.whl", hash = "sha256:7c4b6b121ec72736c9004c83d40d4d64155b935fb1c033390370de78af001fdb"}, - {file = "ddtrace-1.20.5-cp311-cp311-win_amd64.whl", hash = "sha256:cdaff774e88feb6d0229609ecdbaecbf50a220428bb29f863734b167d910a658"}, - {file = "ddtrace-1.20.5-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:ec41eff870ceba145306daab76f003a6977986dd65074b9a74f50cd0a985e431"}, - {file = "ddtrace-1.20.5-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:89dfaf4133ad8dcb6c63db843624e10175e9813a1f867e24d1c2a8e724088119"}, - {file = "ddtrace-1.20.5-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:7b625af8eb772bc242b850a011ba9294721f85d3f965cecdcc430fb73da1a11a"}, - {file = "ddtrace-1.20.5-cp35-cp35m-win32.whl", hash = "sha256:8cd282d38a394417e65b360ff9fb1d982bb3270ab18239f3ad3c70a1ec9cb9a3"}, - {file = "ddtrace-1.20.5-cp35-cp35m-win_amd64.whl", hash = "sha256:2d1086c5178be1763af7f30a18dd5bf6b77de855bbaa1c6c1d10e98fa7ad0931"}, - {file = "ddtrace-1.20.5-cp36-cp36m-macosx_11_0_x86_64.whl", hash = "sha256:af4eac36813863e08cb71f72f86e9c5a060841ce66acdf2a090d831bf6886895"}, - {file = "ddtrace-1.20.5-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7a2a15a3672331ffbdf32f8b8a387979b070510fbc2bc90e2c33c4669cd846bc"}, - {file = "ddtrace-1.20.5-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c9f8071a9b4ea0be1fe62e39a68e95592742c56e336fbd0e4e99d18c39eca27"}, - {file = "ddtrace-1.20.5-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa49ab583816163b4cc133da234c5c2bc75d37cf459004c8319dc4026ac96c9b"}, - {file = "ddtrace-1.20.5-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:a37cc5871b0dc6a18f19228280927d6b22d04fb30522eebcc48371481e447709"}, - {file = "ddtrace-1.20.5-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:e1f4ad4eab735f092d9a23b80d9ffd7d33f7bb8fecba001f222155a7dc03d6ed"}, - {file = "ddtrace-1.20.5-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:253c75018b412a6f90c26ddfd2f265fc950751dbf76cd8529f8537b4fa4c031d"}, - {file = "ddtrace-1.20.5-cp36-cp36m-win32.whl", hash = "sha256:a61ec2a2874ab9f7228b3cf430a7048803a1ce2db22fde021c1f61ed38a1e5b4"}, - {file = "ddtrace-1.20.5-cp36-cp36m-win_amd64.whl", hash = "sha256:2c6ff4e1118d4530b80fbf9432414e0fad38ef33bc64e39a00648b396c4c44a7"}, - {file = "ddtrace-1.20.5-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:f0eaf682acaed72427c9f05831e44050e6145ca0b227fc25a123c22d1c7d4c89"}, - {file = "ddtrace-1.20.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d952483633e637c9bb6364baf0dd3b805872b121746a7243d9de647c6f2c9417"}, - {file = "ddtrace-1.20.5-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ac292a54a8b3b00d424e8c6451d7c21d247ff7e223ab6280ee541319428cd41a"}, - {file = "ddtrace-1.20.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:07eae27732d63ac4e7370b575e59ff4f8c1396f8e40992feeca45425b4fce4cc"}, - {file = "ddtrace-1.20.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:5678feec55fc77771eae9ff80a34037af14a140b4f6bf68a454cf86204db6401"}, - {file = "ddtrace-1.20.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:1b23c154a3ca0f60b9324be0886655e05db40ea98cd33cb8111091ba9adea8f2"}, - {file = "ddtrace-1.20.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d73cb8a34112d80caadd6b088d02f9c6070264abc71733ecb537b2f9a97d6f10"}, - {file = "ddtrace-1.20.5-cp37-cp37m-win32.whl", hash = "sha256:ca8eabcd59c965086de4067475ba8e70895f81f601ce9660c5080cefd66d655c"}, - {file = "ddtrace-1.20.5-cp37-cp37m-win_amd64.whl", hash = "sha256:7ad29dcea031b6ba03f77de4ad6f85d749294fd9e8ba8af871a73811c47d1e5a"}, - {file = "ddtrace-1.20.5-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:67fea1d08dbca04eff521cc013adba1dd0d80c6e5c75a02cb4a7c42c0e973993"}, - {file = "ddtrace-1.20.5-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:79536cfa68338db9c95e728585e1f5f059e321cfcf145fce6b14e8cd1d12892c"}, - {file = "ddtrace-1.20.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c746d3546f69b7718fb61508826552a197fc981bb26c66408e1a20f7ac0952a3"}, - {file = "ddtrace-1.20.5-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8fb3aaf24760d8e4d23d01e497d15ac1b52be202e82a63140afd0c2b799e8571"}, - {file = "ddtrace-1.20.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d6602c52359dbf009ef762c4110ee1ca7dfb9a163aa7bc43515c920a3ddf545f"}, - {file = "ddtrace-1.20.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:7d1cc510f3a4be3df3282415b045cd85dc83a3a2051d219a24546dfb9fdcb39d"}, - {file = "ddtrace-1.20.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:774d48d7e050fc4fec35317348f04326d8f781348e11ff937e739fd7ad555c6b"}, - {file = "ddtrace-1.20.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:7094dd13bf2e17dac2f555a2a0ec85f89e330e6d9327122a6e16fac2b6765f34"}, - {file = "ddtrace-1.20.5-cp38-cp38-win32.whl", hash = "sha256:264cadc7caf89f45d225b1323a09c73a2706f38b754266660fc93a19b2ccb1d7"}, - {file = "ddtrace-1.20.5-cp38-cp38-win_amd64.whl", hash = "sha256:815a14133c25ed9a6deb0df043c7095107a2a900faaf458af153352bb329ccd5"}, - {file = "ddtrace-1.20.5-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:3faff82c1c0b809faa6b79ecb37a7402ca2e452241607db3ca4f8d79e30d8695"}, - {file = "ddtrace-1.20.5-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:6a94fc30efcf753cb40f37a1c8d440139ac63db6cc346ecaf3a409f12410297b"}, - {file = "ddtrace-1.20.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a43168df3b30fa228720d7c900a51a4fdaae145efaba6e6f37b678e2714f846"}, - {file = "ddtrace-1.20.5-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dad47a4058ed2b703843f0615411e5bd8edcaad54b0d8bc3de811252d8dd242e"}, - {file = "ddtrace-1.20.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a415b779b34d4af9880665b25ffcab8463c2e75dc82eed0228756a9fa93ed16"}, - {file = "ddtrace-1.20.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:6750dcf7f84895e136452a5c03ff66d4a9e022994b961b1cf7a983fcfc65afba"}, - {file = "ddtrace-1.20.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:76e8f5f07784c8ec26a7bfd5150c359429a3423179776e075735a2e685148095"}, - {file = "ddtrace-1.20.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c4e56bd317578d34663b399b213d8b22801267b8d4faf7a1b645eb1918feaf1b"}, - {file = "ddtrace-1.20.5-cp39-cp39-win32.whl", hash = "sha256:247d8206686ef6c0b1263ce63e37a99eee5fee20ad1456bcb78edcb77519c6f5"}, - {file = "ddtrace-1.20.5-cp39-cp39-win_amd64.whl", hash = "sha256:bafc1c668b8f32a8e980f75c121c33464188270c01ef87430baa489e55fb1590"}, - {file = "ddtrace-1.20.5.tar.gz", hash = "sha256:3a15940d03a4c35d253d93b6c3acf82e0cd70d72f4ec9d8c3d0ca0d0c398dda3"}, +python-versions = ">=3.7" +files = [ + {file = "ddtrace-2.3.0-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:2fb6d9e58bda842acd8aa5b1abd9942c24d1c1d75fe9501a0927fab8625975d2"}, + {file = "ddtrace-2.3.0-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:efaeedba42770a330f66ffd1629f6a254925ee88dc50dfc6e51ece5e056e9f02"}, + {file = "ddtrace-2.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:107d310ccc131a4825e03551545d19b146d74f7844bf35791a6197a827051454"}, + {file = "ddtrace-2.3.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:97f07cf948c6e648c0b1c0614dbd7727976b3bdf009ade2c1e643dd7402076aa"}, + {file = "ddtrace-2.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:192687af1316629b843b4a5e62ce49c9eb9871387cac2ffd5aab34a56c7b7576"}, + {file = "ddtrace-2.3.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:343c8fb5a03424ff4cb4ec229dcfca373a690bb2452960d2e8d1433eebeedab5"}, + {file = "ddtrace-2.3.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:27f9a8247a0b688422224df25d6594e041068b311c76509a89048deabdd83bfe"}, + {file = "ddtrace-2.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:3899bc34aa788becad6ff93671dc7ba8f74cc935dbb174a8307a905bec824007"}, + {file = "ddtrace-2.3.0-cp310-cp310-win32.whl", hash = "sha256:06a7aae6e8c5de7f2c4853b0fa20f3676d9411f9d5b7c70f6be8bb6f5ca3d21c"}, + {file = "ddtrace-2.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:f6f7e7f9bad7185238c4c852e413a1433b2084bcff8b662ec2008e3a913cd30a"}, + {file = "ddtrace-2.3.0-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:4d9838f1cf9962445c33d7a034158863bcd963635d87f9ff763913f8070485ef"}, + {file = "ddtrace-2.3.0-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:51fc88e6cd2695158f4bbf7bb5ba6584d1908ffb148277b92089473ed0797096"}, + {file = "ddtrace-2.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:377e852f83f0e10b4c4f5fc592f0844c5e493839f4123ca40a13e4801c5086fb"}, + {file = "ddtrace-2.3.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:91e08fb6d1448e2e224ec79ce03a4cb69df348f2bd2184e4e7643e3321decd60"}, + {file = "ddtrace-2.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ee120c1372b46f3323b037f7af996e982f2be22c345c063ead4ed2339adac53a"}, + {file = "ddtrace-2.3.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:87d35ef21a5db84b2047b2e83fa86e4caa8510adb610ab8bb6302ff6a50650ad"}, + {file = "ddtrace-2.3.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6838fe077f4e0d10636355a3a84ee33153bf86b3445de4ad571826dc230dfa49"}, + {file = "ddtrace-2.3.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:87899d4bdbdeaccb6751878a38752803ccb294677e07e63296d4af90c227bf2b"}, + {file = "ddtrace-2.3.0-cp311-cp311-win32.whl", hash = "sha256:2865e515ecfdfd49fa60d324ae807b2c7a5ab80cead720b2ccfa57e9f4a81ea7"}, + {file = "ddtrace-2.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:0093eb628e44eee977173c0c6b2cacb5b2c59cef2e2f2466d2ca37023fe99f9c"}, + {file = "ddtrace-2.3.0-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:da2e6a0c9d7c504e995da366d186e359aef5d10f99a34d60deb88ed411a38e8c"}, + {file = "ddtrace-2.3.0-cp312-cp312-macosx_11_0_x86_64.whl", hash = "sha256:663cc830db0fdeba507b0441fb460c15a7d03736f4e8d77709c374c5e2a47717"}, + {file = "ddtrace-2.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7d39d9b4ed7735c90c76839c7a0cc93c4180160b17659d39669fb15a684d5e5b"}, + {file = "ddtrace-2.3.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:81a3fc905b7e4979f4a3797ba1b10dd9fbe2a7905def094a304f0e62db7578be"}, + {file = "ddtrace-2.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c436a1f869229935f4dd6a9632009806c96ba356272536b54a7c8a55c8c9c0f"}, + {file = "ddtrace-2.3.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3a86d415e614750f0b3d5f0e50265e0be13fb736b029ebc66f9c90b311b73f04"}, + {file = "ddtrace-2.3.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:5b4302b1878e576e8b1ae0ca4a380ac5912d7367e4219f152d5f49aac30cc20e"}, + {file = "ddtrace-2.3.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fd630addda7fff8980c361c8e70683bcb43fabb603e6ec4d41960724e5287da5"}, + {file = "ddtrace-2.3.0-cp312-cp312-win32.whl", hash = "sha256:32f6e6afd60d2c3d33d11af660076014905cbd20a2f2babeee908116b2b87c42"}, + {file = "ddtrace-2.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:dd2dc96c323e265d08eca87eb6da2de4e101e419c9a20bde692e88233765d923"}, + {file = "ddtrace-2.3.0-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:06a60b3a5efdce794cc1dda674a316df3530d3bc5baaed98851d2b5164883fc3"}, + {file = "ddtrace-2.3.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c951ec9e4f11a084b884c54e9710086cc50508bf589dd67adb67bfa4c97378b"}, + {file = "ddtrace-2.3.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:069f669eeebd3327a4cf734b54b53723bfb9f8829581f2a2522dffee81c3bdc9"}, + {file = "ddtrace-2.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47665eedf23428ceefda593923eac1d52353e5b8376afcfa861021bac2db4df0"}, + {file = "ddtrace-2.3.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:88b69c1bf3ecea5dc4a9d6007077fe86cbf8e989787ff4efe3ed1ef04c49ab2e"}, + {file = "ddtrace-2.3.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:6912f5146c82576e249bc7c24258851c268f023320007f54abfa903c76cac5d2"}, + {file = "ddtrace-2.3.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:7829bb5eb5ee3414b400f8f05513520d95e210ee656c6ccb3da44e2f2f2d90bc"}, + {file = "ddtrace-2.3.0-cp37-cp37m-win32.whl", hash = "sha256:4db5ba6f3fe99394304e5d04a5c1788608017304cb57f2953f17a38ae5111a18"}, + {file = "ddtrace-2.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:8c42c5b438b1409c8da0fe78db086bdb26367a88b594f91c59ded27e2278f17b"}, + {file = "ddtrace-2.3.0-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:1efeb6979ef458b95afee4ce6035d8606a1a60ddf7ae949a053a6e6316363baa"}, + {file = "ddtrace-2.3.0-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:89b2c3d7076c6cf93b21c9cf17d89d82ce9b6cc6c410bfaa5b8bf940fbdb39ac"}, + {file = "ddtrace-2.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec6c471894e229fe2ec417255b6ca86a1e77ac3d0a370dec0cacabc845d70da"}, + {file = "ddtrace-2.3.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0dbb2988b883322753e9194e8cfd3e4f82f76dfdc5eafed872032431ef7a4211"}, + {file = "ddtrace-2.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:edd4ebb73a2f6aa298a674064e137aeaba2c05e58f26abde489cc4542266b4f9"}, + {file = "ddtrace-2.3.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b54933cf3c0420883b650aee540e8736b89ab429398be9735814e12f826c98d4"}, + {file = "ddtrace-2.3.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:cc53d0fe9d83a6f41d0a1b2eca6b7ec854f36d52afeed7fde80acf86bbe3688f"}, + {file = "ddtrace-2.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:0f5b22b994bcacf6f730baf61758f483e7fade7fe748996e40382b047d07ce4f"}, + {file = "ddtrace-2.3.0-cp38-cp38-win32.whl", hash = "sha256:9a3347ad2f88a24fb2a5c8cd047cb428f3a72170371e63d67da5ebad0f3929c7"}, + {file = "ddtrace-2.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:d8905aa489404720ab3d80c4c4073a8a876abe9def0b4d46c755bc6001237a88"}, + {file = "ddtrace-2.3.0-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:2dd3e321d9b0e0c95c9dd482c0545d2ea7265df355bce3776f99f58c6a7c89bc"}, + {file = "ddtrace-2.3.0-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:ee664b5c874694c1f9bf1dc12a955a4142034178823d3f23cc0e27bc3fe3e05b"}, + {file = "ddtrace-2.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:484d43d8e193f229463c2730893a61f29408cd95456f786961d5095a8cad6b8d"}, + {file = "ddtrace-2.3.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:df32d7cae069ea37390aed3472beb545b7f1dcdb6d40e53ca00fbd6075b6a16f"}, + {file = "ddtrace-2.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc83363092016e32c669917e363c4fc1e4c8893bd74467132cfb3e0c74d44762"}, + {file = "ddtrace-2.3.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a5f6ea72778365ba5a36dcdedd91c6f0421a9ab20bd9ba996a8f7fb55b4d45e0"}, + {file = "ddtrace-2.3.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bbb5cfba15e1f2ce9f7263598e2a2e00d459b7ab6a7337d829764e4cc861f7a2"}, + {file = "ddtrace-2.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9f4e0e7f2a9a08ea5b9106e4f5db363f1e32e7d7854f318d5cde316597baeac7"}, + {file = "ddtrace-2.3.0-cp39-cp39-win32.whl", hash = "sha256:80da90d0cc7b91b5735aace6c7cc1a4e74d44be25add786b537ad9f2aa381955"}, + {file = "ddtrace-2.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:ce0d07d07ba6ac751d00a2904ec69947f1077c90b029d4f409908b5d2f0dd33f"}, + {file = "ddtrace-2.3.0.tar.gz", hash = "sha256:66325456c275ea9a2ec8118a73a2ed0f0c877bc1ce2e002612ea4780ffbdc610"}, ] [package.dependencies] -attrs = {version = ">=20", markers = "python_version > \"2.7\""} +attrs = ">=20" bytecode = [ {version = ">=0.13.0,<0.14.0", markers = "python_version == \"3.7\""}, {version = "*", markers = "python_version >= \"3.8\""}, ] -cattrs = {version = "*", markers = "python_version >= \"3.7\""} +cattrs = "*" ddsketch = ">=2.0.1" envier = "*" importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} -opentelemetry-api = {version = ">=1", markers = "python_version >= \"3.7\""} -protobuf = {version = ">=3", markers = "python_version >= \"3.7\""} +opentelemetry-api = ">=1" +protobuf = ">=3" +setuptools = {version = "*", markers = "python_version >= \"3.12\""} six = ">=1.12.0" typing-extensions = "*" xmltodict = ">=0.12" @@ -569,13 +561,13 @@ doc = ["Sphinx (>=1.6.5)", "mock", "sphinx-rtd-theme"] [[package]] name = "opentelemetry-api" -version = "1.20.0" +version = "1.21.0" description = "OpenTelemetry Python API" optional = false python-versions = ">=3.7" files = [ - {file = "opentelemetry_api-1.20.0-py3-none-any.whl", hash = "sha256:982b76036fec0fdaf490ae3dfd9f28c81442a33414f737abc687a32758cdcba5"}, - {file = "opentelemetry_api-1.20.0.tar.gz", hash = "sha256:06abe351db7572f8afdd0fb889ce53f3c992dbf6f6262507b385cc1963e06983"}, + {file = "opentelemetry_api-1.21.0-py3-none-any.whl", hash = "sha256:4bb86b28627b7e41098f0e93280fe4892a1abed1b79a19aec6f928f39b17dffb"}, + {file = "opentelemetry_api-1.21.0.tar.gz", hash = "sha256:d6185fd5043e000075d921822fd2d26b953eba8ca21b1e2fa360dd46a7686316"}, ] [package.dependencies] @@ -678,6 +670,22 @@ botocore = ">=1.12.36,<2.0a.0" [package.extras] crt = ["botocore[crt] (>=1.20.29,<2.0a.0)"] +[[package]] +name = "setuptools" +version = "69.0.0" +description = "Easily download, build, install, upgrade, and uninstall Python packages" +optional = false +python-versions = ">=3.8" +files = [ + {file = "setuptools-69.0.0-py3-none-any.whl", hash = "sha256:eb03b43f23910c5fd0909cb677ad017cd9531f493d27f8b3f5316ff1fb07390e"}, + {file = "setuptools-69.0.0.tar.gz", hash = "sha256:4c65d4f7891e5b046e9146913b87098144de2ca2128fbc10135b8556a6ddd946"}, +] + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.1)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] + [[package]] name = "six" version = "1.16.0" @@ -735,86 +743,81 @@ zstd = ["zstandard (>=0.18.0)"] [[package]] name = "wrapt" -version = "1.15.0" +version = "1.16.0" description = "Module for decorators, wrappers and monkey patching." optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" +python-versions = ">=3.6" files = [ - {file = "wrapt-1.15.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:ca1cccf838cd28d5a0883b342474c630ac48cac5df0ee6eacc9c7290f76b11c1"}, - {file = "wrapt-1.15.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:e826aadda3cae59295b95343db8f3d965fb31059da7de01ee8d1c40a60398b29"}, - {file = "wrapt-1.15.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:5fc8e02f5984a55d2c653f5fea93531e9836abbd84342c1d1e17abc4a15084c2"}, - {file = "wrapt-1.15.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:96e25c8603a155559231c19c0349245eeb4ac0096fe3c1d0be5c47e075bd4f46"}, - {file = "wrapt-1.15.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:40737a081d7497efea35ab9304b829b857f21558acfc7b3272f908d33b0d9d4c"}, - {file = "wrapt-1.15.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:f87ec75864c37c4c6cb908d282e1969e79763e0d9becdfe9fe5473b7bb1e5f09"}, - {file = "wrapt-1.15.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:1286eb30261894e4c70d124d44b7fd07825340869945c79d05bda53a40caa079"}, - {file = "wrapt-1.15.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:493d389a2b63c88ad56cdc35d0fa5752daac56ca755805b1b0c530f785767d5e"}, - {file = "wrapt-1.15.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:58d7a75d731e8c63614222bcb21dd992b4ab01a399f1f09dd82af17bbfc2368a"}, - {file = "wrapt-1.15.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:21f6d9a0d5b3a207cdf7acf8e58d7d13d463e639f0c7e01d82cdb671e6cb7923"}, - {file = "wrapt-1.15.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ce42618f67741d4697684e501ef02f29e758a123aa2d669e2d964ff734ee00ee"}, - {file = "wrapt-1.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41d07d029dd4157ae27beab04d22b8e261eddfc6ecd64ff7000b10dc8b3a5727"}, - {file = "wrapt-1.15.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:54accd4b8bc202966bafafd16e69da9d5640ff92389d33d28555c5fd4f25ccb7"}, - {file = "wrapt-1.15.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fbfbca668dd15b744418265a9607baa970c347eefd0db6a518aaf0cfbd153c0"}, - {file = "wrapt-1.15.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:76e9c727a874b4856d11a32fb0b389afc61ce8aaf281ada613713ddeadd1cfec"}, - {file = "wrapt-1.15.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e20076a211cd6f9b44a6be58f7eeafa7ab5720eb796975d0c03f05b47d89eb90"}, - {file = "wrapt-1.15.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a74d56552ddbde46c246b5b89199cb3fd182f9c346c784e1a93e4dc3f5ec9975"}, - {file = "wrapt-1.15.0-cp310-cp310-win32.whl", hash = "sha256:26458da5653aa5b3d8dc8b24192f574a58984c749401f98fff994d41d3f08da1"}, - {file = "wrapt-1.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:75760a47c06b5974aa5e01949bf7e66d2af4d08cb8c1d6516af5e39595397f5e"}, - {file = "wrapt-1.15.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ba1711cda2d30634a7e452fc79eabcadaffedf241ff206db2ee93dd2c89a60e7"}, - {file = "wrapt-1.15.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:56374914b132c702aa9aa9959c550004b8847148f95e1b824772d453ac204a72"}, - {file = "wrapt-1.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a89ce3fd220ff144bd9d54da333ec0de0399b52c9ac3d2ce34b569cf1a5748fb"}, - {file = "wrapt-1.15.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3bbe623731d03b186b3d6b0d6f51865bf598587c38d6f7b0be2e27414f7f214e"}, - {file = "wrapt-1.15.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3abbe948c3cbde2689370a262a8d04e32ec2dd4f27103669a45c6929bcdbfe7c"}, - {file = "wrapt-1.15.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:b67b819628e3b748fd3c2192c15fb951f549d0f47c0449af0764d7647302fda3"}, - {file = "wrapt-1.15.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:7eebcdbe3677e58dd4c0e03b4f2cfa346ed4049687d839adad68cc38bb559c92"}, - {file = "wrapt-1.15.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:74934ebd71950e3db69960a7da29204f89624dde411afbfb3b4858c1409b1e98"}, - {file = "wrapt-1.15.0-cp311-cp311-win32.whl", hash = "sha256:bd84395aab8e4d36263cd1b9308cd504f6cf713b7d6d3ce25ea55670baec5416"}, - {file = "wrapt-1.15.0-cp311-cp311-win_amd64.whl", hash = "sha256:a487f72a25904e2b4bbc0817ce7a8de94363bd7e79890510174da9d901c38705"}, - {file = "wrapt-1.15.0-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:4ff0d20f2e670800d3ed2b220d40984162089a6e2c9646fdb09b85e6f9a8fc29"}, - {file = "wrapt-1.15.0-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9ed6aa0726b9b60911f4aed8ec5b8dd7bf3491476015819f56473ffaef8959bd"}, - {file = "wrapt-1.15.0-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:896689fddba4f23ef7c718279e42f8834041a21342d95e56922e1c10c0cc7afb"}, - {file = "wrapt-1.15.0-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:75669d77bb2c071333417617a235324a1618dba66f82a750362eccbe5b61d248"}, - {file = "wrapt-1.15.0-cp35-cp35m-win32.whl", hash = "sha256:fbec11614dba0424ca72f4e8ba3c420dba07b4a7c206c8c8e4e73f2e98f4c559"}, - {file = "wrapt-1.15.0-cp35-cp35m-win_amd64.whl", hash = "sha256:fd69666217b62fa5d7c6aa88e507493a34dec4fa20c5bd925e4bc12fce586639"}, - {file = "wrapt-1.15.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:b0724f05c396b0a4c36a3226c31648385deb6a65d8992644c12a4963c70326ba"}, - {file = "wrapt-1.15.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bbeccb1aa40ab88cd29e6c7d8585582c99548f55f9b2581dfc5ba68c59a85752"}, - {file = "wrapt-1.15.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:38adf7198f8f154502883242f9fe7333ab05a5b02de7d83aa2d88ea621f13364"}, - {file = "wrapt-1.15.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:578383d740457fa790fdf85e6d346fda1416a40549fe8db08e5e9bd281c6a475"}, - {file = "wrapt-1.15.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:a4cbb9ff5795cd66f0066bdf5947f170f5d63a9274f99bdbca02fd973adcf2a8"}, - {file = "wrapt-1.15.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:af5bd9ccb188f6a5fdda9f1f09d9f4c86cc8a539bd48a0bfdc97723970348418"}, - {file = "wrapt-1.15.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:b56d5519e470d3f2fe4aa7585f0632b060d532d0696c5bdfb5e8319e1d0f69a2"}, - {file = "wrapt-1.15.0-cp36-cp36m-win32.whl", hash = "sha256:77d4c1b881076c3ba173484dfa53d3582c1c8ff1f914c6461ab70c8428b796c1"}, - {file = "wrapt-1.15.0-cp36-cp36m-win_amd64.whl", hash = "sha256:077ff0d1f9d9e4ce6476c1a924a3332452c1406e59d90a2cf24aeb29eeac9420"}, - {file = "wrapt-1.15.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:5c5aa28df055697d7c37d2099a7bc09f559d5053c3349b1ad0c39000e611d317"}, - {file = "wrapt-1.15.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3a8564f283394634a7a7054b7983e47dbf39c07712d7b177b37e03f2467a024e"}, - {file = "wrapt-1.15.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:780c82a41dc493b62fc5884fb1d3a3b81106642c5c5c78d6a0d4cbe96d62ba7e"}, - {file = "wrapt-1.15.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e169e957c33576f47e21864cf3fc9ff47c223a4ebca8960079b8bd36cb014fd0"}, - {file = "wrapt-1.15.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b02f21c1e2074943312d03d243ac4388319f2456576b2c6023041c4d57cd7019"}, - {file = "wrapt-1.15.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f2e69b3ed24544b0d3dbe2c5c0ba5153ce50dcebb576fdc4696d52aa22db6034"}, - {file = "wrapt-1.15.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d787272ed958a05b2c86311d3a4135d3c2aeea4fc655705f074130aa57d71653"}, - {file = "wrapt-1.15.0-cp37-cp37m-win32.whl", hash = "sha256:02fce1852f755f44f95af51f69d22e45080102e9d00258053b79367d07af39c0"}, - {file = "wrapt-1.15.0-cp37-cp37m-win_amd64.whl", hash = "sha256:abd52a09d03adf9c763d706df707c343293d5d106aea53483e0ec8d9e310ad5e"}, - {file = "wrapt-1.15.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cdb4f085756c96a3af04e6eca7f08b1345e94b53af8921b25c72f096e704e145"}, - {file = "wrapt-1.15.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:230ae493696a371f1dbffaad3dafbb742a4d27a0afd2b1aecebe52b740167e7f"}, - {file = "wrapt-1.15.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63424c681923b9f3bfbc5e3205aafe790904053d42ddcc08542181a30a7a51bd"}, - {file = "wrapt-1.15.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6bcbfc99f55655c3d93feb7ef3800bd5bbe963a755687cbf1f490a71fb7794b"}, - {file = "wrapt-1.15.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c99f4309f5145b93eca6e35ac1a988f0dc0a7ccf9ccdcd78d3c0adf57224e62f"}, - {file = "wrapt-1.15.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b130fe77361d6771ecf5a219d8e0817d61b236b7d8b37cc045172e574ed219e6"}, - {file = "wrapt-1.15.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:96177eb5645b1c6985f5c11d03fc2dbda9ad24ec0f3a46dcce91445747e15094"}, - {file = "wrapt-1.15.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5fe3e099cf07d0fb5a1e23d399e5d4d1ca3e6dfcbe5c8570ccff3e9208274f7"}, - {file = "wrapt-1.15.0-cp38-cp38-win32.whl", hash = "sha256:abd8f36c99512755b8456047b7be10372fca271bf1467a1caa88db991e7c421b"}, - {file = "wrapt-1.15.0-cp38-cp38-win_amd64.whl", hash = "sha256:b06fa97478a5f478fb05e1980980a7cdf2712015493b44d0c87606c1513ed5b1"}, - {file = "wrapt-1.15.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2e51de54d4fb8fb50d6ee8327f9828306a959ae394d3e01a1ba8b2f937747d86"}, - {file = "wrapt-1.15.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0970ddb69bba00670e58955f8019bec4a42d1785db3faa043c33d81de2bf843c"}, - {file = "wrapt-1.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76407ab327158c510f44ded207e2f76b657303e17cb7a572ffe2f5a8a48aa04d"}, - {file = "wrapt-1.15.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cd525e0e52a5ff16653a3fc9e3dd827981917d34996600bbc34c05d048ca35cc"}, - {file = "wrapt-1.15.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d37ac69edc5614b90516807de32d08cb8e7b12260a285ee330955604ed9dd29"}, - {file = "wrapt-1.15.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:078e2a1a86544e644a68422f881c48b84fef6d18f8c7a957ffd3f2e0a74a0d4a"}, - {file = "wrapt-1.15.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:2cf56d0e237280baed46f0b5316661da892565ff58309d4d2ed7dba763d984b8"}, - {file = "wrapt-1.15.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7dc0713bf81287a00516ef43137273b23ee414fe41a3c14be10dd95ed98a2df9"}, - {file = "wrapt-1.15.0-cp39-cp39-win32.whl", hash = "sha256:46ed616d5fb42f98630ed70c3529541408166c22cdfd4540b88d5f21006b0eff"}, - {file = "wrapt-1.15.0-cp39-cp39-win_amd64.whl", hash = "sha256:eef4d64c650f33347c1f9266fa5ae001440b232ad9b98f1f43dfe7a79435c0a6"}, - {file = "wrapt-1.15.0-py3-none-any.whl", hash = "sha256:64b1df0f83706b4ef4cfb4fb0e4c2669100fd7ecacfb59e091fad300d4e04640"}, - {file = "wrapt-1.15.0.tar.gz", hash = "sha256:d06730c6aed78cee4126234cf2d071e01b44b915e725a6cb439a879ec9754a3a"}, + {file = "wrapt-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4"}, + {file = "wrapt-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020"}, + {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb2dee3874a500de01c93d5c71415fcaef1d858370d405824783e7a8ef5db440"}, + {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a88e6010048489cda82b1326889ec075a8c856c2e6a256072b28eaee3ccf487"}, + {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac83a914ebaf589b69f7d0a1277602ff494e21f4c2f743313414378f8f50a4cf"}, + {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:73aa7d98215d39b8455f103de64391cb79dfcad601701a3aa0dddacf74911d72"}, + {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:807cc8543a477ab7422f1120a217054f958a66ef7314f76dd9e77d3f02cdccd0"}, + {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bf5703fdeb350e36885f2875d853ce13172ae281c56e509f4e6eca049bdfb136"}, + {file = "wrapt-1.16.0-cp310-cp310-win32.whl", hash = "sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d"}, + {file = "wrapt-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:decbfa2f618fa8ed81c95ee18a387ff973143c656ef800c9f24fb7e9c16054e2"}, + {file = "wrapt-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09"}, + {file = "wrapt-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d"}, + {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389"}, + {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43aa59eadec7890d9958748db829df269f0368521ba6dc68cc172d5d03ed8060"}, + {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72554a23c78a8e7aa02abbd699d129eead8b147a23c56e08d08dfc29cfdddca1"}, + {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d2efee35b4b0a347e0d99d28e884dfd82797852d62fcd7ebdeee26f3ceb72cf3"}, + {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6dcfcffe73710be01d90cae08c3e548d90932d37b39ef83969ae135d36ef3956"}, + {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:eb6e651000a19c96f452c85132811d25e9264d836951022d6e81df2fff38337d"}, + {file = "wrapt-1.16.0-cp311-cp311-win32.whl", hash = "sha256:66027d667efe95cc4fa945af59f92c5a02c6f5bb6012bff9e60542c74c75c362"}, + {file = "wrapt-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89"}, + {file = "wrapt-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b"}, + {file = "wrapt-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36"}, + {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73"}, + {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809"}, + {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b"}, + {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81"}, + {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9"}, + {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c"}, + {file = "wrapt-1.16.0-cp312-cp312-win32.whl", hash = "sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc"}, + {file = "wrapt-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8"}, + {file = "wrapt-1.16.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d462f28826f4657968ae51d2181a074dfe03c200d6131690b7d65d55b0f360f8"}, + {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a33a747400b94b6d6b8a165e4480264a64a78c8a4c734b62136062e9a248dd39"}, + {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3646eefa23daeba62643a58aac816945cadc0afaf21800a1421eeba5f6cfb9c"}, + {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ebf019be5c09d400cf7b024aa52b1f3aeebeff51550d007e92c3c1c4afc2a40"}, + {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc"}, + {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:1acd723ee2a8826f3d53910255643e33673e1d11db84ce5880675954183ec47e"}, + {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:bc57efac2da352a51cc4658878a68d2b1b67dbe9d33c36cb826ca449d80a8465"}, + {file = "wrapt-1.16.0-cp36-cp36m-win32.whl", hash = "sha256:da4813f751142436b075ed7aa012a8778aa43a99f7b36afe9b742d3ed8bdc95e"}, + {file = "wrapt-1.16.0-cp36-cp36m-win_amd64.whl", hash = "sha256:6f6eac2360f2d543cc875a0e5efd413b6cbd483cb3ad7ebf888884a6e0d2e966"}, + {file = "wrapt-1.16.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a0ea261ce52b5952bf669684a251a66df239ec6d441ccb59ec7afa882265d593"}, + {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bd2d7ff69a2cac767fbf7a2b206add2e9a210e57947dd7ce03e25d03d2de292"}, + {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9159485323798c8dc530a224bd3ffcf76659319ccc7bbd52e01e73bd0241a0c5"}, + {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a86373cf37cd7764f2201b76496aba58a52e76dedfaa698ef9e9688bfd9e41cf"}, + {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:73870c364c11f03ed072dda68ff7aea6d2a3a5c3fe250d917a429c7432e15228"}, + {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b935ae30c6e7400022b50f8d359c03ed233d45b725cfdd299462f41ee5ffba6f"}, + {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:db98ad84a55eb09b3c32a96c576476777e87c520a34e2519d3e59c44710c002c"}, + {file = "wrapt-1.16.0-cp37-cp37m-win32.whl", hash = "sha256:9153ed35fc5e4fa3b2fe97bddaa7cbec0ed22412b85bcdaf54aeba92ea37428c"}, + {file = "wrapt-1.16.0-cp37-cp37m-win_amd64.whl", hash = "sha256:66dfbaa7cfa3eb707bbfcd46dab2bc6207b005cbc9caa2199bcbc81d95071a00"}, + {file = "wrapt-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1dd50a2696ff89f57bd8847647a1c363b687d3d796dc30d4dd4a9d1689a706f0"}, + {file = "wrapt-1.16.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:44a2754372e32ab315734c6c73b24351d06e77ffff6ae27d2ecf14cf3d229202"}, + {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e9723528b9f787dc59168369e42ae1c3b0d3fadb2f1a71de14531d321ee05b0"}, + {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbed418ba5c3dce92619656802cc5355cb679e58d0d89b50f116e4a9d5a9603e"}, + {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:941988b89b4fd6b41c3f0bfb20e92bd23746579736b7343283297c4c8cbae68f"}, + {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6a42cd0cfa8ffc1915aef79cb4284f6383d8a3e9dcca70c445dcfdd639d51267"}, + {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1ca9b6085e4f866bd584fb135a041bfc32cab916e69f714a7d1d397f8c4891ca"}, + {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5e49454f19ef621089e204f862388d29e6e8d8b162efce05208913dde5b9ad6"}, + {file = "wrapt-1.16.0-cp38-cp38-win32.whl", hash = "sha256:c31f72b1b6624c9d863fc095da460802f43a7c6868c5dda140f51da24fd47d7b"}, + {file = "wrapt-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:490b0ee15c1a55be9c1bd8609b8cecd60e325f0575fc98f50058eae366e01f41"}, + {file = "wrapt-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9b201ae332c3637a42f02d1045e1d0cccfdc41f1f2f801dafbaa7e9b4797bfc2"}, + {file = "wrapt-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2076fad65c6736184e77d7d4729b63a6d1ae0b70da4868adeec40989858eb3fb"}, + {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5cd603b575ebceca7da5a3a251e69561bec509e0b46e4993e1cac402b7247b8"}, + {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b47cfad9e9bbbed2339081f4e346c93ecd7ab504299403320bf85f7f85c7d46c"}, + {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a"}, + {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5f15814a33e42b04e3de432e573aa557f9f0f56458745c2074952f564c50e664"}, + {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db2e408d983b0e61e238cf579c09ef7020560441906ca990fe8412153e3b291f"}, + {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:edfad1d29c73f9b863ebe7082ae9321374ccb10879eeabc84ba3b69f2579d537"}, + {file = "wrapt-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed867c42c268f876097248e05b6117a65bcd1e63b779e916fe2e33cd6fd0d3c3"}, + {file = "wrapt-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:eb1b046be06b0fce7249f1d025cd359b4b80fc1c3e24ad9eca33e0dcdb2e4a35"}, + {file = "wrapt-1.16.0-py3-none-any.whl", hash = "sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1"}, + {file = "wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d"}, ] [[package]] @@ -849,4 +852,4 @@ dev = ["boto3", "flake8", "httpretty", "nose2", "requests"] [metadata] lock-version = "2.0" python-versions = ">=3.7.0,<4" -content-hash = "49c1c17e09ec0fe82e8f8ba0815078369669dcbedf681c78994173eeed020f05" +content-hash = "0d5100932fcbf8aef16e44c49c8a8d6894f91ed9838bee831d6b248ad2e71e7b" diff --git a/pyproject.toml b/pyproject.toml index de4a780e8..de179b028 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,7 +27,7 @@ classifiers = [ python = ">=3.7.0,<4" datadog = ">=0.41.0,<1.0.0" wrapt = "^1.11.2" -ddtrace = "<2.0.0" +ddtrace = ">=2.3.0" urllib3 = [ {version = "<2.0.0", python = "<3.11", optional = true}, {version = "<2.1.0", python = ">=3.11", optional = true}, diff --git a/scripts/run_integration_tests.sh b/scripts/run_integration_tests.sh index 903824583..ebda6fded 100755 --- a/scripts/run_integration_tests.sh +++ b/scripts/run_integration_tests.sh @@ -236,6 +236,9 @@ for handler_name in "${LAMBDA_HANDLERS[@]}"; do sed -E "s/(\"object_etag\"\:\ \")[a-zA-Z0-9\-]+/\1XXXX/g" | sed -E "s/(\"dd_trace\"\: \")([0-9]+\.[0-9]+\.[0-9]+)/\1X.X.X/g" | sed -E "s/(traceparent\:)([A-Za-z0-9\-]+)/\1XXX/g" | + sed -E "s/(tracestate\:)([A-Za-z0-9\-\=\:\;].+)/\1XXX/g" | + sed -E "s/(\"_dd.p.tid\"\: \")[a-z0-9\.\-]+/\1XXXX/g" | + sed -E "s/(_dd.p.tid=)[a-z0-9\.\-]+/\1XXXX/g" | # Parse out account ID in ARN sed -E "s/([a-zA-Z0-9]+):([a-zA-Z0-9]+):([a-zA-Z0-9]+):([a-zA-Z0-9\-]+):([a-zA-Z0-9\-\:]+)/\1:\2:\3:\4:XXXX:\4/g" | sed -E "/init complete at epoch/d" | diff --git a/tests/integration/snapshots/logs/async-metrics_python310.log b/tests/integration/snapshots/logs/async-metrics_python310.log index 1637612fd..81d2351ec 100644 --- a/tests/integration/snapshots/logs/async-metrics_python310.log +++ b/tests/integration/snapshots/logs/async-metrics_python310.log @@ -36,8 +36,8 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -68,6 +68,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -150,6 +151,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -205,8 +207,8 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -236,6 +238,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -314,6 +317,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -369,8 +373,8 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -394,6 +398,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -471,6 +476,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -526,8 +532,8 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -561,6 +567,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -643,6 +650,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -698,8 +706,8 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -729,6 +737,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -807,6 +816,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -862,8 +872,8 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -890,6 +900,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -968,6 +979,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1023,8 +1035,8 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1052,6 +1064,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1130,6 +1143,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1185,8 +1199,8 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1213,6 +1227,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1291,6 +1306,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1346,8 +1362,8 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1380,6 +1396,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1460,6 +1477,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", diff --git a/tests/integration/snapshots/logs/async-metrics_python311.log b/tests/integration/snapshots/logs/async-metrics_python311.log index 7eedbe888..ebecb1392 100644 --- a/tests/integration/snapshots/logs/async-metrics_python311.log +++ b/tests/integration/snapshots/logs/async-metrics_python311.log @@ -36,8 +36,8 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -68,6 +68,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -150,6 +151,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -205,8 +207,8 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -236,6 +238,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -314,6 +317,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -369,8 +373,8 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -394,6 +398,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -471,6 +476,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -526,8 +532,8 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -561,6 +567,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -643,6 +650,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -698,8 +706,8 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -729,6 +737,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -807,6 +816,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -862,8 +872,8 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -890,6 +900,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -968,6 +979,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1023,8 +1035,8 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1052,6 +1064,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1130,6 +1143,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1185,8 +1199,8 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1213,6 +1227,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1291,6 +1306,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1346,8 +1362,8 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1380,6 +1396,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1460,6 +1477,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", diff --git a/tests/integration/snapshots/logs/async-metrics_python37.log b/tests/integration/snapshots/logs/async-metrics_python37.log index 080113f27..bdde3f9ef 100644 --- a/tests/integration/snapshots/logs/async-metrics_python37.log +++ b/tests/integration/snapshots/logs/async-metrics_python37.log @@ -36,8 +36,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -68,6 +68,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -150,6 +151,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -205,8 +207,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -236,6 +238,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -314,6 +317,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -369,8 +373,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -394,6 +398,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -471,6 +476,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -526,8 +532,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -561,6 +567,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -643,6 +650,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -698,8 +706,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -729,6 +737,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -807,6 +816,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -862,8 +872,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -890,6 +900,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -968,6 +979,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1023,8 +1035,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1052,6 +1064,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1130,6 +1143,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1185,8 +1199,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1213,6 +1227,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1291,6 +1306,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1346,8 +1362,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1380,6 +1396,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1460,6 +1477,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", diff --git a/tests/integration/snapshots/logs/async-metrics_python38.log b/tests/integration/snapshots/logs/async-metrics_python38.log index 913ef7601..ae5b719f7 100644 --- a/tests/integration/snapshots/logs/async-metrics_python38.log +++ b/tests/integration/snapshots/logs/async-metrics_python38.log @@ -36,8 +36,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -68,6 +68,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -150,6 +151,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -205,8 +207,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -236,6 +238,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -314,6 +317,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -369,8 +373,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -394,6 +398,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -471,6 +476,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -526,8 +532,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -561,6 +567,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -643,6 +650,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -698,8 +706,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -729,6 +737,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -807,6 +816,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -862,8 +872,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -890,6 +900,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -968,6 +979,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1023,8 +1035,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1052,6 +1064,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1130,6 +1143,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1185,8 +1199,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1213,6 +1227,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1291,6 +1306,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1346,8 +1362,9 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +END Duration: XXXX ms Memory Used: XXXX MB { "traces": [ [ @@ -1380,6 +1397,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1460,6 +1478,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1477,4 +1496,3 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -END Duration: XXXX ms Memory Used: XXXX MB diff --git a/tests/integration/snapshots/logs/async-metrics_python39.log b/tests/integration/snapshots/logs/async-metrics_python39.log index 6708ebb09..53ef3d2f5 100644 --- a/tests/integration/snapshots/logs/async-metrics_python39.log +++ b/tests/integration/snapshots/logs/async-metrics_python39.log @@ -36,8 +36,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -68,6 +68,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -150,6 +151,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -205,8 +207,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -236,6 +238,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -314,6 +317,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -369,8 +373,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -394,6 +398,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -471,6 +476,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -526,8 +532,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -561,6 +567,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -643,6 +650,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -698,8 +706,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -729,6 +737,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -807,6 +816,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -862,8 +872,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -890,6 +900,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -968,6 +979,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1023,8 +1035,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1052,6 +1064,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1130,6 +1143,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1185,8 +1199,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1213,6 +1227,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1291,6 +1306,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1346,8 +1362,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1380,6 +1396,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1460,6 +1477,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", diff --git a/tests/integration/snapshots/logs/sync-metrics_python310.log b/tests/integration/snapshots/logs/sync-metrics_python310.log index 01cf87004..07d37c408 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python310.log +++ b/tests/integration/snapshots/logs/sync-metrics_python310.log @@ -16,8 +16,8 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -48,6 +48,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -130,6 +131,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -147,7 +149,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -172,6 +174,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -203,8 +206,8 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -234,6 +237,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -312,6 +316,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -329,7 +334,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -354,6 +359,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -385,8 +391,8 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -410,6 +416,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -487,6 +494,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -504,7 +512,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -529,6 +537,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -560,8 +569,8 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -595,6 +604,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -677,6 +687,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -694,7 +705,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -719,6 +730,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -750,8 +762,8 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -781,6 +793,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -859,6 +872,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -876,7 +890,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -901,6 +915,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -932,8 +947,8 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -960,6 +975,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1038,6 +1054,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1055,7 +1072,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1080,6 +1097,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -1111,8 +1129,8 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1140,6 +1158,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1218,6 +1237,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1235,7 +1255,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1260,6 +1280,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -1291,8 +1312,8 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1319,6 +1340,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1397,6 +1419,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1414,7 +1437,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1439,6 +1462,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -1470,8 +1494,8 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1504,6 +1528,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1584,6 +1609,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1601,7 +1627,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1626,6 +1652,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { diff --git a/tests/integration/snapshots/logs/sync-metrics_python311.log b/tests/integration/snapshots/logs/sync-metrics_python311.log index 79d3a9a5b..c2a3e5cdd 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python311.log +++ b/tests/integration/snapshots/logs/sync-metrics_python311.log @@ -16,8 +16,8 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -48,6 +48,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -130,6 +131,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -147,7 +149,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -172,6 +174,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -203,8 +206,8 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -234,6 +237,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -312,6 +316,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -329,7 +334,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -354,6 +359,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -385,8 +391,8 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -410,6 +416,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -487,6 +494,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -504,7 +512,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -529,6 +537,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -560,8 +569,8 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -595,6 +604,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -677,6 +687,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -694,7 +705,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -719,6 +730,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -750,8 +762,8 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -781,6 +793,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -859,6 +872,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -876,7 +890,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -901,6 +915,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -932,8 +947,8 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -960,6 +975,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1038,6 +1054,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1055,7 +1072,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1080,6 +1097,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -1111,8 +1129,8 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1140,6 +1158,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1218,6 +1237,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1235,7 +1255,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1260,6 +1280,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -1291,8 +1312,8 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1319,6 +1340,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1397,6 +1419,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1414,7 +1437,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1439,6 +1462,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -1470,8 +1494,8 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1504,6 +1528,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1584,6 +1609,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1601,7 +1627,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1626,6 +1652,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { diff --git a/tests/integration/snapshots/logs/sync-metrics_python37.log b/tests/integration/snapshots/logs/sync-metrics_python37.log index 31518039c..fb7b879b6 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python37.log +++ b/tests/integration/snapshots/logs/sync-metrics_python37.log @@ -16,8 +16,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -48,6 +48,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -130,6 +131,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -147,7 +149,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -172,6 +174,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -203,8 +206,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -234,6 +237,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -312,6 +316,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -329,7 +334,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -354,6 +359,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -385,8 +391,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -410,6 +416,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -487,6 +494,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -504,7 +512,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -529,6 +537,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -560,8 +569,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -595,6 +604,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -677,6 +687,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -694,7 +705,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +END Duration: XXXX ms Memory Used: XXXX MB { "traces": [ [ @@ -719,6 +731,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -732,7 +745,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept ] ] } -END Duration: XXXX ms Memory Used: XXXX MB START { "m": "aws.lambda.enhanced.invocations", @@ -750,8 +762,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -781,6 +793,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -859,6 +872,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -876,7 +890,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -901,6 +915,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -932,8 +947,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -960,6 +975,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1038,6 +1054,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1055,7 +1072,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1080,6 +1097,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -1111,8 +1129,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1140,6 +1158,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1218,6 +1237,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1235,7 +1255,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1260,6 +1280,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -1291,8 +1312,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1319,6 +1340,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1397,6 +1419,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1414,7 +1437,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1439,6 +1462,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -1470,8 +1494,8 @@ START "dd_lambda_layer:datadog-python37_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1504,6 +1528,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1584,6 +1609,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1601,7 +1627,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python37_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1626,6 +1652,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { diff --git a/tests/integration/snapshots/logs/sync-metrics_python38.log b/tests/integration/snapshots/logs/sync-metrics_python38.log index dbdb9550d..81e776e1b 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python38.log +++ b/tests/integration/snapshots/logs/sync-metrics_python38.log @@ -16,8 +16,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -48,6 +48,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -130,6 +131,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -147,7 +149,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -172,6 +174,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -203,8 +206,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -234,6 +237,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -312,6 +316,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -329,7 +334,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -354,6 +359,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -385,8 +391,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -410,6 +416,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -487,6 +494,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -504,7 +512,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -529,6 +537,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -560,8 +569,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -595,6 +604,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -677,6 +687,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -694,7 +705,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -719,6 +730,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -750,8 +762,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -781,6 +793,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -859,6 +872,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -876,7 +890,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -901,6 +915,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -932,8 +947,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -960,6 +975,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1038,6 +1054,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1055,7 +1072,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1080,6 +1097,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -1111,8 +1129,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1140,6 +1158,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1218,6 +1237,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1235,7 +1255,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +END Duration: XXXX ms Memory Used: XXXX MB { "traces": [ [ @@ -1260,6 +1281,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -1273,7 +1295,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept ] ] } -END Duration: XXXX ms Memory Used: XXXX MB START { "m": "aws.lambda.enhanced.invocations", @@ -1291,8 +1312,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1319,6 +1340,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1397,6 +1419,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1414,7 +1437,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1439,6 +1462,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -1470,8 +1494,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1504,6 +1528,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1584,6 +1609,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1601,7 +1627,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1626,6 +1652,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { diff --git a/tests/integration/snapshots/logs/sync-metrics_python39.log b/tests/integration/snapshots/logs/sync-metrics_python39.log index f0def45d8..0c7f56825 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -16,8 +16,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -48,6 +48,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -130,6 +131,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -147,7 +149,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -172,6 +174,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -203,8 +206,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -234,6 +237,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -312,6 +316,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -329,7 +334,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +END Duration: XXXX ms Memory Used: XXXX MB { "traces": [ [ @@ -354,6 +360,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -367,7 +374,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept ] ] } -END Duration: XXXX ms Memory Used: XXXX MB START { "m": "aws.lambda.enhanced.invocations", @@ -385,8 +391,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -410,6 +416,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -487,6 +494,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -504,7 +512,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -529,6 +537,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -560,8 +569,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -595,6 +604,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -677,6 +687,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -694,7 +705,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -719,6 +730,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -750,8 +762,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -781,6 +793,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -859,6 +872,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -876,7 +890,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -901,6 +915,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -932,8 +947,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -960,6 +975,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1038,6 +1054,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1055,7 +1072,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1080,6 +1097,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -1111,8 +1129,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1140,6 +1158,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1218,6 +1237,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1235,7 +1255,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1260,6 +1280,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -1291,8 +1312,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1319,6 +1340,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1397,6 +1419,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1414,7 +1437,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1439,6 +1462,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { @@ -1470,8 +1494,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1504,6 +1528,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python" @@ -1584,6 +1609,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "start": "XXXX", "duration": "XXXX", "meta": { + "_dd.p.tid": "XXXX", "_dd.origin": "lambda", "component": "requests", "span.kind": "client", @@ -1601,7 +1627,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:dd=s:1;t.dm:-0", "x-datadog-parent-id:XXXX", "x-datadog-sampling-priority:1", "x-datadog-tags:_dd.p.dm=-0", "x-datadog-trace-id:XXXX"] Data: {"series": [{"metric": "hello.dog", "points": [[XXXX, [1.0]]], "type": "distribution", "host": null, "device": null, "tags": ["team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}, {"metric": "tests.integration.count", "points": [[XXXX, [21.0]]], "type": "distribution", "host": null, "device": null, "tags": ["test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X", "service:integration-tests-python"], "interval": 10}]} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1626,6 +1652,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "language": "python" }, "metrics": { From 9968bbcf3a2b6d26979311f6ce1532941ffda6ac Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Tue, 21 Nov 2023 12:28:21 -0800 Subject: [PATCH 094/403] Improve error log message when no sns->sqs context found. (#396) --- datadog_lambda/tracing.py | 1 + 1 file changed, 1 insertion(+) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 058827498..252a4717a 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -266,6 +266,7 @@ def extract_context_from_sqs_or_sns_event_or_context(event, lambda_context): "Datadog Lambda Python only supports extracting trace" "context from String or Binary SQS/SNS message attributes" ) + return extract_context_from_lambda_context(lambda_context) dd_data = json.loads(dd_json_data) return propagator.extract(dd_data) except Exception as e: From ec61771b118838be13a2649cfc65ec092fa15113 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Tue, 21 Nov 2023 18:20:51 -0500 Subject: [PATCH 095/403] Bump version to 5.83.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index de179b028..0ebf17551 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "4.82.0" +version = "5.83.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From f5812d5c3561dcf3364f25c5c1694a9d23757d08 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Tue, 28 Nov 2023 17:01:40 -0500 Subject: [PATCH 096/403] feat: Bump ddtrace to 2.3.1 (#397) --- poetry.lock | 150 ++++++++++++++++++++++++------------------------- pyproject.toml | 2 +- 2 files changed, 76 insertions(+), 76 deletions(-) diff --git a/poetry.lock b/poetry.lock index da1c04338..c32c4c691 100644 --- a/poetry.lock +++ b/poetry.lock @@ -23,17 +23,17 @@ tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pyte [[package]] name = "boto3" -version = "1.29.4" +version = "1.29.5" description = "The AWS SDK for Python" optional = true python-versions = ">= 3.7" files = [ - {file = "boto3-1.29.4-py3-none-any.whl", hash = "sha256:d1135647309b89376a014d21407aabfa322998206175f2297def812bf4d824a9"}, - {file = "boto3-1.29.4.tar.gz", hash = "sha256:ca9b04fc2c75990c2be84c43b9d6edecce828960fc27e07ab29036587a1ca635"}, + {file = "boto3-1.29.5-py3-none-any.whl", hash = "sha256:030b0f0faf8d44f97e67a5411644243482f33ebf1c45338bb40662239a16dda4"}, + {file = "boto3-1.29.5.tar.gz", hash = "sha256:76fc6a17781c27558c526e899579ccf530df10eb279261fe7800540f0043917e"}, ] [package.dependencies] -botocore = ">=1.32.4,<1.33.0" +botocore = ">=1.32.5,<1.33.0" jmespath = ">=0.7.1,<2.0.0" s3transfer = ">=0.7.0,<0.8.0" @@ -42,13 +42,13 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.32.4" +version = "1.32.5" description = "Low-level, data-driven core of boto 3." optional = true python-versions = ">= 3.7" files = [ - {file = "botocore-1.32.4-py3-none-any.whl", hash = "sha256:3ee73c0d93bdb944d0c46772f08f09cdcf25ef58bd86962e6f4a24e531198bfa"}, - {file = "botocore-1.32.4.tar.gz", hash = "sha256:6bfa75e28c9ad0321cefefa51b00ff233b16b2416f8b95229796263edba45a39"}, + {file = "botocore-1.32.5-py3-none-any.whl", hash = "sha256:b8960c955ba275915bf022c54c896c2dac1038289d8a5ace92d1431257c0a439"}, + {file = "botocore-1.32.5.tar.gz", hash = "sha256:75a68f942cd87baff83b3a20dfda11b3aeda48aad32e4dcd6fe8992c0cb0e7db"}, ] [package.dependencies] @@ -325,71 +325,71 @@ six = "*" [[package]] name = "ddtrace" -version = "2.3.0" +version = "2.3.1" description = "Datadog APM client library" optional = false python-versions = ">=3.7" files = [ - {file = "ddtrace-2.3.0-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:2fb6d9e58bda842acd8aa5b1abd9942c24d1c1d75fe9501a0927fab8625975d2"}, - {file = "ddtrace-2.3.0-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:efaeedba42770a330f66ffd1629f6a254925ee88dc50dfc6e51ece5e056e9f02"}, - {file = "ddtrace-2.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:107d310ccc131a4825e03551545d19b146d74f7844bf35791a6197a827051454"}, - {file = "ddtrace-2.3.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:97f07cf948c6e648c0b1c0614dbd7727976b3bdf009ade2c1e643dd7402076aa"}, - {file = "ddtrace-2.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:192687af1316629b843b4a5e62ce49c9eb9871387cac2ffd5aab34a56c7b7576"}, - {file = "ddtrace-2.3.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:343c8fb5a03424ff4cb4ec229dcfca373a690bb2452960d2e8d1433eebeedab5"}, - {file = "ddtrace-2.3.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:27f9a8247a0b688422224df25d6594e041068b311c76509a89048deabdd83bfe"}, - {file = "ddtrace-2.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:3899bc34aa788becad6ff93671dc7ba8f74cc935dbb174a8307a905bec824007"}, - {file = "ddtrace-2.3.0-cp310-cp310-win32.whl", hash = "sha256:06a7aae6e8c5de7f2c4853b0fa20f3676d9411f9d5b7c70f6be8bb6f5ca3d21c"}, - {file = "ddtrace-2.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:f6f7e7f9bad7185238c4c852e413a1433b2084bcff8b662ec2008e3a913cd30a"}, - {file = "ddtrace-2.3.0-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:4d9838f1cf9962445c33d7a034158863bcd963635d87f9ff763913f8070485ef"}, - {file = "ddtrace-2.3.0-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:51fc88e6cd2695158f4bbf7bb5ba6584d1908ffb148277b92089473ed0797096"}, - {file = "ddtrace-2.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:377e852f83f0e10b4c4f5fc592f0844c5e493839f4123ca40a13e4801c5086fb"}, - {file = "ddtrace-2.3.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:91e08fb6d1448e2e224ec79ce03a4cb69df348f2bd2184e4e7643e3321decd60"}, - {file = "ddtrace-2.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ee120c1372b46f3323b037f7af996e982f2be22c345c063ead4ed2339adac53a"}, - {file = "ddtrace-2.3.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:87d35ef21a5db84b2047b2e83fa86e4caa8510adb610ab8bb6302ff6a50650ad"}, - {file = "ddtrace-2.3.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6838fe077f4e0d10636355a3a84ee33153bf86b3445de4ad571826dc230dfa49"}, - {file = "ddtrace-2.3.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:87899d4bdbdeaccb6751878a38752803ccb294677e07e63296d4af90c227bf2b"}, - {file = "ddtrace-2.3.0-cp311-cp311-win32.whl", hash = "sha256:2865e515ecfdfd49fa60d324ae807b2c7a5ab80cead720b2ccfa57e9f4a81ea7"}, - {file = "ddtrace-2.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:0093eb628e44eee977173c0c6b2cacb5b2c59cef2e2f2466d2ca37023fe99f9c"}, - {file = "ddtrace-2.3.0-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:da2e6a0c9d7c504e995da366d186e359aef5d10f99a34d60deb88ed411a38e8c"}, - {file = "ddtrace-2.3.0-cp312-cp312-macosx_11_0_x86_64.whl", hash = "sha256:663cc830db0fdeba507b0441fb460c15a7d03736f4e8d77709c374c5e2a47717"}, - {file = "ddtrace-2.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7d39d9b4ed7735c90c76839c7a0cc93c4180160b17659d39669fb15a684d5e5b"}, - {file = "ddtrace-2.3.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:81a3fc905b7e4979f4a3797ba1b10dd9fbe2a7905def094a304f0e62db7578be"}, - {file = "ddtrace-2.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c436a1f869229935f4dd6a9632009806c96ba356272536b54a7c8a55c8c9c0f"}, - {file = "ddtrace-2.3.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3a86d415e614750f0b3d5f0e50265e0be13fb736b029ebc66f9c90b311b73f04"}, - {file = "ddtrace-2.3.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:5b4302b1878e576e8b1ae0ca4a380ac5912d7367e4219f152d5f49aac30cc20e"}, - {file = "ddtrace-2.3.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fd630addda7fff8980c361c8e70683bcb43fabb603e6ec4d41960724e5287da5"}, - {file = "ddtrace-2.3.0-cp312-cp312-win32.whl", hash = "sha256:32f6e6afd60d2c3d33d11af660076014905cbd20a2f2babeee908116b2b87c42"}, - {file = "ddtrace-2.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:dd2dc96c323e265d08eca87eb6da2de4e101e419c9a20bde692e88233765d923"}, - {file = "ddtrace-2.3.0-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:06a60b3a5efdce794cc1dda674a316df3530d3bc5baaed98851d2b5164883fc3"}, - {file = "ddtrace-2.3.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c951ec9e4f11a084b884c54e9710086cc50508bf589dd67adb67bfa4c97378b"}, - {file = "ddtrace-2.3.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:069f669eeebd3327a4cf734b54b53723bfb9f8829581f2a2522dffee81c3bdc9"}, - {file = "ddtrace-2.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47665eedf23428ceefda593923eac1d52353e5b8376afcfa861021bac2db4df0"}, - {file = "ddtrace-2.3.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:88b69c1bf3ecea5dc4a9d6007077fe86cbf8e989787ff4efe3ed1ef04c49ab2e"}, - {file = "ddtrace-2.3.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:6912f5146c82576e249bc7c24258851c268f023320007f54abfa903c76cac5d2"}, - {file = "ddtrace-2.3.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:7829bb5eb5ee3414b400f8f05513520d95e210ee656c6ccb3da44e2f2f2d90bc"}, - {file = "ddtrace-2.3.0-cp37-cp37m-win32.whl", hash = "sha256:4db5ba6f3fe99394304e5d04a5c1788608017304cb57f2953f17a38ae5111a18"}, - {file = "ddtrace-2.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:8c42c5b438b1409c8da0fe78db086bdb26367a88b594f91c59ded27e2278f17b"}, - {file = "ddtrace-2.3.0-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:1efeb6979ef458b95afee4ce6035d8606a1a60ddf7ae949a053a6e6316363baa"}, - {file = "ddtrace-2.3.0-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:89b2c3d7076c6cf93b21c9cf17d89d82ce9b6cc6c410bfaa5b8bf940fbdb39ac"}, - {file = "ddtrace-2.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec6c471894e229fe2ec417255b6ca86a1e77ac3d0a370dec0cacabc845d70da"}, - {file = "ddtrace-2.3.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0dbb2988b883322753e9194e8cfd3e4f82f76dfdc5eafed872032431ef7a4211"}, - {file = "ddtrace-2.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:edd4ebb73a2f6aa298a674064e137aeaba2c05e58f26abde489cc4542266b4f9"}, - {file = "ddtrace-2.3.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b54933cf3c0420883b650aee540e8736b89ab429398be9735814e12f826c98d4"}, - {file = "ddtrace-2.3.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:cc53d0fe9d83a6f41d0a1b2eca6b7ec854f36d52afeed7fde80acf86bbe3688f"}, - {file = "ddtrace-2.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:0f5b22b994bcacf6f730baf61758f483e7fade7fe748996e40382b047d07ce4f"}, - {file = "ddtrace-2.3.0-cp38-cp38-win32.whl", hash = "sha256:9a3347ad2f88a24fb2a5c8cd047cb428f3a72170371e63d67da5ebad0f3929c7"}, - {file = "ddtrace-2.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:d8905aa489404720ab3d80c4c4073a8a876abe9def0b4d46c755bc6001237a88"}, - {file = "ddtrace-2.3.0-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:2dd3e321d9b0e0c95c9dd482c0545d2ea7265df355bce3776f99f58c6a7c89bc"}, - {file = "ddtrace-2.3.0-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:ee664b5c874694c1f9bf1dc12a955a4142034178823d3f23cc0e27bc3fe3e05b"}, - {file = "ddtrace-2.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:484d43d8e193f229463c2730893a61f29408cd95456f786961d5095a8cad6b8d"}, - {file = "ddtrace-2.3.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:df32d7cae069ea37390aed3472beb545b7f1dcdb6d40e53ca00fbd6075b6a16f"}, - {file = "ddtrace-2.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc83363092016e32c669917e363c4fc1e4c8893bd74467132cfb3e0c74d44762"}, - {file = "ddtrace-2.3.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a5f6ea72778365ba5a36dcdedd91c6f0421a9ab20bd9ba996a8f7fb55b4d45e0"}, - {file = "ddtrace-2.3.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bbb5cfba15e1f2ce9f7263598e2a2e00d459b7ab6a7337d829764e4cc861f7a2"}, - {file = "ddtrace-2.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9f4e0e7f2a9a08ea5b9106e4f5db363f1e32e7d7854f318d5cde316597baeac7"}, - {file = "ddtrace-2.3.0-cp39-cp39-win32.whl", hash = "sha256:80da90d0cc7b91b5735aace6c7cc1a4e74d44be25add786b537ad9f2aa381955"}, - {file = "ddtrace-2.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:ce0d07d07ba6ac751d00a2904ec69947f1077c90b029d4f409908b5d2f0dd33f"}, - {file = "ddtrace-2.3.0.tar.gz", hash = "sha256:66325456c275ea9a2ec8118a73a2ed0f0c877bc1ce2e002612ea4780ffbdc610"}, + {file = "ddtrace-2.3.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:556a046413024cf53ebb0256bbf957692a5e417599e04dac5793e659d08c398c"}, + {file = "ddtrace-2.3.1-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:6066f1deddb454b8e098e5a0eb53ab36d81344209fdf6bec94767358da190294"}, + {file = "ddtrace-2.3.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb2b950901845b966a7805ff49a9ad58dcd5e9c27b5b804079977a1309c5b4fb"}, + {file = "ddtrace-2.3.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:05b0da47bc98a9802faa2557e83c096868c4ef249c3d9a43f8e5daf91d1c8e4f"}, + {file = "ddtrace-2.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0183c5178112604eb012653fd17d0947e6e2f17325f93b1e32cc6af05ceffd0"}, + {file = "ddtrace-2.3.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:462eb671cd78780af6e42b43f2bc451537a0d283db054c175348e9b3a1fcaff4"}, + {file = "ddtrace-2.3.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:9b5284786a0912a9739665a33760f561423524e2d250c0b0bb2dedf6edba2da5"}, + {file = "ddtrace-2.3.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:dbfb1ade5725a63f21945ab8234e64e46645e98a7deb4342eddf6e86d0f9145c"}, + {file = "ddtrace-2.3.1-cp310-cp310-win32.whl", hash = "sha256:1f51732c4181e5b671a5ae3c6c786ce3b9fd2abacad2d4249d53a55564906902"}, + {file = "ddtrace-2.3.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f0ae5814fbb51b4aba4d4f4b5c1fd2110790b04d4141cf4a03291566d1d5b0f"}, + {file = "ddtrace-2.3.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:24f4df55fd952182efe6815748db4675540f6fb674d9838dfa680dec1fdd176f"}, + {file = "ddtrace-2.3.1-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:04b4e476f78389021b50b3ae5c4d494bbbd033a300e93253fe1f873a67611436"}, + {file = "ddtrace-2.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:711978dd14c0aca7eaf90587b8608c891b82e1767fc6f2be7d82b67d56c8d580"}, + {file = "ddtrace-2.3.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bfa6b1b2698029b7b1f8cc351869397c33bff996159660a00ca254d9fcc5b78d"}, + {file = "ddtrace-2.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0dd7295921009ccc61f5325cc3d30fc6182396fc8e598975b372bdf94fd16077"}, + {file = "ddtrace-2.3.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:94aa6a2e16d05cbb2d7a9a7553ca9b638e5b200e0d80fd027179e6af0faf59a2"}, + {file = "ddtrace-2.3.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:62f67040ef16149a46c8506d92a2824d7ded39427a51947a3651d572bb7a379f"}, + {file = "ddtrace-2.3.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:02622c4b8d5497f6367d9ccad38ac8c59d46fc3373034be114474fb01b1a28e6"}, + {file = "ddtrace-2.3.1-cp311-cp311-win32.whl", hash = "sha256:1d13ec5393802a619f922fb37a9f534911f44554bd0434dfd2d8db4e8897649e"}, + {file = "ddtrace-2.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:36b3427136f61d499f3fd307f97ae168a4d2728887e1922204e509a5aa72a4a3"}, + {file = "ddtrace-2.3.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:ac47d141e03c8bea3953fc5f51ac284de9ff4e6325faf2554b003ac906bc4da8"}, + {file = "ddtrace-2.3.1-cp312-cp312-macosx_11_0_x86_64.whl", hash = "sha256:dd23e10b4cac1cf26e64d4d1ec1d6e173e609a207f5520469326f5cff6c7e462"}, + {file = "ddtrace-2.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a31cddf750d7a28c886c194624c6be5a4475de064489002df898731f27f3d16"}, + {file = "ddtrace-2.3.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3dedd8097e58519f47f8908fe684f37c8f9722ce4b0614de78d9f39b83621dc7"}, + {file = "ddtrace-2.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:367aed800b78fb4d2af332c44d07d7126b1dbf758af422299f9a177811ec723d"}, + {file = "ddtrace-2.3.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ca4dea67facdeba44040d9af8eeff96fb9a35a2b1cff93255e33a4d7250881b9"}, + {file = "ddtrace-2.3.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:a661e133d451416741c6c2ad96baa417a1267204975bfb0d247cab748ecc3ed1"}, + {file = "ddtrace-2.3.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:556f60d6c9bbfc2da6d7f6751625fa3ae597c26bb8bbe74953db0d2d74f93b04"}, + {file = "ddtrace-2.3.1-cp312-cp312-win32.whl", hash = "sha256:261e20b9e9a363ec2dc728f8a009a2b1d3c9de4fbe07438b5600902a285bb179"}, + {file = "ddtrace-2.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:119be400024efff2f0eb66216b2aa3d2a700cd9b4a07605f7f9c94eb5e4b4cb5"}, + {file = "ddtrace-2.3.1-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:a66d0e0cccfa2fb207fc9a4d9ca6ab235a768f130129d6bb1dd256b7b3d34305"}, + {file = "ddtrace-2.3.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c465e43b96380f09e1e8f2d0f9cb3b78b4ef2bb211f25b57c925bb79f53cb00c"}, + {file = "ddtrace-2.3.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c3eaaf8c5b63e07533822425b3402552c75adf091a1f0a6bf949725fa610c779"}, + {file = "ddtrace-2.3.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:600551ecd232df060203714dc1acba4809e9194fc91a7c638b68c548e92af171"}, + {file = "ddtrace-2.3.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:837232d708956a5d595a3618641c188a5844d663e0f77b1461f20c83f74a21c0"}, + {file = "ddtrace-2.3.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:ddf3043581e2424fc3d4271ee00a038651a4ec9d2610eeaa2d6645095c9f4960"}, + {file = "ddtrace-2.3.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:63c6b28096e273431da923a8dfc0f54f7d472c3c78f0a5c4c99ed7e210b9c855"}, + {file = "ddtrace-2.3.1-cp37-cp37m-win32.whl", hash = "sha256:8b09a42cc975f798bfda9b8d8bf5c8c813022bfcf48b9e0e5e90caf4cf33ee8f"}, + {file = "ddtrace-2.3.1-cp37-cp37m-win_amd64.whl", hash = "sha256:66b49153c85423d5e99b1f364cc3b4a3ffedf35be0f3eb840f3bacd7c58100e8"}, + {file = "ddtrace-2.3.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:81f0bd1d50c8fc7d8a96e38f746ca4421fa3b52991f0df44e5e9faeb5a934c2b"}, + {file = "ddtrace-2.3.1-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:37d600d582a5046f82cf77ae9247cf15cf62cf23c15739c5f23c30db2aa092c9"}, + {file = "ddtrace-2.3.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:60a62cfa22695cb1392c617910fb389c7240fa9dae0b5792bd87ff3ae82d2c45"}, + {file = "ddtrace-2.3.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1bdf55fa4a842f9786ca30434b31bf6f877e95af86b6fb7a5a540ce592f566b7"}, + {file = "ddtrace-2.3.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63032c6a76173cab03c021e65c1997a12c0c571263caf00ec18b82c2293c49be"}, + {file = "ddtrace-2.3.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:516b830e52bc8ac2988f11a06a6c6a5296f73b119e99e8ee55a34e531389acea"}, + {file = "ddtrace-2.3.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:86e7764759043439c3f672f998f60bb9118fc4a6d7f603c762b125471b17f549"}, + {file = "ddtrace-2.3.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:87ae203dd8fa3e04f8855786ae4b2f103bc66c9f2368ee2b4e620bccdde9b34d"}, + {file = "ddtrace-2.3.1-cp38-cp38-win32.whl", hash = "sha256:f42fa2fa6f2cd9e3673a3bd7469439f5bea0ee86456706db1b50dc20b10682a6"}, + {file = "ddtrace-2.3.1-cp38-cp38-win_amd64.whl", hash = "sha256:2a3ad8e53c45c3329f939fe921714dfe76f5737e48f5b37a5422b1573a20ce44"}, + {file = "ddtrace-2.3.1-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:5adff6a5d60239e64062ad5efb72631c47c7fb8310ebea6d817f0208a7585074"}, + {file = "ddtrace-2.3.1-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:84012bc7d27dd3c4cd591bbaf0a0cc0413ebc6c838637ca5a76bacb354e2518f"}, + {file = "ddtrace-2.3.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3cc2596b26701c9e3a362195f79ddcf54b491a8ea13277ed16697da9ad943646"}, + {file = "ddtrace-2.3.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:986113f7eb4d8a8e87216b55e6cc40b578f84a5730241822af3f34cc61e42710"}, + {file = "ddtrace-2.3.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd0cdbc6d81e556b6af0875b0bb2ac77d3cf0a0c5da8faa014da1936e1e0adc2"}, + {file = "ddtrace-2.3.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9e8eb17ef8ca2fc9464216290969cff3bbf8df00860ebb219328804125b43bd1"}, + {file = "ddtrace-2.3.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:fc21e46c5e9d077022b7634ae247d15d2318cbb347f6756607dfd64ff5941797"}, + {file = "ddtrace-2.3.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:51bf7e3e5c80ef0daadd22c26e7c24c90fc4b4a7662dec1a3d9d8e0db68f3c09"}, + {file = "ddtrace-2.3.1-cp39-cp39-win32.whl", hash = "sha256:2a5f040c0eb101f82a9cd8b8b0279e8583bb0a62fd39b879197d53b71a5d6dbe"}, + {file = "ddtrace-2.3.1-cp39-cp39-win_amd64.whl", hash = "sha256:ff708683becb18771cb31ae5fb5d1430ac5031a082106e0dabac46a1fd6f832e"}, + {file = "ddtrace-2.3.1.tar.gz", hash = "sha256:273a0e98f93e7231708b30067768d80df9bc93a505de93500f30c6da24b70a7b"}, ] [package.dependencies] @@ -445,13 +445,13 @@ mypy = ["mypy"] [[package]] name = "exceptiongroup" -version = "1.1.3" +version = "1.2.0" description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" files = [ - {file = "exceptiongroup-1.1.3-py3-none-any.whl", hash = "sha256:343280667a4585d195ca1cf9cef84a4e178c4b6cf2274caef9859782b567d5e3"}, - {file = "exceptiongroup-1.1.3.tar.gz", hash = "sha256:097acd85d473d75af5bb98e41b61ff7fe35efe6675e4f9370ec6ec5126d160e9"}, + {file = "exceptiongroup-1.2.0-py3-none-any.whl", hash = "sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14"}, + {file = "exceptiongroup-1.2.0.tar.gz", hash = "sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68"}, ] [package.extras] @@ -672,13 +672,13 @@ crt = ["botocore[crt] (>=1.20.29,<2.0a.0)"] [[package]] name = "setuptools" -version = "69.0.0" +version = "69.0.2" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-69.0.0-py3-none-any.whl", hash = "sha256:eb03b43f23910c5fd0909cb677ad017cd9531f493d27f8b3f5316ff1fb07390e"}, - {file = "setuptools-69.0.0.tar.gz", hash = "sha256:4c65d4f7891e5b046e9146913b87098144de2ca2128fbc10135b8556a6ddd946"}, + {file = "setuptools-69.0.2-py3-none-any.whl", hash = "sha256:1e8fdff6797d3865f37397be788a4e3cba233608e9b509382a2777d25ebde7f2"}, + {file = "setuptools-69.0.2.tar.gz", hash = "sha256:735896e78a4742605974de002ac60562d286fa8051a7e2299445e8e8fbb01aa6"}, ] [package.extras] @@ -852,4 +852,4 @@ dev = ["boto3", "flake8", "httpretty", "nose2", "requests"] [metadata] lock-version = "2.0" python-versions = ">=3.7.0,<4" -content-hash = "0d5100932fcbf8aef16e44c49c8a8d6894f91ed9838bee831d6b248ad2e71e7b" +content-hash = "6687f40495eae4686955981f339f7eb3bcfbc71c7cfba272620b7aca4c45ad1b" diff --git a/pyproject.toml b/pyproject.toml index 0ebf17551..713c497d8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,7 +27,7 @@ classifiers = [ python = ">=3.7.0,<4" datadog = ">=0.41.0,<1.0.0" wrapt = "^1.11.2" -ddtrace = ">=2.3.0" +ddtrace = ">=2.3.1" urllib3 = [ {version = "<2.0.0", python = "<3.11", optional = true}, {version = "<2.1.0", python = ">=3.11", optional = true}, From 9161c2801fea7f709941cbf4ebe49b4fd87b4eb7 Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Wed, 29 Nov 2023 15:23:16 -0800 Subject: [PATCH 097/403] Bump version to 5.84.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 713c497d8..3829ffc73 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "5.83.0" +version = "5.84.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 122e616cb6ebf141c8a62a548ea33af643cb5cf7 Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Thu, 30 Nov 2023 13:25:01 -0800 Subject: [PATCH 098/403] Use xray context span id when it exists (#401) * Extract xray context span id when it exists * Add test for no Parent in _X_AMZN_TRACE_ID. --------- Co-authored-by: Daniel Ebrahimian --- datadog_lambda/tracing.py | 2 +- tests/test_tracing.py | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 252a4717a..6adf5d002 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -604,7 +604,7 @@ def set_dd_trace_py_root(trace_context_source, merge_xray_traces): ) if merge_xray_traces: xray_context = _get_xray_trace_context() - if xray_context.span_id: + if xray_context and xray_context.span_id: context.span_id = xray_context.span_id tracer.context_provider.activate(context) diff --git a/tests/test_tracing.py b/tests/test_tracing.py index 745bf5d1c..3a28a2a36 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -14,6 +14,7 @@ from datadog_lambda.constants import ( SamplingPriority, TraceHeader, + TraceContextSource, XraySubsegment, ) from datadog_lambda.tracing import ( @@ -854,6 +855,30 @@ def test_mixed_parent_context_when_merging(self): self.mock_activate.assert_called() self.mock_activate.assert_has_calls([call(expected_context)]) + def test_set_dd_trace_py_root_no_span_id(self): + os.environ["_X_AMZN_TRACE_ID"] = "Root=1-5e272390-8c398be037738dc042009320" + + lambda_ctx = get_mock_context() + ctx, source, event_type = extract_dd_trace_context( + { + "headers": { + TraceHeader.TRACE_ID: "123", + TraceHeader.PARENT_ID: "321", + TraceHeader.SAMPLING_PRIORITY: "1", + } + }, + lambda_ctx, + ) + set_dd_trace_py_root(TraceContextSource.EVENT, True) + + expected_context = Context( + trace_id=123, # Trace Id from incomming context + span_id=321, # Span Id from incoming context + sampling_priority=1, # Sampling priority from incomming context + ) + self.mock_activate.assert_called() + self.mock_activate.assert_has_calls([call(expected_context)]) + class TestAuthorizerInferredSpans(unittest.TestCase): def setUp(self): From e8896d110320397f3d6d18b247fbb33d861ba9ae Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Tue, 5 Dec 2023 09:42:05 -0800 Subject: [PATCH 099/403] Ensure dummy metadata segment is json serializable. (#403) Fixes error `TypeError: Object of type Context is not JSON serializable` https://github.com/DataDog/datadog-lambda-python/issues/402 --- datadog_lambda/wrapper.py | 7 +++- tests/test_wrapper.py | 69 ++++++++++++++++++++++++++++++++++++++- 2 files changed, 74 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 811188486..15dec7f12 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -281,7 +281,12 @@ def _before(self, event, context): # Create a Datadog X-Ray subsegment with the trace context if dd_context and trace_context_source == TraceContextSource.EVENT: create_dd_dummy_metadata_subsegment( - dd_context, XraySubsegment.TRACE_KEY + { + "trace-id": str(dd_context.trace_id), + "parent-id": str(dd_context.span_id), + "sampling-priority": str(dd_context.sampling_priority), + }, + XraySubsegment.TRACE_KEY, ) if dd_tracing_enabled: diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index 57c5de45d..97547a26a 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -9,7 +9,7 @@ import datadog_lambda.wrapper as wrapper from datadog_lambda.metric import lambda_metric from datadog_lambda.thread_stats_writer import ThreadStatsWriter -from ddtrace import Span +from ddtrace import Span, tracer def get_mock_context( @@ -580,3 +580,70 @@ def test_some_envs_should_depend_on_dd_tracing_enabled(self): self.assertFalse(decorator.make_inferred_span) self.assertFalse(decorator.encode_authorizer_context) self.assertFalse(decorator.decode_authorizer_context) + + +class TestLambdaWrapperWithTraceContext(unittest.TestCase): + xray_root = "1-5e272390-8c398be037738dc042009320" + xray_parent = "94ae789b969f1cc5" + xray_daemon_envvar = "localhost:1234" + xray_trace_envvar = ( + f"Root={xray_root};Parent={xray_parent};Sampled=1;Lineage=c6c5b1b9:0" + ) + + @patch( + "os.environ", + { + "AWS_XRAY_DAEMON_ADDRESS": xray_daemon_envvar, + "_X_AMZN_TRACE_ID": xray_trace_envvar, + }, + ) + def test_event_bridge_sqs_payload(self): + patcher = patch("datadog_lambda.xray.send") + mock_send = patcher.start() + self.addCleanup(patcher.stop) + + def handler(event, context): + return tracer.current_trace_context() + + wrapper.dd_tracing_enabled = True + wrapped_handler = wrapper.datadog_lambda_wrapper(handler) + + event_trace_id = 3047453991382739997 + event_parent_id = 3047453991382739997 + event = { + "headers": { + "traceparent": ( + f"00-0000000000000000{hex(event_trace_id)[2:]}-{hex(event_parent_id)[2:]}-01" + ), + "tracestate": "dd=s:1;t.dm:-1", + "x-datadog-trace-id": str(event_trace_id), + "x-datadog-parent-id": str(event_parent_id), + "x-datadog-sampling-priority": "1", + }, + } + context = get_mock_context() + + result = wrapped_handler(event, context) + aws_lambda_span = wrapped_handler.span + + self.assertIsNotNone(result) + self.assertEqual(result.trace_id, event_trace_id) + self.assertEqual(result.span_id, aws_lambda_span.span_id) + self.assertEqual(result.sampling_priority, 1) + mock_send.assert_called_once() + (_, raw_payload), _ = mock_send.call_args + payload = json.loads(raw_payload[33:]) # strip formatting prefix + self.assertEqual(self.xray_root, payload["trace_id"]) + self.assertEqual(self.xray_parent, payload["parent_id"]) + self.assertDictEqual( + { + "datadog": { + "trace": { + "trace-id": str(event_trace_id), + "parent-id": str(event_parent_id), + "sampling-priority": "1", + }, + }, + }, + payload["metadata"], + ) From cce5104b398a068d677bd632662f8342e647f53d Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Tue, 5 Dec 2023 15:06:10 -0800 Subject: [PATCH 100/403] Bump version to 5.85.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 3829ffc73..ebe7b338a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "5.84.0" +version = "5.85.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 5d90a9a9bb1e2d2e8672e2ac7f64d969f2bc89ad Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Mon, 11 Dec 2023 14:37:56 -0800 Subject: [PATCH 101/403] Support Python 3.12 (#392) * Update tooling and documentation to include Python3.12. * Replace deprecated assertEquals in tests. * Remove httpretty which does not support Python3.12. * Fix new flake8 errors. * Add snapshots for python3.12. --- .github/workflows/build.yml | 4 +- README.md | 2 +- datadog_lambda/tracing.py | 5 +- pyproject.toml | 5 +- scripts/add_new_region.sh | 28 +- scripts/build_layers.sh | 2 +- scripts/check_layer_size.sh | 2 +- scripts/list_layers.sh | 14 +- scripts/publish_layers.sh | 43 +- scripts/run_integration_tests.sh | 4 +- scripts/run_tests.sh | 2 +- scripts/sign_layers.sh | 2 + .../logs/async-metrics_python312.log | 1498 +++++++++++++++ .../snapshots/logs/sync-metrics_python312.log | 1669 +++++++++++++++++ tests/test_extension.py | 88 +- tests/test_wrapper.py | 10 +- 16 files changed, 3309 insertions(+), 69 deletions(-) create mode 100644 tests/integration/snapshots/logs/async-metrics_python312.log create mode 100644 tests/integration/snapshots/logs/sync-metrics_python312.log diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 97a4fbbe4..13e2c3228 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -41,7 +41,7 @@ jobs: strategy: max-parallel: 4 matrix: - python-version: ['3.7', '3.8', '3.9', '3.10', '3.11'] + python-version: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12'] steps: - name: Checkout @@ -68,7 +68,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - runtime-param: ['3.7', '3.8', '3.9', '3.10', '3.11'] + runtime-param: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12'] steps: - name: Checkout uses: actions/checkout@v3 diff --git a/README.md b/README.md index e3702b1ba..107020a0e 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ [![Slack](https://chat.datadoghq.com/badge.svg?bg=632CA6)](https://chat.datadoghq.com/) [![License](https://img.shields.io/badge/license-Apache--2.0-blue)](https://github.com/DataDog/datadog-lambda-python/blob/main/LICENSE) -Datadog Lambda Library for Python (3.7, 3.8, 3.9, 3.10, and 3.11) enables [enhanced Lambda metrics](https://docs.datadoghq.com/serverless/enhanced_lambda_metrics), [distributed tracing](https://docs.datadoghq.com/serverless/distributed_tracing), and [custom metric submission](https://docs.datadoghq.com/serverless/custom_metrics) from AWS Lambda functions. +Datadog Lambda Library for Python (3.7, 3.8, 3.9, 3.10, 3.11, and 3.12) enables [enhanced Lambda metrics](https://docs.datadoghq.com/serverless/enhanced_lambda_metrics), [distributed tracing](https://docs.datadoghq.com/serverless/distributed_tracing), and [custom metric submission](https://docs.datadoghq.com/serverless/custom_metrics) from AWS Lambda functions. ## Installation diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 6adf5d002..dc7e32b27 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -569,9 +569,8 @@ def inject_correlation_ids(): # Override the log format of the AWS provided LambdaLoggerHandler root_logger = logging.getLogger() for handler in root_logger.handlers: - if ( - handler.__class__.__name__ == "LambdaLoggerHandler" - and type(handler.formatter) == logging.Formatter + if handler.__class__.__name__ == "LambdaLoggerHandler" and isinstance( + handler.formatter, logging.Formatter ): handler.setFormatter( logging.Formatter( diff --git a/pyproject.toml b/pyproject.toml index ebe7b338a..056309c1a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -21,6 +21,7 @@ classifiers = [ "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", ] [tool.poetry.dependencies] @@ -37,8 +38,7 @@ boto3 = { version = "^1.28.0", optional = true } typing_extensions = {version = "^4.0", python = "<3.8"} requests = { version ="^2.22.0", optional = true } nose2 = { version= "^0.9.1", optional = true } -flake8 = { version = "^3.7.9", optional = true } -httpretty = {version = "^0.9.7", optional = true } +flake8 = { version = "^5.0.4", optional = true } [tool.poetry.extras] @@ -47,7 +47,6 @@ dev = [ "requests", "nose2", "flake8", - "httpretty", ] [build-system] diff --git a/scripts/add_new_region.sh b/scripts/add_new_region.sh index 1b1753cfd..7d1134467 100755 --- a/scripts/add_new_region.sh +++ b/scripts/add_new_region.sh @@ -12,8 +12,32 @@ set -e OLD_REGION='us-east-1' -LAYER_NAMES=("Datadog-Python37" "Datadog-Python38" "Datadog-Python38-ARM" "Datadog-Python39" "Datadog-Python39-ARM" "Datadog-Python310" "Datadog-Python310-ARM" "Datadog-Python311" "Datadog-Python311-ARM") -PYTHON_VERSIONS_FOR_AWS_CLI=("python3.7" "python3.8" "python3.8" "python3.9" "python3.9" "python3.10" "python3.10" "python3.11" "python3.11") +LAYER_NAMES=( + "Datadog-Python37" + "Datadog-Python38" + "Datadog-Python38-ARM" + "Datadog-Python39" + "Datadog-Python39-ARM" + "Datadog-Python310" + "Datadog-Python310-ARM" + "Datadog-Python311" + "Datadog-Python311-ARM" + "Datadog-Python312" + "Datadog-Python312-ARM" +) +PYTHON_VERSIONS_FOR_AWS_CLI=( + "python3.7" + "python3.8" + "python3.8" + "python3.9" + "python3.9" + "python3.10" + "python3.10" + "python3.11" + "python3.11" + "python3.12" + "python3.12" +) NEW_REGION=$1 publish_layer() { diff --git a/scripts/build_layers.sh b/scripts/build_layers.sh index 976ba5d1e..bae435b2a 100755 --- a/scripts/build_layers.sh +++ b/scripts/build_layers.sh @@ -14,7 +14,7 @@ set -e LAYER_DIR=".layers" LAYER_FILES_PREFIX="datadog_lambda_py" -AVAILABLE_PYTHON_VERSIONS=("3.7" "3.8" "3.9" "3.10" "3.11") +AVAILABLE_PYTHON_VERSIONS=("3.7" "3.8" "3.9" "3.10" "3.11" "3.12") # Determine which Python versions to build layers for if [ -z "$PYTHON_VERSION" ]; then diff --git a/scripts/check_layer_size.sh b/scripts/check_layer_size.sh index 5d8399087..4ef2c10b2 100755 --- a/scripts/check_layer_size.sh +++ b/scripts/check_layer_size.sh @@ -14,7 +14,7 @@ MAX_LAYER_UNCOMPRESSED_SIZE_KB=$(expr 24 \* 1024) LAYER_FILES_PREFIX="datadog_lambda_py" LAYER_DIR=".layers" -VERSIONS=("3.7" "3.8" "3.9" "3.10" "3.11") +VERSIONS=("3.7" "3.8" "3.9" "3.10" "3.11" "3.12") for version in "${VERSIONS[@]}" do diff --git a/scripts/list_layers.sh b/scripts/list_layers.sh index c0b541afc..25058c5ba 100755 --- a/scripts/list_layers.sh +++ b/scripts/list_layers.sh @@ -10,7 +10,19 @@ set -e -LAYER_NAMES=("Datadog-Python37" "Datadog-Python38" "Datadog-Python38-ARM" "Datadog-Python39" "Datadog-Python39-ARM" "Datadog-Python310" "Datadog-Python310-ARM" "Datadog-Python311" "Datadog-Python311-ARM") +LAYER_NAMES=( + "Datadog-Python37" + "Datadog-Python38" + "Datadog-Python38-ARM" + "Datadog-Python39" + "Datadog-Python39-ARM" + "Datadog-Python310" + "Datadog-Python310-ARM" + "Datadog-Python311" + "Datadog-Python311-ARM" + "Datadog-Python312" + "Datadog-Python312-ARM" +) AVAILABLE_REGIONS=$(aws ec2 describe-regions | jq -r '.[] | .[] | .RegionName') LAYERS_MISSING_REGIONS=() diff --git a/scripts/publish_layers.sh b/scripts/publish_layers.sh index bd8d3a7e8..7541d47dc 100755 --- a/scripts/publish_layers.sh +++ b/scripts/publish_layers.sh @@ -13,10 +13,45 @@ set -e # Makes sure any subprocesses will be terminated with this process trap "pkill -P $$; exit 1;" INT -PYTHON_VERSIONS_FOR_AWS_CLI=("python3.7" "python3.8" "python3.8" "python3.9" "python3.9" "python3.10" "python3.10" "python3.11" "python3.11") -LAYER_PATHS=(".layers/datadog_lambda_py-amd64-3.7.zip" ".layers/datadog_lambda_py-amd64-3.8.zip" ".layers/datadog_lambda_py-arm64-3.8.zip" ".layers/datadog_lambda_py-amd64-3.9.zip" ".layers/datadog_lambda_py-arm64-3.9.zip" ".layers/datadog_lambda_py-amd64-3.10.zip" ".layers/datadog_lambda_py-arm64-3.10.zip" ".layers/datadog_lambda_py-amd64-3.11.zip" ".layers/datadog_lambda_py-arm64-3.11.zip") -AVAILABLE_LAYERS=("Datadog-Python37" "Datadog-Python38" "Datadog-Python38-ARM" "Datadog-Python39" "Datadog-Python39-ARM" "Datadog-Python310" "Datadog-Python310-ARM" "Datadog-Python311" "Datadog-Python311-ARM") -ARCHS=("amd64" "amd64" "amd64""amd64" "amd64" "arm64" "amd64" "arm64" "amd64" "arm64") +PYTHON_VERSIONS_FOR_AWS_CLI=( + "python3.7" + "python3.8" + "python3.8" + "python3.9" + "python3.9" + "python3.10" + "python3.10" + "python3.11" + "python3.11" + "python3.12" + "python3.12" +) +LAYER_PATHS=( + ".layers/datadog_lambda_py-amd64-3.7.zip" + ".layers/datadog_lambda_py-amd64-3.8.zip" + ".layers/datadog_lambda_py-arm64-3.8.zip" + ".layers/datadog_lambda_py-amd64-3.9.zip" + ".layers/datadog_lambda_py-arm64-3.9.zip" + ".layers/datadog_lambda_py-amd64-3.10.zip" + ".layers/datadog_lambda_py-arm64-3.10.zip" + ".layers/datadog_lambda_py-amd64-3.11.zip" + ".layers/datadog_lambda_py-arm64-3.11.zip" + ".layers/datadog_lambda_py-amd64-3.12.zip" + ".layers/datadog_lambda_py-arm64-3.12.zip" +) +AVAILABLE_LAYERS=( + "Datadog-Python37" + "Datadog-Python38" + "Datadog-Python38-ARM" + "Datadog-Python39" + "Datadog-Python39-ARM" + "Datadog-Python310" + "Datadog-Python310-ARM" + "Datadog-Python311" + "Datadog-Python311-ARM" + "Datadog-Python312" + "Datadog-Python312-ARM" +) AVAILABLE_REGIONS=$(aws ec2 describe-regions | jq -r '.[] | .[] | .RegionName') BATCH_SIZE=60 diff --git a/scripts/run_integration_tests.sh b/scripts/run_integration_tests.sh index ebda6fded..beb147069 100755 --- a/scripts/run_integration_tests.sh +++ b/scripts/run_integration_tests.sh @@ -11,7 +11,6 @@ set -e # These values need to be in sync with serverless.yml, where there needs to be a function # defined for every handler_runtime combination LAMBDA_HANDLERS=("async-metrics" "sync-metrics") -RUNTIMES=("python37" "python38" "python39" "python310" "python311") LOGS_WAIT_SECONDS=20 @@ -33,8 +32,9 @@ python38=("python3.8" "3.8" $(xxd -l 4 -c 4 -p < /dev/random)) python39=("python3.9" "3.9" $(xxd -l 4 -c 4 -p < /dev/random)) python310=("python3.10" "3.10" $(xxd -l 4 -c 4 -p < /dev/random)) python311=("python3.11" "3.11" $(xxd -l 4 -c 4 -p < /dev/random)) +python312=("python3.12" "3.12" $(xxd -l 4 -c 4 -p < /dev/random)) -PARAMETERS_SETS=("python37" "python38" "python39" "python310" "python311") +PARAMETERS_SETS=("python37" "python38" "python39" "python310" "python311" "python312") if [ -z "$RUNTIME_PARAM" ]; then echo "Python version not specified, running for all python versions." diff --git a/scripts/run_tests.sh b/scripts/run_tests.sh index 193a6d001..86127f5a0 100755 --- a/scripts/run_tests.sh +++ b/scripts/run_tests.sh @@ -8,7 +8,7 @@ # Run unit tests in Docker set -e -PYTHON_VERSIONS=("3.7" "3.8" "3.9" "3.10" "3.11") +PYTHON_VERSIONS=("3.7" "3.8" "3.9" "3.10" "3.11" "3.12") for python_version in "${PYTHON_VERSIONS[@]}" do diff --git a/scripts/sign_layers.sh b/scripts/sign_layers.sh index 3c9aa6628..07085a0e4 100755 --- a/scripts/sign_layers.sh +++ b/scripts/sign_layers.sh @@ -18,6 +18,8 @@ LAYER_FILES=( "datadog_lambda_py-arm64-3.10.zip" "datadog_lambda_py-amd64-3.11.zip" "datadog_lambda_py-arm64-3.11.zip" + "datadog_lambda_py-amd64-3.12.zip" + "datadog_lambda_py-arm64-3.12.zip" ) SIGNING_PROFILE_NAME="DatadogLambdaSigningProfile" diff --git a/tests/integration/snapshots/logs/async-metrics_python312.log b/tests/integration/snapshots/logs/async-metrics_python312.log new file mode 100644 index 000000000..3bb8ac78a --- /dev/null +++ b/tests/integration/snapshots/logs/async-metrics_python312.log @@ -0,0 +1,1498 @@ +INIT_START Runtime Version: python:3.12.vX Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python312", + "resource:integration-tests-python-XXXX-async-metrics_python312", + "cold_start:true", + "memorysize:1024", + "runtime:python3.12", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "XXXX.execute-api.us-east-2.amazonaws.com", + "resource": "GET /", + "name": "aws.apigateway", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.apigateway.rest", + "http.url": "XXXX.execute-api.us-east-2.amazonaws.com/", + "endpoint": "/", + "http.method": "GET", + "resource_names": "GET /", + "apiid": "XXXX", + "apiname": "XXXX", + "stage": "Prod", + "request_id": "XXXX", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "http.status_code": "200", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python312", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "true", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python312", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python312", + "functionname": "integration-tests-python-XXXX-async-metrics_python312", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "api-gateway", + "function_trigger.event_source_arn": "XXXX", + "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", + "http.url_details.path": "/Prod/", + "http.method": "GET", + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python312", + "resource:integration-tests-python-XXXX-async-metrics_python312", + "cold_start:false", + "memorysize:1024", + "runtime:python3.12", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "dynamodb", + "resource": "ExampleTableWithStream", + "name": "aws.dynamodb", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.dynamodb", + "resource_names": "ExampleTableWithStream", + "tablename": "ExampleTableWithStream", + "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", + "event_id": "XXXX", + "event_name": "INSERT", + "event_version": "1.1", + "stream_view_type": "NEW_AND_OLD_IMAGES", + "size_bytes": "26", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python312", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python312", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python312", + "functionname": "integration-tests-python-XXXX-async-metrics_python312", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "dynamodb", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python312", + "resource:integration-tests-python-XXXX-async-metrics_python312", + "cold_start:false", + "memorysize:1024", + "runtime:python3.12", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "eventbridge", + "resource": "eventbridge.custom.event.sender", + "name": "aws.eventbridge", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.eventbridge", + "resource_names": "eventbridge.custom.event.sender", + "detail_type": "testdetail", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python312", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python312", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python312", + "functionname": "integration-tests-python-XXXX-async-metrics_python312", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "eventbridge", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python312", + "resource:integration-tests-python-XXXX-async-metrics_python312", + "cold_start:false", + "memorysize:1024", + "runtime:python3.12", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", + "resource": "GET /httpapi/get", + "name": "aws.httpapi", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.httpapi", + "endpoint": "/httpapi/get", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.method": "GET", + "http.protocol": "HTTP/1.1", + "http.source_ip": "XXXX", + "http.user_agent": "XXXX/7.64.1", + "resource_names": "GET /httpapi/get", + "request_id": "XXXX", + "apiid": "XXXX", + "apiname": "XXXX", + "stage": "$default", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "http.status_code": "200", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python312", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python312", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python312", + "functionname": "integration-tests-python-XXXX-async-metrics_python312", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "api-gateway", + "function_trigger.event_source_arn": "XXXX$default", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url_details.path": "/httpapi/get", + "http.method": "GET", + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python312", + "resource:integration-tests-python-XXXX-async-metrics_python312", + "cold_start:false", + "memorysize:1024", + "runtime:python3.12", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "kinesis", + "resource": "EXAMPLE", + "name": "aws.kinesis", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.kinesis", + "resource_names": "EXAMPLE", + "streamname": "EXAMPLE", + "shardid": "shardId-XXXX", + "event_source_arn": "arn:aws:kinesis:EXAMPLE", + "event_id": "XXXX", + "event_name": "aws:kinesis:record", + "event_version": "1.0", + "partition_key": "XXXX", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python312", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python312", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python312", + "functionname": "integration-tests-python-XXXX-async-metrics_python312", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "kinesis", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python312", + "resource:integration-tests-python-XXXX-async-metrics_python312", + "cold_start:false", + "memorysize:1024", + "runtime:python3.12", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "s3", + "resource": "example-bucket", + "name": "aws.s3", + "error": 0, + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.s3", + "resource_names": "example-bucket", + "event_name": "ObjectCreated:Put", + "bucketname": "example-bucket", + "bucket_arn": "arn:aws:s3:::example-bucket", + "object_key": "test/key", + "object_size": "1024", + "object_etag": "XXXX", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python312", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python312", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python312", + "functionname": "integration-tests-python-XXXX-async-metrics_python312", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "s3", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python312", + "resource:integration-tests-python-XXXX-async-metrics_python312", + "cold_start:false", + "memorysize:1024", + "runtime:python3.12", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "sns", + "resource": "sns-lambda", + "name": "aws.sns", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.sns", + "resource_names": "sns-lambda", + "topicname": "sns-lambda", + "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", + "message_id": "XXXX", + "type": "Notification", + "subject": "TestInvoke", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python312", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python312", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python312", + "functionname": "integration-tests-python-XXXX-async-metrics_python312", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "sns", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python312", + "resource:integration-tests-python-XXXX-async-metrics_python312", + "cold_start:false", + "memorysize:1024", + "runtime:python3.12", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "sqs", + "resource": "my-queue", + "name": "aws.sqs", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.sqs", + "resource_names": "my-queue", + "queuename": "my-queue", + "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", + "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", + "sender_id": "AIDAIENQZJOLO23YVJ4VO", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python312", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python312", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python312", + "functionname": "integration-tests-python-XXXX-async-metrics_python312", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "sqs", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python312", + "resource:integration-tests-python-XXXX-async-metrics_python312", + "cold_start:false", + "memorysize:1024", + "runtime:python3.12", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", + "resource": "$default", + "name": "aws.apigateway.websocket", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.apigateway.websocket", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com$default", + "endpoint": "$default", + "resource_names": "$default", + "apiid": "XXXX", + "apiname": "XXXX", + "stage": "dev", + "request_id": "XXXX", + "connection_id": "XXXX=", + "event_type": "MESSAGE", + "message_direction": "IN", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "http.status_code": "200", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python312", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python312", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python312", + "functionname": "integration-tests-python-XXXX-async-metrics_python312", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "api-gateway", + "function_trigger.event_source_arn": "XXXX", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB diff --git a/tests/integration/snapshots/logs/sync-metrics_python312.log b/tests/integration/snapshots/logs/sync-metrics_python312.log new file mode 100644 index 000000000..6b33fcb9f --- /dev/null +++ b/tests/integration/snapshots/logs/sync-metrics_python312.log @@ -0,0 +1,1669 @@ +INIT_START Runtime Version: python:3.12.vX Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python312", + "resource:integration-tests-python-XXXX-sync-metrics_python312", + "cold_start:true", + "memorysize:1024", + "runtime:python3.12", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "XXXX.execute-api.us-east-2.amazonaws.com", + "resource": "GET /", + "name": "aws.apigateway", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.apigateway.rest", + "http.url": "XXXX.execute-api.us-east-2.amazonaws.com/", + "endpoint": "/", + "http.method": "GET", + "resource_names": "GET /", + "apiid": "XXXX", + "apiname": "XXXX", + "stage": "Prod", + "request_id": "XXXX", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "http.status_code": "200", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python312", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "true", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python312", + "functionname": "integration-tests-python-XXXX-sync-metrics_python312", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "api-gateway", + "function_trigger.event_source_arn": "XXXX", + "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", + "http.url_details.path": "/Prod/", + "http.method": "GET", + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python312", + "resource:integration-tests-python-XXXX-sync-metrics_python312", + "cold_start:false", + "memorysize:1024", + "runtime:python3.12", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "dynamodb", + "resource": "ExampleTableWithStream", + "name": "aws.dynamodb", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.dynamodb", + "resource_names": "ExampleTableWithStream", + "tablename": "ExampleTableWithStream", + "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", + "event_id": "XXXX", + "event_name": "INSERT", + "event_version": "1.1", + "stream_view_type": "NEW_AND_OLD_IMAGES", + "size_bytes": "26", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python312", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python312", + "functionname": "integration-tests-python-XXXX-sync-metrics_python312", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "dynamodb", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python312", + "resource:integration-tests-python-XXXX-sync-metrics_python312", + "cold_start:false", + "memorysize:1024", + "runtime:python3.12", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "eventbridge", + "resource": "eventbridge.custom.event.sender", + "name": "aws.eventbridge", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.eventbridge", + "resource_names": "eventbridge.custom.event.sender", + "detail_type": "testdetail", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python312", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python312", + "functionname": "integration-tests-python-XXXX-sync-metrics_python312", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "eventbridge", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python312", + "resource:integration-tests-python-XXXX-sync-metrics_python312", + "cold_start:false", + "memorysize:1024", + "runtime:python3.12", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", + "resource": "GET /httpapi/get", + "name": "aws.httpapi", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.httpapi", + "endpoint": "/httpapi/get", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.method": "GET", + "http.protocol": "HTTP/1.1", + "http.source_ip": "XXXX", + "http.user_agent": "XXXX/7.64.1", + "resource_names": "GET /httpapi/get", + "request_id": "XXXX", + "apiid": "XXXX", + "apiname": "XXXX", + "stage": "$default", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "http.status_code": "200", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python312", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python312", + "functionname": "integration-tests-python-XXXX-sync-metrics_python312", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "api-gateway", + "function_trigger.event_source_arn": "XXXX$default", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url_details.path": "/httpapi/get", + "http.method": "GET", + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python312", + "resource:integration-tests-python-XXXX-sync-metrics_python312", + "cold_start:false", + "memorysize:1024", + "runtime:python3.12", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "kinesis", + "resource": "EXAMPLE", + "name": "aws.kinesis", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.kinesis", + "resource_names": "EXAMPLE", + "streamname": "EXAMPLE", + "shardid": "shardId-XXXX", + "event_source_arn": "arn:aws:kinesis:EXAMPLE", + "event_id": "XXXX", + "event_name": "aws:kinesis:record", + "event_version": "1.0", + "partition_key": "XXXX", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python312", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python312", + "functionname": "integration-tests-python-XXXX-sync-metrics_python312", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "kinesis", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python312", + "resource:integration-tests-python-XXXX-sync-metrics_python312", + "cold_start:false", + "memorysize:1024", + "runtime:python3.12", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "s3", + "resource": "example-bucket", + "name": "aws.s3", + "error": 0, + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.s3", + "resource_names": "example-bucket", + "event_name": "ObjectCreated:Put", + "bucketname": "example-bucket", + "bucket_arn": "arn:aws:s3:::example-bucket", + "object_key": "test/key", + "object_size": "1024", + "object_etag": "XXXX", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python312", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python312", + "functionname": "integration-tests-python-XXXX-sync-metrics_python312", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "s3", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python312", + "resource:integration-tests-python-XXXX-sync-metrics_python312", + "cold_start:false", + "memorysize:1024", + "runtime:python3.12", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "sns", + "resource": "sns-lambda", + "name": "aws.sns", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.sns", + "resource_names": "sns-lambda", + "topicname": "sns-lambda", + "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", + "message_id": "XXXX", + "type": "Notification", + "subject": "TestInvoke", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python312", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python312", + "functionname": "integration-tests-python-XXXX-sync-metrics_python312", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "sns", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python312", + "resource:integration-tests-python-XXXX-sync-metrics_python312", + "cold_start:false", + "memorysize:1024", + "runtime:python3.12", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "sqs", + "resource": "my-queue", + "name": "aws.sqs", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.sqs", + "resource_names": "my-queue", + "queuename": "my-queue", + "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", + "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", + "sender_id": "AIDAIENQZJOLO23YVJ4VO", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python312", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python312", + "functionname": "integration-tests-python-XXXX-sync-metrics_python312", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "sqs", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python312", + "resource:integration-tests-python-XXXX-sync-metrics_python312", + "cold_start:false", + "memorysize:1024", + "runtime:python3.12", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", + "resource": "$default", + "name": "aws.apigateway.websocket", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.apigateway.websocket", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com$default", + "endpoint": "$default", + "resource_names": "$default", + "apiid": "XXXX", + "apiname": "XXXX", + "stage": "dev", + "request_id": "XXXX", + "connection_id": "XXXX=", + "event_type": "MESSAGE", + "message_direction": "IN", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "http.status_code": "200", + "peer.service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python312", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python312", + "functionname": "integration-tests-python-XXXX-sync-metrics_python312", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "api-gateway", + "function_trigger.event_source_arn": "XXXX", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "requests.request", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB diff --git a/tests/test_extension.py b/tests/test_extension.py index 8882fa8f2..5ecb0e36e 100644 --- a/tests/test_extension.py +++ b/tests/test_extension.py @@ -1,6 +1,7 @@ +import http.server import os +import threading import unittest -import httpretty from unittest.mock import patch @@ -11,61 +12,62 @@ ) -def exceptionCallback(request, uri, headers): - raise Exception("oopsy!") +class MockServer(threading.Thread): + def __init__(self): + super().__init__() + self.daemon = True + self.raises = False + self.called = False + + class handler(http.server.BaseHTTPRequestHandler): + def do_POST(sf): + self.called = True + sf.send_response(500 if self.raises else 200) + sf.end_headers() + + do_GET = do_POST + + self.server = http.server.HTTPServer(("127.0.0.1", 8124), handler) + + def run(self): + self.server.serve_forever() + + def stop(self): + self.server.shutdown() + self.server.server_close() + self.join(timeout=0) class TestLambdaExtension(unittest.TestCase): + def setUp(self): + self.server = MockServer() + self.server.start() + + def tearDown(self): + self.server.stop() + @patch("datadog_lambda.extension.EXTENSION_PATH", os.path.abspath(__file__)) def test_is_extension_running_true(self): - httpretty.enable() - last_request = httpretty.last_request() - httpretty.register_uri(httpretty.GET, "http://127.0.0.1:8124/lambda/hello") - assert is_extension_running() == True - assert httpretty.last_request() != last_request - httpretty.disable() + assert is_extension_running() + assert self.server.called def test_is_extension_running_file_not_found(self): - httpretty.enable() - last_request = httpretty.last_request() - httpretty.register_uri(httpretty.GET, "http://127.0.0.1:8124/lambda/hello") - assert is_extension_running() == False - assert httpretty.last_request() == last_request - httpretty.disable() + assert not is_extension_running() + assert not self.server.called @patch("datadog_lambda.extension.EXTENSION_PATH", os.path.abspath(__file__)) def test_is_extension_running_http_failure(self): - httpretty.enable() - last_request = httpretty.last_request() - httpretty.register_uri( - httpretty.GET, - "http://127.0.0.1:8124/lambda/hello", - status=503, - body=exceptionCallback, - ) - assert is_extension_running() == False - assert httpretty.last_request() != last_request - httpretty.disable() + self.server.raises = True + assert not is_extension_running() + assert self.server.called @patch("datadog_lambda.extension.EXTENSION_PATH", os.path.abspath(__file__)) def test_flush_ok(self): - httpretty.enable() - last_request = httpretty.last_request() - httpretty.register_uri(httpretty.POST, "http://127.0.0.1:8124/lambda/flush") - assert flush_extension() == True - assert httpretty.last_request() != last_request - httpretty.disable() + assert flush_extension() + assert self.server.called @patch("datadog_lambda.extension.EXTENSION_PATH", os.path.abspath(__file__)) def test_flush_not_ok(self): - httpretty.enable() - last_request = httpretty.last_request() - httpretty.register_uri( - httpretty.POST, - "http://127.0.0.1:8124/lambda/flush", - status=503, - body=exceptionCallback, - ) - assert flush_extension() == False - assert httpretty.last_request() != last_request - httpretty.disable() + self.server.raises = True + assert not flush_extension() + assert self.server.called diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index 97547a26a..29c842d2a 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -550,10 +550,10 @@ def lambda_handler(event, context): raw_inject_data = result["context"]["_datadog"] self.assertIsInstance(raw_inject_data, str) inject_data = json.loads(base64.b64decode(raw_inject_data)) - self.assertEquals(inject_data[TraceHeader.PARENT_ID], "123") - self.assertEquals(inject_data[TraceHeader.TRACE_ID], "456") - self.assertEquals(inject_data[TraceHeader.SAMPLING_PRIORITY], "1") - self.assertEquals(result["context"]["scope"], "still here") + self.assertEqual(inject_data[TraceHeader.PARENT_ID], "123") + self.assertEqual(inject_data[TraceHeader.TRACE_ID], "456") + self.assertEqual(inject_data[TraceHeader.SAMPLING_PRIORITY], "1") + self.assertEqual(result["context"]["scope"], "still here") @patch("traceback.print_exc") def test_different_return_type_no_error(self, MockPrintExc): @@ -566,7 +566,7 @@ def return_type_test(event, context): return test_result result = return_type_test({}, mock_context) - self.assertEquals(result, test_result) + self.assertEqual(result, test_result) self.assertFalse(MockPrintExc.called) From 8d38aa90cf724ed5a648b590b852d84160a699f1 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Tue, 12 Dec 2023 13:49:07 -0500 Subject: [PATCH 102/403] feat: Drop py3.7 (#395) * feat: Drop py3.7 from build script as we stopped publishing it a while ago * feat: more drops * feat: Remove python 3.7 * feat: Remove more 3.7 refs * feat: More 3.7 refs dropped * Feat: Mention deprecation in readme. Remove 3.7 from contributing.md * feat: Remove version_info --- .github/workflows/build.yml | 4 +- .github/workflows/check-size.yml | 2 +- CONTRIBUTING.md | 2 +- README.md | 5 +- datadog_lambda/cold_start.py | 13 +- pyproject.toml | 3 +- scripts/add_new_region.sh | 2 - scripts/build_layers.sh | 10 +- scripts/check_layer_size.sh | 2 +- scripts/list_layers.sh | 1 - scripts/publish_layers.sh | 3 - scripts/run_integration_tests.sh | 3 +- scripts/run_tests.sh | 2 +- scripts/sign_layers.sh | 1 - .../snapshots/logs/async-metrics_python37.log | 1498 --------------- .../snapshots/logs/sync-metrics_python37.log | 1669 ----------------- tests/test_tags.py | 4 +- 17 files changed, 24 insertions(+), 3200 deletions(-) delete mode 100644 tests/integration/snapshots/logs/async-metrics_python37.log delete mode 100644 tests/integration/snapshots/logs/sync-metrics_python37.log diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 13e2c3228..7092388b9 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -41,7 +41,7 @@ jobs: strategy: max-parallel: 4 matrix: - python-version: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12'] + python-version: ['3.8', '3.9', '3.10', '3.11', '3.12'] steps: - name: Checkout @@ -68,7 +68,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - runtime-param: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12'] + runtime-param: ['3.8', '3.9', '3.10', '3.11', '3.12'] steps: - name: Checkout uses: actions/checkout@v3 diff --git a/.github/workflows/check-size.yml b/.github/workflows/check-size.yml index c056d09bc..9a60bfe94 100644 --- a/.github/workflows/check-size.yml +++ b/.github/workflows/check-size.yml @@ -12,7 +12,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v4 with: - python-version: 3.7 + python-version: 3.12 - name: Install Crossbuild Deps run: | diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index befae3ca1..3b57858ca 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -24,7 +24,7 @@ We love pull requests. For new features, consider opening an issue to discuss th ./scripts/build_layers.sh # Publish the a testing layer to your own AWS account, and the ARN will be returned - # Example: VERSION=1 REGIONS=us-east-1 LAYERS=Datadog-Python37 ./scripts/publish_layers.sh + # Example: VERSION=1 REGIONS=us-east-1 LAYERS=Datadog-Python312 ./scripts/publish_layers.sh VERSION= REGIONS= LAYERS= ./scripts/publish_layers.sh ``` diff --git a/README.md b/README.md index 107020a0e..39bc4ce00 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ [![Slack](https://chat.datadoghq.com/badge.svg?bg=632CA6)](https://chat.datadoghq.com/) [![License](https://img.shields.io/badge/license-Apache--2.0-blue)](https://github.com/DataDog/datadog-lambda-python/blob/main/LICENSE) -Datadog Lambda Library for Python (3.7, 3.8, 3.9, 3.10, 3.11, and 3.12) enables [enhanced Lambda metrics](https://docs.datadoghq.com/serverless/enhanced_lambda_metrics), [distributed tracing](https://docs.datadoghq.com/serverless/distributed_tracing), and [custom metric submission](https://docs.datadoghq.com/serverless/custom_metrics) from AWS Lambda functions. +Datadog Lambda Library for Python (3.8, 3.9, 3.10, 3.11, and 3.12) enables [enhanced Lambda metrics](https://docs.datadoghq.com/serverless/enhanced_lambda_metrics), [distributed tracing](https://docs.datadoghq.com/serverless/distributed_tracing), and [custom metric submission](https://docs.datadoghq.com/serverless/custom_metrics) from AWS Lambda functions. ## Installation @@ -47,6 +47,9 @@ The Continuous Profiler works by spawning a thread which periodically wakes up a ## Major Version Notes +### 5.x / Layer version 86+ +- Python3.7 support has been [deprecated](https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html) by AWS, and support removed from this library. + ### 4.x / Layer version 61+ - Python3.6 support has been [deprecated](https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html) by AWS, and support removed from this library. diff --git a/datadog_lambda/cold_start.py b/datadog_lambda/cold_start.py index 0a3ba34d1..9da02e78a 100644 --- a/datadog_lambda/cold_start.py +++ b/datadog_lambda/cold_start.py @@ -144,14 +144,13 @@ def initialize_cold_start_tracing(): and os.environ.get("DD_TRACE_ENABLED", "true").lower() == "true" and os.environ.get("DD_COLD_START_TRACING", "true").lower() == "true" ): - from sys import version_info, meta_path + from sys import meta_path - if version_info >= (3, 7): # current implementation only support version > 3.7 - for importer in meta_path: - try: - importer.find_spec = wrap_find_spec(importer.find_spec) - except Exception: - pass + for importer in meta_path: + try: + importer.find_spec = wrap_find_spec(importer.find_spec) + except Exception: + pass class ColdStartTracer(object): diff --git a/pyproject.toml b/pyproject.toml index 056309c1a..25bfb337d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -16,7 +16,6 @@ packages = [ { include = "datadog_lambda" } ] classifiers = [ - "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", @@ -25,7 +24,7 @@ classifiers = [ ] [tool.poetry.dependencies] -python = ">=3.7.0,<4" +python = ">=3.8.0,<4" datadog = ">=0.41.0,<1.0.0" wrapt = "^1.11.2" ddtrace = ">=2.3.1" diff --git a/scripts/add_new_region.sh b/scripts/add_new_region.sh index 7d1134467..434632d94 100755 --- a/scripts/add_new_region.sh +++ b/scripts/add_new_region.sh @@ -13,7 +13,6 @@ set -e OLD_REGION='us-east-1' LAYER_NAMES=( - "Datadog-Python37" "Datadog-Python38" "Datadog-Python38-ARM" "Datadog-Python39" @@ -26,7 +25,6 @@ LAYER_NAMES=( "Datadog-Python312-ARM" ) PYTHON_VERSIONS_FOR_AWS_CLI=( - "python3.7" "python3.8" "python3.8" "python3.9" diff --git a/scripts/build_layers.sh b/scripts/build_layers.sh index bae435b2a..ebd0eed37 100755 --- a/scripts/build_layers.sh +++ b/scripts/build_layers.sh @@ -7,14 +7,14 @@ # Builds datadog-lambda-python layers for Lambda functions -# Usage: PYTHON_VERSION=3.7 ./build_layers.sh +# Usage: PYTHON_VERSION=3.11 ./build_layers.sh # If PYTHON_VERSION is not specified, all versions will be built. set -e LAYER_DIR=".layers" LAYER_FILES_PREFIX="datadog_lambda_py" -AVAILABLE_PYTHON_VERSIONS=("3.7" "3.8" "3.9" "3.10" "3.11" "3.12") +AVAILABLE_PYTHON_VERSIONS=("3.8" "3.9" "3.10" "3.11" "3.12") # Determine which Python versions to build layers for if [ -z "$PYTHON_VERSION" ]; then @@ -68,10 +68,8 @@ mkdir $LAYER_DIR for python_version in "${PYTHON_VERSIONS[@]}" do - if [ "$python_version" != "3.7" ]; then - echo "Building layer for Python ${python_version} arch=arm64" - docker_build_zip ${python_version} $LAYER_DIR/${LAYER_FILES_PREFIX}-arm64-${python_version}.zip arm64 - fi + echo "Building layer for Python ${python_version} arch=arm64" + docker_build_zip ${python_version} $LAYER_DIR/${LAYER_FILES_PREFIX}-arm64-${python_version}.zip arm64 echo "Building layer for Python ${python_version} arch=amd64" docker_build_zip ${python_version} $LAYER_DIR/${LAYER_FILES_PREFIX}-amd64-${python_version}.zip amd64 done diff --git a/scripts/check_layer_size.sh b/scripts/check_layer_size.sh index 4ef2c10b2..395f79a4d 100755 --- a/scripts/check_layer_size.sh +++ b/scripts/check_layer_size.sh @@ -14,7 +14,7 @@ MAX_LAYER_UNCOMPRESSED_SIZE_KB=$(expr 24 \* 1024) LAYER_FILES_PREFIX="datadog_lambda_py" LAYER_DIR=".layers" -VERSIONS=("3.7" "3.8" "3.9" "3.10" "3.11" "3.12") +VERSIONS=("3.8" "3.9" "3.10" "3.11" "3.12") for version in "${VERSIONS[@]}" do diff --git a/scripts/list_layers.sh b/scripts/list_layers.sh index 25058c5ba..8a49cde4f 100755 --- a/scripts/list_layers.sh +++ b/scripts/list_layers.sh @@ -11,7 +11,6 @@ set -e LAYER_NAMES=( - "Datadog-Python37" "Datadog-Python38" "Datadog-Python38-ARM" "Datadog-Python39" diff --git a/scripts/publish_layers.sh b/scripts/publish_layers.sh index 7541d47dc..3deec0b48 100755 --- a/scripts/publish_layers.sh +++ b/scripts/publish_layers.sh @@ -14,7 +14,6 @@ set -e trap "pkill -P $$; exit 1;" INT PYTHON_VERSIONS_FOR_AWS_CLI=( - "python3.7" "python3.8" "python3.8" "python3.9" @@ -27,7 +26,6 @@ PYTHON_VERSIONS_FOR_AWS_CLI=( "python3.12" ) LAYER_PATHS=( - ".layers/datadog_lambda_py-amd64-3.7.zip" ".layers/datadog_lambda_py-amd64-3.8.zip" ".layers/datadog_lambda_py-arm64-3.8.zip" ".layers/datadog_lambda_py-amd64-3.9.zip" @@ -40,7 +38,6 @@ LAYER_PATHS=( ".layers/datadog_lambda_py-arm64-3.12.zip" ) AVAILABLE_LAYERS=( - "Datadog-Python37" "Datadog-Python38" "Datadog-Python38-ARM" "Datadog-Python39" diff --git a/scripts/run_integration_tests.sh b/scripts/run_integration_tests.sh index beb147069..27dd8ec8e 100755 --- a/scripts/run_integration_tests.sh +++ b/scripts/run_integration_tests.sh @@ -27,14 +27,13 @@ mismatch_found=false # [0]: serverless runtime name # [1]: python version # [2]: random 8-character ID to avoid collisions with other runs -python37=("python3.7" "3.7" $(xxd -l 4 -c 4 -p < /dev/random)) python38=("python3.8" "3.8" $(xxd -l 4 -c 4 -p < /dev/random)) python39=("python3.9" "3.9" $(xxd -l 4 -c 4 -p < /dev/random)) python310=("python3.10" "3.10" $(xxd -l 4 -c 4 -p < /dev/random)) python311=("python3.11" "3.11" $(xxd -l 4 -c 4 -p < /dev/random)) python312=("python3.12" "3.12" $(xxd -l 4 -c 4 -p < /dev/random)) -PARAMETERS_SETS=("python37" "python38" "python39" "python310" "python311" "python312") +PARAMETERS_SETS=("python38" "python39" "python310" "python311" "python312") if [ -z "$RUNTIME_PARAM" ]; then echo "Python version not specified, running for all python versions." diff --git a/scripts/run_tests.sh b/scripts/run_tests.sh index 86127f5a0..e06e99129 100755 --- a/scripts/run_tests.sh +++ b/scripts/run_tests.sh @@ -8,7 +8,7 @@ # Run unit tests in Docker set -e -PYTHON_VERSIONS=("3.7" "3.8" "3.9" "3.10" "3.11" "3.12") +PYTHON_VERSIONS=("3.8" "3.9" "3.10" "3.11" "3.12") for python_version in "${PYTHON_VERSIONS[@]}" do diff --git a/scripts/sign_layers.sh b/scripts/sign_layers.sh index 07085a0e4..7e748f70a 100755 --- a/scripts/sign_layers.sh +++ b/scripts/sign_layers.sh @@ -9,7 +9,6 @@ set -e LAYER_DIR=".layers" LAYER_FILES=( - "datadog_lambda_py-amd64-3.7.zip" "datadog_lambda_py-amd64-3.8.zip" "datadog_lambda_py-arm64-3.8.zip" "datadog_lambda_py-amd64-3.9.zip" diff --git a/tests/integration/snapshots/logs/async-metrics_python37.log b/tests/integration/snapshots/logs/async-metrics_python37.log deleted file mode 100644 index bdde3f9ef..000000000 --- a/tests/integration/snapshots/logs/async-metrics_python37.log +++ /dev/null @@ -1,1498 +0,0 @@ -INIT_START Runtime Version: python:3.7.vX Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 -START -{ - "m": "aws.lambda.enhanced.invocations", - "v": 1, - "e": XXXX, - "t": [ - "region:eu-west-1", - "account_id:XXXX", - "functionname:integration-tests-python-XXXX-async-metrics_python37", - "resource:integration-tests-python-XXXX-async-metrics_python37", - "cold_start:true", - "memorysize:1024", - "runtime:python3.7", - "datadog_lambda:vXX", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -{ - "m": "hello.dog", - "v": 1, - "e": XXXX, - "t": [ - "team:serverless", - "role:hello", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -{ - "m": "tests.integration.count", - "v": 21, - "e": XXXX, - "t": [ - "test:integration", - "role:hello", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "XXXX.execute-api.us-east-2.amazonaws.com", - "resource": "GET /", - "name": "aws.apigateway", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "operation_name": "aws.apigateway.rest", - "http.url": "XXXX.execute-api.us-east-2.amazonaws.com/", - "endpoint": "/", - "http.method": "GET", - "resource_names": "GET /", - "apiid": "XXXX", - "apiname": "XXXX", - "stage": "Prod", - "request_id": "XXXX", - "_inferred_span.synchronicity": "sync", - "_inferred_span.tag_source": "self", - "http.status_code": "200", - "peer.service": "integration-tests-python", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "process_id": XXXX, - "_dd.top_level": 1, - "_sampling_priority_v1": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-async-metrics_python37", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "true", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python37", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python37", - "functionname": "integration-tests-python-XXXX-async-metrics_python37", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "api-gateway", - "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", - "http.url_details.path": "/Prod/", - "http.method": "GET", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1, - "_dd.top_level": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.p.tid": "XXXX", - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - } - ] - ] -} -END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB -START -{ - "m": "aws.lambda.enhanced.invocations", - "v": 1, - "e": XXXX, - "t": [ - "region:eu-west-1", - "account_id:XXXX", - "functionname:integration-tests-python-XXXX-async-metrics_python37", - "resource:integration-tests-python-XXXX-async-metrics_python37", - "cold_start:false", - "memorysize:1024", - "runtime:python3.7", - "datadog_lambda:vXX", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -{ - "m": "hello.dog", - "v": 1, - "e": XXXX, - "t": [ - "team:serverless", - "role:hello", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -{ - "m": "tests.integration.count", - "v": 21, - "e": XXXX, - "t": [ - "test:integration", - "role:hello", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "dynamodb", - "resource": "ExampleTableWithStream", - "name": "aws.dynamodb", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "operation_name": "aws.dynamodb", - "resource_names": "ExampleTableWithStream", - "tablename": "ExampleTableWithStream", - "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", - "event_id": "XXXX", - "event_name": "INSERT", - "event_version": "1.1", - "stream_view_type": "NEW_AND_OLD_IMAGES", - "size_bytes": "26", - "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self", - "peer.service": "integration-tests-python", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "process_id": XXXX, - "_dd.top_level": 1, - "_sampling_priority_v1": 1 - }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-async-metrics_python37", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python37", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python37", - "functionname": "integration-tests-python-XXXX-async-metrics_python37", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1, - "_dd.top_level": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.p.tid": "XXXX", - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - } - ] - ] -} -END Duration: XXXX ms Memory Used: XXXX MB -START -{ - "m": "aws.lambda.enhanced.invocations", - "v": 1, - "e": XXXX, - "t": [ - "region:eu-west-1", - "account_id:XXXX", - "functionname:integration-tests-python-XXXX-async-metrics_python37", - "resource:integration-tests-python-XXXX-async-metrics_python37", - "cold_start:false", - "memorysize:1024", - "runtime:python3.7", - "datadog_lambda:vXX", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -{ - "m": "hello.dog", - "v": 1, - "e": XXXX, - "t": [ - "team:serverless", - "role:hello", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -{ - "m": "tests.integration.count", - "v": 21, - "e": XXXX, - "t": [ - "test:integration", - "role:hello", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "eventbridge", - "resource": "eventbridge.custom.event.sender", - "name": "aws.eventbridge", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "operation_name": "aws.eventbridge", - "resource_names": "eventbridge.custom.event.sender", - "detail_type": "testdetail", - "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self", - "peer.service": "integration-tests-python", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "process_id": XXXX, - "_dd.top_level": 1, - "_sampling_priority_v1": 1 - }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-async-metrics_python37", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python37", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python37", - "functionname": "integration-tests-python-XXXX-async-metrics_python37", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "eventbridge", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1, - "_dd.top_level": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.p.tid": "XXXX", - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - } - ] - ] -} -END Duration: XXXX ms Memory Used: XXXX MB -START -{ - "m": "aws.lambda.enhanced.invocations", - "v": 1, - "e": XXXX, - "t": [ - "region:eu-west-1", - "account_id:XXXX", - "functionname:integration-tests-python-XXXX-async-metrics_python37", - "resource:integration-tests-python-XXXX-async-metrics_python37", - "cold_start:false", - "memorysize:1024", - "runtime:python3.7", - "datadog_lambda:vXX", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -{ - "m": "hello.dog", - "v": 1, - "e": XXXX, - "t": [ - "team:serverless", - "role:hello", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -{ - "m": "tests.integration.count", - "v": 21, - "e": XXXX, - "t": [ - "test:integration", - "role:hello", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "XXXX.execute-api.eu-west-1.amazonaws.com", - "resource": "GET /httpapi/get", - "name": "aws.httpapi", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "operation_name": "aws.httpapi", - "endpoint": "/httpapi/get", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", - "http.method": "GET", - "http.protocol": "HTTP/1.1", - "http.source_ip": "XXXX", - "http.user_agent": "XXXX/7.64.1", - "resource_names": "GET /httpapi/get", - "request_id": "XXXX", - "apiid": "XXXX", - "apiname": "XXXX", - "stage": "$default", - "_inferred_span.synchronicity": "sync", - "_inferred_span.tag_source": "self", - "http.status_code": "200", - "peer.service": "integration-tests-python", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "process_id": XXXX, - "_dd.top_level": 1, - "_sampling_priority_v1": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-async-metrics_python37", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python37", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python37", - "functionname": "integration-tests-python-XXXX-async-metrics_python37", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "api-gateway", - "function_trigger.event_source_arn": "XXXX$default", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", - "http.url_details.path": "/httpapi/get", - "http.method": "GET", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1, - "_dd.top_level": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.p.tid": "XXXX", - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - } - ] - ] -} -END Duration: XXXX ms Memory Used: XXXX MB -START -{ - "m": "aws.lambda.enhanced.invocations", - "v": 1, - "e": XXXX, - "t": [ - "region:eu-west-1", - "account_id:XXXX", - "functionname:integration-tests-python-XXXX-async-metrics_python37", - "resource:integration-tests-python-XXXX-async-metrics_python37", - "cold_start:false", - "memorysize:1024", - "runtime:python3.7", - "datadog_lambda:vXX", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -{ - "m": "hello.dog", - "v": 1, - "e": XXXX, - "t": [ - "team:serverless", - "role:hello", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -{ - "m": "tests.integration.count", - "v": 21, - "e": XXXX, - "t": [ - "test:integration", - "role:hello", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "kinesis", - "resource": "EXAMPLE", - "name": "aws.kinesis", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "operation_name": "aws.kinesis", - "resource_names": "EXAMPLE", - "streamname": "EXAMPLE", - "shardid": "shardId-XXXX", - "event_source_arn": "arn:aws:kinesis:EXAMPLE", - "event_id": "XXXX", - "event_name": "aws:kinesis:record", - "event_version": "1.0", - "partition_key": "XXXX", - "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self", - "peer.service": "integration-tests-python", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "process_id": XXXX, - "_dd.top_level": 1, - "_sampling_priority_v1": 1 - }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-async-metrics_python37", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python37", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python37", - "functionname": "integration-tests-python-XXXX-async-metrics_python37", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1, - "_dd.top_level": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.p.tid": "XXXX", - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - } - ] - ] -} -END Duration: XXXX ms Memory Used: XXXX MB -START -{ - "m": "aws.lambda.enhanced.invocations", - "v": 1, - "e": XXXX, - "t": [ - "region:eu-west-1", - "account_id:XXXX", - "functionname:integration-tests-python-XXXX-async-metrics_python37", - "resource:integration-tests-python-XXXX-async-metrics_python37", - "cold_start:false", - "memorysize:1024", - "runtime:python3.7", - "datadog_lambda:vXX", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -{ - "m": "hello.dog", - "v": 1, - "e": XXXX, - "t": [ - "team:serverless", - "role:hello", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -{ - "m": "tests.integration.count", - "v": 21, - "e": XXXX, - "t": [ - "test:integration", - "role:hello", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "s3", - "resource": "example-bucket", - "name": "aws.s3", - "error": 0, - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "operation_name": "aws.s3", - "resource_names": "example-bucket", - "event_name": "ObjectCreated:Put", - "bucketname": "example-bucket", - "bucket_arn": "arn:aws:s3:::example-bucket", - "object_key": "test/key", - "object_size": "1024", - "object_etag": "XXXX", - "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self", - "peer.service": "integration-tests-python", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "process_id": XXXX, - "_dd.top_level": 1, - "_sampling_priority_v1": 1 - }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-async-metrics_python37", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python37", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python37", - "functionname": "integration-tests-python-XXXX-async-metrics_python37", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1, - "_dd.top_level": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.p.tid": "XXXX", - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - } - ] - ] -} -END Duration: XXXX ms Memory Used: XXXX MB -START -{ - "m": "aws.lambda.enhanced.invocations", - "v": 1, - "e": XXXX, - "t": [ - "region:eu-west-1", - "account_id:XXXX", - "functionname:integration-tests-python-XXXX-async-metrics_python37", - "resource:integration-tests-python-XXXX-async-metrics_python37", - "cold_start:false", - "memorysize:1024", - "runtime:python3.7", - "datadog_lambda:vXX", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -{ - "m": "hello.dog", - "v": 1, - "e": XXXX, - "t": [ - "team:serverless", - "role:hello", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -{ - "m": "tests.integration.count", - "v": 21, - "e": XXXX, - "t": [ - "test:integration", - "role:hello", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "sns", - "resource": "sns-lambda", - "name": "aws.sns", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "operation_name": "aws.sns", - "resource_names": "sns-lambda", - "topicname": "sns-lambda", - "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", - "message_id": "XXXX", - "type": "Notification", - "subject": "TestInvoke", - "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self", - "peer.service": "integration-tests-python", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "process_id": XXXX, - "_dd.top_level": 1, - "_sampling_priority_v1": 1 - }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-async-metrics_python37", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python37", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python37", - "functionname": "integration-tests-python-XXXX-async-metrics_python37", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1, - "_dd.top_level": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.p.tid": "XXXX", - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - } - ] - ] -} -END Duration: XXXX ms Memory Used: XXXX MB -START -{ - "m": "aws.lambda.enhanced.invocations", - "v": 1, - "e": XXXX, - "t": [ - "region:eu-west-1", - "account_id:XXXX", - "functionname:integration-tests-python-XXXX-async-metrics_python37", - "resource:integration-tests-python-XXXX-async-metrics_python37", - "cold_start:false", - "memorysize:1024", - "runtime:python3.7", - "datadog_lambda:vXX", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -{ - "m": "hello.dog", - "v": 1, - "e": XXXX, - "t": [ - "team:serverless", - "role:hello", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -{ - "m": "tests.integration.count", - "v": 21, - "e": XXXX, - "t": [ - "test:integration", - "role:hello", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "sqs", - "resource": "my-queue", - "name": "aws.sqs", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "operation_name": "aws.sqs", - "resource_names": "my-queue", - "queuename": "my-queue", - "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", - "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", - "sender_id": "AIDAIENQZJOLO23YVJ4VO", - "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self", - "peer.service": "integration-tests-python", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "process_id": XXXX, - "_dd.top_level": 1, - "_sampling_priority_v1": 1 - }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-async-metrics_python37", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python37", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python37", - "functionname": "integration-tests-python-XXXX-async-metrics_python37", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1, - "_dd.top_level": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.p.tid": "XXXX", - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - } - ] - ] -} -END Duration: XXXX ms Memory Used: XXXX MB -START -{ - "m": "aws.lambda.enhanced.invocations", - "v": 1, - "e": XXXX, - "t": [ - "region:eu-west-1", - "account_id:XXXX", - "functionname:integration-tests-python-XXXX-async-metrics_python37", - "resource:integration-tests-python-XXXX-async-metrics_python37", - "cold_start:false", - "memorysize:1024", - "runtime:python3.7", - "datadog_lambda:vXX", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -{ - "m": "hello.dog", - "v": 1, - "e": XXXX, - "t": [ - "team:serverless", - "role:hello", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -{ - "m": "tests.integration.count", - "v": 21, - "e": XXXX, - "t": [ - "test:integration", - "role:hello", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "XXXX.execute-api.eu-west-1.amazonaws.com", - "resource": "$default", - "name": "aws.apigateway.websocket", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "operation_name": "aws.apigateway.websocket", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com$default", - "endpoint": "$default", - "resource_names": "$default", - "apiid": "XXXX", - "apiname": "XXXX", - "stage": "dev", - "request_id": "XXXX", - "connection_id": "XXXX=", - "event_type": "MESSAGE", - "message_direction": "IN", - "_inferred_span.synchronicity": "sync", - "_inferred_span.tag_source": "self", - "http.status_code": "200", - "peer.service": "integration-tests-python", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "process_id": XXXX, - "_dd.top_level": 1, - "_sampling_priority_v1": 1 - }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-async-metrics_python37", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python37", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python37", - "functionname": "integration-tests-python-XXXX-async-metrics_python37", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "api-gateway", - "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1, - "_dd.top_level": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.p.tid": "XXXX", - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - } - ] - ] -} -END Duration: XXXX ms Memory Used: XXXX MB diff --git a/tests/integration/snapshots/logs/sync-metrics_python37.log b/tests/integration/snapshots/logs/sync-metrics_python37.log deleted file mode 100644 index fb7b879b6..000000000 --- a/tests/integration/snapshots/logs/sync-metrics_python37.log +++ /dev/null @@ -1,1669 +0,0 @@ -INIT_START Runtime Version: python:3.7.vX Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 -START -{ - "m": "aws.lambda.enhanced.invocations", - "v": 1, - "e": XXXX, - "t": [ - "region:eu-west-1", - "account_id:XXXX", - "functionname:integration-tests-python-XXXX-sync-metrics_python37", - "resource:integration-tests-python-XXXX-sync-metrics_python37", - "cold_start:true", - "memorysize:1024", - "runtime:python3.7", - "datadog_lambda:vXX", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "XXXX.execute-api.us-east-2.amazonaws.com", - "resource": "GET /", - "name": "aws.apigateway", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "operation_name": "aws.apigateway.rest", - "http.url": "XXXX.execute-api.us-east-2.amazonaws.com/", - "endpoint": "/", - "http.method": "GET", - "resource_names": "GET /", - "apiid": "XXXX", - "apiname": "XXXX", - "stage": "Prod", - "request_id": "XXXX", - "_inferred_span.synchronicity": "sync", - "_inferred_span.tag_source": "self", - "http.status_code": "200", - "peer.service": "integration-tests-python", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "process_id": XXXX, - "_dd.top_level": 1, - "_sampling_priority_v1": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-sync-metrics_python37", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "true", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python37", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python37", - "functionname": "integration-tests-python-XXXX-sync-metrics_python37", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "api-gateway", - "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", - "http.url_details.path": "/Prod/", - "http.method": "GET", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1, - "_dd.top_level": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.p.tid": "XXXX", - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - } - ] - ] -} -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", - "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" - }, - "metrics": { - "process_id": XXXX, - "_dd.measured": 1, - "_dd.top_level": 1, - "_sampling_priority_v1": 1 - }, - "type": "http" - } - ] - ] -} -END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB -START -{ - "m": "aws.lambda.enhanced.invocations", - "v": 1, - "e": XXXX, - "t": [ - "region:eu-west-1", - "account_id:XXXX", - "functionname:integration-tests-python-XXXX-sync-metrics_python37", - "resource:integration-tests-python-XXXX-sync-metrics_python37", - "cold_start:false", - "memorysize:1024", - "runtime:python3.7", - "datadog_lambda:vXX", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "dynamodb", - "resource": "ExampleTableWithStream", - "name": "aws.dynamodb", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "operation_name": "aws.dynamodb", - "resource_names": "ExampleTableWithStream", - "tablename": "ExampleTableWithStream", - "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", - "event_id": "XXXX", - "event_name": "INSERT", - "event_version": "1.1", - "stream_view_type": "NEW_AND_OLD_IMAGES", - "size_bytes": "26", - "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self", - "peer.service": "integration-tests-python", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "process_id": XXXX, - "_dd.top_level": 1, - "_sampling_priority_v1": 1 - }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-sync-metrics_python37", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python37", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python37", - "functionname": "integration-tests-python-XXXX-sync-metrics_python37", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1, - "_dd.top_level": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.p.tid": "XXXX", - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - } - ] - ] -} -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", - "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" - }, - "metrics": { - "process_id": XXXX, - "_dd.measured": 1, - "_dd.top_level": 1, - "_sampling_priority_v1": 1 - }, - "type": "http" - } - ] - ] -} -END Duration: XXXX ms Memory Used: XXXX MB -START -{ - "m": "aws.lambda.enhanced.invocations", - "v": 1, - "e": XXXX, - "t": [ - "region:eu-west-1", - "account_id:XXXX", - "functionname:integration-tests-python-XXXX-sync-metrics_python37", - "resource:integration-tests-python-XXXX-sync-metrics_python37", - "cold_start:false", - "memorysize:1024", - "runtime:python3.7", - "datadog_lambda:vXX", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "eventbridge", - "resource": "eventbridge.custom.event.sender", - "name": "aws.eventbridge", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "operation_name": "aws.eventbridge", - "resource_names": "eventbridge.custom.event.sender", - "detail_type": "testdetail", - "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self", - "peer.service": "integration-tests-python", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "process_id": XXXX, - "_dd.top_level": 1, - "_sampling_priority_v1": 1 - }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-sync-metrics_python37", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python37", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python37", - "functionname": "integration-tests-python-XXXX-sync-metrics_python37", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "eventbridge", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1, - "_dd.top_level": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.p.tid": "XXXX", - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - } - ] - ] -} -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", - "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" - }, - "metrics": { - "process_id": XXXX, - "_dd.measured": 1, - "_dd.top_level": 1, - "_sampling_priority_v1": 1 - }, - "type": "http" - } - ] - ] -} -END Duration: XXXX ms Memory Used: XXXX MB -START -{ - "m": "aws.lambda.enhanced.invocations", - "v": 1, - "e": XXXX, - "t": [ - "region:eu-west-1", - "account_id:XXXX", - "functionname:integration-tests-python-XXXX-sync-metrics_python37", - "resource:integration-tests-python-XXXX-sync-metrics_python37", - "cold_start:false", - "memorysize:1024", - "runtime:python3.7", - "datadog_lambda:vXX", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "XXXX.execute-api.eu-west-1.amazonaws.com", - "resource": "GET /httpapi/get", - "name": "aws.httpapi", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "operation_name": "aws.httpapi", - "endpoint": "/httpapi/get", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", - "http.method": "GET", - "http.protocol": "HTTP/1.1", - "http.source_ip": "XXXX", - "http.user_agent": "XXXX/7.64.1", - "resource_names": "GET /httpapi/get", - "request_id": "XXXX", - "apiid": "XXXX", - "apiname": "XXXX", - "stage": "$default", - "_inferred_span.synchronicity": "sync", - "_inferred_span.tag_source": "self", - "http.status_code": "200", - "peer.service": "integration-tests-python", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "process_id": XXXX, - "_dd.top_level": 1, - "_sampling_priority_v1": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-sync-metrics_python37", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python37", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python37", - "functionname": "integration-tests-python-XXXX-sync-metrics_python37", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "api-gateway", - "function_trigger.event_source_arn": "XXXX$default", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", - "http.url_details.path": "/httpapi/get", - "http.method": "GET", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1, - "_dd.top_level": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.p.tid": "XXXX", - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - } - ] - ] -} -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX -END Duration: XXXX ms Memory Used: XXXX MB -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", - "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" - }, - "metrics": { - "process_id": XXXX, - "_dd.measured": 1, - "_dd.top_level": 1, - "_sampling_priority_v1": 1 - }, - "type": "http" - } - ] - ] -} -START -{ - "m": "aws.lambda.enhanced.invocations", - "v": 1, - "e": XXXX, - "t": [ - "region:eu-west-1", - "account_id:XXXX", - "functionname:integration-tests-python-XXXX-sync-metrics_python37", - "resource:integration-tests-python-XXXX-sync-metrics_python37", - "cold_start:false", - "memorysize:1024", - "runtime:python3.7", - "datadog_lambda:vXX", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "kinesis", - "resource": "EXAMPLE", - "name": "aws.kinesis", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "operation_name": "aws.kinesis", - "resource_names": "EXAMPLE", - "streamname": "EXAMPLE", - "shardid": "shardId-XXXX", - "event_source_arn": "arn:aws:kinesis:EXAMPLE", - "event_id": "XXXX", - "event_name": "aws:kinesis:record", - "event_version": "1.0", - "partition_key": "XXXX", - "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self", - "peer.service": "integration-tests-python", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "process_id": XXXX, - "_dd.top_level": 1, - "_sampling_priority_v1": 1 - }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-sync-metrics_python37", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python37", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python37", - "functionname": "integration-tests-python-XXXX-sync-metrics_python37", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1, - "_dd.top_level": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.p.tid": "XXXX", - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - } - ] - ] -} -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", - "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" - }, - "metrics": { - "process_id": XXXX, - "_dd.measured": 1, - "_dd.top_level": 1, - "_sampling_priority_v1": 1 - }, - "type": "http" - } - ] - ] -} -END Duration: XXXX ms Memory Used: XXXX MB -START -{ - "m": "aws.lambda.enhanced.invocations", - "v": 1, - "e": XXXX, - "t": [ - "region:eu-west-1", - "account_id:XXXX", - "functionname:integration-tests-python-XXXX-sync-metrics_python37", - "resource:integration-tests-python-XXXX-sync-metrics_python37", - "cold_start:false", - "memorysize:1024", - "runtime:python3.7", - "datadog_lambda:vXX", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "s3", - "resource": "example-bucket", - "name": "aws.s3", - "error": 0, - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "operation_name": "aws.s3", - "resource_names": "example-bucket", - "event_name": "ObjectCreated:Put", - "bucketname": "example-bucket", - "bucket_arn": "arn:aws:s3:::example-bucket", - "object_key": "test/key", - "object_size": "1024", - "object_etag": "XXXX", - "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self", - "peer.service": "integration-tests-python", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "process_id": XXXX, - "_dd.top_level": 1, - "_sampling_priority_v1": 1 - }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-sync-metrics_python37", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python37", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python37", - "functionname": "integration-tests-python-XXXX-sync-metrics_python37", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1, - "_dd.top_level": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.p.tid": "XXXX", - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - } - ] - ] -} -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", - "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" - }, - "metrics": { - "process_id": XXXX, - "_dd.measured": 1, - "_dd.top_level": 1, - "_sampling_priority_v1": 1 - }, - "type": "http" - } - ] - ] -} -END Duration: XXXX ms Memory Used: XXXX MB -START -{ - "m": "aws.lambda.enhanced.invocations", - "v": 1, - "e": XXXX, - "t": [ - "region:eu-west-1", - "account_id:XXXX", - "functionname:integration-tests-python-XXXX-sync-metrics_python37", - "resource:integration-tests-python-XXXX-sync-metrics_python37", - "cold_start:false", - "memorysize:1024", - "runtime:python3.7", - "datadog_lambda:vXX", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "sns", - "resource": "sns-lambda", - "name": "aws.sns", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "operation_name": "aws.sns", - "resource_names": "sns-lambda", - "topicname": "sns-lambda", - "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", - "message_id": "XXXX", - "type": "Notification", - "subject": "TestInvoke", - "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self", - "peer.service": "integration-tests-python", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "process_id": XXXX, - "_dd.top_level": 1, - "_sampling_priority_v1": 1 - }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-sync-metrics_python37", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python37", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python37", - "functionname": "integration-tests-python-XXXX-sync-metrics_python37", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1, - "_dd.top_level": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.p.tid": "XXXX", - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - } - ] - ] -} -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", - "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" - }, - "metrics": { - "process_id": XXXX, - "_dd.measured": 1, - "_dd.top_level": 1, - "_sampling_priority_v1": 1 - }, - "type": "http" - } - ] - ] -} -END Duration: XXXX ms Memory Used: XXXX MB -START -{ - "m": "aws.lambda.enhanced.invocations", - "v": 1, - "e": XXXX, - "t": [ - "region:eu-west-1", - "account_id:XXXX", - "functionname:integration-tests-python-XXXX-sync-metrics_python37", - "resource:integration-tests-python-XXXX-sync-metrics_python37", - "cold_start:false", - "memorysize:1024", - "runtime:python3.7", - "datadog_lambda:vXX", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "sqs", - "resource": "my-queue", - "name": "aws.sqs", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "operation_name": "aws.sqs", - "resource_names": "my-queue", - "queuename": "my-queue", - "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", - "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", - "sender_id": "AIDAIENQZJOLO23YVJ4VO", - "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self", - "peer.service": "integration-tests-python", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "process_id": XXXX, - "_dd.top_level": 1, - "_sampling_priority_v1": 1 - }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-sync-metrics_python37", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python37", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python37", - "functionname": "integration-tests-python-XXXX-sync-metrics_python37", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1, - "_dd.top_level": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.p.tid": "XXXX", - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - } - ] - ] -} -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", - "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" - }, - "metrics": { - "process_id": XXXX, - "_dd.measured": 1, - "_dd.top_level": 1, - "_sampling_priority_v1": 1 - }, - "type": "http" - } - ] - ] -} -END Duration: XXXX ms Memory Used: XXXX MB -START -{ - "m": "aws.lambda.enhanced.invocations", - "v": 1, - "e": XXXX, - "t": [ - "region:eu-west-1", - "account_id:XXXX", - "functionname:integration-tests-python-XXXX-sync-metrics_python37", - "resource:integration-tests-python-XXXX-sync-metrics_python37", - "cold_start:false", - "memorysize:1024", - "runtime:python3.7", - "datadog_lambda:vXX", - "dd_lambda_layer:datadog-python37_X.X.X" - ] -} -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "XXXX.execute-api.eu-west-1.amazonaws.com", - "resource": "$default", - "name": "aws.apigateway.websocket", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "operation_name": "aws.apigateway.websocket", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com$default", - "endpoint": "$default", - "resource_names": "$default", - "apiid": "XXXX", - "apiname": "XXXX", - "stage": "dev", - "request_id": "XXXX", - "connection_id": "XXXX=", - "event_type": "MESSAGE", - "message_direction": "IN", - "_inferred_span.synchronicity": "sync", - "_inferred_span.tag_source": "self", - "http.status_code": "200", - "peer.service": "integration-tests-python", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "process_id": XXXX, - "_dd.top_level": 1, - "_sampling_priority_v1": 1 - }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-sync-metrics_python37", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python37", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python37", - "functionname": "integration-tests-python-XXXX-sync-metrics_python37", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "api-gateway", - "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://datadoghq.com/", - "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1, - "_dd.top_level": 1 - }, - "type": "http" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.p.tid": "XXXX", - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "GET", - "http.url": "https://www.datadoghq.com/", - "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" - }, - "metrics": { - "_dd.measured": 1 - }, - "type": "http" - } - ] - ] -} -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX -{ - "traces": [ - [ - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "requests.request", - "name": "requests.request", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "runtime-id": "XXXX", - "_dd.origin": "lambda", - "component": "requests", - "span.kind": "client", - "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", - "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" - }, - "metrics": { - "process_id": XXXX, - "_dd.measured": 1, - "_dd.top_level": 1, - "_sampling_priority_v1": 1 - }, - "type": "http" - } - ] - ] -} -END Duration: XXXX ms Memory Used: XXXX MB diff --git a/tests/test_tags.py b/tests/test_tags.py index 80b5f86db..66c0c39f3 100644 --- a/tests/test_tags.py +++ b/tests/test_tags.py @@ -65,5 +65,5 @@ def test_parse_lambda_tags_from_arn_alias(self): ) def test_get_runtime_tag(self): - self.mock_python_version_tuple.return_value = ("3", "7", "2") - self.assertEqual(get_runtime_tag(), "runtime:python3.7") + self.mock_python_version_tuple.return_value = ("3", "12", "0") + self.assertEqual(get_runtime_tag(), "runtime:python3.12") From 3db46b2575e8e387fafdb79c55fa50c08d28f69d Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Thu, 14 Dec 2023 18:26:22 -0500 Subject: [PATCH 103/403] Bump version to 5.86.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 25bfb337d..9882b3c38 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "5.85.0" +version = "5.86.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 07bad6eb0bfd57d9889a4ef1d24850347c53ebc5 Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Fri, 15 Dec 2023 15:10:16 -0800 Subject: [PATCH 104/403] Do not call flush extension after each invocation. (#406) * Do not call flush extension after each invocation. * Test flushing per invocation. --- datadog_lambda/wrapper.py | 9 ++++++++- tests/test_wrapper.py | 41 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 1 deletion(-) diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 15dec7f12..73d178879 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -60,6 +60,7 @@ DD_LOGS_INJECTION = "DD_LOGS_INJECTION" DD_MERGE_XRAY_TRACES = "DD_MERGE_XRAY_TRACES" AWS_LAMBDA_FUNCTION_NAME = "AWS_LAMBDA_FUNCTION_NAME" +DD_LOCAL_TEST = "DD_LOCAL_TEST" DD_TRACE_EXTRACTOR = "DD_TRACE_EXTRACTOR" DD_TRACE_MANAGED_SERVICES = "DD_TRACE_MANAGED_SERVICES" DD_ENCODE_AUTHORIZER_CONTEXT = "DD_ENCODE_AUTHORIZER_CONTEXT" @@ -183,6 +184,9 @@ def __init__(self, func): self.min_cold_start_trace_duration = get_env_as_int( DD_MIN_COLD_START_DURATION, 3 ) + self.local_testing_mode = os.environ.get( + DD_LOCAL_TEST, "false" + ).lower() in ("true", "1") self.cold_start_trace_skip_lib = [ "ddtrace.internal.compat", "ddtrace.filters", @@ -367,7 +371,10 @@ def _after(self, event, context): if not self.flush_to_log or should_use_extension: flush_stats() - if should_use_extension: + if should_use_extension and self.local_testing_mode: + # when testing locally, the extension does not know when an + # invocation completes because it does not have access to the + # logs api flush_extension() if self.encode_authorizer_context and is_authorizer_response(self.response): diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index 29c842d2a..399989215 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -647,3 +647,44 @@ def handler(event, context): }, payload["metadata"], ) + + +class TestLambdaWrapperFlushExtension(unittest.TestCase): + def setUp(self): + self.orig_environ = os.environ + + def tearDown(self): + os.environ = self.orig_environ + + @patch("datadog_lambda.wrapper.should_use_extension", True) + def test_local_test_envvar_flushing(self): + + flushes = [] + lambda_event = {} + lambda_context = get_mock_context() + + def flush(): + flushes.append(1) + + for environ, flush_called in ( + ({"DD_LOCAL_TEST": "True"}, True), + ({"DD_LOCAL_TEST": "true"}, True), + ({"DD_LOCAL_TEST": "1"}, True), + ({"DD_LOCAL_TEST": "False"}, False), + ({"DD_LOCAL_TEST": "false"}, False), + ({"DD_LOCAL_TEST": "0"}, False), + ({"DD_LOCAL_TEST": ""}, False), + ({}, False), + ): + + os.environ = environ + flushes.clear() + + @patch("datadog_lambda.wrapper.flush_extension", flush) + @wrapper.datadog_lambda_wrapper + def lambda_handler(event, context): + pass + + lambda_handler(lambda_event, lambda_context) + + self.assertEqual(flush_called, len(flushes) == 1) From 977dd87a3b80e3eab4854e2c1ac133a485901cb4 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Wed, 20 Dec 2023 13:03:21 -0500 Subject: [PATCH 105/403] Bump version to 5.87.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 9882b3c38..17f91d535 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "5.86.0" +version = "5.87.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 88796883e83a198584eee0a70404d6090c2e3b38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?jordan=20gonz=C3=A1lez?= <30836115+duncanista@users.noreply.github.com> Date: Fri, 26 Jan 2024 14:21:12 -0500 Subject: [PATCH 106/403] update snapshots (#411) --- .../logs/async-metrics_python310.log | 36 ++++++------ .../logs/async-metrics_python311.log | 36 ++++++------ .../logs/async-metrics_python312.log | 36 ++++++------ .../snapshots/logs/async-metrics_python38.log | 38 ++++++------- .../snapshots/logs/async-metrics_python39.log | 36 ++++++------ .../snapshots/logs/sync-metrics_python310.log | 54 +++++++++--------- .../snapshots/logs/sync-metrics_python311.log | 54 +++++++++--------- .../snapshots/logs/sync-metrics_python312.log | 54 +++++++++--------- .../snapshots/logs/sync-metrics_python38.log | 56 +++++++++---------- .../snapshots/logs/sync-metrics_python39.log | 56 +++++++++---------- 10 files changed, 228 insertions(+), 228 deletions(-) diff --git a/tests/integration/snapshots/logs/async-metrics_python310.log b/tests/integration/snapshots/logs/async-metrics_python310.log index 81d2351ec..e2101885e 100644 --- a/tests/integration/snapshots/logs/async-metrics_python310.log +++ b/tests/integration/snapshots/logs/async-metrics_python310.log @@ -119,7 +119,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -145,7 +145,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -285,7 +285,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -311,7 +311,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -444,7 +444,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -470,7 +470,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -618,7 +618,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -644,7 +644,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -784,7 +784,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -810,7 +810,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -947,7 +947,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -973,7 +973,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1111,7 +1111,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1137,7 +1137,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1274,7 +1274,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1300,7 +1300,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1445,7 +1445,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1471,7 +1471,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", diff --git a/tests/integration/snapshots/logs/async-metrics_python311.log b/tests/integration/snapshots/logs/async-metrics_python311.log index ebecb1392..8d5419c1e 100644 --- a/tests/integration/snapshots/logs/async-metrics_python311.log +++ b/tests/integration/snapshots/logs/async-metrics_python311.log @@ -119,7 +119,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -145,7 +145,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -285,7 +285,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -311,7 +311,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -444,7 +444,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -470,7 +470,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -618,7 +618,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -644,7 +644,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -784,7 +784,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -810,7 +810,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -947,7 +947,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -973,7 +973,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1111,7 +1111,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1137,7 +1137,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1274,7 +1274,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1300,7 +1300,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1445,7 +1445,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1471,7 +1471,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", diff --git a/tests/integration/snapshots/logs/async-metrics_python312.log b/tests/integration/snapshots/logs/async-metrics_python312.log index 3bb8ac78a..0132e54e7 100644 --- a/tests/integration/snapshots/logs/async-metrics_python312.log +++ b/tests/integration/snapshots/logs/async-metrics_python312.log @@ -119,7 +119,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -145,7 +145,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -285,7 +285,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -311,7 +311,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -444,7 +444,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -470,7 +470,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -618,7 +618,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -644,7 +644,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -784,7 +784,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -810,7 +810,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -947,7 +947,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -973,7 +973,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1111,7 +1111,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1137,7 +1137,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1274,7 +1274,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1300,7 +1300,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1445,7 +1445,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1471,7 +1471,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", diff --git a/tests/integration/snapshots/logs/async-metrics_python38.log b/tests/integration/snapshots/logs/async-metrics_python38.log index ae5b719f7..e5b755ac4 100644 --- a/tests/integration/snapshots/logs/async-metrics_python38.log +++ b/tests/integration/snapshots/logs/async-metrics_python38.log @@ -119,7 +119,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -145,7 +145,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -285,7 +285,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -311,7 +311,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -444,7 +444,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -470,7 +470,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -618,7 +618,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -644,7 +644,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -784,7 +784,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -810,7 +810,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -947,7 +947,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -973,7 +973,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1111,7 +1111,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1137,7 +1137,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1274,7 +1274,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1300,7 +1300,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1364,7 +1364,6 @@ START } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -END Duration: XXXX ms Memory Used: XXXX MB { "traces": [ [ @@ -1446,7 +1445,7 @@ END Duration: XXXX ms Memory Used: XXXX MB "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1472,7 +1471,7 @@ END Duration: XXXX ms Memory Used: XXXX MB "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1496,3 +1495,4 @@ END Duration: XXXX ms Memory Used: XXXX MB ] ] } +END Duration: XXXX ms Memory Used: XXXX MB diff --git a/tests/integration/snapshots/logs/async-metrics_python39.log b/tests/integration/snapshots/logs/async-metrics_python39.log index 53ef3d2f5..d02e097d5 100644 --- a/tests/integration/snapshots/logs/async-metrics_python39.log +++ b/tests/integration/snapshots/logs/async-metrics_python39.log @@ -119,7 +119,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -145,7 +145,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -285,7 +285,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -311,7 +311,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -444,7 +444,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -470,7 +470,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -618,7 +618,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -644,7 +644,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -784,7 +784,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -810,7 +810,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -947,7 +947,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -973,7 +973,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1111,7 +1111,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1137,7 +1137,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1274,7 +1274,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1300,7 +1300,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1445,7 +1445,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1471,7 +1471,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", diff --git a/tests/integration/snapshots/logs/sync-metrics_python310.log b/tests/integration/snapshots/logs/sync-metrics_python310.log index 07d37c408..ac833bf09 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python310.log +++ b/tests/integration/snapshots/logs/sync-metrics_python310.log @@ -99,7 +99,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -125,7 +125,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -158,7 +158,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -284,7 +284,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -310,7 +310,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -343,7 +343,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -462,7 +462,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -488,7 +488,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -521,7 +521,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -655,7 +655,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -681,7 +681,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -714,7 +714,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -840,7 +840,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -866,7 +866,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -899,7 +899,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1022,7 +1022,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1048,7 +1048,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1081,7 +1081,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1205,7 +1205,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1231,7 +1231,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1264,7 +1264,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1387,7 +1387,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1413,7 +1413,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1446,7 +1446,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1577,7 +1577,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1603,7 +1603,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1636,7 +1636,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", diff --git a/tests/integration/snapshots/logs/sync-metrics_python311.log b/tests/integration/snapshots/logs/sync-metrics_python311.log index c2a3e5cdd..0e252e0fc 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python311.log +++ b/tests/integration/snapshots/logs/sync-metrics_python311.log @@ -99,7 +99,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -125,7 +125,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -158,7 +158,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -284,7 +284,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -310,7 +310,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -343,7 +343,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -462,7 +462,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -488,7 +488,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -521,7 +521,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -655,7 +655,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -681,7 +681,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -714,7 +714,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -840,7 +840,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -866,7 +866,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -899,7 +899,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1022,7 +1022,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1048,7 +1048,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1081,7 +1081,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1205,7 +1205,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1231,7 +1231,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1264,7 +1264,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1387,7 +1387,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1413,7 +1413,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1446,7 +1446,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1577,7 +1577,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1603,7 +1603,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1636,7 +1636,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", diff --git a/tests/integration/snapshots/logs/sync-metrics_python312.log b/tests/integration/snapshots/logs/sync-metrics_python312.log index 6b33fcb9f..74ebff997 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python312.log +++ b/tests/integration/snapshots/logs/sync-metrics_python312.log @@ -99,7 +99,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -125,7 +125,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -158,7 +158,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -284,7 +284,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -310,7 +310,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -343,7 +343,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -462,7 +462,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -488,7 +488,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -521,7 +521,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -655,7 +655,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -681,7 +681,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -714,7 +714,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -840,7 +840,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -866,7 +866,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -899,7 +899,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1022,7 +1022,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1048,7 +1048,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1081,7 +1081,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1205,7 +1205,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1231,7 +1231,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1264,7 +1264,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1387,7 +1387,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1413,7 +1413,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1446,7 +1446,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1577,7 +1577,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1603,7 +1603,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1636,7 +1636,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", diff --git a/tests/integration/snapshots/logs/sync-metrics_python38.log b/tests/integration/snapshots/logs/sync-metrics_python38.log index 81e776e1b..bd52bc1e8 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python38.log +++ b/tests/integration/snapshots/logs/sync-metrics_python38.log @@ -99,7 +99,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -125,7 +125,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -158,7 +158,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -284,7 +284,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -310,7 +310,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -343,7 +343,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -462,7 +462,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -488,7 +488,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -521,7 +521,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -655,7 +655,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -681,7 +681,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -714,7 +714,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -840,7 +840,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -866,7 +866,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -899,7 +899,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1022,7 +1022,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1048,7 +1048,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1081,7 +1081,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1205,7 +1205,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1231,7 +1231,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1256,7 +1256,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] } HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX -END Duration: XXXX ms Memory Used: XXXX MB { "traces": [ [ @@ -1265,7 +1264,7 @@ END Duration: XXXX ms Memory Used: XXXX MB "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1295,6 +1294,7 @@ END Duration: XXXX ms Memory Used: XXXX MB ] ] } +END Duration: XXXX ms Memory Used: XXXX MB START { "m": "aws.lambda.enhanced.invocations", @@ -1387,7 +1387,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1413,7 +1413,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1446,7 +1446,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1577,7 +1577,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1603,7 +1603,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1636,7 +1636,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", diff --git a/tests/integration/snapshots/logs/sync-metrics_python39.log b/tests/integration/snapshots/logs/sync-metrics_python39.log index 0c7f56825..92a7cd33e 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -99,7 +99,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -125,7 +125,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -158,7 +158,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -284,7 +284,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -310,7 +310,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -335,7 +335,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] } HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX -END Duration: XXXX ms Memory Used: XXXX MB { "traces": [ [ @@ -344,7 +343,7 @@ END Duration: XXXX ms Memory Used: XXXX MB "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -374,6 +373,7 @@ END Duration: XXXX ms Memory Used: XXXX MB ] ] } +END Duration: XXXX ms Memory Used: XXXX MB START { "m": "aws.lambda.enhanced.invocations", @@ -462,7 +462,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -488,7 +488,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -521,7 +521,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -655,7 +655,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -681,7 +681,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -714,7 +714,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -840,7 +840,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -866,7 +866,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -899,7 +899,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1022,7 +1022,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1048,7 +1048,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1081,7 +1081,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1205,7 +1205,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1231,7 +1231,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1264,7 +1264,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1387,7 +1387,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1413,7 +1413,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1446,7 +1446,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1577,7 +1577,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1603,7 +1603,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "GET /", "name": "requests.request", "error": 0, "start": "XXXX", @@ -1636,7 +1636,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "parent_id": "XXXX", "span_id": "XXXX", "service": "integration-tests-python", - "resource": "requests.request", + "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, "start": "XXXX", From 740087421b00aa900b8eec363c59c6066268b1b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?jordan=20gonz=C3=A1lez?= <30836115+duncanista@users.noreply.github.com> Date: Fri, 26 Jan 2024 14:32:40 -0500 Subject: [PATCH 107/403] chore: update build to output directly to path (#410) * update `Dockerfile` and `build_layers.sh` updated script to output directly on build, allowing me to run this locally and in a gitlab job * uncomment needed changes --- Dockerfile | 5 ++++- scripts/build_layers.sh | 8 ++------ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/Dockerfile b/Dockerfile index 2cf569a7f..a2da16f94 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ ARG image -FROM $image +FROM $image as builder ARG runtime @@ -23,3 +23,6 @@ RUN find . -name '*.so' -exec strip -g {} \; RUN rm -rf ./python/lib/$runtime/site-packages/botocore* RUN rm -rf ./python/lib/$runtime/site-packages/setuptools RUN rm -rf ./python/lib/$runtime/site-packages/jsonschema/tests + +FROM scratch +COPY --from=builder /build/python / diff --git a/scripts/build_layers.sh b/scripts/build_layers.sh index ebd0eed37..9794f2bf0 100755 --- a/scripts/build_layers.sh +++ b/scripts/build_layers.sh @@ -49,12 +49,8 @@ function docker_build_zip { --build-arg image=python:$1 \ --build-arg runtime=python$1 \ --platform linux/${arch} \ - --load - - # Run the image by runtime tag and copy the output /build/python to the temp dir - dockerId=$(docker create datadog-lambda-python-${arch}:$1) - docker cp $dockerId:/build/python $temp_dir/python - + --progress=plain \ + -o $temp_dir/python # Zip to destination, and keep directory structure as based in $temp_dir (cd $temp_dir && zip -q -r $destination ./) From 10bcb729b9013a07034bc771e78d2206d55a1f2b Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Fri, 26 Jan 2024 14:34:25 -0500 Subject: [PATCH 108/403] feat: Bump ddtrace to 2.5.1 (#412) * feat: Bump ddtrace to 2.5.0 * feat: actually use 2.5.1 --- poetry.lock | 521 ++++++++++++++++++++++++------------------------- pyproject.toml | 2 +- 2 files changed, 258 insertions(+), 265 deletions(-) diff --git a/poetry.lock b/poetry.lock index c32c4c691..52515d215 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,54 +1,55 @@ -# This file is automatically @generated by Poetry 1.5.0 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.4.2 and should not be changed by hand. [[package]] name = "attrs" -version = "23.1.0" +version = "23.2.0" description = "Classes Without Boilerplate" +category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "attrs-23.1.0-py3-none-any.whl", hash = "sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04"}, - {file = "attrs-23.1.0.tar.gz", hash = "sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015"}, + {file = "attrs-23.2.0-py3-none-any.whl", hash = "sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1"}, + {file = "attrs-23.2.0.tar.gz", hash = "sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30"}, ] -[package.dependencies] -importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} - [package.extras] cov = ["attrs[tests]", "coverage[toml] (>=5.3)"] -dev = ["attrs[docs,tests]", "pre-commit"] +dev = ["attrs[tests]", "pre-commit"] docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope-interface"] tests = ["attrs[tests-no-zope]", "zope-interface"] -tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +tests-mypy = ["mypy (>=1.6)", "pytest-mypy-plugins"] +tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "pytest (>=4.3.0)", "pytest-xdist[psutil]"] [[package]] name = "boto3" -version = "1.29.5" +version = "1.34.28" description = "The AWS SDK for Python" +category = "main" optional = true -python-versions = ">= 3.7" +python-versions = ">= 3.8" files = [ - {file = "boto3-1.29.5-py3-none-any.whl", hash = "sha256:030b0f0faf8d44f97e67a5411644243482f33ebf1c45338bb40662239a16dda4"}, - {file = "boto3-1.29.5.tar.gz", hash = "sha256:76fc6a17781c27558c526e899579ccf530df10eb279261fe7800540f0043917e"}, + {file = "boto3-1.34.28-py3-none-any.whl", hash = "sha256:fb56622ce195c06ae0d15ae9472d44529362a869ad52862a5a28b891530969f9"}, + {file = "boto3-1.34.28.tar.gz", hash = "sha256:9e0dcca7bb0567f7b4b84d1d26c19b217abfe149d19106af7f120f09142688cf"}, ] [package.dependencies] -botocore = ">=1.32.5,<1.33.0" +botocore = ">=1.34.28,<1.35.0" jmespath = ">=0.7.1,<2.0.0" -s3transfer = ">=0.7.0,<0.8.0" +s3transfer = ">=0.10.0,<0.11.0" [package.extras] crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.32.5" +version = "1.34.28" description = "Low-level, data-driven core of boto 3." +category = "main" optional = true -python-versions = ">= 3.7" +python-versions = ">= 3.8" files = [ - {file = "botocore-1.32.5-py3-none-any.whl", hash = "sha256:b8960c955ba275915bf022c54c896c2dac1038289d8a5ace92d1431257c0a439"}, - {file = "botocore-1.32.5.tar.gz", hash = "sha256:75a68f942cd87baff83b3a20dfda11b3aeda48aad32e4dcd6fe8992c0cb0e7db"}, + {file = "botocore-1.34.28-py3-none-any.whl", hash = "sha256:03be8209257ab65f3c8be7377cf8d38bff6a6afbe3d36c72924e48959bb694dc"}, + {file = "botocore-1.34.28.tar.gz", hash = "sha256:45c99ccc6389ab1a87e996a7cc8797c7e41d5ecd9a5757d567ba3a57cb7655e7"}, ] [package.dependencies] @@ -60,23 +61,13 @@ urllib3 = [ ] [package.extras] -crt = ["awscrt (==0.19.12)"] - -[[package]] -name = "bytecode" -version = "0.13.0" -description = "Python module to generate and modify bytecode" -optional = false -python-versions = ">=3.6" -files = [ - {file = "bytecode-0.13.0-py3-none-any.whl", hash = "sha256:e69f92e7d27f99d5d7d76e6a824bd3d9ff857c72b59927aaf87e1a620f67fe50"}, - {file = "bytecode-0.13.0.tar.gz", hash = "sha256:6af3c2f0a31ce05dce41f7eea5cc380e33f5e8fbb7dcee3b52467a00acd52fcd"}, -] +crt = ["awscrt (==0.19.19)"] [[package]] name = "bytecode" version = "0.15.1" description = "Python module to generate and modify bytecode" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -89,33 +80,35 @@ typing-extensions = {version = "*", markers = "python_version < \"3.10\""} [[package]] name = "cattrs" -version = "23.1.2" +version = "23.2.3" description = "Composable complex class support for attrs and dataclasses." +category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "cattrs-23.1.2-py3-none-any.whl", hash = "sha256:b2bb14311ac17bed0d58785e5a60f022e5431aca3932e3fc5cc8ed8639de50a4"}, - {file = "cattrs-23.1.2.tar.gz", hash = "sha256:db1c821b8c537382b2c7c66678c3790091ca0275ac486c76f3c8f3920e83c657"}, + {file = "cattrs-23.2.3-py3-none-any.whl", hash = "sha256:0341994d94971052e9ee70662542699a3162ea1e0c62f7ce1b4a57f563685108"}, + {file = "cattrs-23.2.3.tar.gz", hash = "sha256:a934090d95abaa9e911dac357e3a8699e0b4b14f8529bcc7d2b1ad9d51672b9f"}, ] [package.dependencies] -attrs = ">=20" -exceptiongroup = {version = "*", markers = "python_version < \"3.11\""} -typing_extensions = {version = ">=4.1.0", markers = "python_version < \"3.11\""} +attrs = ">=23.1.0" +exceptiongroup = {version = ">=1.1.1", markers = "python_version < \"3.11\""} +typing-extensions = {version = ">=4.1.0,<4.6.3 || >4.6.3", markers = "python_version < \"3.11\""} [package.extras] -bson = ["pymongo (>=4.2.0,<5.0.0)"] -cbor2 = ["cbor2 (>=5.4.6,<6.0.0)"] -msgpack = ["msgpack (>=1.0.2,<2.0.0)"] -orjson = ["orjson (>=3.5.2,<4.0.0)"] -pyyaml = ["PyYAML (>=6.0,<7.0)"] -tomlkit = ["tomlkit (>=0.11.4,<0.12.0)"] -ujson = ["ujson (>=5.4.0,<6.0.0)"] +bson = ["pymongo (>=4.4.0)"] +cbor2 = ["cbor2 (>=5.4.6)"] +msgpack = ["msgpack (>=1.0.5)"] +orjson = ["orjson (>=3.9.2)"] +pyyaml = ["pyyaml (>=6.0)"] +tomlkit = ["tomlkit (>=0.11.8)"] +ujson = ["ujson (>=5.7.0)"] [[package]] name = "certifi" version = "2023.11.17" description = "Python package for providing Mozilla's CA Bundle." +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -127,6 +120,7 @@ files = [ name = "charset-normalizer" version = "3.3.2" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +category = "main" optional = false python-versions = ">=3.7.0" files = [ @@ -224,71 +218,64 @@ files = [ [[package]] name = "coverage" -version = "7.2.7" +version = "7.4.1" description = "Code coverage measurement for Python" +category = "main" optional = true -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "coverage-7.2.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d39b5b4f2a66ccae8b7263ac3c8170994b65266797fb96cbbfd3fb5b23921db8"}, - {file = "coverage-7.2.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6d040ef7c9859bb11dfeb056ff5b3872436e3b5e401817d87a31e1750b9ae2fb"}, - {file = "coverage-7.2.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba90a9563ba44a72fda2e85302c3abc71c5589cea608ca16c22b9804262aaeb6"}, - {file = "coverage-7.2.7-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e7d9405291c6928619403db1d10bd07888888ec1abcbd9748fdaa971d7d661b2"}, - {file = "coverage-7.2.7-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:31563e97dae5598556600466ad9beea39fb04e0229e61c12eaa206e0aa202063"}, - {file = "coverage-7.2.7-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:ebba1cd308ef115925421d3e6a586e655ca5a77b5bf41e02eb0e4562a111f2d1"}, - {file = "coverage-7.2.7-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:cb017fd1b2603ef59e374ba2063f593abe0fc45f2ad9abdde5b4d83bd922a353"}, - {file = "coverage-7.2.7-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d62a5c7dad11015c66fbb9d881bc4caa5b12f16292f857842d9d1871595f4495"}, - {file = "coverage-7.2.7-cp310-cp310-win32.whl", hash = "sha256:ee57190f24fba796e36bb6d3aa8a8783c643d8fa9760c89f7a98ab5455fbf818"}, - {file = "coverage-7.2.7-cp310-cp310-win_amd64.whl", hash = "sha256:f75f7168ab25dd93110c8a8117a22450c19976afbc44234cbf71481094c1b850"}, - {file = "coverage-7.2.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:06a9a2be0b5b576c3f18f1a241f0473575c4a26021b52b2a85263a00f034d51f"}, - {file = "coverage-7.2.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5baa06420f837184130752b7c5ea0808762083bf3487b5038d68b012e5937dbe"}, - {file = "coverage-7.2.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fdec9e8cbf13a5bf63290fc6013d216a4c7232efb51548594ca3631a7f13c3a3"}, - {file = "coverage-7.2.7-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:52edc1a60c0d34afa421c9c37078817b2e67a392cab17d97283b64c5833f427f"}, - {file = "coverage-7.2.7-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63426706118b7f5cf6bb6c895dc215d8a418d5952544042c8a2d9fe87fcf09cb"}, - {file = "coverage-7.2.7-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:afb17f84d56068a7c29f5fa37bfd38d5aba69e3304af08ee94da8ed5b0865833"}, - {file = "coverage-7.2.7-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:48c19d2159d433ccc99e729ceae7d5293fbffa0bdb94952d3579983d1c8c9d97"}, - {file = "coverage-7.2.7-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0e1f928eaf5469c11e886fe0885ad2bf1ec606434e79842a879277895a50942a"}, - {file = "coverage-7.2.7-cp311-cp311-win32.whl", hash = "sha256:33d6d3ea29d5b3a1a632b3c4e4f4ecae24ef170b0b9ee493883f2df10039959a"}, - {file = "coverage-7.2.7-cp311-cp311-win_amd64.whl", hash = "sha256:5b7540161790b2f28143191f5f8ec02fb132660ff175b7747b95dcb77ac26562"}, - {file = "coverage-7.2.7-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f2f67fe12b22cd130d34d0ef79206061bfb5eda52feb6ce0dba0644e20a03cf4"}, - {file = "coverage-7.2.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a342242fe22407f3c17f4b499276a02b01e80f861f1682ad1d95b04018e0c0d4"}, - {file = "coverage-7.2.7-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:171717c7cb6b453aebac9a2ef603699da237f341b38eebfee9be75d27dc38e01"}, - {file = "coverage-7.2.7-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49969a9f7ffa086d973d91cec8d2e31080436ef0fb4a359cae927e742abfaaa6"}, - {file = "coverage-7.2.7-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b46517c02ccd08092f4fa99f24c3b83d8f92f739b4657b0f146246a0ca6a831d"}, - {file = "coverage-7.2.7-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:a3d33a6b3eae87ceaefa91ffdc130b5e8536182cd6dfdbfc1aa56b46ff8c86de"}, - {file = "coverage-7.2.7-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:976b9c42fb2a43ebf304fa7d4a310e5f16cc99992f33eced91ef6f908bd8f33d"}, - {file = "coverage-7.2.7-cp312-cp312-win32.whl", hash = "sha256:8de8bb0e5ad103888d65abef8bca41ab93721647590a3f740100cd65c3b00511"}, - {file = "coverage-7.2.7-cp312-cp312-win_amd64.whl", hash = "sha256:9e31cb64d7de6b6f09702bb27c02d1904b3aebfca610c12772452c4e6c21a0d3"}, - {file = "coverage-7.2.7-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:58c2ccc2f00ecb51253cbe5d8d7122a34590fac9646a960d1430d5b15321d95f"}, - {file = "coverage-7.2.7-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d22656368f0e6189e24722214ed8d66b8022db19d182927b9a248a2a8a2f67eb"}, - {file = "coverage-7.2.7-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a895fcc7b15c3fc72beb43cdcbdf0ddb7d2ebc959edac9cef390b0d14f39f8a9"}, - {file = "coverage-7.2.7-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e84606b74eb7de6ff581a7915e2dab7a28a0517fbe1c9239eb227e1354064dcd"}, - {file = "coverage-7.2.7-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:0a5f9e1dbd7fbe30196578ca36f3fba75376fb99888c395c5880b355e2875f8a"}, - {file = "coverage-7.2.7-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:419bfd2caae268623dd469eff96d510a920c90928b60f2073d79f8fe2bbc5959"}, - {file = "coverage-7.2.7-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:2aee274c46590717f38ae5e4650988d1af340fe06167546cc32fe2f58ed05b02"}, - {file = "coverage-7.2.7-cp37-cp37m-win32.whl", hash = "sha256:61b9a528fb348373c433e8966535074b802c7a5d7f23c4f421e6c6e2f1697a6f"}, - {file = "coverage-7.2.7-cp37-cp37m-win_amd64.whl", hash = "sha256:b1c546aca0ca4d028901d825015dc8e4d56aac4b541877690eb76490f1dc8ed0"}, - {file = "coverage-7.2.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:54b896376ab563bd38453cecb813c295cf347cf5906e8b41d340b0321a5433e5"}, - {file = "coverage-7.2.7-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3d376df58cc111dc8e21e3b6e24606b5bb5dee6024f46a5abca99124b2229ef5"}, - {file = "coverage-7.2.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e330fc79bd7207e46c7d7fd2bb4af2963f5f635703925543a70b99574b0fea9"}, - {file = "coverage-7.2.7-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e9d683426464e4a252bf70c3498756055016f99ddaec3774bf368e76bbe02b6"}, - {file = "coverage-7.2.7-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d13c64ee2d33eccf7437961b6ea7ad8673e2be040b4f7fd4fd4d4d28d9ccb1e"}, - {file = "coverage-7.2.7-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b7aa5f8a41217360e600da646004f878250a0d6738bcdc11a0a39928d7dc2050"}, - {file = "coverage-7.2.7-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8fa03bce9bfbeeef9f3b160a8bed39a221d82308b4152b27d82d8daa7041fee5"}, - {file = "coverage-7.2.7-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:245167dd26180ab4c91d5e1496a30be4cd721a5cf2abf52974f965f10f11419f"}, - {file = "coverage-7.2.7-cp38-cp38-win32.whl", hash = "sha256:d2c2db7fd82e9b72937969bceac4d6ca89660db0a0967614ce2481e81a0b771e"}, - {file = "coverage-7.2.7-cp38-cp38-win_amd64.whl", hash = "sha256:2e07b54284e381531c87f785f613b833569c14ecacdcb85d56b25c4622c16c3c"}, - {file = "coverage-7.2.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:537891ae8ce59ef63d0123f7ac9e2ae0fc8b72c7ccbe5296fec45fd68967b6c9"}, - {file = "coverage-7.2.7-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:06fb182e69f33f6cd1d39a6c597294cff3143554b64b9825d1dc69d18cc2fff2"}, - {file = "coverage-7.2.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:201e7389591af40950a6480bd9edfa8ed04346ff80002cec1a66cac4549c1ad7"}, - {file = "coverage-7.2.7-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f6951407391b639504e3b3be51b7ba5f3528adbf1a8ac3302b687ecababf929e"}, - {file = "coverage-7.2.7-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f48351d66575f535669306aa7d6d6f71bc43372473b54a832222803eb956fd1"}, - {file = "coverage-7.2.7-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b29019c76039dc3c0fd815c41392a044ce555d9bcdd38b0fb60fb4cd8e475ba9"}, - {file = "coverage-7.2.7-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:81c13a1fc7468c40f13420732805a4c38a105d89848b7c10af65a90beff25250"}, - {file = "coverage-7.2.7-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:975d70ab7e3c80a3fe86001d8751f6778905ec723f5b110aed1e450da9d4b7f2"}, - {file = "coverage-7.2.7-cp39-cp39-win32.whl", hash = "sha256:7ee7d9d4822c8acc74a5e26c50604dff824710bc8de424904c0982e25c39c6cb"}, - {file = "coverage-7.2.7-cp39-cp39-win_amd64.whl", hash = "sha256:eb393e5ebc85245347950143969b241d08b52b88a3dc39479822e073a1a8eb27"}, - {file = "coverage-7.2.7-pp37.pp38.pp39-none-any.whl", hash = "sha256:b7b4c971f05e6ae490fef852c218b0e79d4e52f79ef0c8475566584a8fb3e01d"}, - {file = "coverage-7.2.7.tar.gz", hash = "sha256:924d94291ca674905fe9481f12294eb11f2d3d3fd1adb20314ba89e94f44ed59"}, + {file = "coverage-7.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:077d366e724f24fc02dbfe9d946534357fda71af9764ff99d73c3c596001bbd7"}, + {file = "coverage-7.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0193657651f5399d433c92f8ae264aff31fc1d066deee4b831549526433f3f61"}, + {file = "coverage-7.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d17bbc946f52ca67adf72a5ee783cd7cd3477f8f8796f59b4974a9b59cacc9ee"}, + {file = "coverage-7.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a3277f5fa7483c927fe3a7b017b39351610265308f5267ac6d4c2b64cc1d8d25"}, + {file = "coverage-7.4.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6dceb61d40cbfcf45f51e59933c784a50846dc03211054bd76b421a713dcdf19"}, + {file = "coverage-7.4.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:6008adeca04a445ea6ef31b2cbaf1d01d02986047606f7da266629afee982630"}, + {file = "coverage-7.4.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:c61f66d93d712f6e03369b6a7769233bfda880b12f417eefdd4f16d1deb2fc4c"}, + {file = "coverage-7.4.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b9bb62fac84d5f2ff523304e59e5c439955fb3b7f44e3d7b2085184db74d733b"}, + {file = "coverage-7.4.1-cp310-cp310-win32.whl", hash = "sha256:f86f368e1c7ce897bf2457b9eb61169a44e2ef797099fb5728482b8d69f3f016"}, + {file = "coverage-7.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:869b5046d41abfea3e381dd143407b0d29b8282a904a19cb908fa24d090cc018"}, + {file = "coverage-7.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b8ffb498a83d7e0305968289441914154fb0ef5d8b3157df02a90c6695978295"}, + {file = "coverage-7.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3cacfaefe6089d477264001f90f55b7881ba615953414999c46cc9713ff93c8c"}, + {file = "coverage-7.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d6850e6e36e332d5511a48a251790ddc545e16e8beaf046c03985c69ccb2676"}, + {file = "coverage-7.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:18e961aa13b6d47f758cc5879383d27b5b3f3dcd9ce8cdbfdc2571fe86feb4dd"}, + {file = "coverage-7.4.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dfd1e1b9f0898817babf840b77ce9fe655ecbe8b1b327983df485b30df8cc011"}, + {file = "coverage-7.4.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:6b00e21f86598b6330f0019b40fb397e705135040dbedc2ca9a93c7441178e74"}, + {file = "coverage-7.4.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:536d609c6963c50055bab766d9951b6c394759190d03311f3e9fcf194ca909e1"}, + {file = "coverage-7.4.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7ac8f8eb153724f84885a1374999b7e45734bf93a87d8df1e7ce2146860edef6"}, + {file = "coverage-7.4.1-cp311-cp311-win32.whl", hash = "sha256:f3771b23bb3675a06f5d885c3630b1d01ea6cac9e84a01aaf5508706dba546c5"}, + {file = "coverage-7.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:9d2f9d4cc2a53b38cabc2d6d80f7f9b7e3da26b2f53d48f05876fef7956b6968"}, + {file = "coverage-7.4.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f68ef3660677e6624c8cace943e4765545f8191313a07288a53d3da188bd8581"}, + {file = "coverage-7.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:23b27b8a698e749b61809fb637eb98ebf0e505710ec46a8aa6f1be7dc0dc43a6"}, + {file = "coverage-7.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e3424c554391dc9ef4a92ad28665756566a28fecf47308f91841f6c49288e66"}, + {file = "coverage-7.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e0860a348bf7004c812c8368d1fc7f77fe8e4c095d661a579196a9533778e156"}, + {file = "coverage-7.4.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe558371c1bdf3b8fa03e097c523fb9645b8730399c14fe7721ee9c9e2a545d3"}, + {file = "coverage-7.4.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3468cc8720402af37b6c6e7e2a9cdb9f6c16c728638a2ebc768ba1ef6f26c3a1"}, + {file = "coverage-7.4.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:02f2edb575d62172aa28fe00efe821ae31f25dc3d589055b3fb64d51e52e4ab1"}, + {file = "coverage-7.4.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ca6e61dc52f601d1d224526360cdeab0d0712ec104a2ce6cc5ccef6ed9a233bc"}, + {file = "coverage-7.4.1-cp312-cp312-win32.whl", hash = "sha256:ca7b26a5e456a843b9b6683eada193fc1f65c761b3a473941efe5a291f604c74"}, + {file = "coverage-7.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:85ccc5fa54c2ed64bd91ed3b4a627b9cce04646a659512a051fa82a92c04a448"}, + {file = "coverage-7.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8bdb0285a0202888d19ec6b6d23d5990410decb932b709f2b0dfe216d031d218"}, + {file = "coverage-7.4.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:918440dea04521f499721c039863ef95433314b1db00ff826a02580c1f503e45"}, + {file = "coverage-7.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:379d4c7abad5afbe9d88cc31ea8ca262296480a86af945b08214eb1a556a3e4d"}, + {file = "coverage-7.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b094116f0b6155e36a304ff912f89bbb5067157aff5f94060ff20bbabdc8da06"}, + {file = "coverage-7.4.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2f5968608b1fe2a1d00d01ad1017ee27efd99b3437e08b83ded9b7af3f6f766"}, + {file = "coverage-7.4.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:10e88e7f41e6197ea0429ae18f21ff521d4f4490aa33048f6c6f94c6045a6a75"}, + {file = "coverage-7.4.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a4a3907011d39dbc3e37bdc5df0a8c93853c369039b59efa33a7b6669de04c60"}, + {file = "coverage-7.4.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6d224f0c4c9c98290a6990259073f496fcec1b5cc613eecbd22786d398ded3ad"}, + {file = "coverage-7.4.1-cp38-cp38-win32.whl", hash = "sha256:23f5881362dcb0e1a92b84b3c2809bdc90db892332daab81ad8f642d8ed55042"}, + {file = "coverage-7.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:a07f61fc452c43cd5328b392e52555f7d1952400a1ad09086c4a8addccbd138d"}, + {file = "coverage-7.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8e738a492b6221f8dcf281b67129510835461132b03024830ac0e554311a5c54"}, + {file = "coverage-7.4.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:46342fed0fff72efcda77040b14728049200cbba1279e0bf1188f1f2078c1d70"}, + {file = "coverage-7.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9641e21670c68c7e57d2053ddf6c443e4f0a6e18e547e86af3fad0795414a628"}, + {file = "coverage-7.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aeb2c2688ed93b027eb0d26aa188ada34acb22dceea256d76390eea135083950"}, + {file = "coverage-7.4.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d12c923757de24e4e2110cf8832d83a886a4cf215c6e61ed506006872b43a6d1"}, + {file = "coverage-7.4.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0491275c3b9971cdbd28a4595c2cb5838f08036bca31765bad5e17edf900b2c7"}, + {file = "coverage-7.4.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:8dfc5e195bbef80aabd81596ef52a1277ee7143fe419efc3c4d8ba2754671756"}, + {file = "coverage-7.4.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:1a78b656a4d12b0490ca72651fe4d9f5e07e3c6461063a9b6265ee45eb2bdd35"}, + {file = "coverage-7.4.1-cp39-cp39-win32.whl", hash = "sha256:f90515974b39f4dea2f27c0959688621b46d96d5a626cf9c53dbc653a895c05c"}, + {file = "coverage-7.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:64e723ca82a84053dd7bfcc986bdb34af8d9da83c521c19d6b472bc6880e191a"}, + {file = "coverage-7.4.1-pp38.pp39.pp310-none-any.whl", hash = "sha256:32a8d985462e37cfdab611a6f95b09d7c091d07668fdc26e47a725ee575fe166"}, + {file = "coverage-7.4.1.tar.gz", hash = "sha256:1ed4b95480952b1a26d863e546fa5094564aa0065e1e5f0d4d0041f293251d04"}, ] [package.extras] @@ -296,13 +283,14 @@ toml = ["tomli"] [[package]] name = "datadog" -version = "0.47.0" +version = "0.48.0" description = "The Datadog Python library" +category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ - {file = "datadog-0.47.0-py2.py3-none-any.whl", hash = "sha256:a45ec997ab554208837e8c44d81d0e1456539dc14da5743687250e028bc809b7"}, - {file = "datadog-0.47.0.tar.gz", hash = "sha256:47be3b2c3d709a7f5b709eb126ed4fe6cc7977d618fe5c158dd89c2a9f7d9916"}, + {file = "datadog-0.48.0-py2.py3-none-any.whl", hash = "sha256:c3f819e2dc632a546a5b4e8d45409e996d4fa18c60df7814c82eda548e0cca59"}, + {file = "datadog-0.48.0.tar.gz", hash = "sha256:d4d661358c3e7f801fbfe15118f5ccf08b9bd9b1f45b8b910605965283edad64"}, ] [package.dependencies] @@ -312,6 +300,7 @@ requests = ">=2.6.0" name = "ddsketch" version = "2.0.4" description = "Distributed quantile sketches" +category = "main" optional = false python-versions = ">=2.7" files = [ @@ -325,83 +314,80 @@ six = "*" [[package]] name = "ddtrace" -version = "2.3.1" +version = "2.5.1" description = "Datadog APM client library" +category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "ddtrace-2.3.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:556a046413024cf53ebb0256bbf957692a5e417599e04dac5793e659d08c398c"}, - {file = "ddtrace-2.3.1-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:6066f1deddb454b8e098e5a0eb53ab36d81344209fdf6bec94767358da190294"}, - {file = "ddtrace-2.3.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb2b950901845b966a7805ff49a9ad58dcd5e9c27b5b804079977a1309c5b4fb"}, - {file = "ddtrace-2.3.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:05b0da47bc98a9802faa2557e83c096868c4ef249c3d9a43f8e5daf91d1c8e4f"}, - {file = "ddtrace-2.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0183c5178112604eb012653fd17d0947e6e2f17325f93b1e32cc6af05ceffd0"}, - {file = "ddtrace-2.3.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:462eb671cd78780af6e42b43f2bc451537a0d283db054c175348e9b3a1fcaff4"}, - {file = "ddtrace-2.3.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:9b5284786a0912a9739665a33760f561423524e2d250c0b0bb2dedf6edba2da5"}, - {file = "ddtrace-2.3.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:dbfb1ade5725a63f21945ab8234e64e46645e98a7deb4342eddf6e86d0f9145c"}, - {file = "ddtrace-2.3.1-cp310-cp310-win32.whl", hash = "sha256:1f51732c4181e5b671a5ae3c6c786ce3b9fd2abacad2d4249d53a55564906902"}, - {file = "ddtrace-2.3.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f0ae5814fbb51b4aba4d4f4b5c1fd2110790b04d4141cf4a03291566d1d5b0f"}, - {file = "ddtrace-2.3.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:24f4df55fd952182efe6815748db4675540f6fb674d9838dfa680dec1fdd176f"}, - {file = "ddtrace-2.3.1-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:04b4e476f78389021b50b3ae5c4d494bbbd033a300e93253fe1f873a67611436"}, - {file = "ddtrace-2.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:711978dd14c0aca7eaf90587b8608c891b82e1767fc6f2be7d82b67d56c8d580"}, - {file = "ddtrace-2.3.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bfa6b1b2698029b7b1f8cc351869397c33bff996159660a00ca254d9fcc5b78d"}, - {file = "ddtrace-2.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0dd7295921009ccc61f5325cc3d30fc6182396fc8e598975b372bdf94fd16077"}, - {file = "ddtrace-2.3.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:94aa6a2e16d05cbb2d7a9a7553ca9b638e5b200e0d80fd027179e6af0faf59a2"}, - {file = "ddtrace-2.3.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:62f67040ef16149a46c8506d92a2824d7ded39427a51947a3651d572bb7a379f"}, - {file = "ddtrace-2.3.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:02622c4b8d5497f6367d9ccad38ac8c59d46fc3373034be114474fb01b1a28e6"}, - {file = "ddtrace-2.3.1-cp311-cp311-win32.whl", hash = "sha256:1d13ec5393802a619f922fb37a9f534911f44554bd0434dfd2d8db4e8897649e"}, - {file = "ddtrace-2.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:36b3427136f61d499f3fd307f97ae168a4d2728887e1922204e509a5aa72a4a3"}, - {file = "ddtrace-2.3.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:ac47d141e03c8bea3953fc5f51ac284de9ff4e6325faf2554b003ac906bc4da8"}, - {file = "ddtrace-2.3.1-cp312-cp312-macosx_11_0_x86_64.whl", hash = "sha256:dd23e10b4cac1cf26e64d4d1ec1d6e173e609a207f5520469326f5cff6c7e462"}, - {file = "ddtrace-2.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a31cddf750d7a28c886c194624c6be5a4475de064489002df898731f27f3d16"}, - {file = "ddtrace-2.3.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3dedd8097e58519f47f8908fe684f37c8f9722ce4b0614de78d9f39b83621dc7"}, - {file = "ddtrace-2.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:367aed800b78fb4d2af332c44d07d7126b1dbf758af422299f9a177811ec723d"}, - {file = "ddtrace-2.3.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ca4dea67facdeba44040d9af8eeff96fb9a35a2b1cff93255e33a4d7250881b9"}, - {file = "ddtrace-2.3.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:a661e133d451416741c6c2ad96baa417a1267204975bfb0d247cab748ecc3ed1"}, - {file = "ddtrace-2.3.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:556f60d6c9bbfc2da6d7f6751625fa3ae597c26bb8bbe74953db0d2d74f93b04"}, - {file = "ddtrace-2.3.1-cp312-cp312-win32.whl", hash = "sha256:261e20b9e9a363ec2dc728f8a009a2b1d3c9de4fbe07438b5600902a285bb179"}, - {file = "ddtrace-2.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:119be400024efff2f0eb66216b2aa3d2a700cd9b4a07605f7f9c94eb5e4b4cb5"}, - {file = "ddtrace-2.3.1-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:a66d0e0cccfa2fb207fc9a4d9ca6ab235a768f130129d6bb1dd256b7b3d34305"}, - {file = "ddtrace-2.3.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c465e43b96380f09e1e8f2d0f9cb3b78b4ef2bb211f25b57c925bb79f53cb00c"}, - {file = "ddtrace-2.3.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c3eaaf8c5b63e07533822425b3402552c75adf091a1f0a6bf949725fa610c779"}, - {file = "ddtrace-2.3.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:600551ecd232df060203714dc1acba4809e9194fc91a7c638b68c548e92af171"}, - {file = "ddtrace-2.3.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:837232d708956a5d595a3618641c188a5844d663e0f77b1461f20c83f74a21c0"}, - {file = "ddtrace-2.3.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:ddf3043581e2424fc3d4271ee00a038651a4ec9d2610eeaa2d6645095c9f4960"}, - {file = "ddtrace-2.3.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:63c6b28096e273431da923a8dfc0f54f7d472c3c78f0a5c4c99ed7e210b9c855"}, - {file = "ddtrace-2.3.1-cp37-cp37m-win32.whl", hash = "sha256:8b09a42cc975f798bfda9b8d8bf5c8c813022bfcf48b9e0e5e90caf4cf33ee8f"}, - {file = "ddtrace-2.3.1-cp37-cp37m-win_amd64.whl", hash = "sha256:66b49153c85423d5e99b1f364cc3b4a3ffedf35be0f3eb840f3bacd7c58100e8"}, - {file = "ddtrace-2.3.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:81f0bd1d50c8fc7d8a96e38f746ca4421fa3b52991f0df44e5e9faeb5a934c2b"}, - {file = "ddtrace-2.3.1-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:37d600d582a5046f82cf77ae9247cf15cf62cf23c15739c5f23c30db2aa092c9"}, - {file = "ddtrace-2.3.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:60a62cfa22695cb1392c617910fb389c7240fa9dae0b5792bd87ff3ae82d2c45"}, - {file = "ddtrace-2.3.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1bdf55fa4a842f9786ca30434b31bf6f877e95af86b6fb7a5a540ce592f566b7"}, - {file = "ddtrace-2.3.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63032c6a76173cab03c021e65c1997a12c0c571263caf00ec18b82c2293c49be"}, - {file = "ddtrace-2.3.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:516b830e52bc8ac2988f11a06a6c6a5296f73b119e99e8ee55a34e531389acea"}, - {file = "ddtrace-2.3.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:86e7764759043439c3f672f998f60bb9118fc4a6d7f603c762b125471b17f549"}, - {file = "ddtrace-2.3.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:87ae203dd8fa3e04f8855786ae4b2f103bc66c9f2368ee2b4e620bccdde9b34d"}, - {file = "ddtrace-2.3.1-cp38-cp38-win32.whl", hash = "sha256:f42fa2fa6f2cd9e3673a3bd7469439f5bea0ee86456706db1b50dc20b10682a6"}, - {file = "ddtrace-2.3.1-cp38-cp38-win_amd64.whl", hash = "sha256:2a3ad8e53c45c3329f939fe921714dfe76f5737e48f5b37a5422b1573a20ce44"}, - {file = "ddtrace-2.3.1-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:5adff6a5d60239e64062ad5efb72631c47c7fb8310ebea6d817f0208a7585074"}, - {file = "ddtrace-2.3.1-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:84012bc7d27dd3c4cd591bbaf0a0cc0413ebc6c838637ca5a76bacb354e2518f"}, - {file = "ddtrace-2.3.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3cc2596b26701c9e3a362195f79ddcf54b491a8ea13277ed16697da9ad943646"}, - {file = "ddtrace-2.3.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:986113f7eb4d8a8e87216b55e6cc40b578f84a5730241822af3f34cc61e42710"}, - {file = "ddtrace-2.3.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd0cdbc6d81e556b6af0875b0bb2ac77d3cf0a0c5da8faa014da1936e1e0adc2"}, - {file = "ddtrace-2.3.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9e8eb17ef8ca2fc9464216290969cff3bbf8df00860ebb219328804125b43bd1"}, - {file = "ddtrace-2.3.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:fc21e46c5e9d077022b7634ae247d15d2318cbb347f6756607dfd64ff5941797"}, - {file = "ddtrace-2.3.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:51bf7e3e5c80ef0daadd22c26e7c24c90fc4b4a7662dec1a3d9d8e0db68f3c09"}, - {file = "ddtrace-2.3.1-cp39-cp39-win32.whl", hash = "sha256:2a5f040c0eb101f82a9cd8b8b0279e8583bb0a62fd39b879197d53b71a5d6dbe"}, - {file = "ddtrace-2.3.1-cp39-cp39-win_amd64.whl", hash = "sha256:ff708683becb18771cb31ae5fb5d1430ac5031a082106e0dabac46a1fd6f832e"}, - {file = "ddtrace-2.3.1.tar.gz", hash = "sha256:273a0e98f93e7231708b30067768d80df9bc93a505de93500f30c6da24b70a7b"}, + {file = "ddtrace-2.5.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:3bb27b10bcb55ad392027ac37ddc86cbea04e38f9963b18e4b7218a59dbc9b6d"}, + {file = "ddtrace-2.5.1-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:bde40dd9cdff53de6535f9ae1e41a4d37aed0eb113e4597fde8f48dec4629291"}, + {file = "ddtrace-2.5.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e02e3d15c2a3b63bd5a05fed429f7d77d41bc818b7a18554ac0f36104de28ccf"}, + {file = "ddtrace-2.5.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e746cb76c41602173ed1d995929218c23cd41f52f29ac2cdf6d44f04b593a5b1"}, + {file = "ddtrace-2.5.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f98240890feca039ce05310bbe91cb842dfc43277ca0560e6acd483753a90cbd"}, + {file = "ddtrace-2.5.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:ae7ed838023ce3d30d2cd071bd6113525b6245e8c25c1f8f9ff32b76fb7b7394"}, + {file = "ddtrace-2.5.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e4b2ab5094e7d4cbf3a5143716e400b3b4af81e777e4afb30a9374394b7a8238"}, + {file = "ddtrace-2.5.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:da1db3e7b5d45c54daf5b422333a03711dcdb448d7b122a689841c450797baa6"}, + {file = "ddtrace-2.5.1-cp310-cp310-win32.whl", hash = "sha256:e0eda4c5f4cc7219361503fd05c1f0bbb6c70d73de73805d062becf323055ffc"}, + {file = "ddtrace-2.5.1-cp310-cp310-win_amd64.whl", hash = "sha256:aeb3a6358e702c7797fc6c447f2a2e5873dc207e65176bb6080608e7d2662a15"}, + {file = "ddtrace-2.5.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:aecb70d89e3662aa32fc42a271dcd90dde654902ccb97fbca2e5c52dfd10276d"}, + {file = "ddtrace-2.5.1-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:dc81597a7bf44d48ce1317e1dd62b0329eea1cf3a22cb1730273593bd3cf9dc6"}, + {file = "ddtrace-2.5.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79e9f9db08a0bd3751503d4e215e04780e5d59d084f43cb54cc35089c4e08c57"}, + {file = "ddtrace-2.5.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d971804470cb34a3580dd701432721678c0c361c75bc580cf2588f42fd13f0b9"}, + {file = "ddtrace-2.5.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c8a936345d53f5290c9557eac5ac7d90218cd45e7c92215f1ee3eb1de309fe46"}, + {file = "ddtrace-2.5.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:eee1eb5ef049b8667d0d53cacfc3c79b5fe978acbd5a59135cd4e1ed59b31be9"}, + {file = "ddtrace-2.5.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:56474f8756cb2a6b708c79a62227b5b0bc235d74099361a95ea225646dbbf230"}, + {file = "ddtrace-2.5.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:06c8b33099285db7fb7dd4b6dffae16b7d88d13231b00104e29c85d925d7359d"}, + {file = "ddtrace-2.5.1-cp311-cp311-win32.whl", hash = "sha256:209ac6ad4656869aecaa7794444d166c741200330843f555f4f8161643ea7a8b"}, + {file = "ddtrace-2.5.1-cp311-cp311-win_amd64.whl", hash = "sha256:418685567d33a27ac476756d73dfa81c74d40099f28dc5af61e3ad8cdaa6596d"}, + {file = "ddtrace-2.5.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:3a27a5cd2eefe98243e185d26cba380960819f43b1d214c77af6ba15699cd8ae"}, + {file = "ddtrace-2.5.1-cp312-cp312-macosx_11_0_x86_64.whl", hash = "sha256:16479b5e04bdb0400898a14b2208247955fd599f9809d7f84d5055557258b6f2"}, + {file = "ddtrace-2.5.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea1a5f908abd988e6f70595c31f4a0be18bbd780558c506640ce2751397c9d19"}, + {file = "ddtrace-2.5.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:72593b98093d3de456cd47185e6dbb851b77b104cd108a16d6339ff3102c1581"}, + {file = "ddtrace-2.5.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e7d1f311779369537148c124528265a7d7d45f4a4ad5304d4919c13d6216eba0"}, + {file = "ddtrace-2.5.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:06a2f4fe57eae9e5a54bd6cf7fad6e34c1c7205ce78a65c2eeb10bd00b610538"}, + {file = "ddtrace-2.5.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:45fc94bfd615c1c64f05e55b760289638de7149020e517af8cefca5151efbbc3"}, + {file = "ddtrace-2.5.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4d10f6e5113d757fef994b9d8db89c7fa270cbb8aec99b75527c460217e5f2a4"}, + {file = "ddtrace-2.5.1-cp312-cp312-win32.whl", hash = "sha256:7500956f12f55f51199b96cdbc6724adb627576dc968c8d36dbc646fc91cd291"}, + {file = "ddtrace-2.5.1-cp312-cp312-win_amd64.whl", hash = "sha256:3302bc89ccdecfbbd907766cbd4e083e5d0df1cf075cd49b07ae5f1c25987187"}, + {file = "ddtrace-2.5.1-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:0c845623008231788aca5e8e27e215d638999de0a82af58a3eebef74b8dd3100"}, + {file = "ddtrace-2.5.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:988582eb12ade7ba4f4bf4a09e5fde8f05a005ffc1784381fd258720354f80bb"}, + {file = "ddtrace-2.5.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2110dea2b2390f799516cfe0611e4727939cf3139186668786ad57bbcea70f08"}, + {file = "ddtrace-2.5.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d8adf00eec47ecd78216903b7c6ec23d533aa0302120ca35d6c35836d92e7ab"}, + {file = "ddtrace-2.5.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:878eed15287aebcc7b776a40392dc1794b12999f561c5872489ad1426df87914"}, + {file = "ddtrace-2.5.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:1a83033183a1747190a7528de8eb9da70392e227288f6d32f57800747c9379cc"}, + {file = "ddtrace-2.5.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:80b21572dbb3d781360987468cd03dacd49179dd703e66d4fdeb524369f94da3"}, + {file = "ddtrace-2.5.1-cp37-cp37m-win32.whl", hash = "sha256:7d7511a9933a087f4603fb4d9c09d0f8a23b8bfdc2c958d7b01d255795d9f087"}, + {file = "ddtrace-2.5.1-cp37-cp37m-win_amd64.whl", hash = "sha256:69327a9d1488dee70bc6ba052c76bd2f73d52767de890edf2997c0e9b3711316"}, + {file = "ddtrace-2.5.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:1427aa0914a20f18b5a7f075c7f1f3c79ded434cfe8fd658110ba43c0490488a"}, + {file = "ddtrace-2.5.1-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:8152a850af06a10c631e8725bf677da2867705c2c4ea4bcd2911837798870050"}, + {file = "ddtrace-2.5.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2277b3b468479d2cfdef597030b029b217528a5bf986e94b707b8a346e68dd21"}, + {file = "ddtrace-2.5.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fafb2235b87141bddd03b38b225ef3468ec821d9c4e5fd0c42b1d27b30f6e9c9"}, + {file = "ddtrace-2.5.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10fa3443168545286c140bfef7a59957c87d89971650788010a2e19352a8f65e"}, + {file = "ddtrace-2.5.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:af0eccf9ac9d9e7557cf52d2bfe549ea02d3b41b81407ebd70a11b079d15a160"}, + {file = "ddtrace-2.5.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:49347e198e82025679c82f8880e029e2dec80f48f6fcc2bd30d64865f6c8c98f"}, + {file = "ddtrace-2.5.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:66dec725d1abf764736a73ee04e885128abb7d6c6ca0ef6935888ba5610ef292"}, + {file = "ddtrace-2.5.1-cp38-cp38-win32.whl", hash = "sha256:cf0cd0b7e65efb91ffacf5987d73fd1505bead9162c05d4a7bc0ff009414621e"}, + {file = "ddtrace-2.5.1-cp38-cp38-win_amd64.whl", hash = "sha256:38a4419916ea6496aa6ee49c13280da825d9863e2a4bce98d6c6820da8d51678"}, + {file = "ddtrace-2.5.1-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:5e2ed51c5fa9247fa3122d8f615c157d0955e2d673b1e76da2578ecf313eb6cf"}, + {file = "ddtrace-2.5.1-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:8953b2c39a0ca5fb4d742df346a9ed53d100ac6d50c6fd68416eb6ebadf9025e"}, + {file = "ddtrace-2.5.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d35cc4e93283ad3f6e96be99de1ba8adc7ef503d995a3dd7808aa242bbed28cc"}, + {file = "ddtrace-2.5.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f79c16a430fc1b4fb18b881106368f09383f293abf5366d96c1155aad320a677"}, + {file = "ddtrace-2.5.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf8d46467e456b0f2682952b4b3835e996aaae77e26455f150c35dde223ff0fb"}, + {file = "ddtrace-2.5.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f73d297c4528c880c0d35a2e43f2c3703662e31a5e527a0d33ee9c20e7dba530"}, + {file = "ddtrace-2.5.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:ed4fcda36dd740693314bcaa4feddb566b2ccd835c3ac6aad42f36525280cc1e"}, + {file = "ddtrace-2.5.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d535cdfc9e34e3a7972420c88a9c88f399619867f9774f09ff3f92a57136e199"}, + {file = "ddtrace-2.5.1-cp39-cp39-win32.whl", hash = "sha256:1d7b4f7aeb9dffe357f00f516fa7c800c9a76ff29045edfb381ac1ee4a228b34"}, + {file = "ddtrace-2.5.1-cp39-cp39-win_amd64.whl", hash = "sha256:bebae8b500c2b6d641d0a312b4a0c1e222c2ba093c3db6e4b38315a6c5f819da"}, + {file = "ddtrace-2.5.1.tar.gz", hash = "sha256:c78da78418a658b1ba1880ffe6477874aa1f26a23f26db98e0f012b07a1d3998"}, ] [package.dependencies] attrs = ">=20" -bytecode = [ - {version = ">=0.13.0,<0.14.0", markers = "python_version == \"3.7\""}, - {version = "*", markers = "python_version >= \"3.8\""}, -] +bytecode = {version = "*", markers = "python_version >= \"3.8\""} cattrs = "*" ddsketch = ">=2.0.1" envier = "*" -importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} opentelemetry-api = ">=1" protobuf = ">=3" setuptools = {version = "*", markers = "python_version >= \"3.12\""} @@ -416,6 +402,7 @@ opentracing = ["opentracing (>=2.0.0)"] name = "deprecated" version = "1.2.14" description = "Python @deprecated decorator to deprecate old python classes, functions or methods." +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -431,13 +418,14 @@ dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "sphinx (<2)", "tox"] [[package]] name = "envier" -version = "0.4.0" +version = "0.5.1" description = "Python application configuration via the environment" +category = "main" optional = false -python-versions = ">=2.7" +python-versions = ">=3.7" files = [ - {file = "envier-0.4.0-py3-none-any.whl", hash = "sha256:7b91af0f16ea3e56d91ec082f038987e81b441fc19c657a8b8afe0909740a706"}, - {file = "envier-0.4.0.tar.gz", hash = "sha256:e68dcd1ed67d8b6313883e27dff3e701b7fba944d2ed4b7f53d0cc2e12364a82"}, + {file = "envier-0.5.1-py3-none-any.whl", hash = "sha256:b45ef6051fea33d0c32a64e186bff2cfb446e2242d6781216c9bc9ce708c5909"}, + {file = "envier-0.5.1.tar.gz", hash = "sha256:bd5ccf707447973ea0f4125b7df202ba415ad888bcdcb8df80e0b002ee11ffdb"}, ] [package.extras] @@ -447,6 +435,7 @@ mypy = ["mypy"] name = "exceptiongroup" version = "1.2.0" description = "Backport of PEP 654 (exception groups)" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -459,69 +448,58 @@ test = ["pytest (>=6)"] [[package]] name = "flake8" -version = "3.9.2" +version = "5.0.4" description = "the modular source code checker: pep8 pyflakes and co" +category = "main" optional = true -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" -files = [ - {file = "flake8-3.9.2-py2.py3-none-any.whl", hash = "sha256:bf8fd333346d844f616e8d47905ef3a3384edae6b4e9beb0c5101e25e3110907"}, - {file = "flake8-3.9.2.tar.gz", hash = "sha256:07528381786f2a6237b061f6e96610a4167b226cb926e2aa2b6b1d78057c576b"}, -] - -[package.dependencies] -importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} -mccabe = ">=0.6.0,<0.7.0" -pycodestyle = ">=2.7.0,<2.8.0" -pyflakes = ">=2.3.0,<2.4.0" - -[[package]] -name = "httpretty" -version = "0.9.7" -description = "HTTP client mock for Python" -optional = true -python-versions = "*" +python-versions = ">=3.6.1" files = [ - {file = "httpretty-0.9.7.tar.gz", hash = "sha256:66216f26b9d2c52e81808f3e674a6fb65d4bf719721394a1a9be926177e55fbe"}, + {file = "flake8-5.0.4-py2.py3-none-any.whl", hash = "sha256:7a1cf6b73744f5806ab95e526f6f0d8c01c66d7bbe349562d22dfca20610b248"}, + {file = "flake8-5.0.4.tar.gz", hash = "sha256:6fbe320aad8d6b95cec8b8e47bc933004678dc63095be98528b7bdd2a9f510db"}, ] [package.dependencies] -six = "*" +mccabe = ">=0.7.0,<0.8.0" +pycodestyle = ">=2.9.0,<2.10.0" +pyflakes = ">=2.5.0,<2.6.0" [[package]] name = "idna" -version = "3.4" +version = "3.6" description = "Internationalized Domain Names in Applications (IDNA)" +category = "main" optional = false python-versions = ">=3.5" files = [ - {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"}, - {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, + {file = "idna-3.6-py3-none-any.whl", hash = "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f"}, + {file = "idna-3.6.tar.gz", hash = "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca"}, ] [[package]] name = "importlib-metadata" -version = "6.7.0" +version = "6.11.0" description = "Read metadata from Python packages" +category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "importlib_metadata-6.7.0-py3-none-any.whl", hash = "sha256:cb52082e659e97afc5dac71e79de97d8681de3aa07ff18578330904a9d18e5b5"}, - {file = "importlib_metadata-6.7.0.tar.gz", hash = "sha256:1aaf550d4f73e5d6783e7acb77aec43d49da8017410afae93822cc9cca98c4d4"}, + {file = "importlib_metadata-6.11.0-py3-none-any.whl", hash = "sha256:f0afba6205ad8f8947c7d338b5342d5db2afbfd82f9cbef7879a9539cc12eb9b"}, + {file = "importlib_metadata-6.11.0.tar.gz", hash = "sha256:1231cf92d825c9e03cfc4da076a16de6422c863558229ea0b22b675657463443"}, ] [package.dependencies] -typing-extensions = {version = ">=3.6.4", markers = "python_version < \"3.8\""} zipp = ">=0.5" [package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] perf = ["ipython"] -testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"] +testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"] [[package]] name = "jmespath" version = "1.0.1" description = "JSON Matching Expressions" +category = "main" optional = true python-versions = ">=3.7" files = [ @@ -531,19 +509,21 @@ files = [ [[package]] name = "mccabe" -version = "0.6.1" +version = "0.7.0" description = "McCabe checker, plugin for flake8" +category = "main" optional = true -python-versions = "*" +python-versions = ">=3.6" files = [ - {file = "mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42"}, - {file = "mccabe-0.6.1.tar.gz", hash = "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"}, + {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"}, + {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, ] [[package]] name = "nose2" version = "0.9.2" description = "unittest2 with plugins, the succesor to nose" +category = "main" optional = true python-versions = "*" files = [ @@ -561,13 +541,14 @@ doc = ["Sphinx (>=1.6.5)", "mock", "sphinx-rtd-theme"] [[package]] name = "opentelemetry-api" -version = "1.21.0" +version = "1.22.0" description = "OpenTelemetry Python API" +category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "opentelemetry_api-1.21.0-py3-none-any.whl", hash = "sha256:4bb86b28627b7e41098f0e93280fe4892a1abed1b79a19aec6f928f39b17dffb"}, - {file = "opentelemetry_api-1.21.0.tar.gz", hash = "sha256:d6185fd5043e000075d921822fd2d26b953eba8ca21b1e2fa360dd46a7686316"}, + {file = "opentelemetry_api-1.22.0-py3-none-any.whl", hash = "sha256:43621514301a7e9f5d06dd8013a1b450f30c2e9372b8e30aaeb4562abf2ce034"}, + {file = "opentelemetry_api-1.22.0.tar.gz", hash = "sha256:15ae4ca925ecf9cfdfb7a709250846fbb08072260fca08ade78056c502b86bed"}, ] [package.dependencies] @@ -576,52 +557,54 @@ importlib-metadata = ">=6.0,<7.0" [[package]] name = "protobuf" -version = "4.24.4" +version = "4.25.2" description = "" +category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "protobuf-4.24.4-cp310-abi3-win32.whl", hash = "sha256:ec9912d5cb6714a5710e28e592ee1093d68c5ebfeda61983b3f40331da0b1ebb"}, - {file = "protobuf-4.24.4-cp310-abi3-win_amd64.whl", hash = "sha256:1badab72aa8a3a2b812eacfede5020472e16c6b2212d737cefd685884c191085"}, - {file = "protobuf-4.24.4-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:8e61a27f362369c2f33248a0ff6896c20dcd47b5d48239cb9720134bef6082e4"}, - {file = "protobuf-4.24.4-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:bffa46ad9612e6779d0e51ae586fde768339b791a50610d85eb162daeb23661e"}, - {file = "protobuf-4.24.4-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:b493cb590960ff863743b9ff1452c413c2ee12b782f48beca77c8da3e2ffe9d9"}, - {file = "protobuf-4.24.4-cp37-cp37m-win32.whl", hash = "sha256:dbbed8a56e56cee8d9d522ce844a1379a72a70f453bde6243e3c86c30c2a3d46"}, - {file = "protobuf-4.24.4-cp37-cp37m-win_amd64.whl", hash = "sha256:6b7d2e1c753715dcfe9d284a25a52d67818dd43c4932574307daf836f0071e37"}, - {file = "protobuf-4.24.4-cp38-cp38-win32.whl", hash = "sha256:02212557a76cd99574775a81fefeba8738d0f668d6abd0c6b1d3adcc75503dbe"}, - {file = "protobuf-4.24.4-cp38-cp38-win_amd64.whl", hash = "sha256:2fa3886dfaae6b4c5ed2730d3bf47c7a38a72b3a1f0acb4d4caf68e6874b947b"}, - {file = "protobuf-4.24.4-cp39-cp39-win32.whl", hash = "sha256:b77272f3e28bb416e2071186cb39efd4abbf696d682cbb5dc731308ad37fa6dd"}, - {file = "protobuf-4.24.4-cp39-cp39-win_amd64.whl", hash = "sha256:9fee5e8aa20ef1b84123bb9232b3f4a5114d9897ed89b4b8142d81924e05d79b"}, - {file = "protobuf-4.24.4-py3-none-any.whl", hash = "sha256:80797ce7424f8c8d2f2547e2d42bfbb6c08230ce5832d6c099a37335c9c90a92"}, - {file = "protobuf-4.24.4.tar.gz", hash = "sha256:5a70731910cd9104762161719c3d883c960151eea077134458503723b60e3667"}, + {file = "protobuf-4.25.2-cp310-abi3-win32.whl", hash = "sha256:b50c949608682b12efb0b2717f53256f03636af5f60ac0c1d900df6213910fd6"}, + {file = "protobuf-4.25.2-cp310-abi3-win_amd64.whl", hash = "sha256:8f62574857ee1de9f770baf04dde4165e30b15ad97ba03ceac65f760ff018ac9"}, + {file = "protobuf-4.25.2-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:2db9f8fa64fbdcdc93767d3cf81e0f2aef176284071507e3ede160811502fd3d"}, + {file = "protobuf-4.25.2-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:10894a2885b7175d3984f2be8d9850712c57d5e7587a2410720af8be56cdaf62"}, + {file = "protobuf-4.25.2-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:fc381d1dd0516343f1440019cedf08a7405f791cd49eef4ae1ea06520bc1c020"}, + {file = "protobuf-4.25.2-cp38-cp38-win32.whl", hash = "sha256:33a1aeef4b1927431d1be780e87b641e322b88d654203a9e9d93f218ee359e61"}, + {file = "protobuf-4.25.2-cp38-cp38-win_amd64.whl", hash = "sha256:47f3de503fe7c1245f6f03bea7e8d3ec11c6c4a2ea9ef910e3221c8a15516d62"}, + {file = "protobuf-4.25.2-cp39-cp39-win32.whl", hash = "sha256:5e5c933b4c30a988b52e0b7c02641760a5ba046edc5e43d3b94a74c9fc57c1b3"}, + {file = "protobuf-4.25.2-cp39-cp39-win_amd64.whl", hash = "sha256:d66a769b8d687df9024f2985d5137a337f957a0916cf5464d1513eee96a63ff0"}, + {file = "protobuf-4.25.2-py3-none-any.whl", hash = "sha256:a8b7a98d4ce823303145bf3c1a8bdb0f2f4642a414b196f04ad9853ed0c8f830"}, + {file = "protobuf-4.25.2.tar.gz", hash = "sha256:fe599e175cb347efc8ee524bcd4b902d11f7262c0e569ececcb89995c15f0a5e"}, ] [[package]] name = "pycodestyle" -version = "2.7.0" +version = "2.9.1" description = "Python style guide checker" +category = "main" optional = true -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = ">=3.6" files = [ - {file = "pycodestyle-2.7.0-py2.py3-none-any.whl", hash = "sha256:514f76d918fcc0b55c6680472f0a37970994e07bbb80725808c17089be302068"}, - {file = "pycodestyle-2.7.0.tar.gz", hash = "sha256:c389c1d06bf7904078ca03399a4816f974a1d590090fecea0c63ec26ebaf1cef"}, + {file = "pycodestyle-2.9.1-py2.py3-none-any.whl", hash = "sha256:d1735fc58b418fd7c5f658d28d943854f8a849b01a5d0a1e6f3f3fdd0166804b"}, + {file = "pycodestyle-2.9.1.tar.gz", hash = "sha256:2c9607871d58c76354b697b42f5d57e1ada7d261c261efac224b664affdc5785"}, ] [[package]] name = "pyflakes" -version = "2.3.1" +version = "2.5.0" description = "passive checker of Python programs" +category = "main" optional = true -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = ">=3.6" files = [ - {file = "pyflakes-2.3.1-py2.py3-none-any.whl", hash = "sha256:7893783d01b8a89811dd72d7dfd4d84ff098e5eed95cfa8905b22bbffe52efc3"}, - {file = "pyflakes-2.3.1.tar.gz", hash = "sha256:f5bc8ecabc05bb9d291eb5203d6810b49040f6ff446a756326104746cc00c1db"}, + {file = "pyflakes-2.5.0-py2.py3-none-any.whl", hash = "sha256:4579f67d887f804e67edb544428f264b7b24f435b263c4614f384135cea553d2"}, + {file = "pyflakes-2.5.0.tar.gz", hash = "sha256:491feb020dca48ccc562a8c0cbe8df07ee13078df59813b83959cbdada312ea3"}, ] [[package]] name = "python-dateutil" version = "2.8.2" description = "Extensions to the standard Python datetime module" +category = "main" optional = true python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ @@ -636,6 +619,7 @@ six = ">=1.5" name = "requests" version = "2.31.0" description = "Python HTTP for Humans." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -655,30 +639,32 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "s3transfer" -version = "0.7.0" +version = "0.10.0" description = "An Amazon S3 Transfer Manager" +category = "main" optional = true -python-versions = ">= 3.7" +python-versions = ">= 3.8" files = [ - {file = "s3transfer-0.7.0-py3-none-any.whl", hash = "sha256:10d6923c6359175f264811ef4bf6161a3156ce8e350e705396a7557d6293c33a"}, - {file = "s3transfer-0.7.0.tar.gz", hash = "sha256:fd3889a66f5fe17299fe75b82eae6cf722554edca744ca5d5fe308b104883d2e"}, + {file = "s3transfer-0.10.0-py3-none-any.whl", hash = "sha256:3cdb40f5cfa6966e812209d0994f2a4709b561c88e90cf00c2696d2df4e56b2e"}, + {file = "s3transfer-0.10.0.tar.gz", hash = "sha256:d0c8bbf672d5eebbe4e57945e23b972d963f07d82f661cabf678a5c88831595b"}, ] [package.dependencies] -botocore = ">=1.12.36,<2.0a.0" +botocore = ">=1.33.2,<2.0a.0" [package.extras] -crt = ["botocore[crt] (>=1.20.29,<2.0a.0)"] +crt = ["botocore[crt] (>=1.33.2,<2.0a.0)"] [[package]] name = "setuptools" -version = "69.0.2" +version = "69.0.3" description = "Easily download, build, install, upgrade, and uninstall Python packages" +category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-69.0.2-py3-none-any.whl", hash = "sha256:1e8fdff6797d3865f37397be788a4e3cba233608e9b509382a2777d25ebde7f2"}, - {file = "setuptools-69.0.2.tar.gz", hash = "sha256:735896e78a4742605974de002ac60562d286fa8051a7e2299445e8e8fbb01aa6"}, + {file = "setuptools-69.0.3-py3-none-any.whl", hash = "sha256:385eb4edd9c9d5c17540511303e39a147ce2fc04bc55289c322b9e5904fe2c05"}, + {file = "setuptools-69.0.3.tar.gz", hash = "sha256:be1af57fc409f93647f2e8e4573a142ed38724b8cdd389706a867bb4efcf1e78"}, ] [package.extras] @@ -690,6 +676,7 @@ testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jar name = "six" version = "1.16.0" description = "Python 2 and 3 compatibility utilities" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -699,19 +686,21 @@ files = [ [[package]] name = "typing-extensions" -version = "4.7.1" -description = "Backported and Experimental Type Hints for Python 3.7+" +version = "4.9.0" +description = "Backported and Experimental Type Hints for Python 3.8+" +category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "typing_extensions-4.7.1-py3-none-any.whl", hash = "sha256:440d5dd3af93b060174bf433bccd69b0babc3b15b1a8dca43789fd7f61514b36"}, - {file = "typing_extensions-4.7.1.tar.gz", hash = "sha256:b75ddc264f0ba5615db7ba217daeb99701ad295353c45f9e95963337ceeeffb2"}, + {file = "typing_extensions-4.9.0-py3-none-any.whl", hash = "sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd"}, + {file = "typing_extensions-4.9.0.tar.gz", hash = "sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783"}, ] [[package]] name = "urllib3" version = "1.26.18" description = "HTTP library with thread-safe connection pooling, file post, and more." +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" files = [ @@ -728,6 +717,7 @@ socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] name = "urllib3" version = "2.0.7" description = "HTTP library with thread-safe connection pooling, file post, and more." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -745,6 +735,7 @@ zstd = ["zstandard (>=0.18.0)"] name = "wrapt" version = "1.16.0" description = "Module for decorators, wrappers and monkey patching." +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -824,6 +815,7 @@ files = [ name = "xmltodict" version = "0.13.0" description = "Makes working with XML feel like you are working with JSON" +category = "main" optional = false python-versions = ">=3.4" files = [ @@ -833,23 +825,24 @@ files = [ [[package]] name = "zipp" -version = "3.15.0" +version = "3.17.0" description = "Backport of pathlib-compatible object wrapper for zip files" +category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "zipp-3.15.0-py3-none-any.whl", hash = "sha256:48904fc76a60e542af151aded95726c1a5c34ed43ab4134b597665c86d7ad556"}, - {file = "zipp-3.15.0.tar.gz", hash = "sha256:112929ad649da941c23de50f356a2b5570c954b65150642bccdd66bf194d224b"}, + {file = "zipp-3.17.0-py3-none-any.whl", hash = "sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31"}, + {file = "zipp-3.17.0.tar.gz", hash = "sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["big-O", "flake8 (<5)", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] +testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy (>=0.9.1)", "pytest-ruff"] [extras] -dev = ["boto3", "flake8", "httpretty", "nose2", "requests"] +dev = ["boto3", "flake8", "nose2", "requests"] [metadata] lock-version = "2.0" -python-versions = ">=3.7.0,<4" -content-hash = "6687f40495eae4686955981f339f7eb3bcfbc71c7cfba272620b7aca4c45ad1b" +python-versions = ">=3.8.0,<4" +content-hash = "0025ef8e84fb9e0a746e623853293967663e40854dafb3689ca14da2eb228b84" diff --git a/pyproject.toml b/pyproject.toml index 17f91d535..71c75a784 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,7 +27,7 @@ classifiers = [ python = ">=3.8.0,<4" datadog = ">=0.41.0,<1.0.0" wrapt = "^1.11.2" -ddtrace = ">=2.3.1" +ddtrace = ">=2.5.1" urllib3 = [ {version = "<2.0.0", python = "<3.11", optional = true}, {version = "<2.1.0", python = ">=3.11", optional = true}, From 459d11d4a2860ff06cb41f6b3f4c86d679af07f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?jordan=20gonz=C3=A1lez?= <30836115+duncanista@users.noreply.github.com> Date: Fri, 26 Jan 2024 16:07:56 -0500 Subject: [PATCH 109/403] allow script to build for specific architecture (#413) --- scripts/build_layers.sh | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/scripts/build_layers.sh b/scripts/build_layers.sh index 9794f2bf0..d4f3076c3 100755 --- a/scripts/build_layers.sh +++ b/scripts/build_layers.sh @@ -15,6 +15,21 @@ set -e LAYER_DIR=".layers" LAYER_FILES_PREFIX="datadog_lambda_py" AVAILABLE_PYTHON_VERSIONS=("3.8" "3.9" "3.10" "3.11" "3.12") +AVAILABLE_ARCHS=("arm64" "amd64") + +if [ -z "$ARCH" ]; then + echo "No architectures specified, building layers for all architectures." + ARCHS=("${AVAILABLE_ARCHS[@]}") +else + echo "Architecture specified: $ARCH" + if [[ ! " ${AVAILABLE_ARCHS[@]} " =~ " ${ARCH} " ]]; then + echo "Architecture $ARCH is not a valid option. Choose from: ${AVAILABLE_ARCHS[@]}" + echo "" + echo "EXITING SCRIPT." + exit 1 + fi + ARCHS=$ARCH +fi # Determine which Python versions to build layers for if [ -z "$PYTHON_VERSION" ]; then @@ -64,10 +79,11 @@ mkdir $LAYER_DIR for python_version in "${PYTHON_VERSIONS[@]}" do - echo "Building layer for Python ${python_version} arch=arm64" - docker_build_zip ${python_version} $LAYER_DIR/${LAYER_FILES_PREFIX}-arm64-${python_version}.zip arm64 - echo "Building layer for Python ${python_version} arch=amd64" - docker_build_zip ${python_version} $LAYER_DIR/${LAYER_FILES_PREFIX}-amd64-${python_version}.zip amd64 + for architecture in "${ARCHS[@]}" + do + echo "Building layer for Python ${python_version} arch=${architecture}" + docker_build_zip ${python_version} $LAYER_DIR/${LAYER_FILES_PREFIX}-${architecture}-${python_version}.zip ${architecture} + done done echo "Done creating layers:" From 56c9278b3f0282025ee25f79473500c968594716 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Tue, 6 Feb 2024 13:13:47 -0500 Subject: [PATCH 110/403] Bump version to 5.88.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 71c75a784..82685b98d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "5.87.0" +version = "5.88.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From b9f8c0fd4ed9359415a3221efb993ea4bf978aba Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Tue, 13 Feb 2024 12:28:46 -0800 Subject: [PATCH 111/403] Replace nose2 with pytest. (#416) --- .github/workflows/build.yml | 2 +- .gitignore | 1 - LICENSE-3rdparty.csv | 3 +-- pyproject.toml | 6 +++--- scripts/run_tests.sh | 2 +- 5 files changed, 6 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7092388b9..5df927045 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -62,7 +62,7 @@ jobs: - name: Run tests run: | source venv/bin/activate - nose2 -v + pytest -vv integration-test: runs-on: ubuntu-latest diff --git a/.gitignore b/.gitignore index d6b01dbff..3aeeb1fb2 100644 --- a/.gitignore +++ b/.gitignore @@ -28,7 +28,6 @@ pip-log.txt # Unit test / coverage reports .coverage .tox -nosetests.xml #Misc .cache/ diff --git a/LICENSE-3rdparty.csv b/LICENSE-3rdparty.csv index e15ac6e59..a6692772d 100644 --- a/LICENSE-3rdparty.csv +++ b/LICENSE-3rdparty.csv @@ -1,4 +1,3 @@ Component,Origin,License,Copyright flake8,gitlab.com/pycqa/flake8,MIT,"Copyright (C) 2011-2013 Tarek Ziade . Copyright (C) 2012-2016 Ian Cordasco ." -nose2,github.com/nose-devs/nose2,BSD-2-Clause,"Copyright (c) 2012, Jason Pellerin. All rights reserved." -wrapt,github.com/GrahamDumpleton/wrapt,BSD-2-Clause,"Copyright (c) 2013-2019, Graham Dumpleton" \ No newline at end of file +wrapt,github.com/GrahamDumpleton/wrapt,BSD-2-Clause,"Copyright (c) 2013-2019, Graham Dumpleton" diff --git a/pyproject.toml b/pyproject.toml index 82685b98d..5dbd9e5b7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -36,16 +36,16 @@ importlib_metadata = {version = "*", python = "<3.8"} boto3 = { version = "^1.28.0", optional = true } typing_extensions = {version = "^4.0", python = "<3.8"} requests = { version ="^2.22.0", optional = true } -nose2 = { version= "^0.9.1", optional = true } +pytest = { version= "^8.0.0", optional = true } flake8 = { version = "^5.0.4", optional = true } [tool.poetry.extras] dev = [ "boto3", - "requests", - "nose2", "flake8", + "pytest", + "requests", ] [build-system] diff --git a/scripts/run_tests.sh b/scripts/run_tests.sh index e06e99129..540ac8981 100755 --- a/scripts/run_tests.sh +++ b/scripts/run_tests.sh @@ -18,7 +18,7 @@ do --build-arg python_version=$python_version docker run -w /test \ datadog-lambda-python-test:$python_version \ - nose2 -v + pytest -vv docker run -w /test \ datadog-lambda-python-test:$python_version \ flake8 datadog_lambda/ From 17c8e0be8f12bec1efc7558aa954e2522b10f33d Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Wed, 14 Feb 2024 12:00:20 -0800 Subject: [PATCH 112/403] Prevent function crash when setting unknown log level. (#418) --- datadog_lambda/__init__.py | 6 ++---- datadog_lambda/logger.py | 27 ++++++++++++++++++++++++ tests/test_logger.py | 43 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 72 insertions(+), 4 deletions(-) create mode 100644 datadog_lambda/logger.py create mode 100644 tests/test_logger.py diff --git a/datadog_lambda/__init__.py b/datadog_lambda/__init__.py index 20b424432..cfb5f8e3c 100644 --- a/datadog_lambda/__init__.py +++ b/datadog_lambda/__init__.py @@ -1,6 +1,5 @@ -import os -import logging from datadog_lambda.cold_start import initialize_cold_start_tracing +from datadog_lambda.logger import initialize_logging initialize_cold_start_tracing() @@ -13,5 +12,4 @@ __version__ = importlib_metadata.version(__name__) -logger = logging.getLogger(__name__) -logger.setLevel(logging.getLevelName(os.environ.get("DD_LOG_LEVEL", "INFO").upper())) +initialize_logging(__name__) diff --git a/datadog_lambda/logger.py b/datadog_lambda/logger.py new file mode 100644 index 000000000..ae2b5d6d9 --- /dev/null +++ b/datadog_lambda/logger.py @@ -0,0 +1,27 @@ +import logging +import os + +try: + _level_mappping = logging.getLevelNamesMapping() +except AttributeError: + # python 3.8 + _level_mappping = {name: num for num, name in logging._levelToName.items()} +# https://docs.datadoghq.com/agent/troubleshooting/debug_mode/?tab=agentv6v7#agent-log-level +_level_mappping.update( + { + "TRACE": 5, + "WARN": logging.WARNING, + "OFF": 100, + } +) + + +def initialize_logging(name): + logger = logging.getLogger(name) + str_level = (os.environ.get("DD_LOG_LEVEL") or "INFO").upper() + level = _level_mappping.get(str_level) + if level is None: + logger.setLevel(logging.INFO) + logger.warning("Invalid log level: %s Defaulting to INFO", str_level) + else: + logger.setLevel(level) diff --git a/tests/test_logger.py b/tests/test_logger.py new file mode 100644 index 000000000..eb2822f2f --- /dev/null +++ b/tests/test_logger.py @@ -0,0 +1,43 @@ +import io +import logging +import pytest + +from datadog_lambda.logger import initialize_logging + +_test_initialize_logging = ( + ("TRACE", (10, 20, 30, 40, 50)), + ("DEBUG", (10, 20, 30, 40, 50)), + ("debug", (10, 20, 30, 40, 50)), + ("INFO", (20, 30, 40, 50)), + ("WARNING", (30, 40, 50)), + ("WARN", (30, 40, 50)), + ("ERROR", (40, 50)), + ("CRITICAL", (50,)), + ("OFF", ()), + ("", (20, 30, 40, 50)), + (None, (20, 30, 40, 50)), + ("PURPLE", (30, 20, 30, 40, 50)), # log warning then default to INFO +) + + +@pytest.mark.parametrize("level,logged_levels", _test_initialize_logging) +def test_initialize_logging(level, logged_levels, monkeypatch): + if level is not None: + monkeypatch.setenv("DD_LOG_LEVEL", level) + + stream = io.StringIO() + handler = logging.StreamHandler(stream) + handler.setFormatter(logging.Formatter("%(levelno)s")) + logger = logging.getLogger(__name__) + logger.addHandler(handler) + + initialize_logging(__name__) + + logger.debug("debug") + logger.info("info") + logger.warning("warning") + logger.error("error") + logger.critical("critical") + + logged = tuple(map(int, stream.getvalue().strip().split())) + assert logged == logged_levels From 1649656f63b1e25942639f2cc220ebbc9dcd3f33 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Mon, 4 Mar 2024 13:52:00 -0500 Subject: [PATCH 113/403] feat: Automatic layer releases (#421) * feat: Copy gitlab-ci from datadog-lambda-js * feat: first crack at migration the build script for individual publishing * feat: secrets for python. TODO - actually create them * feat: Add python runtimes * feat: re-organize architecture flags. Support separate arch/name * feat: first draft of build generator template * feat: Add datasources and first cut at publish_pypi script * feat: oops, no node. TODO: fix container names * feat: pass the right layer name to sign layers * feat: Python before script * feat: arch parameterized sign layer * feat: fix up runtimes * fix: build layer arch * fix: Check layer size arch * feat: zip file is py not python * fix: fix up check layer size script * hotfix: use js ssm secrets until I can figure out which AWS account CI runs in and can add them * feat: Less uniformity on images in python, specify in runtimes.yaml * feat: Can't use permissions across repos * feat: lol our ci runners set DD_SERVICE so it breaks our unit tests * feat: Gotta add yarn so we can add serverless * feat: lint * feat: Break install-node into separate task * feat: Use name instead of python_version * fix: no python-, just the version number * empty commit to bump CI * feat: integration tests should run for both architectures * fix: arg, no arch in integration test * fix: pass sls framework the proper arch * feat: fix script * feat: Default to x86 just so the invoke function works * fix: nvm pass the sls arch everywhere I guess * fix: strip arch from user agent * feat: the right x86_64 arch for serverless framework * fix: globalize local env * feat: fix regex * fix: ints should pass now * feat: Update tests * fix: lint * fix: lint * feat: lint * feat: I think we just need one lint * feat: remove install node for publish step * feat: remove integration tests from github build, we run them in gitlab now * feat: token applied --- .github/workflows/build.yml | 71 ------- .gitlab-ci.yml | 29 +++ ci/config.yaml | 13 ++ ci/datasources/environments.yaml | 9 + ci/datasources/regions.yaml | 29 +++ ci/datasources/runtimes.yaml | 41 ++++ ci/get_secrets.sh | 48 +++++ ci/input_files/build.yaml.tpl | 178 +++++++++++++++++ ci/publish_layers.sh | 182 ++++++++++++++++++ ci/publish_pypi.sh | 23 +++ scripts/check_layer_size.sh | 40 ++-- scripts/run_integration_tests.sh | 17 +- tests/integration/serverless.yml | 3 +- .../snapshots/logs/sync-metrics_python310.log | 36 ++-- .../snapshots/logs/sync-metrics_python311.log | 36 ++-- .../snapshots/logs/sync-metrics_python312.log | 36 ++-- .../snapshots/logs/sync-metrics_python38.log | 36 ++-- .../snapshots/logs/sync-metrics_python39.log | 36 ++-- tests/test_tracing.py | 19 +- tests/test_wrapper.py | 4 + 20 files changed, 691 insertions(+), 195 deletions(-) create mode 100644 .gitlab-ci.yml create mode 100644 ci/config.yaml create mode 100644 ci/datasources/environments.yaml create mode 100644 ci/datasources/regions.yaml create mode 100644 ci/datasources/runtimes.yaml create mode 100755 ci/get_secrets.sh create mode 100644 ci/input_files/build.yaml.tpl create mode 100755 ci/publish_layers.sh create mode 100755 ci/publish_pypi.sh diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5df927045..eeb77064b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -63,74 +63,3 @@ jobs: run: | source venv/bin/activate pytest -vv - - integration-test: - runs-on: ubuntu-latest - strategy: - matrix: - runtime-param: ['3.8', '3.9', '3.10', '3.11', '3.12'] - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: Set up Node 14 - uses: actions/setup-node@v3 - with: - node-version: 14 - - - name: Cache Node modules - id: cache-node-modules - uses: actions/cache@v3 - with: - path: "**/node_modules" - key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }} - - - name: Set up Python - uses: actions/setup-python@v4 - with: - python-version: 3.9 - - - name: Install Python dependencies - run: | - pip install virtualenv - virtualenv venv - source venv/bin/activate - pip install .[dev] - - - name: Install Serverless Framework - run: sudo yarn global add serverless@^3.7.0 --prefix /usr/local - - name: Install Crossbuild Deps - run: | - sudo apt-get update --allow-releaseinfo-change --fix-missing - sudo apt install -y qemu-user-static binfmt-support - - - name: Install dependencies - if: steps.cache-node-modules.outputs.cache-hit != 'true' - working-directory: tests/integration - run: yarn install - - - name: Run tests - env: - BUILD_LAYERS: true - DD_API_KEY: ${{ secrets.DD_API_KEY }} - AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} - AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - RUNTIME_PARAM: ${{ matrix.runtime-param }} - run: ./scripts/run_integration_tests.sh - - - name: Send success metric - env: - DD_API_KEY: ${{ secrets.DD_API_KEY }} - run: ./scripts/send_status_metric.sh 0 $DD_API_KEY - - integration-test-failure: - runs-on: ubuntu-latest - needs: [integration-test] - if: always() && (needs.integration-test.result == 'failure') - steps: - - name: Checkout - uses: actions/checkout@v3 - - name: Send a failure metric - env: - DD_API_KEY: ${{ secrets.DD_API_KEY }} - run: ./scripts/send_status_metric.sh 1 $DD_API_KEY diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 000000000..0f36a781d --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,29 @@ +stages: + - pre + - build + +.go-cache: &go-cache + key: datadog-lambda-python-go-cache + policy: pull + +generator: + stage: pre + image: registry.ddbuild.io/images/mirror/golang:alpine + tags: ["arch:amd64"] + cache: *go-cache + script: + - apk add --no-cache gomplate + - gomplate --config ci/config.yaml + artifacts: + paths: + - ci/*-pipeline.yaml + +build-layers: + stage: build + trigger: + include: + - artifact: ci/build-pipeline.yaml + job: generator + strategy: depend + rules: + - when: on_success diff --git a/ci/config.yaml b/ci/config.yaml new file mode 100644 index 000000000..d37a0f316 --- /dev/null +++ b/ci/config.yaml @@ -0,0 +1,13 @@ +inputFiles: + - ci/input_files/build.yaml.tpl + +outputFiles: + - ci/build-pipeline.yaml + +datasources: + runtimes: + url: ci/datasources/runtimes.yaml + regions: + url: ci/datasources/regions.yaml + environments: + url: ci/datasources/environments.yaml diff --git a/ci/datasources/environments.yaml b/ci/datasources/environments.yaml new file mode 100644 index 000000000..90056ab00 --- /dev/null +++ b/ci/datasources/environments.yaml @@ -0,0 +1,9 @@ +environments: + - name: sandbox + external_id: sandbox-publish-externalid + role_to_assume: sandbox-layer-deployer + account: 425362996713 + - name: prod + external_id: prod-publish-externalid + role_to_assume: dd-serverless-layer-deployer-role + account: 464622532012 diff --git a/ci/datasources/regions.yaml b/ci/datasources/regions.yaml new file mode 100644 index 000000000..a26372d8d --- /dev/null +++ b/ci/datasources/regions.yaml @@ -0,0 +1,29 @@ +regions: + - code: "us-east-1" + - code: "us-east-2" + - code: "us-west-1" + - code: "us-west-2" + - code: "af-south-1" + - code: "ap-east-1" + - code: "ap-south-1" + - code: "ap-south-2" + - code: "ap-southeast-1" + - code: "ap-southeast-2" + - code: "ap-southeast-3" + - code: "ap-southeast-4" + - code: "ap-northeast-1" + - code: "ap-northeast-2" + - code: "ap-northeast-3" + - code: "ca-central-1" +# - code: "ca-west-1" we don't support it + - code: "eu-central-1" + - code: "eu-central-2" + - code: "eu-west-1" + - code: "eu-west-2" + - code: "eu-west-3" + - code: "eu-south-1" + - code: "eu-south-2" +# - code: "il-central-1" we don't support it + - code: "me-south-1" + - code: "me-central-1" + - code: "sa-east-1" diff --git a/ci/datasources/runtimes.yaml b/ci/datasources/runtimes.yaml new file mode 100644 index 000000000..0e084b087 --- /dev/null +++ b/ci/datasources/runtimes.yaml @@ -0,0 +1,41 @@ +runtimes: + - name: "python38" + python_version: "3.8" + arch: "amd64" + image: "3.8" + - name: "python38" + python_version: "3.8" + arch: "arm64" + image: "3.8" + - name: "python39" + python_version: "3.8" + arch: "amd64" + image: "3.9" + - name: "python39" + python_version: "3.9" + arch: "arm64" + image: "3.9" + - name: "python310" + python_version: "3.10" + arch: "amd64" + image: "3.10" + - name: "python310" + python_version: "3.10" + arch: "arm64" + image: "3.10" + - name: "python311" + python_version: "3.11" + arch: "amd64" + image: "3.11.6" + - name: "python311" + python_version: "3.11" + arch: "arm64" + image: "3.11.6" + - name: "python312" + python_version: "3.12" + arch: "amd64" + image: "3.12.0" + - name: "python312" + python_version: "3.12" + arch: "arm64" + image: "3.12.0" diff --git a/ci/get_secrets.sh b/ci/get_secrets.sh new file mode 100755 index 000000000..9d9c957c0 --- /dev/null +++ b/ci/get_secrets.sh @@ -0,0 +1,48 @@ +#!/bin/bash + +# Unless explicitly stated otherwise all files in this repository are licensed +# under the Apache License Version 2.0. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2023 Datadog, Inc. + +set -e + +if [ -z "$EXTERNAL_ID_NAME" ]; then + printf "[Error] No EXTERNAL_ID_NAME found.\n" + printf "Exiting script...\n" + exit 1 +fi + +if [ -z "$ROLE_TO_ASSUME" ]; then + printf "[Error] No ROLE_TO_ASSUME found.\n" + printf "Exiting script...\n" + exit 1 +fi + +printf "Getting AWS External ID...\n" + +EXTERNAL_ID=$(aws ssm get-parameter \ + --region us-east-1 \ + --name "ci.datadog-lambda-python.$EXTERNAL_ID_NAME" \ + --with-decryption \ + --query "Parameter.Value" \ + --out text) + +printf "Getting DD API KEY...\n" + +export DD_API_KEY=$(aws ssm get-parameter \ + --region us-east-1 \ + --name ci.datadog-lambda-python.dd-api-key \ + --with-decryption \ + --query "Parameter.Value" \ + --out text) + +printf "Assuming role...\n" + +export $(printf "AWS_ACCESS_KEY_ID=%s AWS_SECRET_ACCESS_KEY=%s AWS_SESSION_TOKEN=%s" \ + $(aws sts assume-role \ + --role-arn "arn:aws:iam::$AWS_ACCOUNT:role/$ROLE_TO_ASSUME" \ + --role-session-name "ci.datadog-lambda-python-$CI_JOB_ID-$CI_JOB_STAGE" \ + --query "Credentials.[AccessKeyId,SecretAccessKey,SessionToken]" \ + --external-id $EXTERNAL_ID \ + --output text)) diff --git a/ci/input_files/build.yaml.tpl b/ci/input_files/build.yaml.tpl new file mode 100644 index 000000000..e562092db --- /dev/null +++ b/ci/input_files/build.yaml.tpl @@ -0,0 +1,178 @@ +stages: + - build + - test + - sign + - publish + +.python-before-script: &python-before-script + - pip install virtualenv + - virtualenv venv + - source venv/bin/activate + - pip install .[dev] + +# This is for serverless framework +.install-node: &install-node + - apt-get update + - apt-get install -y ca-certificates curl gnupg xxd + - mkdir -p /etc/apt/keyrings + - curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg + # We are explicitly setting the node_18.x version for the installation + - echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_18.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list + - apt-get update + - apt-get install nodejs -y + - npm install --global yarn + +{{ range $runtime := (ds "runtimes").runtimes }} + +# TODO(astuyve) - figure out python build cache +.{{ $runtime.name }}-{{ $runtime.arch }}-cache: &{{ $runtime.name }}-{{ $runtime.arch }}-cache + key: "$CI_JOB_STAGE-$CI_COMMIT_REF_SLUG" + paths: + - $CI_PROJECT_DIR/.yarn-cache + policy: pull + +build-layer ({{ $runtime.name }}-{{ $runtime.arch }}): + stage: build + tags: ["arch:amd64"] + image: registry.ddbuild.io/images/docker:20.10 + artifacts: + expire_in: 1 hr # Unsigned zips expire in 1 hour + paths: + - .layers/datadog_lambda_py-{{ $runtime.arch }}-{{ $runtime.python_version }}.zip + variables: + CI_ENABLE_CONTAINER_IMAGE_BUILDS: "true" + script: + - PYTHON_VERSION={{ $runtime.python_version }} ARCH={{ $runtime.arch }} ./scripts/build_layers.sh + +check-layer-size ({{ $runtime.name }}-{{ $runtime.arch }}): + stage: test + tags: ["arch:amd64"] + image: registry.ddbuild.io/images/docker:20.10 + needs: + - build-layer ({{ $runtime.name }}-{{ $runtime.arch }}) + dependencies: + - build-layer ({{ $runtime.name }}-{{ $runtime.arch }}) + script: + - PYTHON_VERSION={{ $runtime.python_version }} ./scripts/check_layer_size.sh + +lint python: + stage: test + tags: ["arch:amd64"] + image: registry.ddbuild.io/images/mirror/python:{{ $runtime.image }} + cache: &{{ $runtime.name }}-{{ $runtime.arch }}-cache + before_script: *python-before-script + script: + - source venv/bin/activate + - ./scripts/check_format.sh + +unit-test ({{ $runtime.name }}-{{ $runtime.arch }}): + stage: test + tags: ["arch:amd64"] + image: registry.ddbuild.io/images/mirror/python:{{ $runtime.image }} + cache: &{{ $runtime.name }}-{{ $runtime.arch }}-cache + before_script: *python-before-script + script: + - source venv/bin/activate + - pytest -vv + +integration-test ({{ $runtime.name }}-{{ $runtime.arch }}): + stage: test + tags: ["arch:amd64"] + image: registry.ddbuild.io/images/docker:20.10-py3 + needs: + - build-layer ({{ $runtime.name }}-{{ $runtime.arch }}) + dependencies: + - build-layer ({{ $runtime.name }}-{{ $runtime.arch }}) + cache: &{{ $runtime.name }}-{{ $runtime.arch }}-cache + variables: + CI_ENABLE_CONTAINER_IMAGE_BUILDS: "true" + before_script: + - *install-node + - EXTERNAL_ID_NAME=integration-test-externalid ROLE_TO_ASSUME=sandbox-integration-test-deployer AWS_ACCOUNT=425362996713 source ./ci/get_secrets.sh + - yarn global add serverless --prefix /usr/local + - cd integration_tests && yarn install && cd .. + script: + - RUNTIME_PARAM={{ $runtime.python_version }} ARCH={{ $runtime.arch }} ./scripts/run_integration_tests.sh + +{{ range $environment := (ds "environments").environments }} + +{{ if or (eq $environment.name "prod") }} +sign-layer ({{ $runtime.name }}-{{ $runtime.arch }}): + stage: sign + tags: ["arch:amd64"] + image: registry.ddbuild.io/images/docker:20.10-py3 + rules: + - if: '$CI_COMMIT_TAG =~ /^v.*/' + when: manual + needs: + - build-layer ({{ $runtime.name }}-{{ $runtime.arch }}) + - check-layer-size ({{ $runtime.name }}-{{ $runtime.arch }}) + - lint python + - unit-test ({{ $runtime.name }}-{{ $runtime.arch }}) + - integration-test ({{ $runtime.name }}-{{ $runtime.arch }}) + dependencies: + - build-layer ({{ $runtime.name }}-{{ $runtime.arch }}) + artifacts: # Re specify artifacts so the modified signed file is passed + expire_in: 1 day # Signed layers should expire after 1 day + paths: + - .layers/datadog_lambda_python-{{ $runtime.arch }}-{{ $runtime.python_version }}.zip + before_script: + - apt-get update + - apt-get install -y uuid-runtime + - EXTERNAL_ID_NAME={{ $environment.external_id }} ROLE_TO_ASSUME={{ $environment.role_to_assume }} AWS_ACCOUNT={{ $environment.account }} source ./ci/get_secrets.sh + script: + - LAYER_FILE=datadog_lambda_python-{{ $runtime.arch}}-{{ $runtime.python_version }}.zip ./scripts/sign_layers.sh {{ $environment.name }} +{{ end }} + +publish-layer-{{ $environment.name }} ({{ $runtime.name }}-{{ $runtime.arch }}): + stage: publish + tags: ["arch:amd64"] + image: registry.ddbuild.io/images/docker:20.10-py3 + rules: + - if: '"{{ $environment.name }}" =~ /^(sandbox|staging)/' + when: manual + allow_failure: true + - if: '$CI_COMMIT_TAG =~ /^v.*/' + needs: +{{ if or (eq $environment.name "prod") }} + - sign-layer ({{ $runtime.name }}-{{ $runtime.arch}}) +{{ else }} + - build-layer ({{ $runtime.name }}-{{ $runtime.arch }}) + - check-layer-size ({{ $runtime.name }}-{{ $runtime.arch }}) + - lint python + - unit-test ({{ $runtime.name }}-{{ $runtime.arch }}) + - integration-test ({{ $runtime.name }}-{{ $runtime.arch }}) +{{ end }} + dependencies: +{{ if or (eq $environment.name "prod") }} + - sign-layer ({{ $runtime.name }}-{{ $runtime.arch}}) +{{ else }} + - build-layer ({{ $runtime.name }}-{{ $runtime.arch }}) +{{ end }} + parallel: + matrix: + - REGION: {{ range (ds "regions").regions }} + - {{ .code }} + {{- end}} + before_script: + - EXTERNAL_ID_NAME={{ $environment.external_id }} ROLE_TO_ASSUME={{ $environment.role_to_assume }} AWS_ACCOUNT={{ $environment.account }} source ./ci/get_secrets.sh + script: + - STAGE={{ $environment.name }} PYTHON_VERSION={{ $runtime.python_version }} ARCH={{ $runtime.arch }} ./ci/publish_layers.sh + +{{- end }} + +{{- end }} + +publish-pypi-package: + stage: publish + tags: ["arch:amd64"] + image: registry.ddbuild.io/images/docker:20.10-py3 + cache: [] + rules: + - if: '$CI_COMMIT_TAG =~ /^v.*/' + when: manual + needs: {{ range $runtime := (ds "runtimes").runtimes }} + - sign-layer ({{ $runtime.name }}-{{ $runtime.arch}}) + {{- end }} + script: + - ./ci/publish_pypi.sh diff --git a/ci/publish_layers.sh b/ci/publish_layers.sh new file mode 100755 index 000000000..31a918393 --- /dev/null +++ b/ci/publish_layers.sh @@ -0,0 +1,182 @@ +#!/bin/bash + +# Unless explicitly stated otherwise all files in this repository are licensed +# under the Apache License Version 2.0. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2023 Datadog, Inc. + +# PYTHON_VERSION=20.9 REGION=us-east-1 + +set -e + +# Available runtimes: https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html +AWS_CLI_PYTHON_VERSIONS=( + "python3.8" + "python3.8" + "python3.9" + "python3.9" + "python3.10" + "python3.10" + "python3.11" + "python3.11" + "python3.12" + "python3.12" +) +PYTHON_VERSIONS=("3.8-amd64" "3.8-arm64" "3.9-amd64" "3.9-arm64" "3.10-amd64" "3.10-arm64" "3.11-amd64" "3.11-arm64" "3.12-amd64" "3.12-arm64") +LAYER_PATHS=( + ".layers/datadog_lambda_py-amd64-3.8.zip" + ".layers/datadog_lambda_py-arm64-3.8.zip" + ".layers/datadog_lambda_py-amd64-3.9.zip" + ".layers/datadog_lambda_py-arm64-3.9.zip" + ".layers/datadog_lambda_py-amd64-3.10.zip" + ".layers/datadog_lambda_py-arm64-3.10.zip" + ".layers/datadog_lambda_py-amd64-3.11.zip" + ".layers/datadog_lambda_py-arm64-3.11.zip" + ".layers/datadog_lambda_py-amd64-3.12.zip" + ".layers/datadog_lambda_py-arm64-3.12.zip" +) +LAYERS=( + "Datadog-Python38" + "Datadog-Python38-ARM" + "Datadog-Python39" + "Datadog-Python39-ARM" + "Datadog-Python310" + "Datadog-Python310-ARM" + "Datadog-Python311" + "Datadog-Python311-ARM" + "Datadog-Python312" + "Datadog-Python312-ARM" +) +STAGES=('prod', 'sandbox', 'staging') + +printf "Starting script...\n\n" +printf "Installing dependencies\n" +pip install awscli + +publish_layer() { + region=$1 + layer_name=$2 + compatible_runtimes=$3 + layer_path=$4 + + version_nbr=$(aws lambda publish-layer-version --layer-name $layer_name \ + --description "Datadog Lambda Layer for Node" \ + --zip-file "fileb://$layer_path" \ + --region $region \ + --compatible-runtimes $compatible_runtimes \ + | jq -r '.Version') + + permission=$(aws lambda add-layer-version-permission --layer-name $layer_name \ + --version-number $version_nbr \ + --statement-id "release-$version_nbr" \ + --action lambda:GetLayerVersion --principal "*" \ + --region $region) + + echo $version_nbr +} + +# Target Python version +if [ -z $PYTHON_VERSION ]; then + printf "[Error] PYTHON_VERSION version not specified.\n" + exit 1 +fi + +printf "Python version specified: $PYTHON_VERSION\n" +if [[ ! ${PYTHON_VERSIONS[@]} =~ $PYTHON_VERSION ]]; then + printf "[Error] Unsupported PYTHON_VERSION found.\n" + exit 1 +fi + +if [ -z $ARCH ]; then + printf "[Error] ARCH architecture not specified.\n" + exit 1 +fi + +index=0 +for i in "${!PYTHON_VERSIONS[@]}"; do + if [[ "${PYTHON_VERSIONS[$i]}" = "${PYTHON_VERSION}-${ARCH}" ]]; then + index=$i + fi +done + +REGIONS=$(aws ec2 describe-regions | jq -r '.[] | .[] | .RegionName') + +# Target region +if [ -z "$REGION" ]; then + printf "REGION not specified.\n" + exit 1 +fi + +printf "Region specified, region is: $REGION\n" +if [[ ! "$REGIONS" == *"$REGION"* ]]; then + printf "[Error] Could not find $REGION in AWS available regions: \n${REGIONS[@]}\n" + exit 1 +fi + +# Deploy stage +if [ -z "$STAGE" ]; then + printf "[Error] STAGE not specified.\n" + printf "Exiting script...\n" + exit 1 +fi + +printf "Stage specified: $STAGE\n" +if [[ ! ${STAGES[@]} =~ $STAGE ]]; then + printf "[Error] Unsupported STAGE found.\n" + exit 1 +fi + +layer="${LAYERS[$index]}" + +if [[ "$STAGE" =~ ^(staging|sandbox)$ ]]; then + # Deploy latest version + latest_version=$(aws lambda list-layer-versions --region $REGION --layer-name $layer --query 'LayerVersions[0].Version || `0`') + VERSION=$(($latest_version + 1)) +else + # Running on prod + if [ -z "$CI_COMMIT_TAG" ]; then + printf "[Error] No CI_COMMIT_TAG found.\n" + printf "Exiting script...\n" + exit 1 + else + printf "Tag found in environment: $CI_COMMIT_TAG\n" + fi + + VERSION=$(echo "${CI_COMMIT_TAG##*v}" | cut -d. -f2) +fi + +# Target layer version +if [ -z "$VERSION" ]; then + printf "[Error] VERSION for layer version not specified.\n" + printf "Exiting script...\n" + exit 1 +else + printf "Layer version parsed: $VERSION\n" +fi + +printf "[$REGION] Starting publishing layers...\n" +aws_cli_python_version_key="${AWS_CLI_PYTHON_VERSIONS[$index]}" +layer_path="${LAYER_PATHS[$index]}" + +latest_version=$(aws lambda list-layer-versions --region $REGION --layer-name $layer --query 'LayerVersions[0].Version || `0`') +if [ $latest_version -ge $VERSION ]; then + printf "[$REGION] Layer $layer version $VERSION already exists in region $REGION, skipping...\n" + exit 0 +elif [ $latest_version -lt $((VERSION-1)) ]; then + printf "[$REGION][WARNING] The latest version of layer $layer in region $REGION is $latest_version, this will publish all the missing versions including $VERSION\n" +fi + +while [ $latest_version -lt $VERSION ]; do + latest_version=$(publish_layer $REGION $layer $aws_cli_python_version_key $layer_path) + printf "[$REGION] Published version $latest_version for layer $layer in region $REGION\n" + + # This shouldn't happen unless someone manually deleted the latest version, say 28, and + # then tries to republish 28 again. The published version would actually be 29, because + # Lambda layers are immutable and AWS will skip deleted version and use the next number. + if [ $latest_version -gt $VERSION ]; then + printf "[$REGION] Published version $latest_version is greater than the desired version $VERSION!" + exit 1 + fi +done + +printf "[$REGION] Finished publishing layers...\n\n" diff --git a/ci/publish_pypi.sh b/ci/publish_pypi.sh new file mode 100755 index 000000000..d7ec78fd4 --- /dev/null +++ b/ci/publish_pypi.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +# Unless explicitly stated otherwise all files in this repository are licensed +# under the Apache License Version 2.0. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2023 Datadog, Inc. +set -e +PYPI_TOKEN=$(aws ssm get-parameter \ + --region us-east-1 \ + --name "ci.datadog-lambda-python.pypi-token" \ + --with-decryption \ + --query "Parameter.Value" \ + --out text) +# Builds the lambda layer and upload to Pypi + +# Clear previously built distributions +if [ -d "dist" ]; then + echo "Removing folder 'dist' to clear previously built distributions" + rm -rf dist; +fi + +# Publish to pypi +poetry publish --build --username __token__ --password $PYPI_TOKEN diff --git a/scripts/check_layer_size.sh b/scripts/check_layer_size.sh index 395f79a4d..f1c8c8132 100755 --- a/scripts/check_layer_size.sh +++ b/scripts/check_layer_size.sh @@ -14,26 +14,22 @@ MAX_LAYER_UNCOMPRESSED_SIZE_KB=$(expr 24 \* 1024) LAYER_FILES_PREFIX="datadog_lambda_py" LAYER_DIR=".layers" -VERSIONS=("3.8" "3.9" "3.10" "3.11" "3.12") -for version in "${VERSIONS[@]}" -do - FILE=$LAYER_DIR/${LAYER_FILES_PREFIX}-amd64-${version}.zip - FILE_SIZE=$(stat --printf="%s" $FILE) - FILE_SIZE_KB="$(( ${FILE_SIZE%% *} / 1024))" - echo "Layer file ${FILE} has zipped size ${FILE_SIZE_KB} kb" - if [ "$FILE_SIZE_KB" -gt "$MAX_LAYER_COMPRESSED_SIZE_KB" ]; then - echo "Zipped size exceeded limit $MAX_LAYER_COMPRESSED_SIZE_KB kb" - exit 1 - fi - mkdir tmp - unzip -q $FILE -d tmp - UNZIPPED_FILE_SIZE=$(du -shb tmp/ | cut -f1) - UNZIPPED_FILE_SIZE_KB="$(( ${UNZIPPED_FILE_SIZE%% *} / 1024))" - rm -rf tmp - echo "Layer file ${FILE} has unzipped size ${UNZIPPED_FILE_SIZE_KB} kb" - if [ "$UNZIPPED_FILE_SIZE_KB" -gt "$MAX_LAYER_UNCOMPRESSED_SIZE_KB" ]; then - echo "Unzipped size exceeded limit $MAX_LAYER_UNCOMPRESSED_SIZE_KB kb" - exit 1 - fi -done +FILE=$LAYER_DIR/${LAYER_FILES_PREFIX}-${ARCH}-${PYTHON_VERSION}.zip +FILE_SIZE=$(stat --printf="%s" $FILE) +FILE_SIZE_KB="$(( ${FILE_SIZE%% *} / 1024))" +echo "Layer file ${FILE} has zipped size ${FILE_SIZE_KB} kb" +if [ "$FILE_SIZE_KB" -gt "$MAX_LAYER_COMPRESSED_SIZE_KB" ]; then + echo "Zipped size exceeded limit $MAX_LAYER_COMPRESSED_SIZE_KB kb" + exit 1 +fi +mkdir tmp +unzip -q $FILE -d tmp +UNZIPPED_FILE_SIZE=$(du -shb tmp/ | cut -f1) +UNZIPPED_FILE_SIZE_KB="$(( ${UNZIPPED_FILE_SIZE%% *} / 1024))" +rm -rf tmp +echo "Layer file ${FILE} has unzipped size ${UNZIPPED_FILE_SIZE_KB} kb" +if [ "$UNZIPPED_FILE_SIZE_KB" -gt "$MAX_LAYER_UNCOMPRESSED_SIZE_KB" ]; then + echo "Unzipped size exceeded limit $MAX_LAYER_UNCOMPRESSED_SIZE_KB kb" + exit 1 +fi diff --git a/scripts/run_integration_tests.sh b/scripts/run_integration_tests.sh index 27dd8ec8e..13edf1ac6 100755 --- a/scripts/run_integration_tests.sh +++ b/scripts/run_integration_tests.sh @@ -71,6 +71,12 @@ else echo "Not building layers, ensure they've already been built or re-run with 'BUILD_LAYERS=true DD_API_KEY=XXXX ./scripts/run_integration_tests.sh'" fi +SERVERLESS_FRAMEWORK_ARCH="" +if [ "$ARCH" = "amd64" ]; then + SERVERLESS_FRAMEWORK_ARCH="x86_64" +else + SERVERLESS_FRAMEWORK_ARCH="arm64" +fi cd $integration_tests_dir input_event_files=$(ls ./input_events) @@ -84,13 +90,11 @@ function remove_stack() { python_version=$parameters_set[1] run_id=$parameters_set[2] echo "Removing stack for stage : ${!run_id}" - PYTHON_VERSION=${!python_version} RUNTIME=$parameters_set SERVERLESS_RUNTIME=${!serverless_runtime} \ + PYTHON_VERSION=${!python_version} RUNTIME=$parameters_set SERVERLESS_RUNTIME=${!serverless_runtime} SLS_ARCH=${SERVERLESS_FRAMEWORK_ARCH} \ serverless remove --stage ${!run_id} done } - - trap remove_stack EXIT for parameters_set in "${PARAMETERS_SETS[@]}"; do serverless_runtime=$parameters_set[0] @@ -100,7 +104,7 @@ for parameters_set in "${PARAMETERS_SETS[@]}"; do echo "Deploying functions for runtime : $parameters_set, serverless runtime : ${!serverless_runtime}, \ python version : ${!python_version} and run id : ${!run_id}" - PYTHON_VERSION=${!python_version} RUNTIME=$parameters_set SERVERLESS_RUNTIME=${!serverless_runtime} \ + PYTHON_VERSION=${!python_version} RUNTIME=$parameters_set SERVERLESS_RUNTIME=${!serverless_runtime} ARCH=${ARCH} SLS_ARCH=${SERVERLESS_FRAMEWORK_ARCH} \ serverless deploy --stage ${!run_id} echo "Invoking functions for runtime $parameters_set" @@ -114,7 +118,7 @@ python version : ${!python_version} and run id : ${!run_id}" input_event_name=$(echo "$input_event_file" | sed "s/.json//") snapshot_path="./snapshots/return_values/${handler_name}_${input_event_name}.json" - return_value=$(PYTHON_VERSION=${!python_version} RUNTIME=$parameters_set SERVERLESS_RUNTIME=${!serverless_runtime} \ + return_value=$(PYTHON_VERSION=${!python_version} RUNTIME=$parameters_set SERVERLESS_RUNTIME=${!serverless_runtime} SLS_ARCH=${SERVERLESS_FRAMEWORK_ARCH} \ serverless invoke --stage ${!run_id} -f "$function_name" --path "./input_events/$input_event_file") if [ ! -f $snapshot_path ]; then @@ -156,7 +160,7 @@ for handler_name in "${LAMBDA_HANDLERS[@]}"; do # Fetch logs with serverless cli, retrying to avoid AWS account-wide rate limit error retry_counter=0 while [ $retry_counter -lt 10 ]; do - raw_logs=$(PYTHON_VERSION=${!python_version} RUNTIME=$parameters_set SERVERLESS_RUNTIME=${!serverless_runtime} \ + raw_logs=$(PYTHON_VERSION=${!python_version} RUNTIME=$parameters_set SERVERLESS_RUNTIME=${!serverless_runtime} ARCH=${ARCH} SLS_ARCH=${SERVERLESS_FRAMEWORK_ARCH} \ serverless logs --stage ${!run_id} -f $function_name --startTime $script_utc_start_time) fetch_logs_exit_code=$? if [ $fetch_logs_exit_code -eq 1 ]; then @@ -238,6 +242,7 @@ for handler_name in "${LAMBDA_HANDLERS[@]}"; do sed -E "s/(tracestate\:)([A-Za-z0-9\-\=\:\;].+)/\1XXX/g" | sed -E "s/(\"_dd.p.tid\"\: \")[a-z0-9\.\-]+/\1XXXX/g" | sed -E "s/(_dd.p.tid=)[a-z0-9\.\-]+/\1XXXX/g" | + sed -E 's/arch (aarch64|x86_64)/arch XXXX/g' | # Parse out account ID in ARN sed -E "s/([a-zA-Z0-9]+):([a-zA-Z0-9]+):([a-zA-Z0-9]+):([a-zA-Z0-9\-]+):([a-zA-Z0-9\-\:]+)/\1:\2:\3:\4:XXXX:\4/g" | sed -E "/init complete at epoch/d" | diff --git a/tests/integration/serverless.yml b/tests/integration/serverless.yml index bb64c3972..fd174c5f1 100644 --- a/tests/integration/serverless.yml +++ b/tests/integration/serverless.yml @@ -6,6 +6,7 @@ provider: region: eu-west-1 tracing: lambda: "PassThrough" + architecture: ${env:SLS_ARCH} environment: DD_INTEGRATION_TEST: true DD_TRACE_ENABLED: true @@ -23,7 +24,7 @@ provider: layers: python: package: - artifact: ../../.layers/datadog_lambda_py-amd64-${env:PYTHON_VERSION}.zip + artifact: ../../.layers/datadog_lambda_py-${env:ARCH}-${env:PYTHON_VERSION}.zip functions: # async-metrics (flushed to logs) diff --git a/tests/integration/snapshots/logs/sync-metrics_python310.log b/tests/integration/snapshots/logs/sync-metrics_python310.log index ac833bf09..e97b0cb25 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python310.log +++ b/tests/integration/snapshots/logs/sync-metrics_python310.log @@ -149,7 +149,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -172,7 +172,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -334,7 +334,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -357,7 +357,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -512,7 +512,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -535,7 +535,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -705,7 +705,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -728,7 +728,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -890,7 +890,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -913,7 +913,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1072,7 +1072,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1095,7 +1095,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1255,7 +1255,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1278,7 +1278,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1437,7 +1437,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1460,7 +1460,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1627,7 +1627,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1650,7 +1650,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" diff --git a/tests/integration/snapshots/logs/sync-metrics_python311.log b/tests/integration/snapshots/logs/sync-metrics_python311.log index 0e252e0fc..84161ca26 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python311.log +++ b/tests/integration/snapshots/logs/sync-metrics_python311.log @@ -149,7 +149,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -172,7 +172,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -334,7 +334,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -357,7 +357,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -512,7 +512,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -535,7 +535,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -705,7 +705,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -728,7 +728,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -890,7 +890,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -913,7 +913,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1072,7 +1072,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1095,7 +1095,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1255,7 +1255,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1278,7 +1278,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1437,7 +1437,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1460,7 +1460,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1627,7 +1627,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1650,7 +1650,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" diff --git a/tests/integration/snapshots/logs/sync-metrics_python312.log b/tests/integration/snapshots/logs/sync-metrics_python312.log index 74ebff997..8b4c74cf4 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python312.log +++ b/tests/integration/snapshots/logs/sync-metrics_python312.log @@ -149,7 +149,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -172,7 +172,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -334,7 +334,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -357,7 +357,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -512,7 +512,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -535,7 +535,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -705,7 +705,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -728,7 +728,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -890,7 +890,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -913,7 +913,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1072,7 +1072,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1095,7 +1095,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1255,7 +1255,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1278,7 +1278,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1437,7 +1437,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1460,7 +1460,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1627,7 +1627,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1650,7 +1650,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" diff --git a/tests/integration/snapshots/logs/sync-metrics_python38.log b/tests/integration/snapshots/logs/sync-metrics_python38.log index bd52bc1e8..4fe60af6a 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python38.log +++ b/tests/integration/snapshots/logs/sync-metrics_python38.log @@ -149,7 +149,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -172,7 +172,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -334,7 +334,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -357,7 +357,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -512,7 +512,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -535,7 +535,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -705,7 +705,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -728,7 +728,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -890,7 +890,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -913,7 +913,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1072,7 +1072,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1095,7 +1095,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1255,7 +1255,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1278,7 +1278,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1437,7 +1437,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1460,7 +1460,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1627,7 +1627,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1650,7 +1650,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" diff --git a/tests/integration/snapshots/logs/sync-metrics_python39.log b/tests/integration/snapshots/logs/sync-metrics_python39.log index 92a7cd33e..98d74ed63 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -149,7 +149,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -172,7 +172,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -334,7 +334,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -357,7 +357,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -512,7 +512,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -535,7 +535,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -705,7 +705,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -728,7 +728,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -890,7 +890,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -913,7 +913,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1072,7 +1072,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1095,7 +1095,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1255,7 +1255,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1278,7 +1278,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1437,7 +1437,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1460,7 +1460,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1627,7 +1627,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch x86_64)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX { "traces": [ [ @@ -1650,7 +1650,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", "http.status_code": "202", - "http.useragent": "datadogpy/XX (python XX; os linux; arch x86_64)", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" diff --git a/tests/test_tracing.py b/tests/test_tracing.py index 3a28a2a36..3d0478224 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -184,6 +184,8 @@ def test_with_non_object_event(self): {}, ) + """ + TODO(astuyve) I don't think partial extraction is forbidden anymore? ask rey @with_trace_propagation_style("datadog") def test_with_incomplete_datadog_trace_headers(self): lambda_ctx = get_mock_context() @@ -192,6 +194,7 @@ def test_with_incomplete_datadog_trace_headers(self): lambda_ctx, ) self.assertEqual(source, "xray") + print(ctx) self.assertEqual( ctx, Context( @@ -208,6 +211,7 @@ def test_with_incomplete_datadog_trace_headers(self): TraceHeader.SAMPLING_PRIORITY: "2", }, ) + """ @with_trace_propagation_style("datadog") def test_with_complete_datadog_trace_headers(self): @@ -261,6 +265,7 @@ def test_with_w3c_trace_headers(self): "traceparent": "00-0000000000000000000000000000007b-0000000000000141-01", "tracestate": "dd=s:2;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", "_dd.p.dm": "-0", + "_dd.parent_id": "0000000000000000", }, ) self.assertEqual(ctx, expected_context) @@ -268,7 +273,7 @@ def test_with_w3c_trace_headers(self): get_dd_trace_context(), { "traceparent": "00-0000000000000000000000000000007b-94ae789b969f1cc5-01", - "tracestate": "dd=s:2;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", + "tracestate": "dd=p:94ae789b969f1cc5;s:2;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", }, ) create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) @@ -453,6 +458,7 @@ def test_with_sqs_distributed_w3c_trace_data(self): "traceparent": "00-0000000000000000000000000000007b-0000000000000141-01", "tracestate": "dd=s:2;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", "_dd.p.dm": "-0", + "_dd.parent_id": "0000000000000000", }, ) self.assertEqual(ctx, expected_context) @@ -460,7 +466,7 @@ def test_with_sqs_distributed_w3c_trace_data(self): get_dd_trace_context(), { "traceparent": "00-0000000000000000000000000000007b-94ae789b969f1cc5-01", - "tracestate": "dd=s:2;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", + "tracestate": "dd=p:94ae789b969f1cc5;s:2;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", }, ) create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) @@ -523,14 +529,16 @@ def test_with_legacy_client_context_w3c_trace_data(self): "traceparent": "00-0000000000000000000000000000029a-0000000000000309-01", "tracestate": "dd=s:1;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", "_dd.p.dm": "-0", + "_dd.parent_id": "0000000000000000", }, ) + print(ctx) self.assertEqual(ctx, expected_context) self.assertDictEqual( get_dd_trace_context(), { "traceparent": "00-0000000000000000000000000000029a-94ae789b969f1cc5-01", - "tracestate": "dd=s:1;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", + "tracestate": "dd=p:94ae789b969f1cc5;s:1;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", }, ) create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) @@ -590,6 +598,7 @@ def test_with_new_client_context_w3c_trace_data(self): "traceparent": "00-0000000000000000000000000000029a-0000000000000309-01", "tracestate": "dd=s:1;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", "_dd.p.dm": "-0", + "_dd.parent_id": "0000000000000000", }, ) self.assertEqual(ctx, expected_context) @@ -597,7 +606,7 @@ def test_with_new_client_context_w3c_trace_data(self): get_dd_trace_context(), { "traceparent": "00-0000000000000000000000000000029a-94ae789b969f1cc5-01", - "tracestate": "dd=s:1;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", + "tracestate": "dd=p:94ae789b969f1cc5;s:1;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", }, ) create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) @@ -2231,7 +2240,7 @@ def test_mark_trace_as_error_for_5xx_responses_getting_400_response_code( def test_mark_trace_as_error_for_5xx_responses_sends_error_metric_and_set_error_tags( self, mock_submit_errors_metric ): - mock_span = Mock(ddtrace.span.Span) + mock_span = Mock(ddtrace.Span) status_code = "500" mark_trace_as_error_for_5xx_responses( context="fake_context", status_code=status_code, span=mock_span diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index 399989215..ee1ef99cf 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -155,6 +155,7 @@ def lambda_handler(event, context): lambda_metric("test.metric", 100) time.sleep(11) # assert flushing in the thread + # TODO(astuyve) flaky test here, sometimes this is zero self.assertEqual(self.mock_threadstats_flush_distributions.call_count, 1) lambda_metric("test.metric", 200) @@ -502,6 +503,9 @@ def lambda_handler(event, context): self.mock_submit_invocations_metric.assert_called_once() def test_dd_requests_service_name_default(self): + # TODO(astuyve) this is now set by CI, so we need to null it out for this case + os.environ["DD_SERVICE"] = "aws.lambda" + @wrapper.datadog_lambda_wrapper def lambda_handler(event, context): pass From 90dcd4969a9f75ec4907f110d742c98ac7c83b7b Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Mon, 4 Mar 2024 16:47:20 -0500 Subject: [PATCH 114/403] feat: Disable instrumentation telemetry by default (#423) --- datadog_lambda/tracing.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index dc7e32b27..948a19e58 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -28,6 +28,10 @@ send_segment, parse_xray_header, ) + +if os.environ.get("DD_INSTRUMENTATION_TELEMETRY_ENABLED") is None: + os.environ["DD_INSTRUMENTATION_TELEMETRY_ENABLED"] = "false" + from ddtrace import tracer, patch, Span from ddtrace import __version__ as ddtrace_version from ddtrace.propagation.http import HTTPPropagator From 57b280e11d0aeb1e50cf5a0f04bba0a21078bb51 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Mon, 4 Mar 2024 19:31:18 -0500 Subject: [PATCH 115/403] fix: wrong py version (#426) --- ci/datasources/runtimes.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/datasources/runtimes.yaml b/ci/datasources/runtimes.yaml index 0e084b087..62fd02791 100644 --- a/ci/datasources/runtimes.yaml +++ b/ci/datasources/runtimes.yaml @@ -8,7 +8,7 @@ runtimes: arch: "arm64" image: "3.8" - name: "python39" - python_version: "3.8" + python_version: "3.9" arch: "amd64" image: "3.9" - name: "python39" From 8b44ee3b246ddd99148d9af572beb691c77007c8 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Mon, 4 Mar 2024 19:32:18 -0500 Subject: [PATCH 116/403] fix: Wrong description (#425) --- ci/publish_layers.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/publish_layers.sh b/ci/publish_layers.sh index 31a918393..f94a0bc3b 100755 --- a/ci/publish_layers.sh +++ b/ci/publish_layers.sh @@ -60,7 +60,7 @@ publish_layer() { layer_path=$4 version_nbr=$(aws lambda publish-layer-version --layer-name $layer_name \ - --description "Datadog Lambda Layer for Node" \ + --description "Datadog Lambda Layer for Python" \ --zip-file "fileb://$layer_path" \ --region $region \ --compatible-runtimes $compatible_runtimes \ From a06668d72cf968435e3ca95605f91207034d080f Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Tue, 5 Mar 2024 09:19:49 -0500 Subject: [PATCH 117/403] feat: Move env setting to init.py. Disable api security (#424) --- datadog_lambda/__init__.py | 8 ++++++++ datadog_lambda/tracing.py | 3 --- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/datadog_lambda/__init__.py b/datadog_lambda/__init__.py index cfb5f8e3c..5cc2ba006 100644 --- a/datadog_lambda/__init__.py +++ b/datadog_lambda/__init__.py @@ -1,5 +1,13 @@ from datadog_lambda.cold_start import initialize_cold_start_tracing from datadog_lambda.logger import initialize_logging +import os + + +if os.environ.get("DD_INSTRUMENTATION_TELEMETRY_ENABLED") is None: + os.environ["DD_INSTRUMENTATION_TELEMETRY_ENABLED"] = "false" + +if os.environ.get("DD_API_SECURITY_ENABLED") is None: + os.environ["DD_API_SECURITY_ENABLED"] = "False" initialize_cold_start_tracing() diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 948a19e58..f032059b8 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -29,9 +29,6 @@ parse_xray_header, ) -if os.environ.get("DD_INSTRUMENTATION_TELEMETRY_ENABLED") is None: - os.environ["DD_INSTRUMENTATION_TELEMETRY_ENABLED"] = "false" - from ddtrace import tracer, patch, Span from ddtrace import __version__ as ddtrace_version from ddtrace.propagation.http import HTTPPropagator From 0cf9c56d09fb2c050ddbc48c2441fefcf8362c38 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Tue, 5 Mar 2024 09:20:28 -0500 Subject: [PATCH 118/403] feat: Remove http check for extension hello route (#422) * feat: Remove http check for extension hello route * feat: lint --- datadog_lambda/extension.py | 27 +++++++-------------------- tests/test_extension.py | 13 +++---------- 2 files changed, 10 insertions(+), 30 deletions(-) diff --git a/datadog_lambda/extension.py b/datadog_lambda/extension.py index d66848ff0..159048d7f 100644 --- a/datadog_lambda/extension.py +++ b/datadog_lambda/extension.py @@ -1,36 +1,23 @@ import logging from os import path -try: - # only available in python 3 - # not an issue since the extension is not compatible with python 2.x runtime - # https://docs.aws.amazon.com/lambda/latest/dg/using-extensions.html - import urllib.request -except ImportError: - # safe since both calls to urllib are protected with try/expect and will return false - urllib = None - AGENT_URL = "http://127.0.0.1:8124" -HELLO_PATH = "/lambda/hello" FLUSH_PATH = "/lambda/flush" EXTENSION_PATH = "/opt/extensions/datadog-agent" logger = logging.getLogger(__name__) -def is_extension_running(): - if not path.exists(EXTENSION_PATH): - return False - try: - urllib.request.urlopen(AGENT_URL + HELLO_PATH) - except Exception as e: - logger.debug("Extension is not running, returned with error %s", e) - return False - return True +def is_extension_present(): + if path.exists(EXTENSION_PATH): + return True + return False def flush_extension(): try: + import urllib.request + req = urllib.request.Request(AGENT_URL + FLUSH_PATH, "".encode("ascii")) urllib.request.urlopen(req) except Exception as e: @@ -39,4 +26,4 @@ def flush_extension(): return True -should_use_extension = is_extension_running() +should_use_extension = is_extension_present() diff --git a/tests/test_extension.py b/tests/test_extension.py index 5ecb0e36e..92142a9e3 100644 --- a/tests/test_extension.py +++ b/tests/test_extension.py @@ -6,7 +6,7 @@ from unittest.mock import patch from datadog_lambda.extension import ( - is_extension_running, + is_extension_present, flush_extension, should_use_extension, ) @@ -48,19 +48,12 @@ def tearDown(self): @patch("datadog_lambda.extension.EXTENSION_PATH", os.path.abspath(__file__)) def test_is_extension_running_true(self): - assert is_extension_running() - assert self.server.called + assert is_extension_present() def test_is_extension_running_file_not_found(self): - assert not is_extension_running() + assert not is_extension_present() assert not self.server.called - @patch("datadog_lambda.extension.EXTENSION_PATH", os.path.abspath(__file__)) - def test_is_extension_running_http_failure(self): - self.server.raises = True - assert not is_extension_running() - assert self.server.called - @patch("datadog_lambda.extension.EXTENSION_PATH", os.path.abspath(__file__)) def test_flush_ok(self): assert flush_extension() From d481a72cd60e260af2797f30baf91eda5097a856 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Tue, 5 Mar 2024 16:01:47 -0500 Subject: [PATCH 119/403] Remove iast and ddwaf (#427) * feat: Rip out appsec * feat: Remove more appsec stuff * empty commit to trigger ci --- Dockerfile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Dockerfile b/Dockerfile index a2da16f94..757d0c003 100644 --- a/Dockerfile +++ b/Dockerfile @@ -23,6 +23,9 @@ RUN find . -name '*.so' -exec strip -g {} \; RUN rm -rf ./python/lib/$runtime/site-packages/botocore* RUN rm -rf ./python/lib/$runtime/site-packages/setuptools RUN rm -rf ./python/lib/$runtime/site-packages/jsonschema/tests +RUN find . -name 'libddwaf.so' -delete +RUN rm ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_taint_tracking/*.so +RUN rm ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_stacktrace*.so FROM scratch COPY --from=builder /build/python / From 2b8d31d2129cd32ce6377e0f12486e2563554eef Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Tue, 5 Mar 2024 16:14:18 -0500 Subject: [PATCH 120/403] feat: ddtrace py now sets a default sample rate header, so we don't fall into this case anymore (#428) --- tests/test_tracing.py | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/tests/test_tracing.py b/tests/test_tracing.py index 3d0478224..d14ad1e9f 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -184,17 +184,14 @@ def test_with_non_object_event(self): {}, ) - """ - TODO(astuyve) I don't think partial extraction is forbidden anymore? ask rey @with_trace_propagation_style("datadog") def test_with_incomplete_datadog_trace_headers(self): lambda_ctx = get_mock_context() ctx, source, event_source = extract_dd_trace_context( - {"headers": {TraceHeader.TRACE_ID: "123", TraceHeader.PARENT_ID: "321"}}, + {"headers": {TraceHeader.TRACE_ID: "123"}}, lambda_ctx, ) self.assertEqual(source, "xray") - print(ctx) self.assertEqual( ctx, Context( @@ -211,7 +208,6 @@ def test_with_incomplete_datadog_trace_headers(self): TraceHeader.SAMPLING_PRIORITY: "2", }, ) - """ @with_trace_propagation_style("datadog") def test_with_complete_datadog_trace_headers(self): @@ -532,7 +528,6 @@ def test_with_legacy_client_context_w3c_trace_data(self): "_dd.parent_id": "0000000000000000", }, ) - print(ctx) self.assertEqual(ctx, expected_context) self.assertDictEqual( get_dd_trace_context(), From b2e20847d83ccad77db9398cd9829d82452f36fb Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Wed, 6 Mar 2024 10:26:18 -0500 Subject: [PATCH 121/403] feat: remove check-size from github workflow (#429) --- .github/workflows/check-size.yml | 33 -------------------------------- 1 file changed, 33 deletions(-) delete mode 100644 .github/workflows/check-size.yml diff --git a/.github/workflows/check-size.yml b/.github/workflows/check-size.yml deleted file mode 100644 index 9a60bfe94..000000000 --- a/.github/workflows/check-size.yml +++ /dev/null @@ -1,33 +0,0 @@ -name: check-size - -on: pull_request - -jobs: - check-size: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: Set up Python - uses: actions/setup-python@v4 - with: - python-version: 3.12 - - - name: Install Crossbuild Deps - run: | - sudo apt-get update --allow-releaseinfo-change --fix-missing - sudo apt install -y qemu-user-static binfmt-support - - - name: Install dependencies - run: | - pip install virtualenv - virtualenv venv - source venv/bin/activate - pip install .[dev] - - - name: Build Layers - run: ./scripts/build_layers.sh - - - name: Check Size - run: ./scripts/check_layer_size.sh From 1f4593d5bf3f07b9632888982dac68ba5f61c26d Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Wed, 6 Mar 2024 10:35:45 -0500 Subject: [PATCH 122/403] v5.89.0 (#430) --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 5dbd9e5b7..007f47c6f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "5.88.0" +version = "5.89.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 51fefdf4d0650fcc609763f8abb8a3c77038371f Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Wed, 6 Mar 2024 11:01:22 -0500 Subject: [PATCH 123/403] Revert "v5.89.0 (#430)" (#431) This reverts commit 1f4593d5bf3f07b9632888982dac68ba5f61c26d. --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 007f47c6f..5dbd9e5b7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "5.89.0" +version = "5.88.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From a132b042fff2a471330a97ef8cbcb741651ac1f2 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Wed, 6 Mar 2024 11:07:27 -0500 Subject: [PATCH 124/403] feat: Signing job should run as one-shot or loop over layers (#432) --- scripts/sign_layers.sh | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/scripts/sign_layers.sh b/scripts/sign_layers.sh index 7e748f70a..700bd55af 100755 --- a/scripts/sign_layers.sh +++ b/scripts/sign_layers.sh @@ -41,6 +41,18 @@ if [ "$1" = "prod" ]; then S3_BUCKET_NAME="dd-lambda-signing-bucket" fi +if [ -z "$LAYER_FILE" ]; then + echo "Layer file not specified, running for all layer files." +else + echo "Layer file is specified: $LAYER_FILE" + if (printf '%s\n' "${LAYER_FILES[@]}" | grep -xq $LAYER_FILE); then + LAYER_FILES=($LAYER_FILE) + else + echo "Unsupported layer found, valid options are : ${LAYER_FILES[@]}" + exit 1 + fi +fi + for LAYER_FILE in "${LAYER_FILES[@]}" do echo From 9b30329795d287157815e3bb908341b99fffdc9e Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Wed, 6 Mar 2024 12:32:43 -0500 Subject: [PATCH 125/403] v5.89.0 (#433) --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 5dbd9e5b7..007f47c6f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "5.88.0" +version = "5.89.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From df9e164d025d85138f06e374ecd1e764071c9272 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Wed, 6 Mar 2024 12:53:58 -0500 Subject: [PATCH 126/403] feat: Fix py layer name (#434) --- ci/input_files/build.yaml.tpl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ci/input_files/build.yaml.tpl b/ci/input_files/build.yaml.tpl index e562092db..68efeea8a 100644 --- a/ci/input_files/build.yaml.tpl +++ b/ci/input_files/build.yaml.tpl @@ -115,13 +115,13 @@ sign-layer ({{ $runtime.name }}-{{ $runtime.arch }}): artifacts: # Re specify artifacts so the modified signed file is passed expire_in: 1 day # Signed layers should expire after 1 day paths: - - .layers/datadog_lambda_python-{{ $runtime.arch }}-{{ $runtime.python_version }}.zip + - .layers/datadog_lambda_py-{{ $runtime.arch }}-{{ $runtime.python_version }}.zip before_script: - apt-get update - apt-get install -y uuid-runtime - EXTERNAL_ID_NAME={{ $environment.external_id }} ROLE_TO_ASSUME={{ $environment.role_to_assume }} AWS_ACCOUNT={{ $environment.account }} source ./ci/get_secrets.sh script: - - LAYER_FILE=datadog_lambda_python-{{ $runtime.arch}}-{{ $runtime.python_version }}.zip ./scripts/sign_layers.sh {{ $environment.name }} + - LAYER_FILE=datadog_lambda_py-{{ $runtime.arch}}-{{ $runtime.python_version }}.zip ./scripts/sign_layers.sh {{ $environment.name }} {{ end }} publish-layer-{{ $environment.name }} ({{ $runtime.name }}-{{ $runtime.arch }}): From 36cb0527e3d0c899eefa6c67a1128eb8531e6a01 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Wed, 6 Mar 2024 12:55:57 -0500 Subject: [PATCH 127/403] Revert "v5.89.0 (#433)" (#435) This reverts commit 9b30329795d287157815e3bb908341b99fffdc9e. --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 007f47c6f..5dbd9e5b7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "5.89.0" +version = "5.88.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 537011171b22be8cdb8cc752a112c327b1059392 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Wed, 6 Mar 2024 13:34:19 -0500 Subject: [PATCH 128/403] release v5.89.0 (#437) --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 5dbd9e5b7..007f47c6f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "5.88.0" +version = "5.89.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 0ebcf58daf30fcf736b93d87cf2aeacafda8d8df Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Wed, 6 Mar 2024 16:35:00 -0500 Subject: [PATCH 129/403] feat: Support govcloud releases locally (#438) * feat: Support govcloud releases locally * feat: remove extra early return --- scripts/publish_prod.sh | 79 +++++++++++++++++++++++++++-------------- 1 file changed, 52 insertions(+), 27 deletions(-) diff --git a/scripts/publish_prod.sh b/scripts/publish_prod.sh index e8838c5a1..f88ac5e2e 100755 --- a/scripts/publish_prod.sh +++ b/scripts/publish_prod.sh @@ -31,11 +31,6 @@ else NEW_VERSION=$1 fi -# Ensure AWS access before proceeding -ddsaml2aws login -a govcloud-us1-fed-human-engineering -AWS_PROFILE=govcloud-us1-fed-human-engineering aws sts get-caller-identity -aws-vault exec sso-prod-engineering -- aws sts get-caller-identity - # Ensure pypi registry access read -p "Do you have access to PyPI (y/n)?" CONT if [ "$CONT" != "y" ]; then @@ -52,11 +47,17 @@ if [ "$CONT" != "y" ]; then exit 1 fi -echo -echo "Replacing version in pyproject.toml" -echo +echo "Answer 'n' if already done in a PR" +read -p "Update pyproject.toml version? (y/n)?" CONT +if [ "$CONT" != "y" ]; then + echo "Skipping updating package.json version" +else + echo + echo "Replacing version in pyproject.toml" + echo -poetry version ${NEW_VERSION} + poetry version ${NEW_VERSION} +fi echo echo "Building layers..." @@ -66,33 +67,57 @@ echo echo "Signing layers for commercial AWS regions" aws-vault exec sso-prod-engineering -- ./scripts/sign_layers.sh prod -echo -echo "Publishing layers to commercial AWS regions" -VERSION=$LAYER_VERSION aws-vault exec sso-prod-engineering -- ./scripts/publish_layers.sh +echo "Answer 'n' if GitLab already did this" +read -p "Deploy layers to commercial AWS (y/n)?" CONT +if [ "$CONT" != "y" ]; then + echo "Skipping deployment to commercial AWS" +else + echo "Ensuring you have access to the production AWS account" + aws-vault exec sso-prod-engineering -- aws sts get-caller-identity + + echo + echo "Publishing layers to commercial AWS regions" + VERSION=$LAYER_VERSION aws-vault exec sso-prod-engineering --no-session -- ./scripts/publish_layers.sh +fi +read -p "Deploy layers to GovCloud AWS (y/n)?" CONT +if [ "$CONT" != "y" ]; then + echo "Skipping deployment to GovCloud AWS" +else + echo "Ensuring you have access to the AWS GovCloud account" + ddsaml2aws login -a govcloud-us1-fed-human-engineering + AWS_PROFILE=govcloud-us1-fed-human-engineering aws sts get-caller-identity -echo "Publishing layers to GovCloud AWS regions" -ddsaml2aws login -a govcloud-us1-fed-human-engineering -VERSION=$LAYER_VERSION AWS_PROFILE=govcloud-us1-fed-human-engineering ./scripts/publish_layers.sh + echo "Publishing layers to GovCloud AWS regions" + ddsaml2aws login -a govcloud-us1-fed-human-engineering + VERSION=$LAYER_VERSION AWS_PROFILE=govcloud-us1-fed-human-engineering ./scripts/publish_layers.sh +fi +echo "Answer 'n' if GitLab already did this" read -p "Ready to publish $NEW_VERSION to PyPI (y/n)?" CONT if [ "$CONT" != "y" ]; then - echo "Exiting" - exit 1 + echo "Skipping publishing to PyPI" +else + echo + echo "Publishing to https://pypi.org/project/datadog-lambda/" + ./scripts/pypi.sh fi -echo -echo "Publishing to https://pypi.org/project/datadog-lambda/" -./scripts/pypi.sh -echo -echo 'Publishing updates to github' -git commit pyproject.toml -m "Bump version to ${NEW_VERSION}" -git push origin main -git tag "v$LAYER_VERSION" -git push origin "refs/tags/v$LAYER_VERSION" +echo "Answer 'n' if you already released in GitHub" +read -p "Do you want to bump the version in GitHub? (y/n)" CONT +if [ "$CONT" != "y" ]; then + echo "Skipping publishing updates to GitHub" +else + echo + echo 'Publishing updates to github' + git commit pyproject.toml -m "Bump version to ${NEW_VERSION}" + git push origin main + git tag "v$LAYER_VERSION" + git push origin "refs/tags/v$LAYER_VERSION" +fi echo -echo "Now create a new release with the tag v${LAYER_VERSION} created" +echo "Now create a new release with the tag v${LAYER_VERSION} created unless you have done this already" echo "https://github.com/DataDog/datadog-lambda-python/releases/new?tag=v$LAYER_VERSION&title=v$LAYER_VERSION" # Open a PR to the documentation repo to automatically bump layer version VERSION=$LAYER_VERSION LAYER=datadog-lambda-python ./scripts/create_documentation_pr.sh From e90d089b8d271d738c6ea1a48220d7bc5213ef56 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Fri, 8 Mar 2024 11:09:00 -0500 Subject: [PATCH 130/403] feat: add eu-north-1 (#439) --- ci/datasources/regions.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/ci/datasources/regions.yaml b/ci/datasources/regions.yaml index a26372d8d..a885f9679 100644 --- a/ci/datasources/regions.yaml +++ b/ci/datasources/regions.yaml @@ -18,6 +18,7 @@ regions: # - code: "ca-west-1" we don't support it - code: "eu-central-1" - code: "eu-central-2" + - code: "eu-north-1" - code: "eu-west-1" - code: "eu-west-2" - code: "eu-west-3" From 3b53751c6c4393872f7c3229d5989c031b22d37d Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Mon, 11 Mar 2024 11:07:56 -0400 Subject: [PATCH 131/403] feat: Enable ca-west-1 and il-central-1 (#440) * feat: Enable ca-west-1 and il-central-1 * feat: remove comment --- ci/datasources/regions.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ci/datasources/regions.yaml b/ci/datasources/regions.yaml index a885f9679..9f12a0118 100644 --- a/ci/datasources/regions.yaml +++ b/ci/datasources/regions.yaml @@ -15,7 +15,7 @@ regions: - code: "ap-northeast-2" - code: "ap-northeast-3" - code: "ca-central-1" -# - code: "ca-west-1" we don't support it + - code: "ca-west-1" - code: "eu-central-1" - code: "eu-central-2" - code: "eu-north-1" @@ -24,7 +24,7 @@ regions: - code: "eu-west-3" - code: "eu-south-1" - code: "eu-south-2" -# - code: "il-central-1" we don't support it + - code: "il-central-1" - code: "me-south-1" - code: "me-central-1" - code: "sa-east-1" From 1a28c72c3efe1ef7a6abd923683b11e6f0d7bfe9 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Mon, 11 Mar 2024 15:03:04 -0400 Subject: [PATCH 132/403] feat: Bump ddtrace to 2.7.2 (#441) --- poetry.lock | 374 ++++++++++++++++--------------- pyproject.toml | 2 +- scripts/run_integration_tests.sh | 5 + 3 files changed, 203 insertions(+), 178 deletions(-) diff --git a/poetry.lock b/poetry.lock index 52515d215..1986c23af 100644 --- a/poetry.lock +++ b/poetry.lock @@ -22,18 +22,18 @@ tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "p [[package]] name = "boto3" -version = "1.34.28" +version = "1.34.59" description = "The AWS SDK for Python" category = "main" optional = true python-versions = ">= 3.8" files = [ - {file = "boto3-1.34.28-py3-none-any.whl", hash = "sha256:fb56622ce195c06ae0d15ae9472d44529362a869ad52862a5a28b891530969f9"}, - {file = "boto3-1.34.28.tar.gz", hash = "sha256:9e0dcca7bb0567f7b4b84d1d26c19b217abfe149d19106af7f120f09142688cf"}, + {file = "boto3-1.34.59-py3-none-any.whl", hash = "sha256:004e67b078be58d34469406f93cc8b95bc43becef4bbe44523a0b8e51f84c668"}, + {file = "boto3-1.34.59.tar.gz", hash = "sha256:162edf182e53c198137a28432a626dba103f787a8f5000ed4758b73ccd203fa0"}, ] [package.dependencies] -botocore = ">=1.34.28,<1.35.0" +botocore = ">=1.34.59,<1.35.0" jmespath = ">=0.7.1,<2.0.0" s3transfer = ">=0.10.0,<0.11.0" @@ -42,14 +42,14 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.34.28" +version = "1.34.59" description = "Low-level, data-driven core of boto 3." category = "main" optional = true python-versions = ">= 3.8" files = [ - {file = "botocore-1.34.28-py3-none-any.whl", hash = "sha256:03be8209257ab65f3c8be7377cf8d38bff6a6afbe3d36c72924e48959bb694dc"}, - {file = "botocore-1.34.28.tar.gz", hash = "sha256:45c99ccc6389ab1a87e996a7cc8797c7e41d5ecd9a5757d567ba3a57cb7655e7"}, + {file = "botocore-1.34.59-py3-none-any.whl", hash = "sha256:4bc112dafb1679ab571117593f7656604726a3da0e5ae5bad00ea772fa40e75c"}, + {file = "botocore-1.34.59.tar.gz", hash = "sha256:24edb4d21d7c97dea0c6c4a80d36b3809b1443a30b0bd5e317d6c319dfac823f"}, ] [package.dependencies] @@ -106,14 +106,14 @@ ujson = ["ujson (>=5.7.0)"] [[package]] name = "certifi" -version = "2023.11.17" +version = "2024.2.2" description = "Python package for providing Mozilla's CA Bundle." category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2023.11.17-py3-none-any.whl", hash = "sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474"}, - {file = "certifi-2023.11.17.tar.gz", hash = "sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1"}, + {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"}, + {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"}, ] [[package]] @@ -217,70 +217,17 @@ files = [ ] [[package]] -name = "coverage" -version = "7.4.1" -description = "Code coverage measurement for Python" +name = "colorama" +version = "0.4.6" +description = "Cross-platform colored terminal text." category = "main" optional = true -python-versions = ">=3.8" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ - {file = "coverage-7.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:077d366e724f24fc02dbfe9d946534357fda71af9764ff99d73c3c596001bbd7"}, - {file = "coverage-7.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0193657651f5399d433c92f8ae264aff31fc1d066deee4b831549526433f3f61"}, - {file = "coverage-7.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d17bbc946f52ca67adf72a5ee783cd7cd3477f8f8796f59b4974a9b59cacc9ee"}, - {file = "coverage-7.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a3277f5fa7483c927fe3a7b017b39351610265308f5267ac6d4c2b64cc1d8d25"}, - {file = "coverage-7.4.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6dceb61d40cbfcf45f51e59933c784a50846dc03211054bd76b421a713dcdf19"}, - {file = "coverage-7.4.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:6008adeca04a445ea6ef31b2cbaf1d01d02986047606f7da266629afee982630"}, - {file = "coverage-7.4.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:c61f66d93d712f6e03369b6a7769233bfda880b12f417eefdd4f16d1deb2fc4c"}, - {file = "coverage-7.4.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b9bb62fac84d5f2ff523304e59e5c439955fb3b7f44e3d7b2085184db74d733b"}, - {file = "coverage-7.4.1-cp310-cp310-win32.whl", hash = "sha256:f86f368e1c7ce897bf2457b9eb61169a44e2ef797099fb5728482b8d69f3f016"}, - {file = "coverage-7.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:869b5046d41abfea3e381dd143407b0d29b8282a904a19cb908fa24d090cc018"}, - {file = "coverage-7.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b8ffb498a83d7e0305968289441914154fb0ef5d8b3157df02a90c6695978295"}, - {file = "coverage-7.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3cacfaefe6089d477264001f90f55b7881ba615953414999c46cc9713ff93c8c"}, - {file = "coverage-7.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d6850e6e36e332d5511a48a251790ddc545e16e8beaf046c03985c69ccb2676"}, - {file = "coverage-7.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:18e961aa13b6d47f758cc5879383d27b5b3f3dcd9ce8cdbfdc2571fe86feb4dd"}, - {file = "coverage-7.4.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dfd1e1b9f0898817babf840b77ce9fe655ecbe8b1b327983df485b30df8cc011"}, - {file = "coverage-7.4.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:6b00e21f86598b6330f0019b40fb397e705135040dbedc2ca9a93c7441178e74"}, - {file = "coverage-7.4.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:536d609c6963c50055bab766d9951b6c394759190d03311f3e9fcf194ca909e1"}, - {file = "coverage-7.4.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7ac8f8eb153724f84885a1374999b7e45734bf93a87d8df1e7ce2146860edef6"}, - {file = "coverage-7.4.1-cp311-cp311-win32.whl", hash = "sha256:f3771b23bb3675a06f5d885c3630b1d01ea6cac9e84a01aaf5508706dba546c5"}, - {file = "coverage-7.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:9d2f9d4cc2a53b38cabc2d6d80f7f9b7e3da26b2f53d48f05876fef7956b6968"}, - {file = "coverage-7.4.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f68ef3660677e6624c8cace943e4765545f8191313a07288a53d3da188bd8581"}, - {file = "coverage-7.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:23b27b8a698e749b61809fb637eb98ebf0e505710ec46a8aa6f1be7dc0dc43a6"}, - {file = "coverage-7.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e3424c554391dc9ef4a92ad28665756566a28fecf47308f91841f6c49288e66"}, - {file = "coverage-7.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e0860a348bf7004c812c8368d1fc7f77fe8e4c095d661a579196a9533778e156"}, - {file = "coverage-7.4.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe558371c1bdf3b8fa03e097c523fb9645b8730399c14fe7721ee9c9e2a545d3"}, - {file = "coverage-7.4.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3468cc8720402af37b6c6e7e2a9cdb9f6c16c728638a2ebc768ba1ef6f26c3a1"}, - {file = "coverage-7.4.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:02f2edb575d62172aa28fe00efe821ae31f25dc3d589055b3fb64d51e52e4ab1"}, - {file = "coverage-7.4.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ca6e61dc52f601d1d224526360cdeab0d0712ec104a2ce6cc5ccef6ed9a233bc"}, - {file = "coverage-7.4.1-cp312-cp312-win32.whl", hash = "sha256:ca7b26a5e456a843b9b6683eada193fc1f65c761b3a473941efe5a291f604c74"}, - {file = "coverage-7.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:85ccc5fa54c2ed64bd91ed3b4a627b9cce04646a659512a051fa82a92c04a448"}, - {file = "coverage-7.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8bdb0285a0202888d19ec6b6d23d5990410decb932b709f2b0dfe216d031d218"}, - {file = "coverage-7.4.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:918440dea04521f499721c039863ef95433314b1db00ff826a02580c1f503e45"}, - {file = "coverage-7.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:379d4c7abad5afbe9d88cc31ea8ca262296480a86af945b08214eb1a556a3e4d"}, - {file = "coverage-7.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b094116f0b6155e36a304ff912f89bbb5067157aff5f94060ff20bbabdc8da06"}, - {file = "coverage-7.4.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2f5968608b1fe2a1d00d01ad1017ee27efd99b3437e08b83ded9b7af3f6f766"}, - {file = "coverage-7.4.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:10e88e7f41e6197ea0429ae18f21ff521d4f4490aa33048f6c6f94c6045a6a75"}, - {file = "coverage-7.4.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a4a3907011d39dbc3e37bdc5df0a8c93853c369039b59efa33a7b6669de04c60"}, - {file = "coverage-7.4.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6d224f0c4c9c98290a6990259073f496fcec1b5cc613eecbd22786d398ded3ad"}, - {file = "coverage-7.4.1-cp38-cp38-win32.whl", hash = "sha256:23f5881362dcb0e1a92b84b3c2809bdc90db892332daab81ad8f642d8ed55042"}, - {file = "coverage-7.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:a07f61fc452c43cd5328b392e52555f7d1952400a1ad09086c4a8addccbd138d"}, - {file = "coverage-7.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8e738a492b6221f8dcf281b67129510835461132b03024830ac0e554311a5c54"}, - {file = "coverage-7.4.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:46342fed0fff72efcda77040b14728049200cbba1279e0bf1188f1f2078c1d70"}, - {file = "coverage-7.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9641e21670c68c7e57d2053ddf6c443e4f0a6e18e547e86af3fad0795414a628"}, - {file = "coverage-7.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aeb2c2688ed93b027eb0d26aa188ada34acb22dceea256d76390eea135083950"}, - {file = "coverage-7.4.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d12c923757de24e4e2110cf8832d83a886a4cf215c6e61ed506006872b43a6d1"}, - {file = "coverage-7.4.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0491275c3b9971cdbd28a4595c2cb5838f08036bca31765bad5e17edf900b2c7"}, - {file = "coverage-7.4.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:8dfc5e195bbef80aabd81596ef52a1277ee7143fe419efc3c4d8ba2754671756"}, - {file = "coverage-7.4.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:1a78b656a4d12b0490ca72651fe4d9f5e07e3c6461063a9b6265ee45eb2bdd35"}, - {file = "coverage-7.4.1-cp39-cp39-win32.whl", hash = "sha256:f90515974b39f4dea2f27c0959688621b46d96d5a626cf9c53dbc653a895c05c"}, - {file = "coverage-7.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:64e723ca82a84053dd7bfcc986bdb34af8d9da83c521c19d6b472bc6880e191a"}, - {file = "coverage-7.4.1-pp38.pp39.pp310-none-any.whl", hash = "sha256:32a8d985462e37cfdab611a6f95b09d7c091d07668fdc26e47a725ee575fe166"}, - {file = "coverage-7.4.1.tar.gz", hash = "sha256:1ed4b95480952b1a26d863e546fa5094564aa0065e1e5f0d4d0041f293251d04"}, + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] -[package.extras] -toml = ["tomli"] - [[package]] name = "datadog" version = "0.48.0" @@ -314,72 +261,72 @@ six = "*" [[package]] name = "ddtrace" -version = "2.5.1" +version = "2.7.2" description = "Datadog APM client library" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "ddtrace-2.5.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:3bb27b10bcb55ad392027ac37ddc86cbea04e38f9963b18e4b7218a59dbc9b6d"}, - {file = "ddtrace-2.5.1-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:bde40dd9cdff53de6535f9ae1e41a4d37aed0eb113e4597fde8f48dec4629291"}, - {file = "ddtrace-2.5.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e02e3d15c2a3b63bd5a05fed429f7d77d41bc818b7a18554ac0f36104de28ccf"}, - {file = "ddtrace-2.5.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e746cb76c41602173ed1d995929218c23cd41f52f29ac2cdf6d44f04b593a5b1"}, - {file = "ddtrace-2.5.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f98240890feca039ce05310bbe91cb842dfc43277ca0560e6acd483753a90cbd"}, - {file = "ddtrace-2.5.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:ae7ed838023ce3d30d2cd071bd6113525b6245e8c25c1f8f9ff32b76fb7b7394"}, - {file = "ddtrace-2.5.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e4b2ab5094e7d4cbf3a5143716e400b3b4af81e777e4afb30a9374394b7a8238"}, - {file = "ddtrace-2.5.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:da1db3e7b5d45c54daf5b422333a03711dcdb448d7b122a689841c450797baa6"}, - {file = "ddtrace-2.5.1-cp310-cp310-win32.whl", hash = "sha256:e0eda4c5f4cc7219361503fd05c1f0bbb6c70d73de73805d062becf323055ffc"}, - {file = "ddtrace-2.5.1-cp310-cp310-win_amd64.whl", hash = "sha256:aeb3a6358e702c7797fc6c447f2a2e5873dc207e65176bb6080608e7d2662a15"}, - {file = "ddtrace-2.5.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:aecb70d89e3662aa32fc42a271dcd90dde654902ccb97fbca2e5c52dfd10276d"}, - {file = "ddtrace-2.5.1-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:dc81597a7bf44d48ce1317e1dd62b0329eea1cf3a22cb1730273593bd3cf9dc6"}, - {file = "ddtrace-2.5.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79e9f9db08a0bd3751503d4e215e04780e5d59d084f43cb54cc35089c4e08c57"}, - {file = "ddtrace-2.5.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d971804470cb34a3580dd701432721678c0c361c75bc580cf2588f42fd13f0b9"}, - {file = "ddtrace-2.5.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c8a936345d53f5290c9557eac5ac7d90218cd45e7c92215f1ee3eb1de309fe46"}, - {file = "ddtrace-2.5.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:eee1eb5ef049b8667d0d53cacfc3c79b5fe978acbd5a59135cd4e1ed59b31be9"}, - {file = "ddtrace-2.5.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:56474f8756cb2a6b708c79a62227b5b0bc235d74099361a95ea225646dbbf230"}, - {file = "ddtrace-2.5.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:06c8b33099285db7fb7dd4b6dffae16b7d88d13231b00104e29c85d925d7359d"}, - {file = "ddtrace-2.5.1-cp311-cp311-win32.whl", hash = "sha256:209ac6ad4656869aecaa7794444d166c741200330843f555f4f8161643ea7a8b"}, - {file = "ddtrace-2.5.1-cp311-cp311-win_amd64.whl", hash = "sha256:418685567d33a27ac476756d73dfa81c74d40099f28dc5af61e3ad8cdaa6596d"}, - {file = "ddtrace-2.5.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:3a27a5cd2eefe98243e185d26cba380960819f43b1d214c77af6ba15699cd8ae"}, - {file = "ddtrace-2.5.1-cp312-cp312-macosx_11_0_x86_64.whl", hash = "sha256:16479b5e04bdb0400898a14b2208247955fd599f9809d7f84d5055557258b6f2"}, - {file = "ddtrace-2.5.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea1a5f908abd988e6f70595c31f4a0be18bbd780558c506640ce2751397c9d19"}, - {file = "ddtrace-2.5.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:72593b98093d3de456cd47185e6dbb851b77b104cd108a16d6339ff3102c1581"}, - {file = "ddtrace-2.5.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e7d1f311779369537148c124528265a7d7d45f4a4ad5304d4919c13d6216eba0"}, - {file = "ddtrace-2.5.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:06a2f4fe57eae9e5a54bd6cf7fad6e34c1c7205ce78a65c2eeb10bd00b610538"}, - {file = "ddtrace-2.5.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:45fc94bfd615c1c64f05e55b760289638de7149020e517af8cefca5151efbbc3"}, - {file = "ddtrace-2.5.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4d10f6e5113d757fef994b9d8db89c7fa270cbb8aec99b75527c460217e5f2a4"}, - {file = "ddtrace-2.5.1-cp312-cp312-win32.whl", hash = "sha256:7500956f12f55f51199b96cdbc6724adb627576dc968c8d36dbc646fc91cd291"}, - {file = "ddtrace-2.5.1-cp312-cp312-win_amd64.whl", hash = "sha256:3302bc89ccdecfbbd907766cbd4e083e5d0df1cf075cd49b07ae5f1c25987187"}, - {file = "ddtrace-2.5.1-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:0c845623008231788aca5e8e27e215d638999de0a82af58a3eebef74b8dd3100"}, - {file = "ddtrace-2.5.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:988582eb12ade7ba4f4bf4a09e5fde8f05a005ffc1784381fd258720354f80bb"}, - {file = "ddtrace-2.5.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2110dea2b2390f799516cfe0611e4727939cf3139186668786ad57bbcea70f08"}, - {file = "ddtrace-2.5.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d8adf00eec47ecd78216903b7c6ec23d533aa0302120ca35d6c35836d92e7ab"}, - {file = "ddtrace-2.5.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:878eed15287aebcc7b776a40392dc1794b12999f561c5872489ad1426df87914"}, - {file = "ddtrace-2.5.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:1a83033183a1747190a7528de8eb9da70392e227288f6d32f57800747c9379cc"}, - {file = "ddtrace-2.5.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:80b21572dbb3d781360987468cd03dacd49179dd703e66d4fdeb524369f94da3"}, - {file = "ddtrace-2.5.1-cp37-cp37m-win32.whl", hash = "sha256:7d7511a9933a087f4603fb4d9c09d0f8a23b8bfdc2c958d7b01d255795d9f087"}, - {file = "ddtrace-2.5.1-cp37-cp37m-win_amd64.whl", hash = "sha256:69327a9d1488dee70bc6ba052c76bd2f73d52767de890edf2997c0e9b3711316"}, - {file = "ddtrace-2.5.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:1427aa0914a20f18b5a7f075c7f1f3c79ded434cfe8fd658110ba43c0490488a"}, - {file = "ddtrace-2.5.1-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:8152a850af06a10c631e8725bf677da2867705c2c4ea4bcd2911837798870050"}, - {file = "ddtrace-2.5.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2277b3b468479d2cfdef597030b029b217528a5bf986e94b707b8a346e68dd21"}, - {file = "ddtrace-2.5.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fafb2235b87141bddd03b38b225ef3468ec821d9c4e5fd0c42b1d27b30f6e9c9"}, - {file = "ddtrace-2.5.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10fa3443168545286c140bfef7a59957c87d89971650788010a2e19352a8f65e"}, - {file = "ddtrace-2.5.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:af0eccf9ac9d9e7557cf52d2bfe549ea02d3b41b81407ebd70a11b079d15a160"}, - {file = "ddtrace-2.5.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:49347e198e82025679c82f8880e029e2dec80f48f6fcc2bd30d64865f6c8c98f"}, - {file = "ddtrace-2.5.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:66dec725d1abf764736a73ee04e885128abb7d6c6ca0ef6935888ba5610ef292"}, - {file = "ddtrace-2.5.1-cp38-cp38-win32.whl", hash = "sha256:cf0cd0b7e65efb91ffacf5987d73fd1505bead9162c05d4a7bc0ff009414621e"}, - {file = "ddtrace-2.5.1-cp38-cp38-win_amd64.whl", hash = "sha256:38a4419916ea6496aa6ee49c13280da825d9863e2a4bce98d6c6820da8d51678"}, - {file = "ddtrace-2.5.1-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:5e2ed51c5fa9247fa3122d8f615c157d0955e2d673b1e76da2578ecf313eb6cf"}, - {file = "ddtrace-2.5.1-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:8953b2c39a0ca5fb4d742df346a9ed53d100ac6d50c6fd68416eb6ebadf9025e"}, - {file = "ddtrace-2.5.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d35cc4e93283ad3f6e96be99de1ba8adc7ef503d995a3dd7808aa242bbed28cc"}, - {file = "ddtrace-2.5.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f79c16a430fc1b4fb18b881106368f09383f293abf5366d96c1155aad320a677"}, - {file = "ddtrace-2.5.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf8d46467e456b0f2682952b4b3835e996aaae77e26455f150c35dde223ff0fb"}, - {file = "ddtrace-2.5.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f73d297c4528c880c0d35a2e43f2c3703662e31a5e527a0d33ee9c20e7dba530"}, - {file = "ddtrace-2.5.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:ed4fcda36dd740693314bcaa4feddb566b2ccd835c3ac6aad42f36525280cc1e"}, - {file = "ddtrace-2.5.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d535cdfc9e34e3a7972420c88a9c88f399619867f9774f09ff3f92a57136e199"}, - {file = "ddtrace-2.5.1-cp39-cp39-win32.whl", hash = "sha256:1d7b4f7aeb9dffe357f00f516fa7c800c9a76ff29045edfb381ac1ee4a228b34"}, - {file = "ddtrace-2.5.1-cp39-cp39-win_amd64.whl", hash = "sha256:bebae8b500c2b6d641d0a312b4a0c1e222c2ba093c3db6e4b38315a6c5f819da"}, - {file = "ddtrace-2.5.1.tar.gz", hash = "sha256:c78da78418a658b1ba1880ffe6477874aa1f26a23f26db98e0f012b07a1d3998"}, + {file = "ddtrace-2.7.2-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:31a0a4ffefdc6c20e9e4ef663b411ea66bd2a4113bec7f10292df00b75e883f3"}, + {file = "ddtrace-2.7.2-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:fd148fce8c18a278b055f7e1b4c56e5b3214cd17fc42882dfb987826a00197d6"}, + {file = "ddtrace-2.7.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce0febe3be1c06b7b3ea64aa21d0a37bc06f9a4c3291e833e95687c10be459a2"}, + {file = "ddtrace-2.7.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6cc7663f1c7d42f47266ae135b4ee16773e125417597e24da86bb78ecc82f85b"}, + {file = "ddtrace-2.7.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06c6b7e6f153fb739de3da62cb9d99283a2669f8ebeb92238d272803939c7433"}, + {file = "ddtrace-2.7.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:a7879965428bb7c6abd020031ef3a5ffcc0104b7c15f021dcc0315bc421a721a"}, + {file = "ddtrace-2.7.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:5e3d33c43e8302c72d1b2b7a854d4a17c787973e61ec76cd7fc6434839aefc7c"}, + {file = "ddtrace-2.7.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fcbb686d0ffe47df42fe092e020302c912c956da742cf4787e616c8f73a26c8b"}, + {file = "ddtrace-2.7.2-cp310-cp310-win32.whl", hash = "sha256:f9a76c303cec59216b706186e2de38ae1d650405660277fed121c7658f320cf7"}, + {file = "ddtrace-2.7.2-cp310-cp310-win_amd64.whl", hash = "sha256:4385b4f4f8ec7313ead4d852d8dd50cae4c45f49b3893cc6aa4a64a3b3be93b8"}, + {file = "ddtrace-2.7.2-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:4dd90dc7c173edc32283b4f70937ea01ec43924a1b0af7ef6bbaa22076210860"}, + {file = "ddtrace-2.7.2-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:923462adde72f363821c0c165ac78aa76236ae12022d44ad7c51b8870595bbaa"}, + {file = "ddtrace-2.7.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:190c4eefc1e3c0a7befd995bf10b51451ddd497fb636fd825d7f8527e28c5864"}, + {file = "ddtrace-2.7.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c5016bc73e92adef4017e8cf7fff8a49a2c0fad8dcac600459fa30f63dbab8be"}, + {file = "ddtrace-2.7.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c230035c714ed9ea3dd16d65813f539ba9c30c87294107d5f77cdddad430a086"}, + {file = "ddtrace-2.7.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1689277365728d5735931b98ef64115d958ab76fb698472e7d92a1f71bf0000b"}, + {file = "ddtrace-2.7.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:3e3a19ae9e8e2e6aff56aa93d73a0d72ce5530c1f0347b7ebba68b5c437efe49"}, + {file = "ddtrace-2.7.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e03cf1787728ae01cb8cd0b474b09461d47afb15a2146b1753bee80a27568d86"}, + {file = "ddtrace-2.7.2-cp311-cp311-win32.whl", hash = "sha256:081ba7c3d876c6dde6d3f8078205e3ae06932f0dbe5cb283f9bdc99052c262de"}, + {file = "ddtrace-2.7.2-cp311-cp311-win_amd64.whl", hash = "sha256:0299654ce610fe4d0f73b9c599bfaacd17537d1193cc7be95fb8e5238bed0ffa"}, + {file = "ddtrace-2.7.2-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:283d1ed0d496e07b80ef372f5e78d5a5aa86a70b59b1a0039d655d5796d8cd37"}, + {file = "ddtrace-2.7.2-cp312-cp312-macosx_11_0_x86_64.whl", hash = "sha256:a0e0ad2f20ce6942b3ceca0578be72416aacd6f63a7ef07de5a86ea524b16ad4"}, + {file = "ddtrace-2.7.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2094747698d8ffd50339b4c8142923371272a4e919a1f56cc75e8cce868ff638"}, + {file = "ddtrace-2.7.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dd239ba8a9762ef1defb7bb5c70e8b488987b462936f6f9f70a6613b35376178"}, + {file = "ddtrace-2.7.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82170d1d5153554dcfd475c0c1ab64f315cc7f00c5cf6c6bb471025b661ecc41"}, + {file = "ddtrace-2.7.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3140f5db9313f6a14d02a9036f16a1d5311261daec2d90160db829d08593ce1e"}, + {file = "ddtrace-2.7.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:134194fa8e8c14798374074c5472f33479cf5220dfccea79e1abaea7f57bdef2"}, + {file = "ddtrace-2.7.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5ce6f31d785762b80a8a8d346bdd302f15977cf0b0e13f81f4fdbf7815bae2c4"}, + {file = "ddtrace-2.7.2-cp312-cp312-win32.whl", hash = "sha256:0e6cd36d2373345863b3664f440b0255c1313e4f7ea3ac343de38ffe5402fa90"}, + {file = "ddtrace-2.7.2-cp312-cp312-win_amd64.whl", hash = "sha256:8ee761d7dfa01ccfeeb81215d16da27d0cfcc47a58a6b582dfd5816bccb64005"}, + {file = "ddtrace-2.7.2-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:c3b55cb4fc6ec1994f7f1e44dfbf62f46069b16cebe8b26781a3b198c821591d"}, + {file = "ddtrace-2.7.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7aa91a2c729f9187a75084b2a0fce23c63a8d3181e9c33a640e9e638ddbc7079"}, + {file = "ddtrace-2.7.2-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b4ce51a957f21ae997795a9a2e9f11fb988718417012e2a5765f74e157f3099a"}, + {file = "ddtrace-2.7.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0fb0adacd1116b1043f92382fd3dc9e7deabd6d788c15c2b1e3b0f75c4adb711"}, + {file = "ddtrace-2.7.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:99a6cf91b3ab290afac26fa61b81b746677b1627df12373919219fd562881c2d"}, + {file = "ddtrace-2.7.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:d4f8ac0ac0970d65223247c879729c4c489e3cc69529b54e9dd2051efc68a007"}, + {file = "ddtrace-2.7.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:6052dd35bb0ec6d1023f0c4de9b0426a9e16d80fd8152d8eb8135e34bf41e1df"}, + {file = "ddtrace-2.7.2-cp37-cp37m-win32.whl", hash = "sha256:641e440ac175bb04e03e34543ed48a3ddfe4a393712c62deb2f2c78adb48db90"}, + {file = "ddtrace-2.7.2-cp37-cp37m-win_amd64.whl", hash = "sha256:1687a40014873860b8c87a9a3e18dee51fa6a593e4758f973ed4cb8832b4e53a"}, + {file = "ddtrace-2.7.2-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:d5529a7e4a083ec1388872c5a9b41b38622a7146d27d3bdee81d701f0ac6fc38"}, + {file = "ddtrace-2.7.2-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:df4b51f39b260d8706fdf5417f3f94277f76b951cbbeabdb2b3a597d5f6cd0c1"}, + {file = "ddtrace-2.7.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:27c6e8c3b1bf642ca74afe985985450f2ca18e686ecb4f2e0ab978ae5fc03f8f"}, + {file = "ddtrace-2.7.2-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c0399c670229651517338c456304a2a65ce54387b8ddecf2da7011b259c0817d"}, + {file = "ddtrace-2.7.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c81a89236f3ea91ad0e9da1fef32d9420c0d4614a44ef0a2cab168444cdb0d8"}, + {file = "ddtrace-2.7.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:06d840db3283999ddacc3c9d8f5e5f0e0692ce635500d51f5e7e7ed2109c989a"}, + {file = "ddtrace-2.7.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:0e242cab1c2a153e418060f66e477e21b45cd33843959a6d000f3f9ea8a9c06a"}, + {file = "ddtrace-2.7.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b51e2230d805873974af882c19026030f40aee14a8d1b55d378443659ff4463f"}, + {file = "ddtrace-2.7.2-cp38-cp38-win32.whl", hash = "sha256:7c589ee49644d6c022928ebe49e4586b22ac40f8f841d67e01eeda4a6f61cea0"}, + {file = "ddtrace-2.7.2-cp38-cp38-win_amd64.whl", hash = "sha256:0974c8f36f0f1be229befede438ba91c1da715abd68091c0c0e21ec4d3d85f79"}, + {file = "ddtrace-2.7.2-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:b602703fff34f3397df22fdc1184fc039d89e8c5b07cc2bcc330c9b83bcc6ad6"}, + {file = "ddtrace-2.7.2-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:81ff83a9cdc033175780379d83af4bb03785bfd3c71672954f00c5a7f8d0d63b"}, + {file = "ddtrace-2.7.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6f7e2fa06c61f9a26b253898654a97b49b805942aee19fb7c4b95e17105c6a5"}, + {file = "ddtrace-2.7.2-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d0140acfd73449e8cfa090e322f76ff85f385ce4337111ed2780cd2ee62e5e4b"}, + {file = "ddtrace-2.7.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9af429e4c48cae2fb6a9a51cdb6ccc2dc0cabbc9905c1ce6e9062335da0b9db"}, + {file = "ddtrace-2.7.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:09330db7a2c0ed91d244ef653f0aa261153dc0820874923c325058352b5278fd"}, + {file = "ddtrace-2.7.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:8638ddb94d77bdf55cc64718af66b172c4ff677b57c9e59dfd9dc8f630fb3169"}, + {file = "ddtrace-2.7.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0ba0668e439134b3f258ddcc3e5c1d1d8848a40954087288312557b455b6967e"}, + {file = "ddtrace-2.7.2-cp39-cp39-win32.whl", hash = "sha256:aa3c927299aa134ccaf8821eb7284366c60e29a542d0e7738e0b7dd9182b2025"}, + {file = "ddtrace-2.7.2-cp39-cp39-win_amd64.whl", hash = "sha256:7e3f36e91d1a91fb083258b09fa7f887a295321b4dc928630ce748ec664e70be"}, + {file = "ddtrace-2.7.2.tar.gz", hash = "sha256:89a0b4b30220aeb68c2845fa21e51ec9bf915a1893cf003850b9d8022e7cb72a"}, ] [package.dependencies] @@ -392,6 +339,7 @@ opentelemetry-api = ">=1" protobuf = ">=3" setuptools = {version = "*", markers = "python_version >= \"3.12\""} six = ">=1.12.0" +sqlparse = ">=0.2.2" typing-extensions = "*" xmltodict = ">=0.12" @@ -495,6 +443,18 @@ docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.link perf = ["ipython"] testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"] +[[package]] +name = "iniconfig" +version = "2.0.0" +description = "brain-dead simple config-ini parsing" +category = "main" +optional = true +python-versions = ">=3.7" +files = [ + {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, + {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, +] + [[package]] name = "jmespath" version = "1.0.1" @@ -520,60 +480,68 @@ files = [ ] [[package]] -name = "nose2" -version = "0.9.2" -description = "unittest2 with plugins, the succesor to nose" +name = "opentelemetry-api" +version = "1.23.0" +description = "OpenTelemetry Python API" category = "main" -optional = true -python-versions = "*" +optional = false +python-versions = ">=3.8" files = [ - {file = "nose2-0.9.2-py2.py3-none-any.whl", hash = "sha256:fd4b84c65ecea869080a23bdb8916716f5363df3b899933991c861ada8aa3f48"}, - {file = "nose2-0.9.2.tar.gz", hash = "sha256:8762f77925bbafcdf38331e0e2ee718756fb75ff74b1f9097cd08731ad59ab5e"}, + {file = "opentelemetry_api-1.23.0-py3-none-any.whl", hash = "sha256:cc03ea4025353048aadb9c64919099663664672ea1c6be6ddd8fee8e4cd5e774"}, + {file = "opentelemetry_api-1.23.0.tar.gz", hash = "sha256:14a766548c8dd2eb4dfc349739eb4c3893712a0daa996e5dbf945f9da665da9d"}, ] [package.dependencies] -coverage = ">=4.4.1" -six = ">=1.7" - -[package.extras] -coverage-plugin = ["coverage (>=4.4.1)"] -doc = ["Sphinx (>=1.6.5)", "mock", "sphinx-rtd-theme"] +deprecated = ">=1.2.6" +importlib-metadata = ">=6.0,<7.0" [[package]] -name = "opentelemetry-api" -version = "1.22.0" -description = "OpenTelemetry Python API" +name = "packaging" +version = "24.0" +description = "Core utilities for Python packages" category = "main" -optional = false +optional = true python-versions = ">=3.7" files = [ - {file = "opentelemetry_api-1.22.0-py3-none-any.whl", hash = "sha256:43621514301a7e9f5d06dd8013a1b450f30c2e9372b8e30aaeb4562abf2ce034"}, - {file = "opentelemetry_api-1.22.0.tar.gz", hash = "sha256:15ae4ca925ecf9cfdfb7a709250846fbb08072260fca08ade78056c502b86bed"}, + {file = "packaging-24.0-py3-none-any.whl", hash = "sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5"}, + {file = "packaging-24.0.tar.gz", hash = "sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9"}, ] -[package.dependencies] -deprecated = ">=1.2.6" -importlib-metadata = ">=6.0,<7.0" +[[package]] +name = "pluggy" +version = "1.4.0" +description = "plugin and hook calling mechanisms for python" +category = "main" +optional = true +python-versions = ">=3.8" +files = [ + {file = "pluggy-1.4.0-py3-none-any.whl", hash = "sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981"}, + {file = "pluggy-1.4.0.tar.gz", hash = "sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be"}, +] + +[package.extras] +dev = ["pre-commit", "tox"] +testing = ["pytest", "pytest-benchmark"] [[package]] name = "protobuf" -version = "4.25.2" +version = "4.25.3" description = "" category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "protobuf-4.25.2-cp310-abi3-win32.whl", hash = "sha256:b50c949608682b12efb0b2717f53256f03636af5f60ac0c1d900df6213910fd6"}, - {file = "protobuf-4.25.2-cp310-abi3-win_amd64.whl", hash = "sha256:8f62574857ee1de9f770baf04dde4165e30b15ad97ba03ceac65f760ff018ac9"}, - {file = "protobuf-4.25.2-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:2db9f8fa64fbdcdc93767d3cf81e0f2aef176284071507e3ede160811502fd3d"}, - {file = "protobuf-4.25.2-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:10894a2885b7175d3984f2be8d9850712c57d5e7587a2410720af8be56cdaf62"}, - {file = "protobuf-4.25.2-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:fc381d1dd0516343f1440019cedf08a7405f791cd49eef4ae1ea06520bc1c020"}, - {file = "protobuf-4.25.2-cp38-cp38-win32.whl", hash = "sha256:33a1aeef4b1927431d1be780e87b641e322b88d654203a9e9d93f218ee359e61"}, - {file = "protobuf-4.25.2-cp38-cp38-win_amd64.whl", hash = "sha256:47f3de503fe7c1245f6f03bea7e8d3ec11c6c4a2ea9ef910e3221c8a15516d62"}, - {file = "protobuf-4.25.2-cp39-cp39-win32.whl", hash = "sha256:5e5c933b4c30a988b52e0b7c02641760a5ba046edc5e43d3b94a74c9fc57c1b3"}, - {file = "protobuf-4.25.2-cp39-cp39-win_amd64.whl", hash = "sha256:d66a769b8d687df9024f2985d5137a337f957a0916cf5464d1513eee96a63ff0"}, - {file = "protobuf-4.25.2-py3-none-any.whl", hash = "sha256:a8b7a98d4ce823303145bf3c1a8bdb0f2f4642a414b196f04ad9853ed0c8f830"}, - {file = "protobuf-4.25.2.tar.gz", hash = "sha256:fe599e175cb347efc8ee524bcd4b902d11f7262c0e569ececcb89995c15f0a5e"}, + {file = "protobuf-4.25.3-cp310-abi3-win32.whl", hash = "sha256:d4198877797a83cbfe9bffa3803602bbe1625dc30d8a097365dbc762e5790faa"}, + {file = "protobuf-4.25.3-cp310-abi3-win_amd64.whl", hash = "sha256:209ba4cc916bab46f64e56b85b090607a676f66b473e6b762e6f1d9d591eb2e8"}, + {file = "protobuf-4.25.3-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:f1279ab38ecbfae7e456a108c5c0681e4956d5b1090027c1de0f934dfdb4b35c"}, + {file = "protobuf-4.25.3-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:e7cb0ae90dd83727f0c0718634ed56837bfeeee29a5f82a7514c03ee1364c019"}, + {file = "protobuf-4.25.3-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:7c8daa26095f82482307bc717364e7c13f4f1c99659be82890dcfc215194554d"}, + {file = "protobuf-4.25.3-cp38-cp38-win32.whl", hash = "sha256:f4f118245c4a087776e0a8408be33cf09f6c547442c00395fbfb116fac2f8ac2"}, + {file = "protobuf-4.25.3-cp38-cp38-win_amd64.whl", hash = "sha256:c053062984e61144385022e53678fbded7aea14ebb3e0305ae3592fb219ccfa4"}, + {file = "protobuf-4.25.3-cp39-cp39-win32.whl", hash = "sha256:19b270aeaa0099f16d3ca02628546b8baefe2955bbe23224aaf856134eccf1e4"}, + {file = "protobuf-4.25.3-cp39-cp39-win_amd64.whl", hash = "sha256:e3c97a1555fd6388f857770ff8b9703083de6bf1f9274a002a332d65fbb56c8c"}, + {file = "protobuf-4.25.3-py3-none-any.whl", hash = "sha256:f0700d54bcf45424477e46a9f0944155b46fb0639d69728739c0e47bab83f2b9"}, + {file = "protobuf-4.25.3.tar.gz", hash = "sha256:25b5d0b42fd000320bd7830b349e3b696435f3b329810427a6bcce6a5492cc5c"}, ] [[package]] @@ -600,16 +568,39 @@ files = [ {file = "pyflakes-2.5.0.tar.gz", hash = "sha256:491feb020dca48ccc562a8c0cbe8df07ee13078df59813b83959cbdada312ea3"}, ] +[[package]] +name = "pytest" +version = "8.1.1" +description = "pytest: simple powerful testing with Python" +category = "main" +optional = true +python-versions = ">=3.8" +files = [ + {file = "pytest-8.1.1-py3-none-any.whl", hash = "sha256:2a8386cfc11fa9d2c50ee7b2a57e7d898ef90470a7a34c4b949ff59662bb78b7"}, + {file = "pytest-8.1.1.tar.gz", hash = "sha256:ac978141a75948948817d360297b7aae0fcb9d6ff6bc9ec6d514b85d5a65c044"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "sys_platform == \"win32\""} +exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} +iniconfig = "*" +packaging = "*" +pluggy = ">=1.4,<2.0" +tomli = {version = ">=1", markers = "python_version < \"3.11\""} + +[package.extras] +testing = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] + [[package]] name = "python-dateutil" -version = "2.8.2" +version = "2.9.0.post0" description = "Extensions to the standard Python datetime module" category = "main" optional = true python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ - {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, - {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, + {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, + {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, ] [package.dependencies] @@ -657,20 +648,20 @@ crt = ["botocore[crt] (>=1.33.2,<2.0a.0)"] [[package]] name = "setuptools" -version = "69.0.3" +version = "69.1.1" description = "Easily download, build, install, upgrade, and uninstall Python packages" category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-69.0.3-py3-none-any.whl", hash = "sha256:385eb4edd9c9d5c17540511303e39a147ce2fc04bc55289c322b9e5904fe2c05"}, - {file = "setuptools-69.0.3.tar.gz", hash = "sha256:be1af57fc409f93647f2e8e4573a142ed38724b8cdd389706a867bb4efcf1e78"}, + {file = "setuptools-69.1.1-py3-none-any.whl", hash = "sha256:02fa291a0471b3a18b2b2481ed902af520c69e8ae0919c13da936542754b4c56"}, + {file = "setuptools-69.1.1.tar.gz", hash = "sha256:5c0806c7d9af348e6dd3777b4f4dbb42c7ad85b190104837488eab9a7c945cf8"}, ] [package.extras] docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] -testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.1)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.2)", "pip (>=19.1)", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.2)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] [[package]] name = "six" @@ -684,16 +675,45 @@ files = [ {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, ] +[[package]] +name = "sqlparse" +version = "0.4.4" +description = "A non-validating SQL parser." +category = "main" +optional = false +python-versions = ">=3.5" +files = [ + {file = "sqlparse-0.4.4-py3-none-any.whl", hash = "sha256:5430a4fe2ac7d0f93e66f1efc6e1338a41884b7ddf2a350cedd20ccc4d9d28f3"}, + {file = "sqlparse-0.4.4.tar.gz", hash = "sha256:d446183e84b8349fa3061f0fe7f06ca94ba65b426946ffebe6e3e8295332420c"}, +] + +[package.extras] +dev = ["build", "flake8"] +doc = ["sphinx"] +test = ["pytest", "pytest-cov"] + +[[package]] +name = "tomli" +version = "2.0.1" +description = "A lil' TOML parser" +category = "main" +optional = true +python-versions = ">=3.7" +files = [ + {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, + {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, +] + [[package]] name = "typing-extensions" -version = "4.9.0" +version = "4.10.0" description = "Backported and Experimental Type Hints for Python 3.8+" category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "typing_extensions-4.9.0-py3-none-any.whl", hash = "sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd"}, - {file = "typing_extensions-4.9.0.tar.gz", hash = "sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783"}, + {file = "typing_extensions-4.10.0-py3-none-any.whl", hash = "sha256:69b1a937c3a517342112fb4c6df7e72fc39a38e7891a5730ed4985b5214b5475"}, + {file = "typing_extensions-4.10.0.tar.gz", hash = "sha256:b0abd7c89e8fb96f98db18d86106ff1d90ab692004eb746cf6eda2682f91b3cb"}, ] [[package]] @@ -840,9 +860,9 @@ docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.link testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy (>=0.9.1)", "pytest-ruff"] [extras] -dev = ["boto3", "flake8", "nose2", "requests"] +dev = ["boto3", "flake8", "pytest", "requests"] [metadata] lock-version = "2.0" python-versions = ">=3.8.0,<4" -content-hash = "0025ef8e84fb9e0a746e623853293967663e40854dafb3689ca14da2eb228b84" +content-hash = "80b471e42622e7de85a0795ad15cb6c01e61dd65df354b5e289a2cd47536a26b" diff --git a/pyproject.toml b/pyproject.toml index 007f47c6f..a0204d4c8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,7 +27,7 @@ classifiers = [ python = ">=3.8.0,<4" datadog = ">=0.41.0,<1.0.0" wrapt = "^1.11.2" -ddtrace = ">=2.5.1" +ddtrace = ">=2.7.2" urllib3 = [ {version = "<2.0.0", python = "<3.11", optional = true}, {version = "<2.1.0", python = ">=3.11", optional = true}, diff --git a/scripts/run_integration_tests.sh b/scripts/run_integration_tests.sh index 13edf1ac6..cc36698ba 100755 --- a/scripts/run_integration_tests.sh +++ b/scripts/run_integration_tests.sh @@ -56,6 +56,11 @@ if [ -z "$DD_API_KEY" ]; then exit 1 fi +if [ -z "$ARCH" ]; then + echo "No ARCH env var set, exiting" + exit 1 +fi + if [ -n "$UPDATE_SNAPSHOTS" ]; then echo "Overwriting snapshots in this execution" fi From 92498ffe3028af8984265a1535000c2a78a2c9d7 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Mon, 11 Mar 2024 18:16:05 -0400 Subject: [PATCH 133/403] v5.90.0 (#443) --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index a0204d4c8..94b73d032 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "5.89.0" +version = "5.90.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 20a2e4e6b0e377e764f68532bcd7d9da264348dc Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Mon, 11 Mar 2024 20:20:39 -0400 Subject: [PATCH 134/403] feat: Pass arch to check layer size, set e on it (#444) --- ci/input_files/build.yaml.tpl | 2 +- scripts/check_layer_size.sh | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/ci/input_files/build.yaml.tpl b/ci/input_files/build.yaml.tpl index 68efeea8a..0229576e2 100644 --- a/ci/input_files/build.yaml.tpl +++ b/ci/input_files/build.yaml.tpl @@ -53,7 +53,7 @@ check-layer-size ({{ $runtime.name }}-{{ $runtime.arch }}): dependencies: - build-layer ({{ $runtime.name }}-{{ $runtime.arch }}) script: - - PYTHON_VERSION={{ $runtime.python_version }} ./scripts/check_layer_size.sh + - PYTHON_VERSION={{ $runtime.python_version }} ARCH={{ $runtime.arch }} ./scripts/check_layer_size.sh lint python: stage: test diff --git a/scripts/check_layer_size.sh b/scripts/check_layer_size.sh index f1c8c8132..9dbd7e99b 100755 --- a/scripts/check_layer_size.sh +++ b/scripts/check_layer_size.sh @@ -8,6 +8,7 @@ # Compares layer size to threshold, and fails if below that threshold # 7 mb size limit +set -e MAX_LAYER_COMPRESSED_SIZE_KB=$(expr 7 \* 1024) MAX_LAYER_UNCOMPRESSED_SIZE_KB=$(expr 24 \* 1024) From 7e1fa708d40ab51648ce060d705066aa16422f7d Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Tue, 12 Mar 2024 09:11:19 -0400 Subject: [PATCH 135/403] feat: Reduce size limits, remove experimental ddtrace bins (#445) * feat: Reduce size limits, strip unused ddtrace bins * feat: 13m? * feat: Lower zipped * feat: 4mb zipped then * feat: remove urllib3 --- Dockerfile | 8 ++++---- scripts/check_layer_size.sh | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Dockerfile b/Dockerfile index 757d0c003..396ef25c1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -14,18 +14,18 @@ RUN pip install . -t ./python/lib/$runtime/site-packages # Remove *.pyc files RUN find ./python/lib/$runtime/site-packages -name \*.pyc -delete -# Strip symbols from ddtrace's binaries. -# TODO (AJ): remove when ddtrace fixes this upstream -RUN find . -name '*.so' -exec strip -g {} \; - # Remove botocore (40MB) to reduce package size. aws-xray-sdk # installs it, while it's already provided by the Lambda Runtime. RUN rm -rf ./python/lib/$runtime/site-packages/botocore* RUN rm -rf ./python/lib/$runtime/site-packages/setuptools RUN rm -rf ./python/lib/$runtime/site-packages/jsonschema/tests RUN find . -name 'libddwaf.so' -delete +RUN rm -rf ./python/lib/$runtime/site-packages/urllib3 RUN rm ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_taint_tracking/*.so RUN rm ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_stacktrace*.so +RUN rm ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/libdd_wrapper.so +RUN rm ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/ddup/_ddup.*.so +RUN rm ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/stack_v2/_stack_v2.*.so FROM scratch COPY --from=builder /build/python / diff --git a/scripts/check_layer_size.sh b/scripts/check_layer_size.sh index 9dbd7e99b..84752fa19 100755 --- a/scripts/check_layer_size.sh +++ b/scripts/check_layer_size.sh @@ -9,8 +9,8 @@ # 7 mb size limit set -e -MAX_LAYER_COMPRESSED_SIZE_KB=$(expr 7 \* 1024) -MAX_LAYER_UNCOMPRESSED_SIZE_KB=$(expr 24 \* 1024) +MAX_LAYER_COMPRESSED_SIZE_KB=$(expr 4 \* 1024) +MAX_LAYER_UNCOMPRESSED_SIZE_KB=$(expr 13 \* 1024) LAYER_FILES_PREFIX="datadog_lambda_py" From 6bccf3b53f204198bee06cdd26b3063adb9122d5 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Wed, 13 Mar 2024 11:16:55 -0400 Subject: [PATCH 136/403] aj/verify poetry (#447) * feat: add poetry explicitly, test publish script in sandbox env * fix: Include py before script * feat: Ensure poetry is installed before publishing. Ensure CI_COMMIT_TAG present before publishing --- ci/input_files/build.yaml.tpl | 2 ++ ci/publish_pypi.sh | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/ci/input_files/build.yaml.tpl b/ci/input_files/build.yaml.tpl index 0229576e2..449f69780 100644 --- a/ci/input_files/build.yaml.tpl +++ b/ci/input_files/build.yaml.tpl @@ -9,6 +9,7 @@ stages: - virtualenv venv - source venv/bin/activate - pip install .[dev] + - pip install poetry # This is for serverless framework .install-node: &install-node @@ -167,6 +168,7 @@ publish-pypi-package: stage: publish tags: ["arch:amd64"] image: registry.ddbuild.io/images/docker:20.10-py3 + before_script: *python-before-script cache: [] rules: - if: '$CI_COMMIT_TAG =~ /^v.*/' diff --git a/ci/publish_pypi.sh b/ci/publish_pypi.sh index d7ec78fd4..c01df7ef7 100755 --- a/ci/publish_pypi.sh +++ b/ci/publish_pypi.sh @@ -13,6 +13,14 @@ PYPI_TOKEN=$(aws ssm get-parameter \ --out text) # Builds the lambda layer and upload to Pypi +if [ -z "$CI_COMMIT_TAG" ]; then + printf "[Error] No CI_COMMIT_TAG found.\n" + printf "Exiting script...\n" + exit 1 +else + printf "Tag found in environment: $CI_COMMIT_TAG\n" +fi + # Clear previously built distributions if [ -d "dist" ]; then echo "Removing folder 'dist' to clear previously built distributions" From 1015d8d61c524bdd93577dfe8c9932ed17d5d57b Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Thu, 14 Mar 2024 10:55:13 -0700 Subject: [PATCH 137/403] Properly parent lazily loaded module imports. (#446) * Properly parent lazily loaded module imports. * Test parenting for lazy loaded package. * Clear lists instead of updating the reference. --- datadog_lambda/cold_start.py | 15 ++++++++---- tests/test_cold_start.py | 46 ++++++++++++++++++++++++++++++++++-- 2 files changed, 54 insertions(+), 7 deletions(-) diff --git a/datadog_lambda/cold_start.py b/datadog_lambda/cold_start.py index 9da02e78a..9dcbec232 100644 --- a/datadog_lambda/cold_start.py +++ b/datadog_lambda/cold_start.py @@ -8,6 +8,7 @@ _cold_start = True _proactive_initialization = False _lambda_container_initialized = False +_tracer = None def set_cold_start(init_timestamp_ns): @@ -18,6 +19,7 @@ def set_cold_start(init_timestamp_ns): global _cold_start global _lambda_container_initialized global _proactive_initialization + global _tracer if not _lambda_container_initialized: now = time.time_ns() if (now - init_timestamp_ns) // 1_000_000_000 > 10: @@ -29,6 +31,7 @@ def set_cold_start(init_timestamp_ns): _cold_start = False _proactive_initialization = False _lambda_container_initialized = True + from ddtrace import tracer as _tracer def is_cold_start(): @@ -62,6 +65,9 @@ def __init__(self, module_name, full_file_path, start_time_ns, end_time_ns=None) self.start_time_ns = start_time_ns self.end_time_ns = end_time_ns self.children = [] + self.context = None + if _lambda_container_initialized: + self.context = _tracer.context_provider.active() root_nodes: List[ImportNode] = [] @@ -70,10 +76,8 @@ def __init__(self, module_name, full_file_path, start_time_ns, end_time_ns=None) def reset_node_stacks(): - global root_nodes - root_nodes = [] - global import_stack - import_stack = [] + root_nodes.clear() + import_stack.clear() def push_node(module_name, file_path): @@ -183,7 +187,8 @@ def trace(self, root_nodes: List[ImportNode] = root_nodes): cold_start_span = self.create_cold_start_span(cold_start_span_start_time_ns) while root_nodes: root_node = root_nodes.pop() - self.trace_tree(root_node, cold_start_span) + parent = root_node.context or cold_start_span + self.trace_tree(root_node, parent) self.finish_span(cold_start_span, cold_start_span_end_time_ns) def trace_tree(self, import_node: ImportNode, parent_span): diff --git a/tests/test_cold_start.py b/tests/test_cold_start.py index 65193e1de..2ce37e7c9 100644 --- a/tests/test_cold_start.py +++ b/tests/test_cold_start.py @@ -1,10 +1,13 @@ +import os import time import unittest -import datadog_lambda.cold_start as cold_start + from sys import modules, meta_path -import os from unittest.mock import MagicMock +import datadog_lambda.cold_start as cold_start +import datadog_lambda.wrapper as wrapper + class TestColdStartTracingSetup(unittest.TestCase): def test_proactive_init(self): @@ -234,3 +237,42 @@ def test_trace_ignore_libs(self): self.cold_start_tracer.trace(nodes) self.mock_activate.assert_called_once_with(self.mock_trace_ctx) self.assertEqual(self.output_spans, ["node_0", "unittest_cold_start"]) + + +def test_lazy_loaded_package_imports(monkeypatch): + + spans = [] + + def finish(span): + spans.append(span) + + monkeypatch.setattr(wrapper.tracer, "_on_span_finish", finish) + monkeypatch.setattr(wrapper, "is_new_sandbox", lambda: True) + monkeypatch.setattr("datadog_lambda.wrapper.dd_tracing_enabled", True) + monkeypatch.setenv( + "DD_COLD_START_TRACE_SKIP_LIB", "ddtrace.contrib.logging,datadog_lambda.wrapper" + ) + monkeypatch.setenv("DD_MIN_COLD_START_DURATION", "0") + + @wrapper.datadog_lambda_wrapper + def handler(event, context): + import tabnanny + + lambda_context = MagicMock() + lambda_context.invoked_function_arn = ( + "arn:aws:lambda:us-west-1:123457598159:function:python-layer-test:1" + ) + + handler.cold_start_tracing = True + handler({}, lambda_context) + + function_span = import_span = None + for span in spans: + if span.resource == "tabnanny": + import_span = span + elif span.name == "aws.lambda": + function_span = span + + assert function_span is not None + assert import_span is not None + assert import_span.parent_id == function_span.span_id From ba39856173c6c6d54262b969d8ad0512035e178e Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Thu, 14 Mar 2024 11:46:08 -0700 Subject: [PATCH 138/403] Bump v5.91.0 for release. (#448) --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 94b73d032..806485b66 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "5.90.0" +version = "5.91.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 097a8230b98ce3570c7e8fc537a433cc00861721 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Fri, 15 Mar 2024 14:02:25 -0400 Subject: [PATCH 139/403] Feat: Automatically retry the runner if it fails to start (#449) --- ci/input_files/build.yaml.tpl | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ci/input_files/build.yaml.tpl b/ci/input_files/build.yaml.tpl index 449f69780..57f9ff0e8 100644 --- a/ci/input_files/build.yaml.tpl +++ b/ci/input_files/build.yaml.tpl @@ -11,6 +11,13 @@ stages: - pip install .[dev] - pip install poetry +default: + retry: + max: 1 + when: + # Retry when the runner fails to start + - runner_system_failure + # This is for serverless framework .install-node: &install-node - apt-get update From 6b9eda0d83c8c07ee7eb1ceec4fe88849d3cb94c Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Wed, 27 Mar 2024 12:49:54 -0400 Subject: [PATCH 140/403] [SVLS-4647] Fix unittests (#452) * fixing the unittests broken due to ddtrace changes --- tests/test_tracing.py | 340 +++++++++++------------------------------- 1 file changed, 84 insertions(+), 256 deletions(-) diff --git a/tests/test_tracing.py b/tests/test_tracing.py index d14ad1e9f..d51f7b3fd 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -34,6 +34,7 @@ create_service_mapping, determine_service_name, service_mapping as global_service_mapping, + propagator, ) from datadog_lambda.trigger import EventTypes @@ -209,74 +210,48 @@ def test_with_incomplete_datadog_trace_headers(self): }, ) - @with_trace_propagation_style("datadog") - def test_with_complete_datadog_trace_headers(self): - lambda_ctx = get_mock_context() + def common_tests_with_trace_context_extraction_injection( + self, headers, event_containing_headers, lambda_context=get_mock_context() + ): ctx, source, event_source = extract_dd_trace_context( - { - "headers": { - TraceHeader.TRACE_ID: "123", - TraceHeader.PARENT_ID: "321", - TraceHeader.SAMPLING_PRIORITY: "1", - } - }, - lambda_ctx, + event_containing_headers, + lambda_context, ) self.assertEqual(source, "event") - expected_context = Context(trace_id=123, span_id=321, sampling_priority=1) + expected_context = propagator.extract(headers) self.assertEqual(ctx, expected_context) - self.assertDictEqual( - get_dd_trace_context(), - { - TraceHeader.TRACE_ID: "123", - TraceHeader.PARENT_ID: fake_xray_header_value_parent_decimal, - TraceHeader.SAMPLING_PRIORITY: "1", - }, - ) create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) self.mock_send_segment.assert_called() self.mock_send_segment.assert_called_with( XraySubsegment.TRACE_KEY, expected_context, ) + # when no active ddtrace context, xray context would be used + expected_context.span_id = int(fake_xray_header_value_parent_decimal) + expected_headers = {} + propagator.inject(expected_context, expected_headers) + dd_context_headers = get_dd_trace_context() + self.assertDictEqual(expected_headers, dd_context_headers) + + @with_trace_propagation_style("datadog") + def test_with_complete_datadog_trace_headers(self): + headers = { + TraceHeader.TRACE_ID: "123", + TraceHeader.PARENT_ID: "321", + TraceHeader.SAMPLING_PRIORITY: "1", + } + self.common_tests_with_trace_context_extraction_injection( + headers, {"headers": headers} + ) @with_trace_propagation_style("tracecontext") def test_with_w3c_trace_headers(self): - lambda_ctx = get_mock_context() - ctx, source, event_source = extract_dd_trace_context( - { - "headers": { - "traceparent": "00-0000000000000000000000000000007b-0000000000000141-01", - "tracestate": "dd=s:2;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", - } - }, - lambda_ctx, - ) - self.assertEqual(source, "event") - expected_context = Context( - trace_id=123, - span_id=321, - sampling_priority=2, - meta={ - "traceparent": "00-0000000000000000000000000000007b-0000000000000141-01", - "tracestate": "dd=s:2;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", - "_dd.p.dm": "-0", - "_dd.parent_id": "0000000000000000", - }, - ) - self.assertEqual(ctx, expected_context) - self.assertDictEqual( - get_dd_trace_context(), - { - "traceparent": "00-0000000000000000000000000000007b-94ae789b969f1cc5-01", - "tracestate": "dd=p:94ae789b969f1cc5;s:2;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", - }, - ) - create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) - self.mock_send_segment.assert_called() - self.mock_send_segment.assert_called_with( - XraySubsegment.TRACE_KEY, - expected_context, + headers = { + "traceparent": "00-0000000000000000000000000000007b-0000000000000141-01", + "tracestate": "dd=s:2;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", + } + self.common_tests_with_trace_context_extraction_injection( + headers, {"headers": headers} ) @with_trace_propagation_style("datadog") @@ -357,7 +332,11 @@ def extractor_raiser(event, context): @with_trace_propagation_style("datadog") def test_with_sqs_distributed_datadog_trace_data(self): - lambda_ctx = get_mock_context() + headers = { + TraceHeader.TRACE_ID: "123", + TraceHeader.PARENT_ID: "321", + TraceHeader.SAMPLING_PRIORITY: "1", + } sqs_event = { "Records": [ { @@ -372,13 +351,7 @@ def test_with_sqs_distributed_datadog_trace_data(self): }, "messageAttributes": { "_datadog": { - "stringValue": json.dumps( - { - TraceHeader.TRACE_ID: "123", - TraceHeader.PARENT_ID: "321", - TraceHeader.SAMPLING_PRIORITY: "1", - } - ), + "stringValue": json.dumps(headers), "dataType": "String", } }, @@ -389,31 +362,14 @@ def test_with_sqs_distributed_datadog_trace_data(self): } ] } - ctx, source, event_source = extract_dd_trace_context(sqs_event, lambda_ctx) - self.assertEqual(source, "event") - expected_context = Context( - trace_id=123, - span_id=321, - sampling_priority=1, - ) - self.assertEqual(ctx, expected_context) - self.assertDictEqual( - get_dd_trace_context(), - { - TraceHeader.TRACE_ID: "123", - TraceHeader.PARENT_ID: fake_xray_header_value_parent_decimal, - TraceHeader.SAMPLING_PRIORITY: "1", - }, - ) - create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) - self.mock_send_segment.assert_called_with( - XraySubsegment.TRACE_KEY, - expected_context, - ) + self.common_tests_with_trace_context_extraction_injection(headers, sqs_event) @with_trace_propagation_style("tracecontext") def test_with_sqs_distributed_w3c_trace_data(self): - lambda_ctx = get_mock_context() + headers = { + "traceparent": "00-0000000000000000000000000000007b-0000000000000141-01", + "tracestate": "dd=s:2;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", + } sqs_event = { "Records": [ { @@ -428,12 +384,7 @@ def test_with_sqs_distributed_w3c_trace_data(self): }, "messageAttributes": { "_datadog": { - "stringValue": json.dumps( - { - "traceparent": "00-0000000000000000000000000000007b-0000000000000141-01", - "tracestate": "dd=s:2;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", - } - ), + "stringValue": json.dumps(headers), "dataType": "String", } }, @@ -444,194 +395,71 @@ def test_with_sqs_distributed_w3c_trace_data(self): } ] } - ctx, source, event_source = extract_dd_trace_context(sqs_event, lambda_ctx) - self.assertEqual(source, "event") - expected_context = Context( - trace_id=123, - span_id=321, - sampling_priority=2, - meta={ - "traceparent": "00-0000000000000000000000000000007b-0000000000000141-01", - "tracestate": "dd=s:2;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", - "_dd.p.dm": "-0", - "_dd.parent_id": "0000000000000000", - }, - ) - self.assertEqual(ctx, expected_context) - self.assertDictEqual( - get_dd_trace_context(), - { - "traceparent": "00-0000000000000000000000000000007b-94ae789b969f1cc5-01", - "tracestate": "dd=p:94ae789b969f1cc5;s:2;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", - }, - ) - create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) - self.mock_send_segment.assert_called_with( - XraySubsegment.TRACE_KEY, - expected_context, - ) + self.common_tests_with_trace_context_extraction_injection(headers, sqs_event) @with_trace_propagation_style("datadog") def test_with_legacy_client_context_datadog_trace_data(self): - lambda_ctx = get_mock_context( - custom={ - "_datadog": { - TraceHeader.TRACE_ID: "666", - TraceHeader.PARENT_ID: "777", - TraceHeader.SAMPLING_PRIORITY: "1", - } - } - ) - ctx, source, event_source = extract_dd_trace_context({}, lambda_ctx) - self.assertEqual(source, "event") - expected_context = Context( - trace_id=666, - span_id=777, - sampling_priority=1, - ) - self.assertEqual(ctx, expected_context) - self.assertDictEqual( - get_dd_trace_context(), - { - TraceHeader.TRACE_ID: "666", - TraceHeader.PARENT_ID: fake_xray_header_value_parent_decimal, - TraceHeader.SAMPLING_PRIORITY: "1", - }, - ) - create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) - self.mock_send_segment.assert_called() - self.mock_send_segment.assert_called_with( - XraySubsegment.TRACE_KEY, - expected_context, + headers = { + TraceHeader.TRACE_ID: "666", + TraceHeader.PARENT_ID: "777", + TraceHeader.SAMPLING_PRIORITY: "1", + } + lambda_ctx = get_mock_context(custom={"_datadog": headers}) + self.common_tests_with_trace_context_extraction_injection( + headers, {}, lambda_ctx ) @with_trace_propagation_style("tracecontext") def test_with_legacy_client_context_w3c_trace_data(self): - lambda_ctx = get_mock_context( - custom={ - "_datadog": { - "traceparent": "00-0000000000000000000000000000029a-0000000000000309-01", - "tracestate": "dd=s:1;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", - } - } - ) - ctx, source, event_source = extract_dd_trace_context({}, lambda_ctx) - self.assertEqual(source, "event") - expected_context = Context( - trace_id=666, - span_id=777, - sampling_priority=1, - meta={ - "traceparent": "00-0000000000000000000000000000029a-0000000000000309-01", - "tracestate": "dd=s:1;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", - "_dd.p.dm": "-0", - "_dd.parent_id": "0000000000000000", - }, - ) - self.assertEqual(ctx, expected_context) - self.assertDictEqual( - get_dd_trace_context(), - { - "traceparent": "00-0000000000000000000000000000029a-94ae789b969f1cc5-01", - "tracestate": "dd=p:94ae789b969f1cc5;s:1;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", - }, - ) - create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) - self.mock_send_segment.assert_called() - self.mock_send_segment.assert_called_with( - XraySubsegment.TRACE_KEY, - expected_context, + headers = { + "traceparent": "00-0000000000000000000000000000029a-0000000000000309-01", + "tracestate": "dd=s:1;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", + } + lambda_ctx = get_mock_context(custom={"_datadog": headers}) + self.common_tests_with_trace_context_extraction_injection( + headers, {}, lambda_ctx ) @with_trace_propagation_style("datadog") def test_with_new_client_context_datadog_trace_data(self): - lambda_ctx = get_mock_context( - custom={ - TraceHeader.TRACE_ID: "666", - TraceHeader.PARENT_ID: "777", - TraceHeader.SAMPLING_PRIORITY: "1", - } - ) - ctx, source, event_source = extract_dd_trace_context({}, lambda_ctx) - self.assertEqual(source, "event") - expected_context = Context( - trace_id=666, - span_id=777, - sampling_priority=1, - ) - self.assertEqual(ctx, expected_context) - self.assertDictEqual( - get_dd_trace_context(), - { - TraceHeader.TRACE_ID: "666", - TraceHeader.PARENT_ID: fake_xray_header_value_parent_decimal, - TraceHeader.SAMPLING_PRIORITY: "1", - }, - ) - create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) - self.mock_send_segment.assert_called() - self.mock_send_segment.assert_called_with( - XraySubsegment.TRACE_KEY, - expected_context, + headers = { + TraceHeader.TRACE_ID: "666", + TraceHeader.PARENT_ID: "777", + TraceHeader.SAMPLING_PRIORITY: "1", + } + lambda_ctx = get_mock_context(custom=headers) + self.common_tests_with_trace_context_extraction_injection( + headers, {}, lambda_ctx ) @with_trace_propagation_style("tracecontext") def test_with_new_client_context_w3c_trace_data(self): - lambda_ctx = get_mock_context( - custom={ - "traceparent": "00-0000000000000000000000000000029a-0000000000000309-01", - "tracestate": "dd=s:1;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", - } - ) - ctx, source, event_source = extract_dd_trace_context({}, lambda_ctx) - self.assertEqual(source, "event") - expected_context = Context( - trace_id=666, - span_id=777, - sampling_priority=1, - meta={ - "traceparent": "00-0000000000000000000000000000029a-0000000000000309-01", - "tracestate": "dd=s:1;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", - "_dd.p.dm": "-0", - "_dd.parent_id": "0000000000000000", - }, - ) - self.assertEqual(ctx, expected_context) - self.assertDictEqual( - get_dd_trace_context(), - { - "traceparent": "00-0000000000000000000000000000029a-94ae789b969f1cc5-01", - "tracestate": "dd=p:94ae789b969f1cc5;s:1;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", - }, - ) - create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) - self.mock_send_segment.assert_called() - self.mock_send_segment.assert_called_with( - XraySubsegment.TRACE_KEY, - expected_context, + headers = { + "traceparent": "00-0000000000000000000000000000029a-0000000000000309-01", + "tracestate": "dd=s:1;t.dm:-0,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE", + } + lambda_ctx = get_mock_context(custom=headers) + self.common_tests_with_trace_context_extraction_injection( + headers, {}, lambda_ctx ) @with_trace_propagation_style("datadog") def test_with_complete_datadog_trace_headers_with_mixed_casing(self): lambda_ctx = get_mock_context() + headers = { + "X-Datadog-Trace-Id": "123", + "X-Datadog-Parent-Id": "321", + "X-Datadog-Sampling-Priority": "1", + } extract_dd_trace_context( - { - "headers": { - "X-Datadog-Trace-Id": "123", - "X-Datadog-Parent-Id": "321", - "X-Datadog-Sampling-Priority": "1", - } - }, + {"headers": headers}, lambda_ctx, ) - self.assertDictEqual( - get_dd_trace_context(), - { - TraceHeader.TRACE_ID: "123", - TraceHeader.PARENT_ID: fake_xray_header_value_parent_decimal, - TraceHeader.SAMPLING_PRIORITY: "1", - }, - ) + extract_headers = {} + context = propagator.extract(headers) + context.span_id = fake_xray_header_value_parent_decimal + propagator.inject(context, extract_headers) + self.assertDictEqual(extract_headers, get_dd_trace_context()) def test_with_complete_datadog_trace_headers_with_trigger_tags(self): trigger_tags = { From 8e79a70784904ffa46de3847cddf64705303503f Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Wed, 27 Mar 2024 13:49:38 -0400 Subject: [PATCH 141/403] fix lambda authorizer trace context injection issue (#453) --- datadog_lambda/wrapper.py | 10 ++-------- tests/test_wrapper.py | 19 +++++++++---------- 2 files changed, 11 insertions(+), 18 deletions(-) diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 73d178879..057f048cb 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -22,7 +22,6 @@ TraceContextSource, XraySubsegment, Headers, - TraceHeader, ) from datadog_lambda.metric import ( flush_stats, @@ -44,6 +43,7 @@ InferredSpanInfo, is_authorizer_response, tracer, + propagator, ) from datadog_lambda.trigger import ( extract_trigger_tags, @@ -254,13 +254,7 @@ def _inject_authorizer_span_headers(self, request_id): injected_headers = {} source_span = self.inferred_span if self.inferred_span else self.span span_context = source_span.context - injected_headers[TraceHeader.TRACE_ID] = str(span_context.trace_id) - injected_headers[TraceHeader.PARENT_ID] = str(span_context.span_id) - sampling_priority = span_context.sampling_priority - if sampling_priority is not None: - injected_headers[TraceHeader.SAMPLING_PRIORITY] = str( - span_context.sampling_priority - ) + propagator.inject(span_context, injected_headers) injected_headers[Headers.Parent_Span_Finish_Time] = finish_time_ns if request_id is not None: injected_headers[Headers.Authorizing_Request_Id] = request_id diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index ee1ef99cf..141e245a6 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -10,6 +10,7 @@ from datadog_lambda.metric import lambda_metric from datadog_lambda.thread_stats_writer import ThreadStatsWriter from ddtrace import Span, tracer +from ddtrace.internal.constants import MAX_UINT_64BITS def get_mock_context( @@ -543,19 +544,19 @@ def lambda_handler(event, context): lambda_event = {} lambda_context = get_mock_context() - mock_span = Span(name="my_inferred_span", span_id=123, trace_id=456) - mock_span.context.sampling_priority = "1" - mock_span.context.dd_origin = None - mock_span.start_ns = 1668127541671386817 - mock_span.duration_ns = 1e8 - lambda_handler.inferred_span = mock_span + test_span = tracer.trace("test_span") + trace_ctx = tracer.current_trace_context() + test_span.finish() + lambda_handler.inferred_span = test_span lambda_handler.make_inferred_span = False result = lambda_handler(lambda_event, lambda_context) raw_inject_data = result["context"]["_datadog"] self.assertIsInstance(raw_inject_data, str) inject_data = json.loads(base64.b64decode(raw_inject_data)) - self.assertEqual(inject_data[TraceHeader.PARENT_ID], "123") - self.assertEqual(inject_data[TraceHeader.TRACE_ID], "456") + self.assertEqual(inject_data[TraceHeader.PARENT_ID], str(trace_ctx.span_id)) + self.assertEqual( + inject_data[TraceHeader.TRACE_ID], str(MAX_UINT_64BITS & trace_ctx.trace_id) + ) self.assertEqual(inject_data[TraceHeader.SAMPLING_PRIORITY], "1") self.assertEqual(result["context"]["scope"], "still here") @@ -662,7 +663,6 @@ def tearDown(self): @patch("datadog_lambda.wrapper.should_use_extension", True) def test_local_test_envvar_flushing(self): - flushes = [] lambda_event = {} lambda_context = get_mock_context() @@ -680,7 +680,6 @@ def flush(): ({"DD_LOCAL_TEST": ""}, False), ({}, False), ): - os.environ = environ flushes.clear() From 33b7bfcfa29d279827c8432e4c206e1d270271e0 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Wed, 27 Mar 2024 15:09:49 -0400 Subject: [PATCH 142/403] [SVLS-4298] Java upstream sqs trace context propagation (#454) * java upstream sqs trace context propagation --- datadog_lambda/tracing.py | 68 +++++++++++++++------- tests/event_samples/sqs-java-upstream.json | 22 +++++++ tests/test_cold_start.py | 1 - tests/test_tracing.py | 11 ++++ 4 files changed, 80 insertions(+), 22 deletions(-) create mode 100644 tests/event_samples/sqs-java-upstream.json diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index f032059b8..5e3382536 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -68,6 +68,8 @@ propagator = HTTPPropagator() +DD_TRACE_JAVA_TRACE_ID_PADDING = "00000000" + def _convert_xray_trace_id(xray_trace_id): """ @@ -248,28 +250,52 @@ def extract_context_from_sqs_or_sns_event_or_context(event, lambda_context): first_record.get("Sns", {}).get("MessageAttributes", {}), ) dd_payload = msg_attributes.get("_datadog", {}) - # SQS uses dataType and binaryValue/stringValue - # SNS uses Type and Value - dd_json_data_type = dd_payload.get("Type", dd_payload.get("dataType", "")) - if dd_json_data_type == "Binary": - dd_json_data = dd_payload.get( - "binaryValue", - dd_payload.get("Value", r"{}"), - ) - dd_json_data = base64.b64decode(dd_json_data) - elif dd_json_data_type == "String": - dd_json_data = dd_payload.get( - "stringValue", - dd_payload.get("Value", r"{}"), - ) + if dd_payload: + # SQS uses dataType and binaryValue/stringValue + # SNS uses Type and Value + dd_json_data = None + dd_json_data_type = dd_payload.get("Type", dd_payload.get("dataType", "")) + if dd_json_data_type == "Binary": + dd_json_data = dd_payload.get( + "binaryValue", + dd_payload.get("Value", r"{}"), + ) + dd_json_data = base64.b64decode(dd_json_data) + elif dd_json_data_type == "String": + dd_json_data = dd_payload.get( + "stringValue", + dd_payload.get("Value", r"{}"), + ) + else: + logger.debug( + "Datadog Lambda Python only supports extracting trace" + "context from String or Binary SQS/SNS message attributes" + ) + + if dd_json_data: + dd_data = json.loads(dd_json_data) + return propagator.extract(dd_data) else: - logger.debug( - "Datadog Lambda Python only supports extracting trace" - "context from String or Binary SQS/SNS message attributes" - ) - return extract_context_from_lambda_context(lambda_context) - dd_data = json.loads(dd_json_data) - return propagator.extract(dd_data) + # Handle case where trace context is injected into attributes.AWSTraceHeader + # example: Root=1-654321ab-000000001234567890abcdef;Parent=0123456789abcdef;Sampled=1 + x_ray_header = first_record.get("attributes", {}).get("AWSTraceHeader") + if x_ray_header: + x_ray_context = parse_xray_header(x_ray_header) + trace_id_parts = x_ray_context.get("trace_id", "").split("-") + if len(trace_id_parts) > 2 and trace_id_parts[2].startswith( + DD_TRACE_JAVA_TRACE_ID_PADDING + ): + # If it starts with eight 0's padding, + # then this AWSTraceHeader contains Datadog injected trace context + logger.debug( + "Found dd-trace injected trace context from AWSTraceHeader" + ) + return Context( + trace_id=int(trace_id_parts[2][8:], 16), + span_id=int(int(x_ray_context["parent_id"], 16)), + sampling_priority=float(x_ray_context["sampled"]), + ) + return extract_context_from_lambda_context(lambda_context) except Exception as e: logger.debug("The trace extractor returned with error %s", e) return extract_context_from_lambda_context(lambda_context) diff --git a/tests/event_samples/sqs-java-upstream.json b/tests/event_samples/sqs-java-upstream.json new file mode 100644 index 000000000..23ab68811 --- /dev/null +++ b/tests/event_samples/sqs-java-upstream.json @@ -0,0 +1,22 @@ +{ + "Records": [ + { + "messageId": "f7e888aa-1368-484c-8e15-fc3f0f7c6fea", + "receiptHandle": "AQEBN1aYTQ1c5huZh9bkhBYqcMMnqTUMRh8MfUPyGXkEolcn23rvM9saGEg3wTK/7JnJ1s3Uk107uLjaP6yV6+zS3oQRU0vMG2LfyTgHovWhYQ8TnrpC7XpYL+Uf+oc9KoILQopiYi4wsFnOWQqy82yQmlOA3W+CZ3Rvq8N6rNcmyaZEXVdozHG+FyMCMQ8QdTcCHhzR9YKnkZ87Y40+LhysUR57VNPVtRwENI8H1uMEfmxaCkW+CAkdCGoXeX+KioT7pHJDZaEutXM3VRmGXDDzCXvfUJQ9JQIlP5xe66JO8/cpCyl5sDoHsCjLy6X/XCmfG2+XclPObGHBzcMSjG1RQtHsEGTOAJrLREucqf/oj0Ab4svpxz6lR4UXrICygZ2x0NZcNFXcZx3GV2QL9nHmJxzrO2lnNTEOMuYB4SnqtIhsaDTcmkYHumaAJdRHl5BksFcU5qpS7BQrnRvXn5Sz3hYdR2KuYKN5Oq6W1vuT16o=", + "body": "{\"hello\":\"world\"}", + "attributes": { + "ApproximateReceiveCount": "1", + "AWSTraceHeader": "Root=1-65eb7350-000000006dfd06bf489aa4e5;Parent=48cc02b6aafae897;Sampled=1", + "SentTimestamp": "1709929297382", + "SenderId": "AROAWGCM4HXUTHYJKOM7M:DdTraceXLambda-sqsjavache-sqsjavaproducerforPython-moi7s7Hu7Ppy", + "ApproximateFirstReceiveTimestamp": "1709929297387" + }, + "messageAttributes": {}, + "md5OfMessageAttributes": "", + "md5OfBody": "fbc24bcc7a1794758fc1327fcfebdaf6", + "eventSource": "aws:sqs", + "eventSourceARN": "arn:aws:sqs:us-west-2:444442222111:DdTraceXLambda-sqsjavachecksNeste-sqsJavaProducer2sqsjavaproducerfo-dwpHQF6fcZT4", + "awsRegion": "us-west-2" + } + ] +} diff --git a/tests/test_cold_start.py b/tests/test_cold_start.py index 2ce37e7c9..c7444c49e 100644 --- a/tests/test_cold_start.py +++ b/tests/test_cold_start.py @@ -240,7 +240,6 @@ def test_trace_ignore_libs(self): def test_lazy_loaded_package_imports(monkeypatch): - spans = [] def finish(span): diff --git a/tests/test_tracing.py b/tests/test_tracing.py index d51f7b3fd..e30d202c9 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -1963,6 +1963,17 @@ def test_extract_context_from_sqs_batch_event(self): self.assertEqual(context.span_id, 7431398482019833808) self.assertEqual(context.sampling_priority, 1) + def test_extract_context_from_sqs_java_upstream_event(self): + event_sample_source = "sqs-java-upstream" + test_file = event_samples + event_sample_source + ".json" + with open(test_file, "r") as event: + event = json.load(event) + ctx = get_mock_context() + context, source, event_type = extract_dd_trace_context(event, ctx) + self.assertEqual(context.trace_id, 7925498337868555493) + self.assertEqual(context.span_id, 5245570649555658903) + self.assertEqual(context.sampling_priority, 1) + def test_extract_context_from_sns_event_with_string_msg_attr(self): event_sample_source = "sns-string-msg-attribute" test_file = event_samples + event_sample_source + ".json" From 22629eadfd2e40336049d7f3bf7340fcdb2277a8 Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Wed, 27 Mar 2024 12:38:42 -0700 Subject: [PATCH 143/403] Switch inferred spans tests to pytest parametrized. (#455) * Switch inferred spans tests to pytest parametrized. * Remove global span caching. * Replace namedtuple with regular class object. * Linting. * Leave comments about parent name. --- tests/test_tracing.py | 1333 ++++++++++++++++++----------------------- 1 file changed, 583 insertions(+), 750 deletions(-) diff --git a/tests/test_tracing.py b/tests/test_tracing.py index e30d202c9..0aa386135 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -1,8 +1,9 @@ -import unittest +import copy import functools import json +import pytest import os -import copy +import unittest from unittest.mock import MagicMock, Mock, patch, call @@ -48,32 +49,6 @@ event_samples = "tests/event_samples/" -span_to_finish = None - - -def _clean_up_span(): - global span_to_finish - if span_to_finish is not None: - span_to_finish.finish() - span_to_finish = None - - -def register_span(span): - global span_to_finish - _clean_up_span() - span_to_finish = span - return span - - -def wrapped_span_creator(span_creator_func): - def result_func(*args, **kwargs): - return register_span(span_creator_func(*args, **kwargs)) - - return result_func - - -create_inferred_span = wrapped_span_creator(create_inferred_span) - class ClientContext(object): def __init__(self, custom=None): @@ -712,160 +687,6 @@ def test_set_dd_trace_py_root_no_span_id(self): self.mock_activate.assert_has_calls([call(expected_context)]) -class TestAuthorizerInferredSpans(unittest.TestCase): - def setUp(self): - patcher = patch("ddtrace.Span.finish", autospec=True) - self.mock_span_stop = patcher.start() - self.addCleanup(patcher.stop) - - def tearDown(self): - _clean_up_span() - - def test_create_inferred_span_from_authorizer_request_api_gateway_v1_event(self): - event_sample_source = "authorizer-request-api-gateway-v1" - finish_time = ( - 1663295021.832 # request_time_epoch + integrationLatency for api-gateway-v1 - ) - span = self._authorizer_span_testing_items(event_sample_source, finish_time) - self._basic_common_checks(span, "aws.apigateway.rest") - - def test_create_inferred_span_from_authorizer_request_api_gateway_v1_cached_event( - self, - ): - event_sample_source = "authorizer-request-api-gateway-v1-cached" - test_file = event_samples + event_sample_source + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - ctx.aws_request_id = "abc123" # injected data's requestId is abc321 - span = create_inferred_span(event, ctx) - self.mock_span_stop.assert_not_called() # NO authorizer span is injected - self._basic_common_checks(span, "aws.apigateway.rest") - - def test_create_inferred_span_from_authorizer_token_api_gateway_v1_event(self): - event_sample_source = "authorizer-token-api-gateway-v1" - finish_time = ( - 1663295021.832 # request_time_epoch + integrationLatency for api-gateway-v1 - ) - span = self._authorizer_span_testing_items(event_sample_source, finish_time) - self._basic_common_checks(span, "aws.apigateway.rest") - - def test_create_inferred_span_from_authorizer_token_api_gateway_v2_cached_event( - self, - ): - event_sample_source = "authorizer-token-api-gateway-v1-cached" - test_file = event_samples + event_sample_source + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - ctx.aws_request_id = "abc123" # injected data's requestId is abc321 - span = create_inferred_span(event, ctx) - self.mock_span_stop.assert_not_called() # NO authorizer span is injected - self._basic_common_checks(span, "aws.apigateway.rest") - - def test_create_inferred_span_from_authorizer_request_api_gateway_v2_event(self): - event_sample_source = "authorizer-request-api-gateway-v2" - finish_time = 1664228639533775400 # use the injected parent span finish time as an approximation - test_file = event_samples + event_sample_source + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - ctx.aws_request_id = "abc123" - span = create_inferred_span(event, ctx) - self.assertEqual(span.get_tag(InferredSpanInfo.TAG_SOURCE), "self") - self.assertEqual(span.get_tag(InferredSpanInfo.SYNCHRONICITY), "sync") - self.mock_span_stop.assert_not_called() - self.assertEqual(span.start_ns, finish_time) - self._basic_common_checks(span, "aws.httpapi") - - def test_create_inferred_span_from_authorizer_request_api_gateway_v2_cached_event( - self, - ): - event_sample_source = "authorizer-request-api-gateway-v2-cached" - test_file = event_samples + event_sample_source + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - ctx.aws_request_id = "abc123" # injected data's requestId is abc321 - span = create_inferred_span(event, ctx) - self.mock_span_stop.assert_not_called() # NO authorizer span is injected - self._basic_common_checks(span, "aws.httpapi") - - def test_create_inferred_span_from_authorizer_request_api_gateway_websocket_connect_event( - self, - ): - event_sample_source = "authorizer-request-api-gateway-websocket-connect" - finish_time = ( - 1664388386.892 # request_time_epoch + integrationLatency in websocket case - ) - span = self._authorizer_span_testing_items(event_sample_source, finish_time) - self._basic_common_checks( - span, "aws.apigateway.websocket", "web", "$connect", None - ) - - def test_create_inferred_span_from_authorizer_request_api_gateway_websocket_message_event( - self, - ): - event_sample_source = "authorizer-request-api-gateway-websocket-message" - test_file = event_samples + event_sample_source + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - ctx.aws_request_id = "abc123" # injected data's requestId is abc321 - span = create_inferred_span(event, ctx) - self.mock_span_stop.assert_not_called() # NO authorizer span is injected - self._basic_common_checks(span, "aws.apigateway.websocket", "web", "main", None) - - def _authorizer_span_testing_items(self, event_sample_source, finish_time): - test_file = event_samples + event_sample_source + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - ctx.aws_request_id = "abc123" - span = create_inferred_span(event, ctx) - self.assertEqual(span.get_tag(InferredSpanInfo.TAG_SOURCE), "self") - self.assertEqual(span.get_tag(InferredSpanInfo.SYNCHRONICITY), "sync") - - # checking the upstream_authorizer_span - self.mock_span_stop.assert_called_once() - args, kwargs = self.mock_span_stop.call_args_list[0] - self.assertEqual(kwargs.get("finish_time", args[1]), finish_time) - self.assertEqual(span.start, finish_time) - authorizer_span = args[0] - self.assertEqual(authorizer_span.name, "aws.apigateway.authorizer") - self.assertEqual(span.parent_id, authorizer_span.span_id) - return span - - def _basic_common_checks( - self, - span, - operation_name, - span_type="http", - route_key="/hello", - http_method="GET", - ): - self.assertEqual(span.get_tag("apiid"), "amddr1rix9") - self.assertEqual(span.get_tag("apiname"), "amddr1rix9") - self.assertEqual(span.get_tag("stage"), "dev") - self.assertEqual(span.get_tag("operation_name"), operation_name) - self.assertEqual(span.span_type, span_type) - self.assertEqual( - span.service, - "amddr1rix9.execute-api.eu-west-1.amazonaws.com", - ) - self.assertEqual( - span.get_tag("http.url"), - "amddr1rix9.execute-api.eu-west-1.amazonaws.com" + route_key, - ) - self.assertEqual(span.get_tag("endpoint"), route_key) - self.assertEqual(span.get_tag("http.method"), http_method) - self.assertEqual( - span.get_tag("resource_names"), - f"{http_method} {route_key}" if http_method else route_key, - ) - self.assertEqual(span.get_tag("request_id"), "abc123") - - class TestServiceMapping(unittest.TestCase): def setUp(self): self.service_mapping = {} @@ -1369,545 +1190,589 @@ def test_remaps_specific_inferred_span_service_names_from_eventbridge_event( self.assertEqual(span2.service, "eventbridge") -class TestInferredSpans(unittest.TestCase): - def tearDown(self): - _clean_up_span() +class _Span(object): + def __init__(self, service, start, span_type, parent_name=None, tags=None): + self.service = service + self.start = start + self.span_type = span_type + self.parent_name = parent_name + self.tags = tags or {} + + +_test_create_inferred_span = ( + ( + "api-gateway", + _Span( + service="70ixmpl4fl.execute-api.us-east-2.amazonaws.com", + start=1428582896.0, + span_type="http", + tags={ + "_dd.origin": "lambda", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "apiid": "1234567890", + "apiname": "1234567890", + "endpoint": "/path/to/resource", + "http.method": "POST", + "http.url": "70ixmpl4fl.execute-api.us-east-2.amazonaws.com/path/to/resource", + "operation_name": "aws.apigateway.rest", + "request_id": "123", + "resource_names": "POST /path/to/resource", + "stage": "prod", + }, + ), + ), + ( + "api-gateway-non-proxy-async", + _Span( + service="lgxbo6a518.execute-api.eu-west-1.amazonaws.com", + start=1631210915.2510002, + span_type="http", + tags={ + "_dd.origin": "lambda", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "apiid": "lgxbo6a518", + "apiname": "lgxbo6a518", + "endpoint": "/http/get", + "http.method": "GET", + "http.url": "lgxbo6a518.execute-api.eu-west-1.amazonaws.com/http/get", + "operation_name": "aws.apigateway.rest", + "request_id": "123", + "resource_names": "GET /http/get", + "stage": "dev", + }, + ), + ), + ( + "api-gateway-non-proxy", + _Span( + service="lgxbo6a518.execute-api.eu-west-1.amazonaws.com", + start=1631210915.2510002, + span_type="http", + tags={ + "_dd.origin": "lambda", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "apiid": "lgxbo6a518", + "apiname": "lgxbo6a518", + "endpoint": "/http/get", + "http.method": "GET", + "http.url": "lgxbo6a518.execute-api.eu-west-1.amazonaws.com/http/get", + "operation_name": "aws.apigateway.rest", + "request_id": "123", + "resource_names": "GET /http/get", + "stage": "dev", + }, + ), + ), + ( + "http-api", + _Span( + service="x02yirxc7a.execute-api.eu-west-1.amazonaws.com", + start=1631212283.738, + span_type="http", + tags={ + "_dd.origin": "lambda", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "apiid": "x02yirxc7a", + "apiname": "x02yirxc7a", + "endpoint": "/httpapi/get", + "http.method": "GET", + "http.protocol": "HTTP/1.1", + "http.source_ip": "38.122.226.210", + "http.url": "x02yirxc7a.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.user_agent": "curl/7.64.1", + "operation_name": "aws.httpapi", + "request_id": "123", + "resource_names": "GET /httpapi/get", + "stage": "$default", + }, + ), + ), + ( + "api-gateway-websocket-default", + _Span( + service="p62c47itsb.execute-api.eu-west-1.amazonaws.com", + start=1631285061.365, + span_type="web", + tags={ + "_dd.origin": "lambda", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "apiid": "p62c47itsb", + "apiname": "p62c47itsb", + "connection_id": "Fc5SzcoYGjQCJlg=", + "endpoint": "$default", + "event_type": "MESSAGE", + "http.url": "p62c47itsb.execute-api.eu-west-1.amazonaws.com$default", + "message_direction": "IN", + "operation_name": "aws.apigateway.websocket", + "request_id": "123", + "resource_names": "$default", + "stage": "dev", + }, + ), + ), + ( + "api-gateway-websocket-connect", + _Span( + service="p62c47itsb.execute-api.eu-west-1.amazonaws.com", + start=1631284003.071, + span_type="web", + tags={ + "_dd.origin": "lambda", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "apiid": "p62c47itsb", + "apiname": "p62c47itsb", + "connection_id": "Fc2tgfl3mjQCJfA=", + "endpoint": "$connect", + "event_type": "CONNECT", + "http.url": "p62c47itsb.execute-api.eu-west-1.amazonaws.com$connect", + "message_direction": "IN", + "operation_name": "aws.apigateway.websocket", + "request_id": "123", + "resource_names": "$connect", + "stage": "dev", + }, + ), + ), + ( + "api-gateway-websocket-disconnect", + _Span( + service="p62c47itsb.execute-api.eu-west-1.amazonaws.com", + start=1631284034.737, + span_type="web", + tags={ + "_dd.origin": "lambda", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "apiid": "p62c47itsb", + "apiname": "p62c47itsb", + "connection_id": "Fc2tgfl3mjQCJfA=", + "endpoint": "$disconnect", + "event_type": "DISCONNECT", + "http.url": "p62c47itsb.execute-api.eu-west-1.amazonaws.com$disconnect", + "message_direction": "IN", + "operation_name": "aws.apigateway.websocket", + "request_id": "123", + "resource_names": "$disconnect", + "stage": "dev", + }, + ), + ), + ( + "sqs-string-msg-attribute", + _Span( + service="sqs", + start=1634662094.538, + span_type="web", + tags={ + "_dd.origin": "lambda", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "event_source_arn": "arn:aws:sqs:eu-west-1:601427279990:InferredSpansQueueNode", + "operation_name": "aws.sqs", + "queuename": "InferredSpansQueueNode", + "resource_names": "InferredSpansQueueNode", + "sender_id": "AROAYYB64AB3LSVUYFP5T:harv-inferred-spans-dev-initSender", + }, + ), + ), + ( + "sns-string-msg-attribute", + _Span( + service="sns", + start=1643638421.637, + span_type="web", + tags={ + "_dd.origin": "lambda", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "message_id": "87056a47-f506-5d77-908b-303605d3b197", + "operation_name": "aws.sns", + "resource_names": "serverlessTracingTopicPy", + "topic_arn": "arn:aws:sns:eu-west-1:601427279990:serverlessTracingTopicPy", + "topicname": "serverlessTracingTopicPy", + "type": "Notification", + }, + ), + ), + ( + "sns-b64-msg-attribute", + _Span( + service="sns", + start=1643638421.637, + span_type="web", + tags={ + "_dd.origin": "lambda", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "message_id": "87056a47-f506-5d77-908b-303605d3b197", + "operation_name": "aws.sns", + "resource_names": "serverlessTracingTopicPy", + "topic_arn": "arn:aws:sns:eu-west-1:601427279990:serverlessTracingTopicPy", + "topicname": "serverlessTracingTopicPy", + "type": "Notification", + }, + ), + ), + ( + "kinesis", + _Span( + service="kinesis", + start=1643638425.163, + span_type="web", + tags={ + "_dd.origin": "lambda", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "endpoint": None, + "event_id": "shardId-000000000002:49624230154685806402418173680709770494154422022871973922", + "event_name": "aws:kinesis:record", + "event_source_arn": "arn:aws:kinesis:eu-west-1:601427279990:stream/kinesisStream", + "event_version": "1.0", + "http.method": None, + "http.url": None, + "operation_name": "aws.kinesis", + "partition_key": "partitionkey", + "request_id": None, + "resource_names": "stream/kinesisStream", + "shardid": "shardId-000000000002", + "streamname": "stream/kinesisStream", + }, + ), + ), + ( + "dynamodb", + _Span( + service="dynamodb", + start=1428537600.0, + span_type="web", + tags={ + "_dd.origin": "lambda", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "endpoint": None, + "event_id": "c4ca4238a0b923820dcc509a6f75849b", + "event_name": "INSERT", + "event_source_arn": "arn:aws:dynamodb:us-east-1:123456789012:table/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", + "event_version": "1.1", + "http.method": None, + "http.url": None, + "operation_name": "aws.dynamodb", + "request_id": None, + "resource_names": "ExampleTableWithStream", + "size_bytes": "26", + "stream_view_type": "NEW_AND_OLD_IMAGES", + "tablename": "ExampleTableWithStream", + }, + ), + ), + ( + "s3", + _Span( + service="s3", + start=0.0, + span_type="web", + tags={ + "_dd.origin": "lambda", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "bucket_arn": "arn:aws:s3:::example-bucket", + "bucketname": "example-bucket", + "endpoint": None, + "event_name": "ObjectCreated:Put", + "http.method": None, + "http.url": None, + "object_etag": "0123456789abcdef0123456789abcdef", + "object_key": "test/key", + "object_size": "1024", + "operation_name": "aws.s3", + "request_id": None, + "resource_names": "example-bucket", + }, + ), + ), + ( + "eventbridge-custom", + _Span( + service="eventbridge", + start=1635989865.0, + span_type="web", + tags={ + "_dd.origin": "lambda", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "endpoint": None, + "http.method": None, + "http.url": None, + "operation_name": "aws.eventbridge", + "request_id": None, + "resource_names": "eventbridge.custom.event.sender", + }, + ), + ), + ( + "eventbridge-sqs", + _Span( + service="sqs", + start=1691102943.638, + span_type="web", + parent_name="aws.eventbridge", + tags={ + "_dd.origin": "lambda", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "endpoint": None, + "event_source_arn": "arn:aws:sqs:us-east-1:425362996713:eventbridge-sqs-queue", + "http.method": None, + "http.url": None, + "operation_name": "aws.sqs", + "queuename": "eventbridge-sqs-queue", + "request_id": None, + "resource_names": "eventbridge-sqs-queue", + "sender_id": "AIDAJXNJGGKNS7OSV23OI", + }, + ), + ), + ( + "api-gateway-no-apiid", + _Span( + service="70ixmpl4fl.execute-api.us-east-2.amazonaws.com", + start=1428582896.0, + span_type="http", + tags={ + "_dd.origin": "lambda", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "apiid": "None", + "apiname": "None", + "endpoint": "/path/to/resource", + "http.method": "POST", + "http.url": "70ixmpl4fl.execute-api.us-east-2.amazonaws.com/path/to/resource", + "operation_name": "aws.apigateway.rest", + "request_id": "123", + "resource_names": "POST /path/to/resource", + "stage": "prod", + }, + ), + ), + ( + "authorizer-request-api-gateway-v1", + _Span( + service="amddr1rix9.execute-api.eu-west-1.amazonaws.com", + start=1663295021.832, + span_type="http", + parent_name="aws.apigateway.authorizer", + tags={ + "_dd.origin": "lambda", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "apiid": "amddr1rix9", + "apiname": "amddr1rix9", + "endpoint": "/hello", + "http.method": "GET", + "http.url": "amddr1rix9.execute-api.eu-west-1.amazonaws.com/hello", + "operation_name": "aws.apigateway.rest", + "request_id": "123", + "resource_names": "GET /hello", + "stage": "dev", + }, + ), + ), + ( + "authorizer-request-api-gateway-v1-cached", + _Span( + service="amddr1rix9.execute-api.eu-west-1.amazonaws.com", + start=1666714653.636, + span_type="http", + tags={ + "_dd.origin": "lambda", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "apiid": "amddr1rix9", + "apiname": "amddr1rix9", + "endpoint": "/hello", + "http.method": "GET", + "http.url": "amddr1rix9.execute-api.eu-west-1.amazonaws.com/hello", + "operation_name": "aws.apigateway.rest", + "request_id": "123", + "resource_names": "GET /hello", + "stage": "dev", + }, + ), + ), + ( + "authorizer-token-api-gateway-v1", + _Span( + service="amddr1rix9.execute-api.eu-west-1.amazonaws.com", + start=1663295021.832, + span_type="http", + parent_name="aws.apigateway.authorizer", + tags={ + "_dd.origin": "lambda", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "apiid": "amddr1rix9", + "apiname": "amddr1rix9", + "endpoint": "/hello", + "http.method": "GET", + "http.url": "amddr1rix9.execute-api.eu-west-1.amazonaws.com/hello", + "operation_name": "aws.apigateway.rest", + "request_id": "123", + "resource_names": "GET /hello", + "stage": "dev", + }, + ), + ), + ( + "authorizer-token-api-gateway-v1-cached", + _Span( + service="amddr1rix9.execute-api.eu-west-1.amazonaws.com", + start=1666803622.99, + span_type="http", + tags={ + "_dd.origin": "lambda", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "apiid": "amddr1rix9", + "apiname": "amddr1rix9", + "endpoint": "/hello", + "http.method": "GET", + "http.url": "amddr1rix9.execute-api.eu-west-1.amazonaws.com/hello", + "operation_name": "aws.apigateway.rest", + "request_id": "123", + "resource_names": "GET /hello", + "stage": "dev", + }, + ), + ), + ( + "authorizer-request-api-gateway-v2", + _Span( + service="amddr1rix9.execute-api.eu-west-1.amazonaws.com", + start=1664228639.5337753, + span_type="http", + tags={ + "_dd.origin": "lambda", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "apiid": "amddr1rix9", + "apiname": "amddr1rix9", + "endpoint": "/hello", + "http.method": "GET", + "http.url": "amddr1rix9.execute-api.eu-west-1.amazonaws.com/hello", + "operation_name": "aws.httpapi", + "request_id": "123", + "resource_names": "GET /hello", + "stage": "dev", + }, + ), + ), + ( + "authorizer-request-api-gateway-v2-cached", + _Span( + service="amddr1rix9.execute-api.eu-west-1.amazonaws.com", + start=1666715429.349, + span_type="http", + tags={ + "_dd.origin": "lambda", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "apiid": "amddr1rix9", + "apiname": "amddr1rix9", + "endpoint": "/hello", + "http.method": "GET", + "http.url": "amddr1rix9.execute-api.eu-west-1.amazonaws.com/hello", + "operation_name": "aws.httpapi", + "request_id": "123", + "resource_names": "GET /hello", + "stage": "dev", + }, + ), + ), + ( + "authorizer-request-api-gateway-websocket-connect", + _Span( + service="amddr1rix9.execute-api.eu-west-1.amazonaws.com", + start=1664388386.892, + span_type="web", + parent_name="aws.apigateway.authorizer", + tags={ + "_dd.origin": "lambda", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "apiid": "amddr1rix9", + "apiname": "amddr1rix9", + "connection_id": "ZLr9QeNLmjQCIZA=", + "endpoint": "$connect", + "event_type": "CONNECT", + "http.url": "amddr1rix9.execute-api.eu-west-1.amazonaws.com$connect", + "message_direction": "IN", + "operation_name": "aws.apigateway.websocket", + "request_id": "123", + "resource_names": "$connect", + "stage": "dev", + }, + ), + ), + ( + "authorizer-request-api-gateway-websocket-message", + _Span( + service="amddr1rix9.execute-api.eu-west-1.amazonaws.com", + start=1664390397.1169999, + span_type="web", + tags={ + "_dd.origin": "lambda", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "apiid": "amddr1rix9", + "apiname": "amddr1rix9", + "connection_id": "ZLwtceO1mjQCI8Q=", + "endpoint": "main", + "event_type": "MESSAGE", + "http.url": "amddr1rix9.execute-api.eu-west-1.amazonaws.commain", + "message_direction": "IN", + "operation_name": "aws.apigateway.websocket", + "request_id": "123", + "resource_names": "main", + "stage": "dev", + }, + ), + ), +) - def test_create_inferred_span_from_api_gateway_event(self): - event_sample_source = "api-gateway" - test_file = event_samples + event_sample_source + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - ctx.aws_request_id = "123" - span = create_inferred_span(event, ctx) - self.assertEqual(span.get_tag("operation_name"), "aws.apigateway.rest") - self.assertEqual( - span.service, - "70ixmpl4fl.execute-api.us-east-2.amazonaws.com", - ) - self.assertEqual( - span.get_tag("http.url"), - "70ixmpl4fl.execute-api.us-east-2.amazonaws.com/path/to/resource", - ) - self.assertEqual(span.get_tag("endpoint"), "/path/to/resource") - self.assertEqual(span.get_tag("http.method"), "POST") - self.assertEqual( - span.get_tag("resource_names"), - "POST /path/to/resource", - ) - self.assertEqual(span.get_tag("request_id"), "123") - self.assertEqual(span.get_tag("apiid"), "1234567890") - self.assertEqual(span.get_tag("apiname"), "1234567890") - self.assertEqual(span.get_tag("stage"), "prod") - self.assertEqual(span.start, 1428582896.0) - self.assertEqual(span.span_type, "http") - self.assertEqual(span.get_tag(InferredSpanInfo.TAG_SOURCE), "self") - self.assertEqual(span.get_tag(InferredSpanInfo.SYNCHRONICITY), "sync") - - def test_create_inferred_span_from_api_gateway_non_proxy_event_async(self): - event_sample_source = "api-gateway-non-proxy-async" - test_file = event_samples + event_sample_source + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - ctx.aws_request_id = "123" - span = create_inferred_span(event, ctx) - self.assertEqual(span.get_tag("operation_name"), "aws.apigateway.rest") - self.assertEqual( - span.service, - "lgxbo6a518.execute-api.eu-west-1.amazonaws.com", - ) - self.assertEqual( - span.get_tag("http.url"), - "lgxbo6a518.execute-api.eu-west-1.amazonaws.com/http/get", - ) - self.assertEqual(span.get_tag("endpoint"), "/http/get") - self.assertEqual(span.get_tag("http.method"), "GET") - self.assertEqual( - span.get_tag("resource_names"), - "GET /http/get", - ) - self.assertEqual(span.get_tag("request_id"), "123") - self.assertEqual(span.get_tag("apiid"), "lgxbo6a518") - self.assertEqual(span.get_tag("apiname"), "lgxbo6a518") - self.assertEqual(span.get_tag("stage"), "dev") - self.assertEqual(span.start, 1631210915.2510002) - self.assertEqual(span.span_type, "http") - self.assertEqual(span.get_tag(InferredSpanInfo.TAG_SOURCE), "self") - self.assertEqual(span.get_tag(InferredSpanInfo.SYNCHRONICITY), "async") - - def test_create_inferred_span_from_api_gateway_non_proxy_event_sync(self): - event_sample_source = "api-gateway-non-proxy" - test_file = event_samples + event_sample_source + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - ctx.aws_request_id = "123" - span = create_inferred_span(event, ctx) - self.assertEqual(span.get_tag("operation_name"), "aws.apigateway.rest") - self.assertEqual( - span.service, - "lgxbo6a518.execute-api.eu-west-1.amazonaws.com", - ) - self.assertEqual( - span.get_tag("http.url"), - "lgxbo6a518.execute-api.eu-west-1.amazonaws.com/http/get", - ) - self.assertEqual(span.get_tag("endpoint"), "/http/get") - self.assertEqual(span.get_tag("http.method"), "GET") - self.assertEqual( - span.get_tag("resource_names"), - "GET /http/get", - ) - self.assertEqual(span.get_tag("request_id"), "123") - self.assertEqual(span.get_tag("apiid"), "lgxbo6a518") - self.assertEqual(span.get_tag("apiname"), "lgxbo6a518") - self.assertEqual(span.get_tag("stage"), "dev") - self.assertEqual(span.start, 1631210915.2510002) - self.assertEqual(span.span_type, "http") - self.assertEqual(span.get_tag(InferredSpanInfo.TAG_SOURCE), "self") - self.assertEqual(span.get_tag(InferredSpanInfo.SYNCHRONICITY), "sync") - - def test_create_inferred_span_from_http_api_event(self): - event_sample_source = "http-api" - test_file = event_samples + event_sample_source + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - ctx.aws_request_id = "123" - span = create_inferred_span(event, ctx) - self.assertEqual(span.get_tag("operation_name"), "aws.httpapi") - self.assertEqual( - span.service, - "x02yirxc7a.execute-api.eu-west-1.amazonaws.com", - ) - self.assertEqual( - span.get_tag("http.url"), - "x02yirxc7a.execute-api.eu-west-1.amazonaws.com/httpapi/get", - ) - self.assertEqual(span.get_tag("endpoint"), "/httpapi/get") - self.assertEqual(span.get_tag("http.method"), "GET") - self.assertEqual( - span.get_tag("resource_names"), - "GET /httpapi/get", - ) - self.assertEqual(span.get_tag("request_id"), "123") - self.assertEqual(span.get_tag("apiid"), "x02yirxc7a") - self.assertEqual(span.get_tag("apiname"), "x02yirxc7a") - self.assertEqual(span.get_tag("stage"), "$default") - self.assertEqual(span.get_tag("http.protocol"), "HTTP/1.1") - self.assertEqual(span.get_tag("http.source_ip"), "38.122.226.210") - self.assertEqual(span.get_tag("http.user_agent"), "curl/7.64.1") - self.assertEqual(span.start, 1631212283.738) - self.assertEqual(span.span_type, "http") - self.assertEqual(span.get_tag(InferredSpanInfo.TAG_SOURCE), "self") - self.assertEqual(span.get_tag(InferredSpanInfo.SYNCHRONICITY), "sync") - - def test_create_inferred_span_from_api_gateway_websocket_default_event(self): - event_sample_source = "api-gateway-websocket-default" - test_file = event_samples + event_sample_source + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - ctx.aws_request_id = "123" - span = create_inferred_span(event, ctx) - self.assertEqual(span.get_tag("operation_name"), "aws.apigateway.websocket") - self.assertEqual( - span.service, - "p62c47itsb.execute-api.eu-west-1.amazonaws.com", - ) - self.assertEqual( - span.get_tag("http.url"), - "p62c47itsb.execute-api.eu-west-1.amazonaws.com$default", - ) - self.assertEqual(span.get_tag("endpoint"), "$default") - self.assertEqual(span.get_tag("http.method"), None) - self.assertEqual( - span.get_tag("resource_names"), - "$default", - ) - self.assertEqual(span.get_tag("request_id"), "123") - self.assertEqual(span.get_tag("apiid"), "p62c47itsb") - self.assertEqual(span.get_tag("apiname"), "p62c47itsb") - self.assertEqual(span.get_tag("stage"), "dev") - self.assertEqual(span.get_tag("connection_id"), "Fc5SzcoYGjQCJlg=") - self.assertEqual(span.get_tag("event_type"), "MESSAGE") - self.assertEqual(span.get_tag("message_direction"), "IN") - self.assertEqual(span.start, 1631285061.365) - self.assertEqual(span.span_type, "web") - self.assertEqual(span.get_tag(InferredSpanInfo.TAG_SOURCE), "self") - self.assertEqual(span.get_tag(InferredSpanInfo.SYNCHRONICITY), "sync") - - def test_create_inferred_span_from_api_gateway_websocket_connect_event(self): - event_sample_source = "api-gateway-websocket-connect" - test_file = event_samples + event_sample_source + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - ctx.aws_request_id = "123" - span = create_inferred_span(event, ctx) - self.assertEqual(span.get_tag("operation_name"), "aws.apigateway.websocket") - self.assertEqual( - span.service, - "p62c47itsb.execute-api.eu-west-1.amazonaws.com", - ) - self.assertEqual( - span.get_tag("http.url"), - "p62c47itsb.execute-api.eu-west-1.amazonaws.com$connect", - ) - self.assertEqual(span.get_tag("endpoint"), "$connect") - self.assertEqual(span.get_tag("http.method"), None) - self.assertEqual( - span.get_tag("resource_names"), - "$connect", - ) - self.assertEqual(span.get_tag("request_id"), "123") - self.assertEqual(span.get_tag("apiid"), "p62c47itsb") - self.assertEqual(span.get_tag("apiname"), "p62c47itsb") - self.assertEqual(span.get_tag("stage"), "dev") - self.assertEqual(span.get_tag("connection_id"), "Fc2tgfl3mjQCJfA=") - self.assertEqual(span.get_tag("event_type"), "CONNECT") - self.assertEqual(span.get_tag("message_direction"), "IN") - self.assertEqual(span.start, 1631284003.071) - self.assertEqual(span.span_type, "web") - self.assertEqual(span.get_tag(InferredSpanInfo.TAG_SOURCE), "self") - self.assertEqual(span.get_tag(InferredSpanInfo.SYNCHRONICITY), "sync") - - def test_create_inferred_span_from_api_gateway_websocket_disconnect_event(self): - event_sample_source = "api-gateway-websocket-disconnect" - test_file = event_samples + event_sample_source + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - ctx.aws_request_id = "123" - span = create_inferred_span(event, ctx) - self.assertEqual(span.get_tag("operation_name"), "aws.apigateway.websocket") - self.assertEqual( - span.service, - "p62c47itsb.execute-api.eu-west-1.amazonaws.com", - ) - self.assertEqual( - span.get_tag("http.url"), - "p62c47itsb.execute-api.eu-west-1.amazonaws.com$disconnect", - ) - self.assertEqual(span.get_tag("endpoint"), "$disconnect") - self.assertEqual(span.get_tag("http.method"), None) - self.assertEqual( - span.get_tag("resource_names"), - "$disconnect", - ) - self.assertEqual(span.get_tag("request_id"), "123") - self.assertEqual(span.get_tag("apiid"), "p62c47itsb") - self.assertEqual(span.get_tag("apiname"), "p62c47itsb") - self.assertEqual(span.get_tag("stage"), "dev") - self.assertEqual(span.get_tag("connection_id"), "Fc2tgfl3mjQCJfA=") - self.assertEqual(span.get_tag("event_type"), "DISCONNECT") - self.assertEqual(span.get_tag("message_direction"), "IN") - self.assertEqual(span.start, 1631284034.737) - self.assertEqual(span.span_type, "web") - self.assertEqual(span.get_tag(InferredSpanInfo.TAG_SOURCE), "self") - self.assertEqual(span.get_tag(InferredSpanInfo.SYNCHRONICITY), "sync") - - def test_create_inferred_span_from_sqs_event_string_msg_attr(self): - event_sample_name = "sqs-string-msg-attribute" - test_file = event_samples + event_sample_name + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - ctx.aws_request_id = "123" - span = create_inferred_span(event, ctx) - self.assertEqual(span.get_tag("operation_name"), "aws.sqs") - self.assertEqual( - span.service, - "sqs", - ) - self.assertEqual( - span.get_tag("http.url"), - None, - ) - self.assertEqual(span.get_tag("endpoint"), None) - self.assertEqual(span.get_tag("http.method"), None) - self.assertEqual( - span.get_tag("resource_names"), - "InferredSpansQueueNode", - ) - self.assertEqual(span.get_tag("request_id"), None) - self.assertEqual(span.get_tag("queuename"), "InferredSpansQueueNode") - self.assertEqual( - span.get_tag("event_source_arn"), - "arn:aws:sqs:eu-west-1:601427279990:InferredSpansQueueNode", - ) - self.assertEqual( - span.get_tag("sender_id"), - "AROAYYB64AB3LSVUYFP5T:harv-inferred-spans-dev-initSender", - ) - self.assertEqual(span.start, 1634662094.538) - self.assertEqual(span.span_type, "web") - self.assertEqual(span.get_tag(InferredSpanInfo.TAG_SOURCE), "self") - self.assertEqual(span.get_tag(InferredSpanInfo.SYNCHRONICITY), "async") - - def test_create_inferred_span_from_sns_event_string_msg_attr(self): - event_sample_name = "sns-string-msg-attribute" - test_file = event_samples + event_sample_name + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - ctx.aws_request_id = "123" - span = create_inferred_span(event, ctx) - self.assertEqual(span.get_tag("operation_name"), "aws.sns") - self.assertEqual( - span.service, - "sns", - ) - self.assertEqual( - span.get_tag("http.url"), - None, - ) - self.assertEqual(span.get_tag("endpoint"), None) - self.assertEqual(span.get_tag("http.method"), None) - self.assertEqual( - span.get_tag("resource_names"), - "serverlessTracingTopicPy", - ) - self.assertEqual(span.get_tag("topicname"), "serverlessTracingTopicPy") - self.assertEqual( - span.get_tag("topic_arn"), - "arn:aws:sns:eu-west-1:601427279990:serverlessTracingTopicPy", - ) - self.assertEqual( - span.get_tag("message_id"), "87056a47-f506-5d77-908b-303605d3b197" - ) - self.assertEqual(span.get_tag("type"), "Notification") - self.assertEqual(span.get_tag("subject"), None) - self.assertEqual(span.start, 1643638421.637) - self.assertEqual(span.span_type, "web") - self.assertEqual(span.get_tag(InferredSpanInfo.TAG_SOURCE), "self") - self.assertEqual(span.get_tag(InferredSpanInfo.SYNCHRONICITY), "async") - - def test_create_inferred_span_from_sns_event_b64_msg_attr(self): - event_sample_name = "sns-b64-msg-attribute" - test_file = event_samples + event_sample_name + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - ctx.aws_request_id = "123" - span = create_inferred_span(event, ctx) - self.assertEqual(span.get_tag("operation_name"), "aws.sns") - self.assertEqual( - span.service, - "sns", - ) - self.assertEqual( - span.get_tag("http.url"), - None, - ) - self.assertEqual(span.get_tag("endpoint"), None) - self.assertEqual(span.get_tag("http.method"), None) - self.assertEqual( - span.get_tag("resource_names"), - "serverlessTracingTopicPy", - ) - self.assertEqual(span.get_tag("topicname"), "serverlessTracingTopicPy") - self.assertEqual( - span.get_tag("topic_arn"), - "arn:aws:sns:eu-west-1:601427279990:serverlessTracingTopicPy", - ) - self.assertEqual( - span.get_tag("message_id"), "87056a47-f506-5d77-908b-303605d3b197" - ) - self.assertEqual(span.get_tag("type"), "Notification") - self.assertEqual(span.get_tag("subject"), None) - self.assertEqual(span.start, 1643638421.637) - self.assertEqual(span.span_type, "web") - self.assertEqual(span.get_tag(InferredSpanInfo.TAG_SOURCE), "self") - self.assertEqual(span.get_tag(InferredSpanInfo.SYNCHRONICITY), "async") - - def test_create_inferred_span_from_kinesis_event(self): - event_sample_source = "kinesis" - test_file = event_samples + event_sample_source + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - ctx.aws_request_id = "123" - span = create_inferred_span(event, ctx) - self.assertEqual(span.get_tag("operation_name"), "aws.kinesis") - self.assertEqual( - span.service, - "kinesis", - ) - self.assertEqual( - span.get_tag("http.url"), - None, - ) - self.assertEqual(span.get_tag("endpoint"), None) - self.assertEqual(span.get_tag("http.method"), None) - self.assertEqual( - span.get_tag("resource_names"), - "stream/kinesisStream", - ) - self.assertEqual(span.get_tag("request_id"), None) - self.assertEqual(span.get_tag("streamname"), "stream/kinesisStream") - self.assertEqual(span.get_tag("shardid"), "shardId-000000000002") - self.assertEqual( - span.get_tag("event_source_arn"), - "arn:aws:kinesis:eu-west-1:601427279990:stream/kinesisStream", - ) - self.assertEqual( - span.get_tag("event_id"), - "shardId-000000000002:49624230154685806402418173680709770494154422022871973922", - ) - self.assertEqual(span.get_tag("event_name"), "aws:kinesis:record") - self.assertEqual(span.get_tag("event_version"), "1.0") - self.assertEqual(span.get_tag("partition_key"), "partitionkey") - self.assertEqual(span.start, 1643638425.163) - self.assertEqual(span.span_type, "web") - self.assertEqual(span.get_tag(InferredSpanInfo.TAG_SOURCE), "self") - self.assertEqual(span.get_tag(InferredSpanInfo.SYNCHRONICITY), "async") - - def test_create_inferred_span_from_dynamodb_event(self): - event_sample_source = "dynamodb" - test_file = event_samples + event_sample_source + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - ctx.aws_request_id = "123" - span = create_inferred_span(event, ctx) - self.assertEqual(span.get_tag("operation_name"), "aws.dynamodb") - self.assertEqual( - span.service, - "dynamodb", - ) - self.assertEqual( - span.get_tag("http.url"), - None, - ) - self.assertEqual(span.get_tag("endpoint"), None) - self.assertEqual(span.get_tag("http.method"), None) - self.assertEqual( - span.get_tag("resource_names"), - "ExampleTableWithStream", - ) - self.assertEqual(span.get_tag("request_id"), None) - self.assertEqual(span.get_tag("tablename"), "ExampleTableWithStream") - self.assertEqual( - span.get_tag("event_source_arn"), - "arn:aws:dynamodb:us-east-1:123456789012:table/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", - ) - self.assertEqual(span.get_tag("event_id"), "c4ca4238a0b923820dcc509a6f75849b") - self.assertEqual(span.get_tag("event_name"), "INSERT") - self.assertEqual(span.get_tag("event_version"), "1.1") - self.assertEqual(span.get_tag("stream_view_type"), "NEW_AND_OLD_IMAGES") - self.assertEqual(span.get_tag("size_bytes"), "26") - self.assertEqual(span.start, 1428537600.0) - self.assertEqual(span.span_type, "web") - self.assertEqual(span.get_tag(InferredSpanInfo.TAG_SOURCE), "self") - self.assertEqual(span.get_tag(InferredSpanInfo.SYNCHRONICITY), "async") - - def test_create_inferred_span_from_s3_event(self): - event_sample_source = "s3" - test_file = event_samples + event_sample_source + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - ctx.aws_request_id = "123" - span = create_inferred_span(event, ctx) - self.assertEqual(span.get_tag("operation_name"), "aws.s3") - self.assertEqual( - span.service, - "s3", - ) - self.assertEqual( - span.get_tag("http.url"), - None, - ) - self.assertEqual(span.get_tag("endpoint"), None) - self.assertEqual(span.get_tag("http.method"), None) - self.assertEqual( - span.get_tag("resource_names"), - "example-bucket", - ) - self.assertEqual(span.get_tag("request_id"), None) - self.assertEqual(span.get_tag("event_name"), "ObjectCreated:Put") - self.assertEqual(span.get_tag("bucketname"), "example-bucket") - self.assertEqual(span.get_tag("bucket_arn"), "arn:aws:s3:::example-bucket") - self.assertEqual(span.get_tag("object_key"), "test/key") - self.assertEqual(span.get_tag("object_size"), "1024") - self.assertEqual( - span.get_tag("object_etag"), "0123456789abcdef0123456789abcdef" - ) - self.assertEqual(span.start, 0.0) - self.assertEqual(span.span_type, "web") - self.assertEqual(span.get_tag(InferredSpanInfo.TAG_SOURCE), "self") - self.assertEqual(span.get_tag(InferredSpanInfo.SYNCHRONICITY), "async") - def test_create_inferred_span_from_eventbridge_event(self): - event_sample_source = "eventbridge-custom" - test_file = event_samples + event_sample_source + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - ctx.aws_request_id = "123" - span = create_inferred_span(event, ctx) - self.assertEqual(span.get_tag("operation_name"), "aws.eventbridge") - self.assertEqual( - span.service, - "eventbridge", - ) - self.assertEqual( - span.get_tag("http.url"), - None, - ) - self.assertEqual(span.get_tag("endpoint"), None) - self.assertEqual(span.get_tag("http.method"), None) - self.assertEqual( - span.get_tag("resource_names"), - "eventbridge.custom.event.sender", - ) - self.assertEqual(span.get_tag("request_id"), None) - self.assertEqual(span.start, 1635989865.0) - self.assertEqual(span.span_type, "web") - self.assertEqual(span.get_tag(InferredSpanInfo.TAG_SOURCE), "self") - self.assertEqual(span.get_tag(InferredSpanInfo.SYNCHRONICITY), "async") - - def test_create_inferred_span_from_eventbridge_sqs_event(self): - event_sample_name = "eventbridge-sqs" - test_file = event_samples + event_sample_name + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - ctx.aws_request_id = "123" - span = create_inferred_span(event, ctx) - self.assertEqual(span.get_tag("operation_name"), "aws.sqs") - self.assertEqual( - span.service, - "sqs", - ) - self.assertEqual( - span.get_tag("http.url"), - None, - ) - self.assertEqual(span.get_tag("endpoint"), None) - self.assertEqual(span.get_tag("http.method"), None) - self.assertEqual( - span.get_tag("resource_names"), - "eventbridge-sqs-queue", - ) - self.assertEqual(span.get_tag("request_id"), None) - self.assertEqual(span.get_tag("queuename"), "eventbridge-sqs-queue") - self.assertEqual( - span.get_tag("event_source_arn"), - "arn:aws:sqs:us-east-1:425362996713:eventbridge-sqs-queue", - ) - self.assertEqual( - span.get_tag("sender_id"), - "AIDAJXNJGGKNS7OSV23OI", - ) - self.assertEqual(span.start, 1691102943.638) - self.assertEqual(span.span_type, "web") - self.assertEqual(span.get_tag(InferredSpanInfo.TAG_SOURCE), "self") - self.assertEqual(span.get_tag(InferredSpanInfo.SYNCHRONICITY), "async") +@pytest.mark.parametrize("source,expect", _test_create_inferred_span) +@patch("ddtrace.Span.finish", autospec=True) +def test_create_inferred_span(mock_span_finish, source, expect): + with open(f"{event_samples}{source}.json") as f: + event = json.load(f) + ctx = get_mock_context(aws_request_id="123") + + actual = create_inferred_span(event, ctx) + assert actual.service == expect.service + assert actual.start == expect.start + assert actual.span_type == expect.span_type + for tag, value in expect.tags.items(): + assert actual.get_tag(tag) == value, f"wrong value for tag {tag}" + + if expect.parent_name is not None: # there are two inferred spans + assert mock_span_finish.call_count == 1 + args, kwargs = mock_span_finish.call_args_list[0] + parent = args[0] + finish_time = kwargs.get("finish_time") or args[1] + assert parent.name == expect.parent_name + assert actual.parent_id == parent.span_id + assert finish_time == expect.start + else: # there is only one inferred span + assert mock_span_finish.call_count == 0 + +class TestInferredSpans(unittest.TestCase): def test_extract_context_from_eventbridge_event(self): event_sample_source = "eventbridge-custom" test_file = event_samples + event_sample_source + ".json" @@ -2029,38 +1894,6 @@ def test_extract_context_from_kinesis_batch_event(self): self.assertEqual(context.span_id, 2876253380018681026) self.assertEqual(context.sampling_priority, 1) - def test_create_inferred_span_from_api_gateway_event_no_apiid(self): - event_sample_source = "api-gateway-no-apiid" - test_file = event_samples + event_sample_source + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - ctx.aws_request_id = "123" - span = create_inferred_span(event, ctx) - self.assertEqual(span.get_tag("operation_name"), "aws.apigateway.rest") - self.assertEqual( - span.service, - "70ixmpl4fl.execute-api.us-east-2.amazonaws.com", - ) - self.assertEqual( - span.get_tag("http.url"), - "70ixmpl4fl.execute-api.us-east-2.amazonaws.com/path/to/resource", - ) - self.assertEqual(span.get_tag("endpoint"), "/path/to/resource") - self.assertEqual(span.get_tag("http.method"), "POST") - self.assertEqual( - span.get_tag("resource_names"), - "POST /path/to/resource", - ) - self.assertEqual(span.get_tag("request_id"), "123") - self.assertEqual(span.get_tag("apiid"), "None") - self.assertEqual(span.get_tag("apiname"), "None") - self.assertEqual(span.get_tag("stage"), "prod") - self.assertEqual(span.start, 1428582896.0) - self.assertEqual(span.span_type, "http") - self.assertEqual(span.get_tag(InferredSpanInfo.TAG_SOURCE), "self") - self.assertEqual(span.get_tag(InferredSpanInfo.SYNCHRONICITY), "sync") - @patch("datadog_lambda.tracing.submit_errors_metric") def test_mark_trace_as_error_for_5xx_responses_getting_400_response_code( self, mock_submit_errors_metric From 92990ae7a2947f08af464be7aeb5bbccdc987917 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Thu, 28 Mar 2024 10:36:15 -0400 Subject: [PATCH 144/403] Release v5.92.0 (#457) --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 806485b66..3536347fa 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "5.91.0" +version = "5.92.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 466911736c5604eaa29bbde3681fe363f2b24114 Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Thu, 28 Mar 2024 09:27:10 -0700 Subject: [PATCH 145/403] Parametrized trace context extraction tests. (#456) * Parametrized trace context extraction tests. * Linting. --- tests/test_tracing.py | 290 +++++++++++++++++++++++------------------- 1 file changed, 161 insertions(+), 129 deletions(-) diff --git a/tests/test_tracing.py b/tests/test_tracing.py index 0aa386135..d38bb7d33 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -96,6 +96,167 @@ def _wrap(*args, **kwargs): return _wrapper +_test_extract_dd_trace_context = ( + ("api-gateway", Context(trace_id=12345, span_id=67890, sampling_priority=2)), + ( + "api-gateway-no-apiid", + Context(trace_id=12345, span_id=67890, sampling_priority=2), + ), + ( + "api-gateway-non-proxy", + Context(trace_id=12345, span_id=67890, sampling_priority=2), + ), + ( + "api-gateway-non-proxy-async", + Context(trace_id=12345, span_id=67890, sampling_priority=2), + ), + ( + "api-gateway-websocket-connect", + Context(trace_id=12345, span_id=67890, sampling_priority=2), + ), + ( + "api-gateway-websocket-default", + Context(trace_id=12345, span_id=67890, sampling_priority=2), + ), + ( + "api-gateway-websocket-disconnect", + Context(trace_id=12345, span_id=67890, sampling_priority=2), + ), + ( + "authorizer-request-api-gateway-v1", + Context( + trace_id=13478705995797221209, + span_id=8471288263384216896, + sampling_priority=1, + ), + ), + ("authorizer-request-api-gateway-v1-cached", None), + ( + "authorizer-request-api-gateway-v2", + Context( + trace_id=14356983619852933354, + span_id=12658621083505413809, + sampling_priority=1, + ), + ), + ("authorizer-request-api-gateway-v2-cached", None), + ( + "authorizer-request-api-gateway-websocket-connect", + Context( + trace_id=5351047404834723189, + span_id=18230460631156161837, + sampling_priority=1, + ), + ), + ("authorizer-request-api-gateway-websocket-message", None), + ( + "authorizer-token-api-gateway-v1", + Context( + trace_id=17874798268144902712, + span_id=16184667399315372101, + sampling_priority=1, + ), + ), + ("authorizer-token-api-gateway-v1-cached", None), + ("cloudfront", None), + ("cloudwatch-events", None), + ("cloudwatch-logs", None), + ("custom", None), + ("dynamodb", None), + ("eventbridge-custom", Context(trace_id=12345, span_id=67890, sampling_priority=2)), + ( + "eventbridge-sqs", + Context( + trace_id=7379586022458917877, + span_id=2644033662113726488, + sampling_priority=1, + ), + ), + ("http-api", Context(trace_id=12345, span_id=67890, sampling_priority=2)), + ( + "kinesis", + Context( + trace_id=4948377316357291421, + span_id=2876253380018681026, + sampling_priority=1, + ), + ), + ( + "kinesis-batch", + Context( + trace_id=4948377316357291421, + span_id=2876253380018681026, + sampling_priority=1, + ), + ), + ("lambda-url", None), + ("s3", None), + ( + "sns-b64-msg-attribute", + Context( + trace_id=4948377316357291421, + span_id=6746998015037429512, + sampling_priority=1, + ), + ), + ( + "sns-batch", + Context( + trace_id=4948377316357291421, + span_id=6746998015037429512, + sampling_priority=1, + ), + ), + ( + "sns-string-msg-attribute", + Context( + trace_id=4948377316357291421, + span_id=6746998015037429512, + sampling_priority=1, + ), + ), + ( + "sqs-batch", + Context( + trace_id=2684756524522091840, + span_id=7431398482019833808, + sampling_priority=1, + ), + ), + ( + "sqs-java-upstream", + Context( + trace_id=7925498337868555493, + span_id=5245570649555658903, + sampling_priority=1, + ), + ), + ( + "sqs-string-msg-attribute", + Context( + trace_id=2684756524522091840, + span_id=7431398482019833808, + sampling_priority=1, + ), + ), + ({"headers": None}, None), +) + + +@pytest.mark.parametrize("event,expect", _test_extract_dd_trace_context) +def test_extract_dd_trace_context(event, expect): + if isinstance(event, str): + with open(f"{event_samples}{event}.json") as f: + event = json.load(f) + ctx = get_mock_context() + + actual, _, _ = extract_dd_trace_context(event, ctx) + assert (expect is None) is (actual is None) + assert (expect is None) or actual.trace_id == expect.trace_id + assert (expect is None) or actual.span_id == expect.span_id + assert (expect is None) or actual.sampling_priority == expect.sampling_priority + + class TestExtractAndGetDDTraceContext(unittest.TestCase): def setUp(self): global dd_tracing_enabled @@ -1773,127 +1934,6 @@ def test_create_inferred_span(mock_span_finish, source, expect): class TestInferredSpans(unittest.TestCase): - def test_extract_context_from_eventbridge_event(self): - event_sample_source = "eventbridge-custom" - test_file = event_samples + event_sample_source + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - context, source, event_type = extract_dd_trace_context(event, ctx) - self.assertEqual(context.trace_id, 12345) - self.assertEqual(context.span_id, 67890), - self.assertEqual(context.sampling_priority, 2) - - def test_extract_dd_trace_context_for_eventbridge(self): - event_sample_source = "eventbridge-custom" - test_file = event_samples + event_sample_source + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - context, source, event_type = extract_dd_trace_context(event, ctx) - self.assertEqual(context.trace_id, 12345) - self.assertEqual(context.span_id, 67890) - - def test_extract_context_from_eventbridge_sqs_event(self): - event_sample_source = "eventbridge-sqs" - test_file = event_samples + event_sample_source + ".json" - with open(test_file, "r") as event: - event = json.load(event) - - ctx = get_mock_context() - context, source, event_type = extract_dd_trace_context(event, ctx) - self.assertEqual(context.trace_id, 7379586022458917877) - self.assertEqual(context.span_id, 2644033662113726488) - self.assertEqual(context.sampling_priority, 1) - - def test_extract_context_from_sqs_event_with_string_msg_attr(self): - event_sample_source = "sqs-string-msg-attribute" - test_file = event_samples + event_sample_source + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - context, source, event_type = extract_dd_trace_context(event, ctx) - self.assertEqual(context.trace_id, 2684756524522091840) - self.assertEqual(context.span_id, 7431398482019833808) - self.assertEqual(context.sampling_priority, 1) - - def test_extract_context_from_sqs_batch_event(self): - event_sample_source = "sqs-batch" - test_file = event_samples + event_sample_source + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - context, source, event_source = extract_dd_trace_context(event, ctx) - self.assertEqual(context.trace_id, 2684756524522091840) - self.assertEqual(context.span_id, 7431398482019833808) - self.assertEqual(context.sampling_priority, 1) - - def test_extract_context_from_sqs_java_upstream_event(self): - event_sample_source = "sqs-java-upstream" - test_file = event_samples + event_sample_source + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - context, source, event_type = extract_dd_trace_context(event, ctx) - self.assertEqual(context.trace_id, 7925498337868555493) - self.assertEqual(context.span_id, 5245570649555658903) - self.assertEqual(context.sampling_priority, 1) - - def test_extract_context_from_sns_event_with_string_msg_attr(self): - event_sample_source = "sns-string-msg-attribute" - test_file = event_samples + event_sample_source + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - context, source, event_source = extract_dd_trace_context(event, ctx) - self.assertEqual(context.trace_id, 4948377316357291421) - self.assertEqual(context.span_id, 6746998015037429512) - self.assertEqual(context.sampling_priority, 1) - - def test_extract_context_from_sns_event_with_b64_msg_attr(self): - event_sample_source = "sns-b64-msg-attribute" - test_file = event_samples + event_sample_source + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - context, source, event_source = extract_dd_trace_context(event, ctx) - self.assertEqual(context.trace_id, 4948377316357291421) - self.assertEqual(context.span_id, 6746998015037429512) - self.assertEqual(context.sampling_priority, 1) - - def test_extract_context_from_sns_batch_event(self): - event_sample_source = "sns-batch" - test_file = event_samples + event_sample_source + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - context, source, event_source = extract_dd_trace_context(event, ctx) - self.assertEqual(context.trace_id, 4948377316357291421) - self.assertEqual(context.span_id, 6746998015037429512) - self.assertEqual(context.sampling_priority, 1) - - def test_extract_context_from_kinesis_event(self): - event_sample_source = "kinesis" - test_file = event_samples + event_sample_source + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - context, source, event_source = extract_dd_trace_context(event, ctx) - self.assertEqual(context.trace_id, 4948377316357291421) - self.assertEqual(context.span_id, 2876253380018681026) - self.assertEqual(context.sampling_priority, 1) - - def test_extract_context_from_kinesis_batch_event(self): - event_sample_source = "kinesis-batch" - test_file = event_samples + event_sample_source + ".json" - with open(test_file, "r") as event: - event = json.load(event) - ctx = get_mock_context() - context, source, event_source = extract_dd_trace_context(event, ctx) - self.assertEqual(context.trace_id, 4948377316357291421) - self.assertEqual(context.span_id, 2876253380018681026) - self.assertEqual(context.sampling_priority, 1) - @patch("datadog_lambda.tracing.submit_errors_metric") def test_mark_trace_as_error_for_5xx_responses_getting_400_response_code( self, mock_submit_errors_metric @@ -1915,14 +1955,6 @@ def test_mark_trace_as_error_for_5xx_responses_sends_error_metric_and_set_error_ mock_submit_errors_metric.assert_called_once() self.assertEqual(1, mock_span.error) - def test_no_error_with_nonetype_headers(self): - lambda_ctx = get_mock_context() - ctx, source, event_type = extract_dd_trace_context( - {"headers": None}, - lambda_ctx, - ) - self.assertEqual(ctx, None) - class TestStepFunctionsTraceContext(unittest.TestCase): def test_deterministic_m5_hash(self): From d812fb6c45e1653fa5a61c8737757678760a587d Mon Sep 17 00:00:00 2001 From: Andrew Rodriguez <49878080+zARODz11z@users.noreply.github.com> Date: Fri, 29 Mar 2024 09:10:49 -0700 Subject: [PATCH 146/403] fix: use RouteKey in resource path for API Gateway inferred spans (#442) * use route key * Align with js implementation. * Update existing tests. * Add new parametrized tests. * Revert v1 to original. --------- Co-authored-by: Rey Abolofia --- datadog_lambda/tracing.py | 16 ++- .../api-gateway-v1-parametrized.json | 111 ++++++++++++++++++ .../api-gateway-v2-parametrized.json | 38 ++++++ tests/test_tracing.py | 48 +++++++- 4 files changed, 209 insertions(+), 4 deletions(-) create mode 100644 tests/event_samples/api-gateway-v1-parametrized.json create mode 100644 tests/event_samples/api-gateway-v2-parametrized.json diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 5e3382536..ae2a01125 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -893,7 +893,8 @@ def create_inferred_span_from_api_gateway_event( ) method = event.get("httpMethod") path = event.get("path") - resource = "{0} {1}".format(method, path) + resource_path = _get_resource_path(event, request_context) + resource = "{0} {1}".format(method, resource_path) tags = { "operation_name": "aws.apigateway.rest", "http.url": domain + path, @@ -936,6 +937,16 @@ def create_inferred_span_from_api_gateway_event( return span +def _get_resource_path(event, request_context): + route_key = request_context.get("routeKey") or "" + if "{" in route_key: + try: + return route_key.split(" ")[1] + except Exception as e: + logger.debug("Error parsing routeKey: %s", e) + return event.get("rawPath") or request_context.get("resourcePath") or route_key + + def create_inferred_span_from_http_api_event( event, context, decode_authorizer_context: bool = True ): @@ -947,7 +958,8 @@ def create_inferred_span_from_http_api_event( ) method = request_context.get("http", {}).get("method") path = event.get("rawPath") - resource = "{0} {1}".format(method, path) + resource_path = _get_resource_path(event, request_context) + resource = "{0} {1}".format(method, resource_path) tags = { "operation_name": "aws.httpapi", "endpoint": path, diff --git a/tests/event_samples/api-gateway-v1-parametrized.json b/tests/event_samples/api-gateway-v1-parametrized.json new file mode 100644 index 000000000..65527ccb6 --- /dev/null +++ b/tests/event_samples/api-gateway-v1-parametrized.json @@ -0,0 +1,111 @@ +{ + "resource": "/user/{id}", + "path": "/user/42", + "httpMethod": "GET", + "headers": { + "Accept": "*/*", + "CloudFront-Forwarded-Proto": "https", + "CloudFront-Is-Desktop-Viewer": "true", + "CloudFront-Is-Mobile-Viewer": "false", + "CloudFront-Is-SmartTV-Viewer": "false", + "CloudFront-Is-Tablet-Viewer": "false", + "CloudFront-Viewer-ASN": "7922", + "CloudFront-Viewer-Country": "US", + "Host": "mcwkra0ya4.execute-api.sa-east-1.amazonaws.com", + "User-Agent": "curl/8.1.2", + "Via": "2.0 xxx.cloudfront.net (CloudFront)", + "X-Amz-Cf-Id": "Tz3yUVcJkwOhQGqZgKTzrEHqAoOd8ZprYAHpg2S6BNxdd-Ym79pb6g==", + "X-Amzn-Trace-Id": "Root=1-65f49d20-7ba106216238dd0078a5db31", + "X-Forwarded-For": "76.115.124.192, 15.158.54.119", + "X-Forwarded-Port": "443", + "X-Forwarded-Proto": "https" + }, + "multiValueHeaders": { + "Accept": [ + "*/*" + ], + "CloudFront-Forwarded-Proto": [ + "https" + ], + "CloudFront-Is-Desktop-Viewer": [ + "true" + ], + "CloudFront-Is-Mobile-Viewer": [ + "false" + ], + "CloudFront-Is-SmartTV-Viewer": [ + "false" + ], + "CloudFront-Is-Tablet-Viewer": [ + "false" + ], + "CloudFront-Viewer-ASN": [ + "7922" + ], + "CloudFront-Viewer-Country": [ + "US" + ], + "Host": [ + "mcwkra0ya4.execute-api.sa-east-1.amazonaws.com" + ], + "User-Agent": [ + "curl/8.1.2" + ], + "Via": [ + "2.0 xxx.cloudfront.net (CloudFront)" + ], + "X-Amz-Cf-Id": [ + "Tz3yUVcJkwOhQGqZgKTzrEHqAoOd8ZprYAHpg2S6BNxdd-Ym79pb6g==" + ], + "X-Amzn-Trace-Id": [ + "Root=1-65f49d20-7ba106216238dd0078a5db31" + ], + "X-Forwarded-For": [ + "76.115.124.192, 15.158.54.119" + ], + "X-Forwarded-Port": [ + "443" + ], + "X-Forwarded-Proto": [ + "https" + ] + }, + "queryStringParameters": null, + "multiValueQueryStringParameters": null, + "pathParameters": { + "id": "42" + }, + "stageVariables": null, + "requestContext": { + "resourceId": "ojg3nk", + "resourcePath": "/user/{id}", + "httpMethod": "GET", + "extendedRequestId": "Ur19IHYDmjQEU5A=", + "requestTime": "15/Mar/2024:19:10:24 +0000", + "path": "/dev/user/42", + "accountId": "425362996713", + "protocol": "HTTP/1.1", + "stage": "dev", + "domainPrefix": "mcwkra0ya4", + "requestTimeEpoch": 1710529824520, + "requestId": "e16399f7-e984-463a-9931-745ba021a27f", + "identity": { + "cognitoIdentityPoolId": null, + "accountId": null, + "cognitoIdentityId": null, + "caller": null, + "sourceIp": "76.115.124.192", + "principalOrgId": null, + "accessKey": null, + "cognitoAuthenticationType": null, + "cognitoAuthenticationProvider": null, + "userArn": null, + "userAgent": "curl/8.1.2", + "user": null + }, + "domainName": "mcwkra0ya4.execute-api.sa-east-1.amazonaws.com", + "apiId": "mcwkra0ya4" + }, + "body": null, + "isBase64Encoded": false +} diff --git a/tests/event_samples/api-gateway-v2-parametrized.json b/tests/event_samples/api-gateway-v2-parametrized.json new file mode 100644 index 000000000..89ff72b9c --- /dev/null +++ b/tests/event_samples/api-gateway-v2-parametrized.json @@ -0,0 +1,38 @@ +{ + "version": "2.0", + "routeKey": "GET /user/{id}", + "rawPath": "/user/42", + "rawQueryString": "", + "headers": { + "accept": "*/*", + "content-length": "0", + "host": "9vj54we5ih.execute-api.sa-east-1.amazonaws.com", + "user-agent": "curl/8.1.2", + "x-amzn-trace-id": "Root=1-65f49d71-505edb3b69b8abd513cfa08b", + "x-forwarded-for": "76.115.124.192", + "x-forwarded-port": "443", + "x-forwarded-proto": "https" + }, + "requestContext": { + "accountId": "425362996713", + "apiId": "9vj54we5ih", + "domainName": "9vj54we5ih.execute-api.sa-east-1.amazonaws.com", + "domainPrefix": "9vj54we5ih", + "http": { + "method": "GET", + "path": "/user/42", + "protocol": "HTTP/1.1", + "sourceIp": "76.115.124.192", + "userAgent": "curl/8.1.2" + }, + "requestId": "Ur2JtjEfGjQEPOg=", + "routeKey": "GET /user/{id}", + "stage": "$default", + "time": "15/Mar/2024:19:11:45 +0000", + "timeEpoch": 1710529905066 + }, + "pathParameters": { + "id": "42" + }, + "isBase64Encoded": false +} diff --git a/tests/test_tracing.py b/tests/test_tracing.py index d38bb7d33..0f7b84b41 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -1378,7 +1378,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): "http.url": "70ixmpl4fl.execute-api.us-east-2.amazonaws.com/path/to/resource", "operation_name": "aws.apigateway.rest", "request_id": "123", - "resource_names": "POST /path/to/resource", + "resource_names": "POST /{proxy+}", "stage": "prod", }, ), @@ -1452,6 +1452,50 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): }, ), ), + ( + "api-gateway-v1-parametrized", + _Span( + service="mcwkra0ya4.execute-api.sa-east-1.amazonaws.com", + start=1710529824.52, + span_type="http", + tags={ + "_dd.origin": "lambda", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "apiid": "mcwkra0ya4", + "apiname": "mcwkra0ya4", + "endpoint": "/user/42", + "http.method": "GET", + "http.url": "mcwkra0ya4.execute-api.sa-east-1.amazonaws.com/user/42", + "operation_name": "aws.apigateway.rest", + "request_id": "123", + "resource_names": "GET /user/{id}", + "stage": "dev", + }, + ), + ), + ( + "api-gateway-v2-parametrized", + _Span( + service="9vj54we5ih.execute-api.sa-east-1.amazonaws.com", + start=1710529905.066, + span_type="http", + tags={ + "_dd.origin": "lambda", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "apiid": "9vj54we5ih", + "apiname": "9vj54we5ih", + "endpoint": "/user/42", + "http.method": "GET", + "http.url": "9vj54we5ih.execute-api.sa-east-1.amazonaws.com/user/42", + "operation_name": "aws.httpapi", + "request_id": "123", + "resource_names": "GET /user/{id}", + "stage": "$default", + }, + ), + ), ( "api-gateway-websocket-default", _Span( @@ -1716,7 +1760,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): "http.url": "70ixmpl4fl.execute-api.us-east-2.amazonaws.com/path/to/resource", "operation_name": "aws.apigateway.rest", "request_id": "123", - "resource_names": "POST /path/to/resource", + "resource_names": "POST /{proxy+}", "stage": "prod", }, ), From 20a6d10b3dbc5520224479f1708cdc8a4e18c036 Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Mon, 1 Apr 2024 09:20:18 -0700 Subject: [PATCH 147/403] Replace string formatting with f strings. (#458) * Replace string formatting with f strings. * Speed up tag creation. * Fix test patching for cold starts. --- datadog_lambda/cold_start.py | 8 ++++++-- datadog_lambda/handler.py | 2 +- datadog_lambda/tag_object.py | 6 +++--- datadog_lambda/tags.py | 29 ++++++++++++----------------- datadog_lambda/tracing.py | 6 +++--- datadog_lambda/trigger.py | 14 +++++--------- datadog_lambda/wrapper.py | 5 ++--- datadog_lambda/xray.py | 2 +- tests/test_tags.py | 3 +-- tests/test_wrapper.py | 11 +++++------ 10 files changed, 39 insertions(+), 47 deletions(-) diff --git a/datadog_lambda/cold_start.py b/datadog_lambda/cold_start.py index 9dcbec232..d4d4b8c26 100644 --- a/datadog_lambda/cold_start.py +++ b/datadog_lambda/cold_start.py @@ -50,12 +50,16 @@ def is_new_sandbox(): def get_cold_start_tag(): """Returns the cold start tag to be used in metrics""" - return "cold_start:{}".format(str(is_cold_start()).lower()) + return "cold_start:true" if _cold_start else "cold_start:false" def get_proactive_init_tag(): """Returns the proactive init tag to be used in metrics""" - return "proactive_initialization:{}".format(str(is_proactive_init()).lower()) + return ( + "proactive_initialization:true" + if _proactive_initialization + else "proactive_initialization:false" + ) class ImportNode(object): diff --git a/datadog_lambda/handler.py b/datadog_lambda/handler.py index 09cc5e7d7..777dc4922 100644 --- a/datadog_lambda/handler.py +++ b/datadog_lambda/handler.py @@ -22,7 +22,7 @@ class HandlerError(Exception): ) parts = path.rsplit(".", 1) if len(parts) != 2: - raise HandlerError("Value %s for DD_LAMBDA_HANDLER has invalid format." % path) + raise HandlerError(f"Value {path} for DD_LAMBDA_HANDLER has invalid format.") (mod_name, handler_name) = parts diff --git a/datadog_lambda/tag_object.py b/datadog_lambda/tag_object.py index ec1c5a669..5571bf538 100644 --- a/datadog_lambda/tag_object.py +++ b/datadog_lambda/tag_object.py @@ -30,17 +30,17 @@ def tag_object(span, key, obj, depth=0): return span.set_tag(key, str(obj)) if isinstance(obj, list): for k, v in enumerate(obj): - formatted_key = "{}.{}".format(key, k) + formatted_key = f"{key}.{k}" tag_object(span, formatted_key, v, depth) return if hasattr(obj, "items"): for k, v in obj.items(): - formatted_key = "{}.{}".format(key, k) + formatted_key = f"{key}.{k}" tag_object(span, formatted_key, v, depth) return if hasattr(obj, "to_dict"): for k, v in obj.to_dict().items(): - formatted_key = "{}.{}".format(key, k) + formatted_key = f"{key}.{k}" tag_object(span, formatted_key, v, depth) return try: diff --git a/datadog_lambda/tags.py b/datadog_lambda/tags.py index cdaeb4eda..3e12e2ffa 100644 --- a/datadog_lambda/tags.py +++ b/datadog_lambda/tags.py @@ -1,7 +1,5 @@ import sys -from platform import python_version_tuple - from datadog_lambda import __version__ from datadog_lambda.cold_start import get_cold_start_tag @@ -10,8 +8,8 @@ def _format_dd_lambda_layer_tag(): """ Formats the dd_lambda_layer tag, e.g., 'dd_lambda_layer:datadog-python39_1' """ - runtime = "python{}{}".format(sys.version_info[0], sys.version_info[1]) - return "dd_lambda_layer:datadog-{}_{}".format(runtime, __version__) + major, minor = sys.version_info[0], sys.version_info[1] + return f"dd_lambda_layer:datadog-python{major}{minor}_{__version__}" def tag_dd_lambda_layer(tags): @@ -44,9 +42,9 @@ def parse_lambda_tags_from_arn(lambda_context): # Add the standard tags to a list tags = [ - "region:{}".format(region), - "account_id:{}".format(account_id), - "functionname:{}".format(function_name), + f"region:{region}", + f"account_id:{account_id}", + f"functionname:{function_name}", ] # Check if we have a version or alias @@ -56,12 +54,12 @@ def parse_lambda_tags_from_arn(lambda_context): alias = alias[1:] # Versions are numeric. Aliases need the executed version tag elif not check_if_number(alias): - tags.append("executedversion:{}".format(lambda_context.function_version)) + tags.append(f"executedversion:{lambda_context.function_version}") # create resource tag with function name and alias/version - resource = "resource:{}:{}".format(function_name, alias) + resource = f"resource:{function_name}:{alias}" else: # Resource is only the function name otherwise - resource = "resource:{}".format(function_name) + resource = f"resource:{function_name}" tags.append(resource) @@ -70,23 +68,20 @@ def parse_lambda_tags_from_arn(lambda_context): def get_runtime_tag(): """Get the runtime tag from the current Python version""" - major_version, minor_version, _ = python_version_tuple() - - return "runtime:python{major}.{minor}".format( - major=major_version, minor=minor_version - ) + major, minor = sys.version_info[0], sys.version_info[1] + return f"runtime:python{major}.{minor}" def get_library_version_tag(): """Get datadog lambda library tag""" - return "datadog_lambda:v{}".format(__version__) + return f"datadog_lambda:v{__version__}" def get_enhanced_metrics_tags(lambda_context): """Get the list of tags to apply to enhanced metrics""" return parse_lambda_tags_from_arn(lambda_context) + [ get_cold_start_tag(), - "memorysize:{}".format(lambda_context.memory_limit_in_mb), + f"memorysize:{lambda_context.memory_limit_in_mb}", get_runtime_tag(), get_library_version_tag(), ] diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index ae2a01125..2769429fe 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -734,7 +734,7 @@ def create_inferred_span_from_lambda_function_url_event(event, context): service_name = determine_service_name(service_mapping, api_id, "lambda_url", domain) method = request_context.get("http", {}).get("method") path = request_context.get("http", {}).get("path") - resource = "{0} {1}".format(method, path) + resource = f"{method} {path}" tags = { "operation_name": "aws.lambda.url", "http.url": domain + path, @@ -894,7 +894,7 @@ def create_inferred_span_from_api_gateway_event( method = event.get("httpMethod") path = event.get("path") resource_path = _get_resource_path(event, request_context) - resource = "{0} {1}".format(method, resource_path) + resource = f"{method} {resource_path}" tags = { "operation_name": "aws.apigateway.rest", "http.url": domain + path, @@ -959,7 +959,7 @@ def create_inferred_span_from_http_api_event( method = request_context.get("http", {}).get("method") path = event.get("rawPath") resource_path = _get_resource_path(event, request_context) - resource = "{0} {1}".format(method, resource_path) + resource = f"{method} {resource_path}" tags = { "operation_name": "aws.httpapi", "endpoint": path, diff --git a/datadog_lambda/trigger.py b/datadog_lambda/trigger.py index bbb44b30e..0bb26d594 100644 --- a/datadog_lambda/trigger.py +++ b/datadog_lambda/trigger.py @@ -204,9 +204,7 @@ def parse_event_source_arn(source: _EventSource, event: dict, context: Any) -> s distribution_id = ( event_record.get("cf", {}).get("config", {}).get("distributionId") ) - return "arn:{}:cloudfront::{}:distribution/{}".format( - aws_arn, account_id, distribution_id - ) + return f"arn:{aws_arn}:cloudfront::{account_id}:distribution/{distribution_id}" # e.g. arn:aws:lambda:::url:: if source.equals(EventTypes.LAMBDA_FUNCTION_URL): @@ -223,9 +221,9 @@ def parse_event_source_arn(source: _EventSource, event: dict, context: Any) -> s # e.g. arn:aws:apigateway:us-east-1::/restapis/xyz123/stages/default if source.event_type == EventTypes.API_GATEWAY: request_context = event.get("requestContext") - return "arn:{}:apigateway:{}::/restapis/{}/stages/{}".format( - aws_arn, region, request_context.get("apiId"), request_context.get("stage") - ) + api_id = request_context.get("apiId") + stage = request_context.get("stage") + return f"arn:{aws_arn}:apigateway:{region}::/restapis/{api_id}/stages/{stage}" # e.g. arn:aws:elasticloadbalancing:us-east-1:123456789012:targetgroup/lambda-xyz/123 if source.event_type == EventTypes.ALB: @@ -240,9 +238,7 @@ def parse_event_source_arn(source: _EventSource, event: dict, context: Any) -> s data = b"".join(BufferedReader(decompress_stream)) logs = json.loads(data) log_group = logs.get("logGroup", "cloudwatch") - return "arn:{}:logs:{}:{}:log-group:{}".format( - aws_arn, region, account_id, log_group - ) + return f"arn:{aws_arn}:logs:{region}:{account_id}:log-group:{log_group}" # e.g. arn:aws:events:us-east-1:123456789012:rule/my-schedule if source.event_type == EventTypes.CLOUDWATCH_EVENTS and event.get("resources"): diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 057f048cb..3f6e044ba 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -381,9 +381,8 @@ def _after(self, event, context): def format_err_with_traceback(e): - return "Error {}. Traceback: {}".format( - e, traceback.format_exc().replace("\n", "\r") - ) + tb = traceback.format_exc().replace("\n", "\r") + return f"Error {e}. Traceback: {tb}" datadog_lambda_wrapper = _LambdaDecorator diff --git a/datadog_lambda/xray.py b/datadog_lambda/xray.py index 88d108f56..db63a06f0 100644 --- a/datadog_lambda/xray.py +++ b/datadog_lambda/xray.py @@ -41,7 +41,7 @@ def send(host_port_tuple, payload): def build_segment_payload(payload): if payload is None: return None - return '{"format": "json", "version": 1}' + "\n" + payload + return '{"format": "json", "version": 1}\n' + payload def parse_xray_header(raw_trace_id): diff --git a/tests/test_tags.py b/tests/test_tags.py index 66c0c39f3..e50251c93 100644 --- a/tests/test_tags.py +++ b/tests/test_tags.py @@ -18,7 +18,7 @@ def get_mock_context( class TestMetricTags(unittest.TestCase): def setUp(self): - patcher = patch("datadog_lambda.tags.python_version_tuple") + patcher = patch("sys.version_info", (3, 12, 0)) self.mock_python_version_tuple = patcher.start() self.addCleanup(patcher.stop) @@ -65,5 +65,4 @@ def test_parse_lambda_tags_from_arn_alias(self): ) def test_get_runtime_tag(self): - self.mock_python_version_tuple.return_value = ("3", "12", "0") self.assertEqual(get_runtime_tag(), "runtime:python3.12") diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index 141e245a6..bb26b661e 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -61,14 +61,13 @@ def setUp(self): self.mock_patch_all = patcher.start() self.addCleanup(patcher.stop) - patcher = patch("datadog_lambda.cold_start.is_cold_start") - self.mock_is_cold_start = patcher.start() - self.mock_is_cold_start.return_value = True + patcher = patch("datadog_lambda.tags.get_cold_start_tag") + self.mock_get_cold_start_tag = patcher.start() + self.mock_get_cold_start_tag.return_value = "cold_start:true" self.addCleanup(patcher.stop) - patcher = patch("datadog_lambda.tags.python_version_tuple") + patcher = patch("sys.version_info", (3, 9, 10)) self.mock_python_version_tuple = patcher.start() - self.mock_python_version_tuple.return_value = ("3", "9", "10") self.addCleanup(patcher.stop) patcher = patch("datadog_lambda.metric.write_metric_point_to_stdout") @@ -354,7 +353,7 @@ def lambda_handler(event, context): lambda_handler(lambda_event, get_mock_context()) - self.mock_is_cold_start.return_value = False + self.mock_get_cold_start_tag.return_value = "cold_start:false" lambda_handler( lambda_event, get_mock_context(aws_request_id="second-request-id") From e617fd32d11977e43398add4a2423d14f2b4ce72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?jordan=20gonz=C3=A1lez?= <30836115+duncanista@users.noreply.github.com> Date: Mon, 1 Apr 2024 14:06:58 -0400 Subject: [PATCH 148/403] fix licenses (#461) --- LICENSE-3rdparty.csv | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/LICENSE-3rdparty.csv b/LICENSE-3rdparty.csv index a6692772d..71ac83fbc 100644 --- a/LICENSE-3rdparty.csv +++ b/LICENSE-3rdparty.csv @@ -1,3 +1,11 @@ Component,Origin,License,Copyright -flake8,gitlab.com/pycqa/flake8,MIT,"Copyright (C) 2011-2013 Tarek Ziade . Copyright (C) 2012-2016 Ian Cordasco ." +datadog,github.com/DataDog/datadogpy,BSD-3-Clause,"Copyright (c) 2015-Present Datadog, Inc " wrapt,github.com/GrahamDumpleton/wrapt,BSD-2-Clause,"Copyright (c) 2013-2019, Graham Dumpleton" +ddtrace,github.com/DataDog/dd-trace-py,BSD-3-Clause,"Copyright (c) 2016, Datadog " +urllib3,github.com/urllib3/urllib3,MIT,Copyright (c) 2008-2020 Andrey Petrov and contributors. +importlib_metadata,github.com/python/importlib_metadata,Apache-2.0,Copyright © Jason R. Coombs +boto3,github.com/boto/boto3,Apache-2.0,"Copyright 2013-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved." +typing_extensions,github.com/python/typing_extensions,PSF-2.0,"Copyright (c) 1991 - 1995, Stichting Mathematisch Centrum Amsterdam, The Netherlands. All rights reserved" +requests,github.com/psf/requests,Apache-2.0,"Copyright 2018 Kenneth Reitz" +pytest,github.com/pytest-dev/pytest,MIT,Copyright (c) 2004 Holger Krekel and others +flake8,gitlab.com/pycqa/flake8,MIT,"Copyright (C) 2011-2013 Tarek Ziade . Copyright (C) 2012-2016 Ian Cordasco ." From 4cfcf7ec8891b621942cbbffbb9ee9971128e869 Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Mon, 1 Apr 2024 11:15:21 -0700 Subject: [PATCH 149/403] Small performance improvements to %s formatted strings. (#459) --- datadog_lambda/tracing.py | 6 +++--- datadog_lambda/xray.py | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 2769429fe..431376221 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -529,8 +529,8 @@ def get_dd_trace_context_obj(): xray_context = _get_xray_trace_context() # xray (sub)segment except Exception as e: logger.debug( - "get_dd_trace_context couldn't read from segment from x-ray, with error %s" - % e + "get_dd_trace_context couldn't read from segment from x-ray, with error %s", + e, ) if not xray_context: return None @@ -1051,7 +1051,7 @@ def create_inferred_span_from_sqs_event(event, context): except Exception as e: logger.debug( - "Unable to create upstream span from SQS message, with error %s" % e + "Unable to create upstream span from SQS message, with error %s", e ) pass diff --git a/datadog_lambda/xray.py b/datadog_lambda/xray.py index db63a06f0..e6aff0bc7 100644 --- a/datadog_lambda/xray.py +++ b/datadog_lambda/xray.py @@ -31,11 +31,11 @@ def send(host_port_tuple, payload): sock.connect(host_port_tuple) sock.send(payload.encode("utf-8")) except Exception as e_send: - logger.error("Error occurred submitting to xray daemon: %s", str(e_send)) + logger.error("Error occurred submitting to xray daemon: %s", e_send) try: sock.close() except Exception as e_close: - logger.error("Error while closing the socket: %s", str(e_close)) + logger.error("Error while closing the socket: %s", e_close) def build_segment_payload(payload): From ad81d15c18fd98e5761cc97a409151fa65793db2 Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Mon, 1 Apr 2024 11:20:41 -0700 Subject: [PATCH 150/403] Create static tags once on import. (#460) * Create lambda layer tag only once. * Only create runtime tag once. * Create library version tag just once. * Avoid extra list allocations when creating tags. * Cleaned test. * Linting. --- datadog_lambda/metric.py | 5 ++-- datadog_lambda/tags.py | 50 +++++++++++----------------------------- tests/test_metric.py | 14 +++++------ tests/test_tags.py | 5 +--- tests/test_wrapper.py | 22 ++++++++++-------- 5 files changed, 36 insertions(+), 60 deletions(-) diff --git a/datadog_lambda/metric.py b/datadog_lambda/metric.py index ca23ed963..f02893dd8 100644 --- a/datadog_lambda/metric.py +++ b/datadog_lambda/metric.py @@ -9,7 +9,7 @@ import logging from datadog_lambda.extension import should_use_extension -from datadog_lambda.tags import get_enhanced_metrics_tags, tag_dd_lambda_layer +from datadog_lambda.tags import get_enhanced_metrics_tags, dd_lambda_layer_tag from datadog_lambda.api import init_api logger = logging.getLogger(__name__) @@ -50,7 +50,8 @@ def lambda_metric(metric_name, value, timestamp=None, tags=None, force_async=Fal and always use the layer to send metrics to the extension """ flush_to_logs = os.environ.get("DD_FLUSH_TO_LOG", "").lower() == "true" - tags = tag_dd_lambda_layer(tags) + tags = [] if tags is None else list(tags) + tags.append(dd_lambda_layer_tag) if should_use_extension: logger.debug( diff --git a/datadog_lambda/tags.py b/datadog_lambda/tags.py index 3e12e2ffa..695d1a48b 100644 --- a/datadog_lambda/tags.py +++ b/datadog_lambda/tags.py @@ -4,23 +4,10 @@ from datadog_lambda.cold_start import get_cold_start_tag -def _format_dd_lambda_layer_tag(): - """ - Formats the dd_lambda_layer tag, e.g., 'dd_lambda_layer:datadog-python39_1' - """ - major, minor = sys.version_info[0], sys.version_info[1] - return f"dd_lambda_layer:datadog-python{major}{minor}_{__version__}" - - -def tag_dd_lambda_layer(tags): - """ - Used by lambda_metric to insert the dd_lambda_layer tag - """ - dd_lambda_layer_tag = _format_dd_lambda_layer_tag() - if tags: - return tags + [dd_lambda_layer_tag] - else: - return [dd_lambda_layer_tag] +_major, _minor = sys.version_info[0], sys.version_info[1] +dd_lambda_layer_tag = f"dd_lambda_layer:datadog-python{_major}{_minor}_{__version__}" +runtime_tag = f"runtime:python{_major}.{_minor}" +library_version_tag = f"datadog_lambda:v{__version__}" def parse_lambda_tags_from_arn(lambda_context): @@ -30,12 +17,12 @@ def parse_lambda_tags_from_arn(lambda_context): ex: lambda_context.arn = arn:aws:lambda:us-east-1:123597598159:function:my-lambda:1 """ # Set up flag for extra testing to distinguish between a version or alias - hasAlias = False + has_alias = False # Cap the number of times to spli split_arn = lambda_context.invoked_function_arn.split(":") if len(split_arn) > 7: - hasAlias = True + has_alias = True _, _, _, region, account_id, _, function_name, alias = split_arn else: _, _, _, region, account_id, _, function_name = split_arn @@ -48,7 +35,7 @@ def parse_lambda_tags_from_arn(lambda_context): ] # Check if we have a version or alias - if hasAlias: + if has_alias: # If $Latest, drop the $ for datadog tag convention. A lambda alias can't start with $ if alias.startswith("$"): alias = alias[1:] @@ -66,25 +53,14 @@ def parse_lambda_tags_from_arn(lambda_context): return tags -def get_runtime_tag(): - """Get the runtime tag from the current Python version""" - major, minor = sys.version_info[0], sys.version_info[1] - return f"runtime:python{major}.{minor}" - - -def get_library_version_tag(): - """Get datadog lambda library tag""" - return f"datadog_lambda:v{__version__}" - - def get_enhanced_metrics_tags(lambda_context): """Get the list of tags to apply to enhanced metrics""" - return parse_lambda_tags_from_arn(lambda_context) + [ - get_cold_start_tag(), - f"memorysize:{lambda_context.memory_limit_in_mb}", - get_runtime_tag(), - get_library_version_tag(), - ] + tags = parse_lambda_tags_from_arn(lambda_context) + tags.append(get_cold_start_tag()) + tags.append(f"memorysize:{lambda_context.memory_limit_in_mb}") + tags.append(runtime_tag) + tags.append(library_version_tag) + return tags def check_if_number(alias): diff --git a/tests/test_metric.py b/tests/test_metric.py index 24c9a56da..992084b9c 100644 --- a/tests/test_metric.py +++ b/tests/test_metric.py @@ -10,7 +10,7 @@ from datadog_lambda.metric import lambda_metric from datadog_lambda.api import decrypt_kms_api_key, KMS_ENCRYPTION_CONTEXT_KEY from datadog_lambda.thread_stats_writer import ThreadStatsWriter -from datadog_lambda.tags import _format_dd_lambda_layer_tag +from datadog_lambda.tags import dd_lambda_layer_tag class TestLambdaMetric(unittest.TestCase): @@ -23,12 +23,13 @@ def test_lambda_metric_tagged_with_dd_lambda_layer(self): lambda_metric("test", 1) lambda_metric("test", 1, 123, []) lambda_metric("test", 1, tags=["tag1:test"]) - expected_tag = _format_dd_lambda_layer_tag() self.mock_metric_lambda_stats.distribution.assert_has_calls( [ - call("test", 1, timestamp=None, tags=[expected_tag]), - call("test", 1, timestamp=123, tags=[expected_tag]), - call("test", 1, timestamp=None, tags=["tag1:test", expected_tag]), + call("test", 1, timestamp=None, tags=[dd_lambda_layer_tag]), + call("test", 1, timestamp=123, tags=[dd_lambda_layer_tag]), + call( + "test", 1, timestamp=None, tags=["tag1:test", dd_lambda_layer_tag] + ), ] ) @@ -37,9 +38,8 @@ def test_lambda_metric_tagged_with_dd_lambda_layer(self): def test_lambda_metric_flush_to_log_with_extension(self): os.environ["DD_FLUSH_TO_LOG"] = "True" lambda_metric("test", 1) - expected_tag = _format_dd_lambda_layer_tag() self.mock_metric_lambda_stats.distribution.assert_has_calls( - [call("test", 1, timestamp=None, tags=[expected_tag])] + [call("test", 1, timestamp=None, tags=[dd_lambda_layer_tag])] ) del os.environ["DD_FLUSH_TO_LOG"] diff --git a/tests/test_tags.py b/tests/test_tags.py index e50251c93..7a1ad86d4 100644 --- a/tests/test_tags.py +++ b/tests/test_tags.py @@ -3,7 +3,7 @@ from unittest.mock import patch, MagicMock -from datadog_lambda.tags import parse_lambda_tags_from_arn, get_runtime_tag +from datadog_lambda.tags import parse_lambda_tags_from_arn def get_mock_context( @@ -63,6 +63,3 @@ def test_parse_lambda_tags_from_arn_alias(self): "resource:swf-hello-test:my_alias-1", ], ) - - def test_get_runtime_tag(self): - self.assertEqual(get_runtime_tag(), "runtime:python3.12") diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index bb26b661e..6ac0951bc 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -66,25 +66,27 @@ def setUp(self): self.mock_get_cold_start_tag.return_value = "cold_start:true" self.addCleanup(patcher.stop) - patcher = patch("sys.version_info", (3, 9, 10)) - self.mock_python_version_tuple = patcher.start() + patcher = patch("datadog_lambda.tags.runtime_tag", "runtime:python3.9") + self.mock_runtime_tag = patcher.start() self.addCleanup(patcher.stop) patcher = patch("datadog_lambda.metric.write_metric_point_to_stdout") self.mock_write_metric_point_to_stdout = patcher.start() self.addCleanup(patcher.stop) - patcher = patch("datadog_lambda.tags.get_library_version_tag") - self.mock_format_dd_lambda_layer_tag = patcher.start() + patcher = patch( + "datadog_lambda.tags.library_version_tag", "datadog_lambda:v6.6.6" + ) # Mock the layer version so we don't have to update tests on every version bump - self.mock_format_dd_lambda_layer_tag.return_value = "datadog_lambda:v6.6.6" + self.mock_library_version_tag = patcher.start() + self.addCleanup(patcher.stop) - patcher = patch("datadog_lambda.tags._format_dd_lambda_layer_tag") - self.mock_format_dd_lambda_layer_tag = patcher.start() - # Mock the layer version so we don't have to update tests on every version bump - self.mock_format_dd_lambda_layer_tag.return_value = ( - "dd_lambda_layer:datadog-python39_X.X.X" + patcher = patch( + "datadog_lambda.metric.dd_lambda_layer_tag", + "dd_lambda_layer:datadog-python39_X.X.X", ) + # Mock the layer version so we don't have to update tests on every version bump + self.mock_dd_lambda_layer_tag = patcher.start() self.addCleanup(patcher.stop) def test_datadog_lambda_wrapper(self): From a388918155c835c54eea14c9cf97d19f0174310e Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Mon, 1 Apr 2024 14:40:12 -0700 Subject: [PATCH 151/403] Do not recalculate enhanced metric setting each time. (#462) --- datadog_lambda/extension.py | 6 ++---- datadog_lambda/metric.py | 16 +++++----------- tests/test_wrapper.py | 6 +++--- 3 files changed, 10 insertions(+), 18 deletions(-) diff --git a/datadog_lambda/extension.py b/datadog_lambda/extension.py index 159048d7f..79c0031aa 100644 --- a/datadog_lambda/extension.py +++ b/datadog_lambda/extension.py @@ -1,5 +1,5 @@ import logging -from os import path +import os AGENT_URL = "http://127.0.0.1:8124" FLUSH_PATH = "/lambda/flush" @@ -9,9 +9,7 @@ def is_extension_present(): - if path.exists(EXTENSION_PATH): - return True - return False + return os.path.exists(EXTENSION_PATH) def flush_extension(): diff --git a/datadog_lambda/metric.py b/datadog_lambda/metric.py index f02893dd8..a49c6c144 100644 --- a/datadog_lambda/metric.py +++ b/datadog_lambda/metric.py @@ -32,6 +32,10 @@ flush_in_thread = os.environ.get("DD_FLUSH_IN_THREAD", "").lower() == "true" lambda_stats = ThreadStatsWriter(flush_in_thread) +enhanced_metrics_enabled = ( + os.environ.get("DD_ENHANCED_METRICS", "true").lower() == "true" +) + def lambda_metric(metric_name, value, timestamp=None, tags=None, force_async=False): """ @@ -90,16 +94,6 @@ def flush_stats(): lambda_stats.flush() -def are_enhanced_metrics_enabled(): - """Check env var to find if enhanced metrics should be submitted - - Returns: - boolean for whether enhanced metrics are enabled - """ - # DD_ENHANCED_METRICS defaults to true - return os.environ.get("DD_ENHANCED_METRICS", "true").lower() == "true" - - def submit_enhanced_metric(metric_name, lambda_context): """Submits the enhanced metric with the given name @@ -107,7 +101,7 @@ def submit_enhanced_metric(metric_name, lambda_context): metric_name (str): metric name w/o enhanced prefix i.e. "invocations" or "errors" lambda_context (dict): Lambda context dict passed to the function by AWS """ - if not are_enhanced_metrics_enabled(): + if not enhanced_metrics_enabled: logger.debug( "Not submitting enhanced metric %s because enhanced metrics are disabled", metric_name, diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index 6ac0951bc..ff038c215 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -467,7 +467,9 @@ def lambda_handler(event, context): ) def test_no_enhanced_metrics_without_env_var(self): - os.environ["DD_ENHANCED_METRICS"] = "false" + patcher = patch("datadog_lambda.metric.enhanced_metrics_enabled", False) + patcher.start() + self.addCleanup(patcher.stop) @wrapper.datadog_lambda_wrapper def lambda_handler(event, context): @@ -480,8 +482,6 @@ def lambda_handler(event, context): self.mock_write_metric_point_to_stdout.assert_not_called() - del os.environ["DD_ENHANCED_METRICS"] - def test_only_one_wrapper_in_use(self): patcher = patch("datadog_lambda.wrapper.submit_invocations_metric") self.mock_submit_invocations_metric = patcher.start() From 06395b8403ac6964fcc980e6d23878c9c39ea802 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Wed, 3 Apr 2024 15:15:09 -0400 Subject: [PATCH 152/403] use sso for govcloud (#464) --- scripts/publish_prod.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/publish_prod.sh b/scripts/publish_prod.sh index f88ac5e2e..aa53df719 100755 --- a/scripts/publish_prod.sh +++ b/scripts/publish_prod.sh @@ -85,11 +85,11 @@ if [ "$CONT" != "y" ]; then else echo "Ensuring you have access to the AWS GovCloud account" ddsaml2aws login -a govcloud-us1-fed-human-engineering - AWS_PROFILE=govcloud-us1-fed-human-engineering aws sts get-caller-identity + aws-vault exec sso-govcloud-us1-fed-engineering -- aws sts get-caller-identity echo "Publishing layers to GovCloud AWS regions" ddsaml2aws login -a govcloud-us1-fed-human-engineering - VERSION=$LAYER_VERSION AWS_PROFILE=govcloud-us1-fed-human-engineering ./scripts/publish_layers.sh + VERSION=$LAYER_VERSION aws-vault exec sso-govcloud-us1-fed-engineering -- ./scripts/publish_layers.sh fi echo "Answer 'n' if GitLab already did this" From 36610c1f4f763a90c42aa88bb6fbd415a5f3413e Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Fri, 5 Apr 2024 09:15:07 -0700 Subject: [PATCH 153/403] Reduce allocations during event parsing. (#463) * Reduce allocations during event parsing. * Simplify SQS/SNS data extraction logic. * Update snapshots. --- datadog_lambda/tracing.py | 323 ++++++++---------- .../logs/async-metrics_python310.log | 68 ++-- .../logs/async-metrics_python311.log | 70 ++-- .../logs/async-metrics_python312.log | 68 ++-- .../snapshots/logs/async-metrics_python38.log | 68 ++-- .../snapshots/logs/async-metrics_python39.log | 70 ++-- .../snapshots/logs/sync-metrics_python310.log | 70 ++-- .../snapshots/logs/sync-metrics_python311.log | 72 ++-- .../snapshots/logs/sync-metrics_python312.log | 70 ++-- .../snapshots/logs/sync-metrics_python38.log | 70 ++-- .../snapshots/logs/sync-metrics_python39.log | 70 ++-- 11 files changed, 497 insertions(+), 522 deletions(-) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 431376221..58a45af38 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -66,6 +66,8 @@ telemetry_writer.enable() +is_lambda_context = os.environ.get(XrayDaemon.FUNCTION_NAME_HEADER_NAME) != "" + propagator = HTTPPropagator() DD_TRACE_JAVA_TRACE_ID_PADDING = "00000000" @@ -93,7 +95,7 @@ def _convert_xray_sampling(xray_sampled): def _get_xray_trace_context(): - if not is_lambda_context(): + if not is_lambda_context: return None xray_trace_entity = parse_xray_header( @@ -109,11 +111,7 @@ def _get_xray_trace_context(): logger.debug( "Converted trace context %s from X-Ray segment %s", trace_context, - ( - xray_trace_entity["trace_id"], - xray_trace_entity["parent_id"], - xray_trace_entity["sampled"], - ), + xray_trace_entity, ) return trace_context @@ -124,7 +122,9 @@ def _get_dd_trace_py_context(): return None logger.debug( - "found dd trace context: %s", (span.context.trace_id, span.context.span_id) + "found dd trace context: trace_id=%s span_id=%s", + span.context.trace_id, + span.context.span_id, ) return span.context @@ -235,37 +235,31 @@ def extract_context_from_sqs_or_sns_event_or_context(event, lambda_context): # logic to deal with SNS => SQS event if "body" in first_record: - body_str = first_record.get("body", {}) + body_str = first_record.get("body") try: body = json.loads(body_str) if body.get("Type", "") == "Notification" and "TopicArn" in body: logger.debug("Found SNS message inside SQS event") first_record = get_first_record(create_sns_event(body)) except Exception: - first_record = event.get("Records")[0] pass - msg_attributes = first_record.get( - "messageAttributes", - first_record.get("Sns", {}).get("MessageAttributes", {}), - ) - dd_payload = msg_attributes.get("_datadog", {}) + msg_attributes = first_record.get("messageAttributes") + if msg_attributes is None: + sns_record = first_record.get("Sns") or {} + msg_attributes = sns_record.get("MessageAttributes") or {} + dd_payload = msg_attributes.get("_datadog") if dd_payload: # SQS uses dataType and binaryValue/stringValue # SNS uses Type and Value dd_json_data = None - dd_json_data_type = dd_payload.get("Type", dd_payload.get("dataType", "")) + dd_json_data_type = dd_payload.get("Type") or dd_payload.get("dataType") if dd_json_data_type == "Binary": - dd_json_data = dd_payload.get( - "binaryValue", - dd_payload.get("Value", r"{}"), - ) - dd_json_data = base64.b64decode(dd_json_data) + dd_json_data = dd_payload.get("binaryValue") or dd_payload.get("Value") + if dd_json_data: + dd_json_data = base64.b64decode(dd_json_data) elif dd_json_data_type == "String": - dd_json_data = dd_payload.get( - "stringValue", - dd_payload.get("Value", r"{}"), - ) + dd_json_data = dd_payload.get("stringValue") or dd_payload.get("Value") else: logger.debug( "Datadog Lambda Python only supports extracting trace" @@ -278,23 +272,25 @@ def extract_context_from_sqs_or_sns_event_or_context(event, lambda_context): else: # Handle case where trace context is injected into attributes.AWSTraceHeader # example: Root=1-654321ab-000000001234567890abcdef;Parent=0123456789abcdef;Sampled=1 - x_ray_header = first_record.get("attributes", {}).get("AWSTraceHeader") - if x_ray_header: - x_ray_context = parse_xray_header(x_ray_header) - trace_id_parts = x_ray_context.get("trace_id", "").split("-") - if len(trace_id_parts) > 2 and trace_id_parts[2].startswith( - DD_TRACE_JAVA_TRACE_ID_PADDING - ): - # If it starts with eight 0's padding, - # then this AWSTraceHeader contains Datadog injected trace context - logger.debug( - "Found dd-trace injected trace context from AWSTraceHeader" - ) - return Context( - trace_id=int(trace_id_parts[2][8:], 16), - span_id=int(int(x_ray_context["parent_id"], 16)), - sampling_priority=float(x_ray_context["sampled"]), - ) + attrs = first_record.get("attributes") + if attrs: + x_ray_header = attrs.get("AWSTraceHeader") + if x_ray_header: + x_ray_context = parse_xray_header(x_ray_header) + trace_id_parts = x_ray_context.get("trace_id", "").split("-") + if len(trace_id_parts) > 2 and trace_id_parts[2].startswith( + DD_TRACE_JAVA_TRACE_ID_PADDING + ): + # If it starts with eight 0's padding, + # then this AWSTraceHeader contains Datadog injected trace context + logger.debug( + "Found dd-trace injected trace context from AWSTraceHeader" + ) + return Context( + trace_id=int(trace_id_parts[2][8:], 16), + span_id=int(x_ray_context["parent_id"], 16), + sampling_priority=float(x_ray_context["sampled"]), + ) return extract_context_from_lambda_context(lambda_context) except Exception as e: logger.debug("The trace extractor returned with error %s", e) @@ -339,21 +335,22 @@ def extract_context_from_kinesis_event(event, lambda_context): """ try: record = get_first_record(event) - data = record.get("kinesis", {}).get("data", None) + kinesis = record.get("kinesis") + if not kinesis: + return extract_context_from_lambda_context(lambda_context) + data = kinesis.get("data") if data: b64_bytes = data.encode("ascii") str_bytes = base64.b64decode(b64_bytes) data_str = str_bytes.decode("ascii") data_obj = json.loads(data_str) dd_ctx = data_obj.get("_datadog") - - if not dd_ctx: - return extract_context_from_lambda_context(lambda_context) - - return propagator.extract(dd_ctx) + if dd_ctx: + return propagator.extract(dd_ctx) except Exception as e: logger.debug("The trace extractor returned with error %s", e) - return extract_context_from_lambda_context(lambda_context) + + return extract_context_from_lambda_context(lambda_context) def _deterministic_md5_hash(s: str) -> int: @@ -380,7 +377,7 @@ def extract_context_from_step_functions(event, lambda_context): state_entered_time = event.get("State").get("EnteredTime") trace_id = _deterministic_md5_hash(execution_id) parent_id = _deterministic_md5_hash( - execution_id + "#" + state_name + "#" + state_entered_time + f"{execution_id}#{state_name}#{state_entered_time}" ) sampling_priority = SamplingPriority.AUTO_KEEP return Context( @@ -396,11 +393,7 @@ def extract_context_custom_extractor(extractor, event, lambda_context): Extract Datadog trace context using a custom trace extractor function """ try: - ( - trace_id, - parent_id, - sampling_priority, - ) = extractor(event, lambda_context) + trace_id, parent_id, sampling_priority = extractor(event, lambda_context) return Context( trace_id=int(trace_id), span_id=int(parent_id), @@ -426,15 +419,20 @@ def is_authorizer_response(response) -> bool: def get_injected_authorizer_data(event, is_http_api) -> dict: try: - authorizer_headers = event.get("requestContext", {}).get("authorizer") + req_ctx = event.get("requestContext") + if not req_ctx: + return None + authorizer_headers = req_ctx.get("authorizer") if not authorizer_headers: return None - dd_data_raw = ( - authorizer_headers.get("lambda", {}).get("_datadog") - if is_http_api - else authorizer_headers.get("_datadog") - ) + if is_http_api: + lambda_hdr = authorizer_headers.get("lambda") + if not lambda_hdr: + return None + dd_data_raw = lambda_hdr.get("_datadog") + else: + dd_data_raw = authorizer_headers.get("_datadog") if not dd_data_raw: return None @@ -448,16 +446,19 @@ def get_injected_authorizer_data(event, is_http_api) -> dict: # that case, we use the injected Authorizing_Request_Id to tell if it's cached. But token # authorizers don't pass on the requestId. The Authorizing_Request_Id can't work for all # cases neither. As a result, we combine both methods as shown below. - if authorizer_headers.get("integrationLatency", 0) > 0 or event.get( - "requestContext", {} - ).get("requestId") == injected_data.get(Headers.Authorizing_Request_Id): + if authorizer_headers.get("integrationLatency", 0) > 0: return injected_data - else: + req_ctx = event.get("requestContext") + if not req_ctx: return None + if req_ctx.get("requestId") == injected_data.get( + Headers.Authorizing_Request_Id + ): + return injected_data + return None except Exception as e: logger.debug("Failed to check if invocated by an authorizer. error %s", e) - return None def extract_dd_trace_context( @@ -569,7 +570,7 @@ def set_correlation_ids(): TODO: Remove me when Datadog tracer is natively supported in Lambda. """ - if not is_lambda_context(): + if not is_lambda_context: logger.debug("set_correlation_ids is only supported in LambdaContext") return if dd_tracing_enabled: @@ -613,14 +614,6 @@ def inject_correlation_ids(): logger.debug("logs injection configured") -def is_lambda_context(): - """ - Return True if the X-Ray context is `LambdaContext`, rather than the - regular `Context` (e.g., when testing lambda functions locally). - """ - return os.environ.get(XrayDaemon.FUNCTION_NAME_HEADER_NAME, "") != "" - - def set_dd_trace_py_root(trace_context_source, merge_xray_traces): if trace_context_source == TraceContextSource.EVENT or merge_xray_traces: context = Context( @@ -635,8 +628,9 @@ def set_dd_trace_py_root(trace_context_source, merge_xray_traces): tracer.context_provider.activate(context) logger.debug( - "Set dd trace root context to: %s", - (context.trace_id, context.span_id), + "Set dd trace root context to: trace_id=%s span_id=%s", + context.trace_id, + context.span_id, ) @@ -697,9 +691,7 @@ def create_inferred_span( event_source.to_string(), e, ) - return None logger.debug("Unable to infer a span: unknown event type") - return None def create_service_mapping(val): @@ -721,19 +713,21 @@ def determine_service_name(service_mapping, specific_key, generic_key, default_v return service_name -service_mapping = {} # Initialization code service_mapping_str = os.getenv("DD_SERVICE_MAPPING", "") service_mapping = create_service_mapping(service_mapping_str) +_dd_origin = {"_dd.origin": "lambda"} + def create_inferred_span_from_lambda_function_url_event(event, context): request_context = event.get("requestContext") api_id = request_context.get("apiId") domain = request_context.get("domainName") service_name = determine_service_name(service_mapping, api_id, "lambda_url", domain) - method = request_context.get("http", {}).get("method") - path = request_context.get("http", {}).get("path") + http = request_context.get("http") + method = http.get("method") if http else None + path = http.get("path") if http else None resource = f"{method} {path}" tags = { "operation_name": "aws.lambda.url", @@ -744,16 +738,11 @@ def create_inferred_span_from_lambda_function_url_event(event, context): "request_id": context.aws_request_id, } request_time_epoch = request_context.get("timeEpoch") - args = { - "service": service_name, - "resource": resource, - "span_type": "http", - } - tracer.set_tags( - {"_dd.origin": "lambda"} - ) # function urls don't count as lambda_inferred, + tracer.set_tags(_dd_origin) # function urls don't count as lambda_inferred, # because they're in the same service as the inferring lambda function - span = tracer.trace("aws.lambda.url", **args) + span = tracer.trace( + "aws.lambda.url", service=service_name, resource=resource, span_type="http" + ) InferredSpanInfo.set_tags(tags, tag_source="self", synchronicity="sync") if span: span.set_tags(tags) @@ -762,7 +751,10 @@ def create_inferred_span_from_lambda_function_url_event(event, context): def is_api_gateway_invocation_async(event): - return event.get("headers", {}).get("X-Amz-Invocation-Type") == "Event" + hdrs = event.get("headers") + if not hdrs: + return False + return hdrs.get("X-Amz-Invocation-Type") == "Event" def insert_upstream_authorizer_span( @@ -862,7 +854,7 @@ def create_inferred_span_from_api_gateway_websocket_event( "resource": endpoint, "span_type": "web", } - tracer.set_tags({"_dd.origin": "lambda"}) + tracer.set_tags(_dd_origin) upstream_authorizer_span = None finish_time_ns = None if decode_authorizer_context: @@ -916,7 +908,7 @@ def create_inferred_span_from_api_gateway_event( "resource": resource, "span_type": "http", } - tracer.set_tags({"_dd.origin": "lambda"}) + tracer.set_tags(_dd_origin) upstream_authorizer_span = None finish_time_ns = None if decode_authorizer_context: @@ -956,7 +948,8 @@ def create_inferred_span_from_http_api_event( service_name = determine_service_name( service_mapping, api_id, "lambda_api_gateway", domain ) - method = request_context.get("http", {}).get("method") + http = request_context.get("http") or {} + method = http.get("method") path = event.get("rawPath") resource_path = _get_resource_path(event, request_context) resource = f"{method} {resource_path}" @@ -964,10 +957,10 @@ def create_inferred_span_from_http_api_event( "operation_name": "aws.httpapi", "endpoint": path, "http.url": domain + path, - "http.method": request_context.get("http", {}).get("method"), - "http.protocol": request_context.get("http", {}).get("protocol"), - "http.source_ip": request_context.get("http", {}).get("sourceIp"), - "http.user_agent": request_context.get("http", {}).get("userAgent"), + "http.method": http.get("method"), + "http.protocol": http.get("protocol"), + "http.source_ip": http.get("sourceIp"), + "http.user_agent": http.get("userAgent"), "resource_names": resource, "request_id": context.aws_request_id, "apiid": api_id, @@ -979,12 +972,7 @@ def create_inferred_span_from_http_api_event( InferredSpanInfo.set_tags(tags, tag_source="self", synchronicity="async") else: InferredSpanInfo.set_tags(tags, tag_source="self", synchronicity="sync") - args = { - "service": service_name, - "resource": resource, - "span_type": "http", - } - tracer.set_tags({"_dd.origin": "lambda"}) + tracer.set_tags(_dd_origin) inferred_span_start_ns = request_time_epoch_ms * 1e6 if decode_authorizer_context: injected_authorizer_data = get_injected_authorizer_data(event, True) @@ -992,7 +980,9 @@ def create_inferred_span_from_http_api_event( inferred_span_start_ns = injected_authorizer_data.get( Headers.Parent_Span_Finish_Time ) - span = tracer.trace("aws.httpapi", **args) + span = tracer.trace( + "aws.httpapi", service=service_name, resource=resource, span_type="http" + ) if span: span.set_tags(tags) span.start_ns = int(inferred_span_start_ns) @@ -1008,21 +998,17 @@ def create_inferred_span_from_sqs_event(event, context): service_name = determine_service_name( service_mapping, queue_name, "lambda_sqs", "sqs" ) + attrs = event_record.get("attributes") or {} tags = { "operation_name": "aws.sqs", "resource_names": queue_name, "queuename": queue_name, "event_source_arn": event_source_arn, "receipt_handle": event_record.get("receiptHandle"), - "sender_id": event_record.get("attributes", {}).get("SenderId"), + "sender_id": attrs.get("SenderId"), } InferredSpanInfo.set_tags(tags, tag_source="self", synchronicity="async") - request_time_epoch = event_record.get("attributes", {}).get("SentTimestamp") - args = { - "service": service_name, - "resource": queue_name, - "span_type": "web", - } + request_time_epoch = attrs.get("SentTimestamp") start_time = int(request_time_epoch) / 1000 upstream_span = None @@ -1058,8 +1044,10 @@ def create_inferred_span_from_sqs_event(event, context): # trace context needs to be set again as it is reset # when sns_span.finish executes tracer.context_provider.activate(trace_ctx) - tracer.set_tags({"_dd.origin": "lambda"}) - span = tracer.trace("aws.sqs", **args) + tracer.set_tags(_dd_origin) + span = tracer.trace( + "aws.sqs", service=service_name, resource=queue_name, span_type="web" + ) if span: span.set_tags(tags) span.start = start_time @@ -1071,8 +1059,8 @@ def create_inferred_span_from_sqs_event(event, context): def create_inferred_span_from_sns_event(event, context): event_record = get_first_record(event) - sns_message = event_record.get("Sns") - topic_arn = event_record.get("Sns", {}).get("TopicArn") + sns_message = event_record.get("Sns") or {} + topic_arn = sns_message.get("TopicArn") topic_name = topic_arn.split(":")[-1] service_name = determine_service_name( service_mapping, topic_name, "lambda_sns", "sns" @@ -1087,21 +1075,19 @@ def create_inferred_span_from_sns_event(event, context): } # Subject not available in SNS => SQS scenario - if "Subject" in sns_message and sns_message["Subject"]: - tags["subject"] = sns_message.get("Subject") + subject = sns_message.get("Subject") + if subject: + tags["subject"] = subject InferredSpanInfo.set_tags(tags, tag_source="self", synchronicity="async") sns_dt_format = "%Y-%m-%dT%H:%M:%S.%fZ" - timestamp = event_record.get("Sns", {}).get("Timestamp") + timestamp = sns_message.get("Timestamp") dt = datetime.strptime(timestamp, sns_dt_format) - args = { - "service": service_name, - "resource": topic_name, - "span_type": "web", - } - tracer.set_tags({"_dd.origin": "lambda"}) - span = tracer.trace("aws.sns", **args) + tracer.set_tags(_dd_origin) + span = tracer.trace( + "aws.sns", service=service_name, resource=topic_name, span_type="web" + ) if span: span.set_tags(tags) span.start = dt.replace(tzinfo=timezone.utc).timestamp() @@ -1117,6 +1103,7 @@ def create_inferred_span_from_kinesis_event(event, context): service_name = determine_service_name( service_mapping, stream_name, "lambda_kinesis", "kinesis" ) + kinesis = event_record.get("kinesis") or {} tags = { "operation_name": "aws.kinesis", "resource_names": stream_name, @@ -1126,20 +1113,15 @@ def create_inferred_span_from_kinesis_event(event, context): "event_id": event_id, "event_name": event_record.get("eventName"), "event_version": event_record.get("eventVersion"), - "partition_key": event_record.get("kinesis", {}).get("partitionKey"), + "partition_key": kinesis.get("partitionKey"), } InferredSpanInfo.set_tags(tags, tag_source="self", synchronicity="async") - request_time_epoch = event_record.get("kinesis", {}).get( - "approximateArrivalTimestamp" - ) + request_time_epoch = kinesis.get("approximateArrivalTimestamp") - args = { - "service": service_name, - "resource": stream_name, - "span_type": "web", - } - tracer.set_tags({"_dd.origin": "lambda"}) - span = tracer.trace("aws.kinesis", **args) + tracer.set_tags(_dd_origin) + span = tracer.trace( + "aws.kinesis", service=service_name, resource=stream_name, span_type="web" + ) if span: span.set_tags(tags) span.start = request_time_epoch @@ -1153,7 +1135,7 @@ def create_inferred_span_from_dynamodb_event(event, context): service_name = determine_service_name( service_mapping, table_name, "lambda_dynamodb", "dynamodb" ) - dynamodb_message = event_record.get("dynamodb") + dynamodb_message = event_record.get("dynamodb") or {} tags = { "operation_name": "aws.dynamodb", "resource_names": table_name, @@ -1166,16 +1148,11 @@ def create_inferred_span_from_dynamodb_event(event, context): "size_bytes": str(dynamodb_message.get("SizeBytes")), } InferredSpanInfo.set_tags(tags, synchronicity="async", tag_source="self") - request_time_epoch = event_record.get("dynamodb", {}).get( - "ApproximateCreationDateTime" + request_time_epoch = dynamodb_message.get("ApproximateCreationDateTime") + tracer.set_tags(_dd_origin) + span = tracer.trace( + "aws.dynamodb", service=service_name, resource=table_name, span_type="web" ) - args = { - "service": service_name, - "resource": table_name, - "span_type": "web", - } - tracer.set_tags({"_dd.origin": "lambda"}) - span = tracer.trace("aws.dynamodb", **args) if span: span.set_tags(tags) @@ -1185,7 +1162,10 @@ def create_inferred_span_from_dynamodb_event(event, context): def create_inferred_span_from_s3_event(event, context): event_record = get_first_record(event) - bucket_name = event_record.get("s3", {}).get("bucket", {}).get("name") + s3 = event_record.get("s3") or {} + bucket = s3.get("bucket") or {} + obj = s3.get("object") or {} + bucket_name = bucket.get("name") service_name = determine_service_name( service_mapping, bucket_name, "lambda_s3", "s3" ) @@ -1194,23 +1174,20 @@ def create_inferred_span_from_s3_event(event, context): "resource_names": bucket_name, "event_name": event_record.get("eventName"), "bucketname": bucket_name, - "bucket_arn": event_record.get("s3", {}).get("bucket", {}).get("arn"), - "object_key": event_record.get("s3", {}).get("object", {}).get("key"), - "object_size": str(event_record.get("s3", {}).get("object", {}).get("size")), - "object_etag": event_record.get("s3", {}).get("object", {}).get("eTag"), + "bucket_arn": bucket.get("arn"), + "object_key": obj.get("key"), + "object_size": str(obj.get("size")), + "object_etag": obj.get("eTag"), } InferredSpanInfo.set_tags(tags, synchronicity="async", tag_source="self") dt_format = "%Y-%m-%dT%H:%M:%S.%fZ" timestamp = event_record.get("eventTime") dt = datetime.strptime(timestamp, dt_format) - args = { - "service": service_name, - "resource": bucket_name, - "span_type": "web", - } - tracer.set_tags({"_dd.origin": "lambda"}) - span = tracer.trace("aws.s3", **args) + tracer.set_tags(_dd_origin) + span = tracer.trace( + "aws.s3", service=service_name, resource=bucket_name, span_type="web" + ) if span: span.set_tags(tags) span.start = dt.replace(tzinfo=timezone.utc).timestamp() @@ -1236,13 +1213,10 @@ def create_inferred_span_from_eventbridge_event(event, context): timestamp = event.get("time") dt = datetime.strptime(timestamp, dt_format) - args = { - "service": service_name, - "resource": source, - "span_type": "web", - } - tracer.set_tags({"_dd.origin": "lambda"}) - span = tracer.trace("aws.eventbridge", **args) + tracer.set_tags(_dd_origin) + span = tracer.trace( + "aws.eventbridge", service=service_name, resource=source, span_type="web" + ) if span: span.set_tags(tags) span.start = dt.replace(tzinfo=timezone.utc).timestamp() @@ -1259,7 +1233,7 @@ def create_function_execution_span( trigger_tags, parent_span=None, ): - tags = {} + tags = None if context: function_arn = (context.invoked_function_arn or "").lower() tk = function_arn.split(":") @@ -1278,18 +1252,19 @@ def create_function_execution_span( "dd_trace": ddtrace_version, "span.name": "aws.lambda", } + tags = tags or {} if is_proactive_init: tags["proactive_initialization"] = str(is_proactive_init).lower() if trace_context_source == TraceContextSource.XRAY and merge_xray_traces: tags["_dd.parent_source"] = trace_context_source tags.update(trigger_tags) - args = { - "service": "aws.lambda", - "resource": function_name, - "span_type": "serverless", - } - tracer.set_tags({"_dd.origin": "lambda"}) - span = tracer.trace("aws.lambda", **args) + tracer.set_tags(_dd_origin) + span = tracer.trace( + "aws.lambda", + service="aws.lambda", + resource=function_name, + span_type="serverless", + ) if span: span.set_tags(tags) if parent_span: diff --git a/tests/integration/snapshots/logs/async-metrics_python310.log b/tests/integration/snapshots/logs/async-metrics_python310.log index e2101885e..bec8aa8a3 100644 --- a/tests/integration/snapshots/logs/async-metrics_python310.log +++ b/tests/integration/snapshots/logs/async-metrics_python310.log @@ -67,11 +67,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "http.status_code": "200", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -237,16 +237,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -397,11 +397,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -566,16 +566,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "http.status_code": "200", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "http" }, @@ -736,16 +736,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -899,16 +899,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -1063,16 +1063,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -1226,16 +1226,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -1395,16 +1395,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "http.status_code": "200", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python311.log b/tests/integration/snapshots/logs/async-metrics_python311.log index 8d5419c1e..1e6a384d4 100644 --- a/tests/integration/snapshots/logs/async-metrics_python311.log +++ b/tests/integration/snapshots/logs/async-metrics_python311.log @@ -67,11 +67,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "http.status_code": "200", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -237,16 +237,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -397,11 +397,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -566,16 +566,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "http.status_code": "200", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "http" }, @@ -708,6 +708,7 @@ START } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +END Duration: XXXX ms Memory Used: XXXX MB { "traces": [ [ @@ -736,16 +737,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -834,7 +835,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -END Duration: XXXX ms Memory Used: XXXX MB START { "m": "aws.lambda.enhanced.invocations", @@ -899,16 +899,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -1063,16 +1063,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -1226,16 +1226,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -1395,16 +1395,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "http.status_code": "200", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python312.log b/tests/integration/snapshots/logs/async-metrics_python312.log index 0132e54e7..fdf90e984 100644 --- a/tests/integration/snapshots/logs/async-metrics_python312.log +++ b/tests/integration/snapshots/logs/async-metrics_python312.log @@ -67,11 +67,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "http.status_code": "200", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -237,16 +237,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -397,11 +397,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -566,16 +566,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "http.status_code": "200", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "http" }, @@ -736,16 +736,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -899,16 +899,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -1063,16 +1063,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -1226,16 +1226,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -1395,16 +1395,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "http.status_code": "200", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python38.log b/tests/integration/snapshots/logs/async-metrics_python38.log index e5b755ac4..50a9f7004 100644 --- a/tests/integration/snapshots/logs/async-metrics_python38.log +++ b/tests/integration/snapshots/logs/async-metrics_python38.log @@ -67,11 +67,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "http.status_code": "200", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -237,16 +237,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -397,11 +397,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -566,16 +566,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "http.status_code": "200", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "http" }, @@ -736,16 +736,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -899,16 +899,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -1063,16 +1063,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -1226,16 +1226,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -1395,16 +1395,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "http.status_code": "200", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python39.log b/tests/integration/snapshots/logs/async-metrics_python39.log index d02e097d5..d411dd1e0 100644 --- a/tests/integration/snapshots/logs/async-metrics_python39.log +++ b/tests/integration/snapshots/logs/async-metrics_python39.log @@ -67,11 +67,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "http.status_code": "200", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -237,16 +237,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -397,11 +397,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -566,16 +566,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "http.status_code": "200", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "http" }, @@ -736,16 +736,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -899,16 +899,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -1037,6 +1037,7 @@ START } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +END Duration: XXXX ms Memory Used: XXXX MB { "traces": [ [ @@ -1063,16 +1064,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -1161,7 +1162,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -END Duration: XXXX ms Memory Used: XXXX MB START { "m": "aws.lambda.enhanced.invocations", @@ -1226,16 +1226,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -1395,16 +1395,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "http.status_code": "200", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python310.log b/tests/integration/snapshots/logs/sync-metrics_python310.log index e97b0cb25..97a0cf4da 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python310.log +++ b/tests/integration/snapshots/logs/sync-metrics_python310.log @@ -47,11 +47,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "http.status_code": "200", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -236,16 +236,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -415,16 +415,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -603,16 +603,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "http.status_code": "200", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "http" }, @@ -792,16 +792,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -974,16 +974,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -1157,16 +1157,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -1339,16 +1339,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -1527,16 +1527,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "http.status_code": "200", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python311.log b/tests/integration/snapshots/logs/sync-metrics_python311.log index 84161ca26..bfb38df97 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python311.log +++ b/tests/integration/snapshots/logs/sync-metrics_python311.log @@ -47,11 +47,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "http.status_code": "200", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -236,16 +236,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -415,16 +415,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -603,16 +603,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "http.status_code": "200", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "http" }, @@ -792,16 +792,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -974,16 +974,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -1073,6 +1073,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] } HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +END Duration: XXXX ms Memory Used: XXXX MB { "traces": [ [ @@ -1111,7 +1112,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept ] ] } -END Duration: XXXX ms Memory Used: XXXX MB START { "m": "aws.lambda.enhanced.invocations", @@ -1157,16 +1157,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -1339,16 +1339,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -1527,16 +1527,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "http.status_code": "200", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python312.log b/tests/integration/snapshots/logs/sync-metrics_python312.log index 8b4c74cf4..e9e3e3395 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python312.log +++ b/tests/integration/snapshots/logs/sync-metrics_python312.log @@ -47,11 +47,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "http.status_code": "200", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -236,16 +236,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -415,16 +415,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -603,16 +603,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "http.status_code": "200", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "http" }, @@ -792,16 +792,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -974,16 +974,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -1157,16 +1157,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -1339,16 +1339,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -1527,16 +1527,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "http.status_code": "200", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python38.log b/tests/integration/snapshots/logs/sync-metrics_python38.log index 4fe60af6a..e9e6eea6f 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python38.log +++ b/tests/integration/snapshots/logs/sync-metrics_python38.log @@ -47,11 +47,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "http.status_code": "200", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -236,16 +236,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -415,16 +415,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -603,16 +603,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "http.status_code": "200", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "http" }, @@ -792,16 +792,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -974,16 +974,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -1157,16 +1157,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -1339,16 +1339,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -1527,16 +1527,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "http.status_code": "200", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python39.log b/tests/integration/snapshots/logs/sync-metrics_python39.log index 98d74ed63..ebc39ab5a 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -47,11 +47,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "http.status_code": "200", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, @@ -236,16 +236,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -415,16 +415,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -603,16 +603,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "http.status_code": "200", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "http" }, @@ -792,16 +792,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -974,16 +974,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -1157,16 +1157,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -1339,16 +1339,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, @@ -1527,16 +1527,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "_inferred_span.tag_source": "self", "http.status_code": "200", "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python", - "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python" + "language": "python" }, "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": -1 }, "type": "web" }, From cfeed1787b23a6613f549c4d3bc4062036fa5dfe Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Fri, 5 Apr 2024 11:32:40 -0700 Subject: [PATCH 154/403] Move get_mock_context method to central utils file. (#465) --- tests/test_module_name.py | 2 -- tests/test_tags.py | 19 +++++++------------ tests/test_tracing.py | 28 ++++------------------------ tests/test_trigger.py | 8 ++------ tests/test_wrapper.py | 32 +++++++++----------------------- tests/utils.py | 26 ++++++++++++++++++++++++++ 6 files changed, 48 insertions(+), 67 deletions(-) create mode 100644 tests/utils.py diff --git a/tests/test_module_name.py b/tests/test_module_name.py index 213964656..a6faf8298 100644 --- a/tests/test_module_name.py +++ b/tests/test_module_name.py @@ -1,7 +1,5 @@ import unittest -from unittest.mock import patch, call, MagicMock - from datadog_lambda.module_name import modify_module_name diff --git a/tests/test_tags.py b/tests/test_tags.py index 7a1ad86d4..07daa8e03 100644 --- a/tests/test_tags.py +++ b/tests/test_tags.py @@ -1,19 +1,10 @@ import unittest -from unittest.mock import patch, MagicMock - +from unittest.mock import patch from datadog_lambda.tags import parse_lambda_tags_from_arn - -def get_mock_context( - invoked_function_arn="arn:aws:lambda:us-east-1:1234597598159:function:swf-hello-test:$Latest", - function_version="1", -): - lambda_context = MagicMock() - lambda_context.invoked_function_arn = invoked_function_arn - lambda_context.function_version = function_version - return lambda_context +from tests.utils import get_mock_context class TestMetricTags(unittest.TestCase): @@ -23,8 +14,12 @@ def setUp(self): self.addCleanup(patcher.stop) def test_parse_lambda_tags_from_arn_latest(self): + lambda_context = get_mock_context() + lambda_context.invoked_function_arn = ( + "arn:aws:lambda:us-east-1:1234597598159:function:swf-hello-test:$Latest" + ) self.assertListEqual( - parse_lambda_tags_from_arn(get_mock_context()), + parse_lambda_tags_from_arn(lambda_context), [ "region:us-east-1", "account_id:1234597598159", diff --git a/tests/test_tracing.py b/tests/test_tracing.py index 0f7b84b41..296bd0dca 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -5,7 +5,7 @@ import os import unittest -from unittest.mock import MagicMock, Mock, patch, call +from unittest.mock import Mock, patch, call import ddtrace @@ -39,6 +39,9 @@ ) from datadog_lambda.trigger import EventTypes +from tests.utils import get_mock_context + + function_arn = "arn:aws:lambda:us-west-1:123457598159:function:python-layer-test" fake_xray_header_value = ( @@ -50,29 +53,6 @@ event_samples = "tests/event_samples/" -class ClientContext(object): - def __init__(self, custom=None): - self.custom = custom - - -def get_mock_context( - aws_request_id="request-id-1", - memory_limit_in_mb="256", - invoked_function_arn=function_arn, - function_version="1", - function_name="Function", - custom=None, -): - lambda_context = MagicMock() - lambda_context.aws_request_id = aws_request_id - lambda_context.memory_limit_in_mb = memory_limit_in_mb - lambda_context.invoked_function_arn = invoked_function_arn - lambda_context.function_version = function_version - lambda_context.function_name = function_name - lambda_context.client_context = ClientContext(custom) - return lambda_context - - def with_trace_propagation_style(style): style_list = list(style.split(",")) diff --git a/tests/test_trigger.py b/tests/test_trigger.py index 2f5148113..59178b1e7 100644 --- a/tests/test_trigger.py +++ b/tests/test_trigger.py @@ -11,16 +11,12 @@ extract_http_status_code_tag, ) +from tests.utils import get_mock_context + event_samples = "tests/event_samples/" function_arn = "arn:aws:lambda:us-west-1:123457598159:function:python-layer-test" -def get_mock_context(invoked_function_arn=function_arn): - lambda_context = MagicMock() - lambda_context.invoked_function_arn = invoked_function_arn - return lambda_context - - class TestGetEventSourceAndARN(unittest.TestCase): def test_event_source_api_gateway(self): event_sample_source = "api-gateway" diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index ff038c215..b7058e11a 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -3,7 +3,7 @@ import os import unittest -from unittest.mock import patch, call, ANY, MagicMock +from unittest.mock import patch, call, ANY from datadog_lambda.constants import TraceHeader import datadog_lambda.wrapper as wrapper @@ -12,21 +12,7 @@ from ddtrace import Span, tracer from ddtrace.internal.constants import MAX_UINT_64BITS - -def get_mock_context( - aws_request_id="request-id-1", - memory_limit_in_mb="256", - invoked_function_arn="arn:aws:lambda:us-west-1:123457598159:function:python-layer-test:1", - function_version="1", - client_context={}, -): - lambda_context = MagicMock() - lambda_context.aws_request_id = aws_request_id - lambda_context.memory_limit_in_mb = memory_limit_in_mb - lambda_context.invoked_function_arn = invoked_function_arn - lambda_context.function_version = function_version - lambda_context.client_context = client_context - return lambda_context +from tests.utils import get_mock_context class TestDatadogLambdaWrapper(unittest.TestCase): @@ -232,7 +218,7 @@ def lambda_handler(event, context): "region:us-west-1", "account_id:123457598159", "functionname:python-layer-test", - "resource:python-layer-test:1", + "resource:python-layer-test", "cold_start:true", "memorysize:256", "runtime:python3.9", @@ -263,7 +249,7 @@ def lambda_handler(event, context): "region:us-west-1", "account_id:123457598159", "functionname:python-layer-test", - "resource:python-layer-test:1", + "resource:python-layer-test", "cold_start:true", "memorysize:256", "runtime:python3.9", @@ -279,7 +265,7 @@ def lambda_handler(event, context): "region:us-west-1", "account_id:123457598159", "functionname:python-layer-test", - "resource:python-layer-test:1", + "resource:python-layer-test", "cold_start:true", "memorysize:256", "runtime:python3.9", @@ -318,7 +304,7 @@ def lambda_handler(event, context): "region:us-west-1", "account_id:123457598159", "functionname:python-layer-test", - "resource:python-layer-test:1", + "resource:python-layer-test", "cold_start:true", "memorysize:256", "runtime:python3.9", @@ -334,7 +320,7 @@ def lambda_handler(event, context): "region:us-west-1", "account_id:123457598159", "functionname:python-layer-test", - "resource:python-layer-test:1", + "resource:python-layer-test", "cold_start:true", "memorysize:256", "runtime:python3.9", @@ -370,7 +356,7 @@ def lambda_handler(event, context): "region:us-west-1", "account_id:123457598159", "functionname:python-layer-test", - "resource:python-layer-test:1", + "resource:python-layer-test", "cold_start:true", "memorysize:256", "runtime:python3.9", @@ -386,7 +372,7 @@ def lambda_handler(event, context): "region:us-west-1", "account_id:123457598159", "functionname:python-layer-test", - "resource:python-layer-test:1", + "resource:python-layer-test", "cold_start:false", "memorysize:256", "runtime:python3.9", diff --git a/tests/utils.py b/tests/utils.py new file mode 100644 index 000000000..71060d46a --- /dev/null +++ b/tests/utils.py @@ -0,0 +1,26 @@ +from unittest.mock import MagicMock + +function_arn = "arn:aws:lambda:us-west-1:123457598159:function:python-layer-test" + + +class ClientContext(object): + def __init__(self, custom=None): + self.custom = custom + + +def get_mock_context( + aws_request_id="request-id-1", + memory_limit_in_mb="256", + invoked_function_arn=function_arn, + function_version="1", + function_name="Function", + custom=None, +): + lambda_context = MagicMock() + lambda_context.aws_request_id = aws_request_id + lambda_context.memory_limit_in_mb = memory_limit_in_mb + lambda_context.invoked_function_arn = invoked_function_arn + lambda_context.function_version = function_version + lambda_context.function_name = function_name + lambda_context.client_context = ClientContext(custom) + return lambda_context From a20395dddebe10e5e8ef5b2c133f2ab886af055c Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Mon, 8 Apr 2024 10:26:39 -0700 Subject: [PATCH 155/403] Benchmarks for operations that use json dump/load. (#466) * Benchmarks for operations that use json dump/load. * Set required envvars for sending xray segments. --- .gitignore | 2 + pyproject.toml | 5 +++ tests/test_benchmarks.py | 87 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 94 insertions(+) create mode 100644 tests/test_benchmarks.py diff --git a/.gitignore b/.gitignore index 3aeeb1fb2..ff0272ba6 100644 --- a/.gitignore +++ b/.gitignore @@ -41,3 +41,5 @@ pip-log.txt node_modules yarn-lock.json + +.benchmarks diff --git a/pyproject.toml b/pyproject.toml index 3536347fa..7d77a9527 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -37,6 +37,7 @@ boto3 = { version = "^1.28.0", optional = true } typing_extensions = {version = "^4.0", python = "<3.8"} requests = { version ="^2.22.0", optional = true } pytest = { version= "^8.0.0", optional = true } +pytest-benchmark = { version = "^4.0", optional = true } flake8 = { version = "^5.0.4", optional = true } @@ -45,9 +46,13 @@ dev = [ "boto3", "flake8", "pytest", + "pytest-benchmark", "requests", ] [build-system] requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api" + +[tool.pytest.ini_options] +addopts = "--benchmark-disable --benchmark-autosave" diff --git a/tests/test_benchmarks.py b/tests/test_benchmarks.py new file mode 100644 index 000000000..d430c255d --- /dev/null +++ b/tests/test_benchmarks.py @@ -0,0 +1,87 @@ +import builtins +import json +import os +import pytest + +import ddtrace + +from datadog_lambda import metric +from datadog_lambda import tag_object +from datadog_lambda import tracing +from datadog_lambda import trigger +from datadog_lambda import xray + +from datadog_lambda.constants import XrayDaemon, XraySubsegment + +from tests.utils import get_mock_context + + +event_samples_dir = "tests/event_samples" +event_samples = [f[:-5] for f in os.listdir(event_samples_dir) if f.endswith(".json")] + + +def test_metric_write_metric_point_to_stdout(benchmark, monkeypatch): + monkeypatch.setattr(builtins, "print", lambda *a, **k: None) + benchmark( + metric.write_metric_point_to_stdout, + "metric_name", + 1, + tags=[ + "tag1:value1", + "tag2:value2", + "tag3:value3", + ], + ) + + +@pytest.mark.parametrize("event", event_samples) +def test_tag_object_tag_object(event, benchmark): + with open(f"{event_samples_dir}/{event}.json") as f: + event = json.load(f) + span = ddtrace.tracer.start_span("test") + benchmark(tag_object.tag_object, span, "function.request", event) + + +@pytest.mark.parametrize("event", event_samples) +def test_tracing_create_inferred_span(event, benchmark): + with open(f"{event_samples_dir}/{event}.json") as f: + event = json.load(f) + context = get_mock_context() + benchmark(tracing.create_inferred_span, event, context) + + +@pytest.mark.parametrize("event", event_samples) +def test_tracing_extract_dd_trace_context(event, benchmark): + with open(f"{event_samples_dir}/{event}.json") as f: + event = json.load(f) + context = get_mock_context() + benchmark(tracing.extract_dd_trace_context, event, context) + + +@pytest.mark.parametrize("event", event_samples) +def test_trigger_parse_event_source(event, benchmark): + with open(f"{event_samples_dir}/{event}.json") as f: + event = json.load(f) + benchmark(trigger.parse_event_source, event) + + +@pytest.mark.parametrize("event", event_samples) +def test_trigger_extract_trigger_tags(event, benchmark): + with open(f"{event_samples_dir}/{event}.json") as f: + event = json.load(f) + context = get_mock_context() + benchmark(trigger.extract_trigger_tags, event, context) + + +def test_xray_send_segment(benchmark, monkeypatch): + monkeypatch.setenv(XrayDaemon.XRAY_DAEMON_ADDRESS, "localhost:9000") + monkeypatch.setenv( + XrayDaemon.XRAY_TRACE_ID_HEADER_NAME, + "Root=1-5e272390-8c398be037738dc042009320;Parent=94ae789b969f1cc5;Sampled=1;Lineage=c6c5b1b9:0", + ) + key = { + "trace-id": "12345678901234567890123456789012", + "parent-id": "1234567890123456", + "sampling-priority": "1", + } + benchmark(xray.send_segment, XraySubsegment.TRACE_KEY, key) From 16f0e234d54288c6d5969b1bf7c3184d100a9d9b Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Tue, 9 Apr 2024 12:32:15 -0700 Subject: [PATCH 156/403] Delay import of logging initialization code. (#468) * Delay import of logging initialization code. * Fix flake8 error. --- datadog_lambda/__init__.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/datadog_lambda/__init__.py b/datadog_lambda/__init__.py index 5cc2ba006..5063b2f9f 100644 --- a/datadog_lambda/__init__.py +++ b/datadog_lambda/__init__.py @@ -1,5 +1,4 @@ from datadog_lambda.cold_start import initialize_cold_start_tracing -from datadog_lambda.logger import initialize_logging import os @@ -20,4 +19,8 @@ __version__ = importlib_metadata.version(__name__) + +from datadog_lambda.logger import initialize_logging # noqa: E402 + + initialize_logging(__name__) From 3414cfbbff76384f03c2856a6eb4ea8087d25785 Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Tue, 9 Apr 2024 12:43:57 -0700 Subject: [PATCH 157/403] Use single socket instance for all xray api calls. (#467) * Use single socket for all xray api calls. * Move reset to tests. --- datadog_lambda/xray.py | 72 +++++++++++++++++++++++----------------- tests/test_benchmarks.py | 12 ++++++- tests/test_wrapper.py | 9 +++-- tests/test_xray.py | 21 ++++++------ tests/utils.py | 10 ++++++ 5 files changed, 78 insertions(+), 46 deletions(-) diff --git a/datadog_lambda/xray.py b/datadog_lambda/xray.py index e6aff0bc7..c4fa1643d 100644 --- a/datadog_lambda/xray.py +++ b/datadog_lambda/xray.py @@ -10,32 +10,45 @@ logger = logging.getLogger(__name__) -def get_xray_host_port(address): - if address == "": - logger.debug("X-Ray daemon env var not set, not sending sub-segment") - return None - parts = address.split(":") - if len(parts) <= 1: - logger.debug("X-Ray daemon env var not set, not sending sub-segment") - return None - port = int(parts[1]) - host = parts[0] - return (host, port) - - -def send(host_port_tuple, payload): - sock = None - try: - sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) - sock.setblocking(0) - sock.connect(host_port_tuple) - sock.send(payload.encode("utf-8")) - except Exception as e_send: - logger.error("Error occurred submitting to xray daemon: %s", e_send) - try: - sock.close() - except Exception as e_close: - logger.error("Error while closing the socket: %s", e_close) +class Socket(object): + def __init__(self): + self.sock = None + + @property + def host_port_tuple(self): + if not hasattr(self, "_host_port_tuple"): + self._host_port_tuple = self._get_xray_host_port( + os.environ.get(XrayDaemon.XRAY_DAEMON_ADDRESS, "") + ) + return self._host_port_tuple + + def send(self, payload): + if not self.sock: + self._connect() + try: + self.sock.send(payload.encode("utf-8")) + except Exception as e_send: + logger.error("Error occurred submitting to xray daemon: %s", e_send) + + def _connect(self): + self.sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + self.sock.setblocking(0) + self.sock.connect(self.host_port_tuple) + + def _get_xray_host_port(self, address): + if address == "": + logger.debug("X-Ray daemon env var not set, not sending sub-segment") + return None + parts = address.split(":") + if len(parts) <= 1: + logger.debug("X-Ray daemon env var not set, not sending sub-segment") + return None + port = int(parts[1]) + host = parts[0] + return (host, port) + + +sock = Socket() def build_segment_payload(payload): @@ -95,10 +108,7 @@ def build_segment(context, key, metadata): def send_segment(key, metadata): - host_port_tuple = get_xray_host_port( - os.environ.get(XrayDaemon.XRAY_DAEMON_ADDRESS, "") - ) - if host_port_tuple is None: + if sock.host_port_tuple is None: return None context = parse_xray_header( os.environ.get(XrayDaemon.XRAY_TRACE_ID_HEADER_NAME, "") @@ -115,4 +125,4 @@ def send_segment(key, metadata): return None segment = build_segment(context, key, metadata) segment_payload = build_segment_payload(segment) - send(host_port_tuple, segment_payload) + sock.send(segment_payload) diff --git a/tests/test_benchmarks.py b/tests/test_benchmarks.py index d430c255d..899e3d7f1 100644 --- a/tests/test_benchmarks.py +++ b/tests/test_benchmarks.py @@ -13,7 +13,7 @@ from datadog_lambda.constants import XrayDaemon, XraySubsegment -from tests.utils import get_mock_context +from tests.utils import get_mock_context, reset_xray_connection event_samples_dir = "tests/event_samples" @@ -74,14 +74,24 @@ def test_trigger_extract_trigger_tags(event, benchmark): def test_xray_send_segment(benchmark, monkeypatch): + reset_xray_connection() + monkeypatch.setenv(XrayDaemon.XRAY_DAEMON_ADDRESS, "localhost:9000") monkeypatch.setenv( XrayDaemon.XRAY_TRACE_ID_HEADER_NAME, "Root=1-5e272390-8c398be037738dc042009320;Parent=94ae789b969f1cc5;Sampled=1;Lineage=c6c5b1b9:0", ) + + def socket_send(*a, **k): + sends.append(True) + + sends = [] + monkeypatch.setattr("socket.socket.send", socket_send) + key = { "trace-id": "12345678901234567890123456789012", "parent-id": "1234567890123456", "sampling-priority": "1", } benchmark(xray.send_segment, XraySubsegment.TRACE_KEY, key) + assert sends diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index b7058e11a..38c0d9fc9 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -7,12 +7,13 @@ from datadog_lambda.constants import TraceHeader import datadog_lambda.wrapper as wrapper +import datadog_lambda.xray as xray from datadog_lambda.metric import lambda_metric from datadog_lambda.thread_stats_writer import ThreadStatsWriter from ddtrace import Span, tracer from ddtrace.internal.constants import MAX_UINT_64BITS -from tests.utils import get_mock_context +from tests.utils import get_mock_context, reset_xray_connection class TestDatadogLambdaWrapper(unittest.TestCase): @@ -590,7 +591,9 @@ class TestLambdaWrapperWithTraceContext(unittest.TestCase): }, ) def test_event_bridge_sqs_payload(self): - patcher = patch("datadog_lambda.xray.send") + reset_xray_connection() + + patcher = patch("datadog_lambda.xray.sock.send") mock_send = patcher.start() self.addCleanup(patcher.stop) @@ -623,7 +626,7 @@ def handler(event, context): self.assertEqual(result.span_id, aws_lambda_span.span_id) self.assertEqual(result.sampling_priority, 1) mock_send.assert_called_once() - (_, raw_payload), _ = mock_send.call_args + (raw_payload,), _ = mock_send.call_args payload = json.loads(raw_payload[33:]) # strip formatting prefix self.assertEqual(self.xray_root, payload["trace_id"]) self.assertEqual(self.xray_parent, payload["parent_id"]) diff --git a/tests/test_xray.py b/tests/test_xray.py index ac3594a99..7f33f8915 100644 --- a/tests/test_xray.py +++ b/tests/test_xray.py @@ -4,15 +4,14 @@ from unittest.mock import MagicMock, patch -from datadog_lambda.xray import ( - get_xray_host_port, - build_segment_payload, - build_segment, - send_segment, -) +from datadog_lambda.xray import build_segment_payload, build_segment, send_segment, sock +from tests.utils import reset_xray_connection class TestXRay(unittest.TestCase): + def setUp(self): + reset_xray_connection() + def tearDown(self): if os.environ.get("_X_AMZN_TRACE_ID"): os.environ.pop("_X_AMZN_TRACE_ID") @@ -21,15 +20,15 @@ def tearDown(self): return super().tearDown() def test_get_xray_host_port_empty_(self): - result = get_xray_host_port("") + result = sock._get_xray_host_port("") self.assertIsNone(result) def test_get_xray_host_port_invalid_value(self): - result = get_xray_host_port("myVar") + result = sock._get_xray_host_port("myVar") self.assertIsNone(result) def test_get_xray_host_port_success(self): - result = get_xray_host_port("mySuperHost:1000") + result = sock._get_xray_host_port("mySuperHost:1000") self.assertEqual("mySuperHost", result[0]) self.assertEqual(1000, result[1]) @@ -40,7 +39,7 @@ def test_send_segment_sampled_out(self): ] = "Root=1-5e272390-8c398be037738dc042009320;Parent=94ae789b969f1cc5;Sampled=0;Lineage=c6c5b1b9:0" with patch( - "datadog_lambda.xray.send", MagicMock(return_value=None) + "datadog_lambda.xray.sock.send", MagicMock(return_value=None) ) as mock_send: # XRay trace won't be sampled according to the trace header. send_segment("my_key", {"data": "value"}) @@ -52,7 +51,7 @@ def test_send_segment_sampled(self): "_X_AMZN_TRACE_ID" ] = "Root=1-5e272390-8c398be037738dc042009320;Parent=94ae789b969f1cc5;Sampled=1;Lineage=c6c5b1b9:0" with patch( - "datadog_lambda.xray.send", MagicMock(return_value=None) + "datadog_lambda.xray.sock.send", MagicMock(return_value=None) ) as mock_send: # X-Ray trace will be sampled according to the trace header. send_segment("my_key", {"data": "value"}) diff --git a/tests/utils.py b/tests/utils.py index 71060d46a..0f246e68f 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -24,3 +24,13 @@ def get_mock_context( lambda_context.function_name = function_name lambda_context.client_context = ClientContext(custom) return lambda_context + + +def reset_xray_connection(): + from datadog_lambda.xray import sock + + if hasattr(sock, "_host_port_tuple"): + del sock._host_port_tuple + if sock.sock: + sock.sock.close() + sock.sock = None From 0b85fc95dac364f295ba9228bea2ee20c126e4bc Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Thu, 11 Apr 2024 09:57:23 -0700 Subject: [PATCH 158/403] Reduce allocations in trigger.py. (#470) --- datadog_lambda/trigger.py | 58 ++++++++++++++++++++++----------------- 1 file changed, 33 insertions(+), 25 deletions(-) diff --git a/datadog_lambda/trigger.py b/datadog_lambda/trigger.py index 0bb26d594..06a4507c3 100644 --- a/datadog_lambda/trigger.py +++ b/datadog_lambda/trigger.py @@ -110,10 +110,10 @@ def get_first_record(event): def parse_event_source(event: dict) -> _EventSource: """Determines the source of the trigger event""" - if type(event) is not dict: + if not isinstance(event, dict): return _EventSource(EventTypes.UNKNOWN) - event_source = _EventSource(EventTypes.UNKNOWN) + event_source = None request_context = event.get("requestContext") if request_context and request_context.get("stage"): @@ -126,7 +126,7 @@ def parse_event_source(event: dict) -> _EventSource: event_source.subtype = EventSubtypes.API_GATEWAY if "routeKey" in event: event_source.subtype = EventSubtypes.HTTP_API - if event.get("requestContext", {}).get("messageDirection"): + if request_context.get("messageDirection"): event_source.subtype = EventSubtypes.WEBSOCKET if request_context and request_context.get("elb"): @@ -151,10 +151,9 @@ def parse_event_source(event: dict) -> _EventSource: event_record = get_first_record(event) if event_record: - aws_event_source = event_record.get( - "eventSource", event_record.get("EventSource") + aws_event_source = event_record.get("eventSource") or event_record.get( + "EventSource" ) - if aws_event_source == "aws:dynamodb": event_source = _EventSource(EventTypes.DYNAMODB) if aws_event_source == "aws:kinesis": @@ -165,11 +164,10 @@ def parse_event_source(event: dict) -> _EventSource: event_source = _EventSource(EventTypes.SNS) if aws_event_source == "aws:sqs": event_source = _EventSource(EventTypes.SQS) - if event_record.get("cf"): event_source = _EventSource(EventTypes.CLOUDFRONT) - return event_source + return event_source or _EventSource(EventTypes.UNKNOWN) def detect_lambda_function_url_domain(domain: str) -> bool: @@ -193,11 +191,19 @@ def parse_event_source_arn(source: _EventSource, event: dict, context: Any) -> s event_record = get_first_record(event) # e.g. arn:aws:s3:::lambda-xyz123-abc890 if source.to_string() == "s3": - return event_record.get("s3", {}).get("bucket", {}).get("arn") + s3 = event_record.get("s3") + if s3: + bucket = s3.get("bucket") + if bucket: + return bucket.get("arn") + return None # e.g. arn:aws:sns:us-east-1:123456789012:sns-lambda if source.to_string() == "sns": - return event_record.get("Sns", {}).get("TopicArn") + sns = event_record.get("Sns") + if sns: + return sns.get("TopicArn") + return None # e.g. arn:aws:cloudfront::123456789012:distribution/ABC123XYZ if source.event_type == EventTypes.CLOUDFRONT: @@ -228,7 +234,11 @@ def parse_event_source_arn(source: _EventSource, event: dict, context: Any) -> s # e.g. arn:aws:elasticloadbalancing:us-east-1:123456789012:targetgroup/lambda-xyz/123 if source.event_type == EventTypes.ALB: request_context = event.get("requestContext") - return request_context.get("elb", {}).get("targetGroupArn") + if request_context: + elb = request_context.get("elb") + if elb: + return elb.get("targetGroupArn") + return None # e.g. arn:aws:logs:us-west-1:123456789012:log-group:/my-log-group-xyz if source.event_type == EventTypes.CLOUDWATCH_LOGS: @@ -292,6 +302,13 @@ def extract_http_tags(event): return http_tags +_http_event_types = ( + EventTypes.API_GATEWAY, + EventTypes.ALB, + EventTypes.LAMBDA_FUNCTION_URL, +) + + def extract_trigger_tags(event: dict, context: Any) -> dict: """ Parses the trigger event object to get tags to be added to the span metadata @@ -305,16 +322,15 @@ def extract_trigger_tags(event: dict, context: Any) -> dict: if event_source_arn: trigger_tags["function_trigger.event_source_arn"] = event_source_arn - if event_source.event_type in [ - EventTypes.API_GATEWAY, - EventTypes.ALB, - EventTypes.LAMBDA_FUNCTION_URL, - ]: + if event_source.event_type in _http_event_types: trigger_tags.update(extract_http_tags(event)) return trigger_tags +_str_http_triggers = [et.value for et in _http_event_types] + + def extract_http_status_code_tag(trigger_tags, response): """ If the Lambda was triggered by API Gateway, Lambda Function URL, or ALB, @@ -325,15 +341,7 @@ def extract_http_status_code_tag(trigger_tags, response): str_event_source = trigger_tags.get("function_trigger.event_source") # it would be cleaner if each event type was a constant object that # knew some properties about itself like this. - str_http_triggers = [ - et.value - for et in [ - EventTypes.API_GATEWAY, - EventTypes.LAMBDA_FUNCTION_URL, - EventTypes.ALB, - ] - ] - if str_event_source not in str_http_triggers: + if str_event_source not in _str_http_triggers: return status_code = "200" From f9aca11294d6e386f3ccdb87e5d6aaacb08989bc Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Thu, 11 Apr 2024 11:11:36 -0700 Subject: [PATCH 159/403] Replace builtin json with faster ujson package. (#469) * Replace builtin json with faster ujson package. * Do not escape forward slashes. * Update 3rd party licenses. --- LICENSE-3rdparty.csv | 2 ++ datadog_lambda/metric.py | 5 +++-- datadog_lambda/patch.py | 6 +++--- datadog_lambda/tag_object.py | 2 +- datadog_lambda/tracing.py | 2 +- datadog_lambda/trigger.py | 2 +- datadog_lambda/wrapper.py | 6 ++++-- datadog_lambda/xray.py | 5 +++-- pyproject.toml | 1 + 9 files changed, 19 insertions(+), 12 deletions(-) diff --git a/LICENSE-3rdparty.csv b/LICENSE-3rdparty.csv index 71ac83fbc..1cfacb703 100644 --- a/LICENSE-3rdparty.csv +++ b/LICENSE-3rdparty.csv @@ -3,9 +3,11 @@ datadog,github.com/DataDog/datadogpy,BSD-3-Clause,"Copyright (c) 2015-Present Da wrapt,github.com/GrahamDumpleton/wrapt,BSD-2-Clause,"Copyright (c) 2013-2019, Graham Dumpleton" ddtrace,github.com/DataDog/dd-trace-py,BSD-3-Clause,"Copyright (c) 2016, Datadog " urllib3,github.com/urllib3/urllib3,MIT,Copyright (c) 2008-2020 Andrey Petrov and contributors. +ujson,github.com/ultrajson/ultrajson,BSD-3-Clause,"Copyright (c) 2014, Electronic Arts Inc" importlib_metadata,github.com/python/importlib_metadata,Apache-2.0,Copyright © Jason R. Coombs boto3,github.com/boto/boto3,Apache-2.0,"Copyright 2013-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved." typing_extensions,github.com/python/typing_extensions,PSF-2.0,"Copyright (c) 1991 - 1995, Stichting Mathematisch Centrum Amsterdam, The Netherlands. All rights reserved" requests,github.com/psf/requests,Apache-2.0,"Copyright 2018 Kenneth Reitz" pytest,github.com/pytest-dev/pytest,MIT,Copyright (c) 2004 Holger Krekel and others +pytest-benchmark,github.com/ionelmc/pytest-benchmark,BSD-2-Clause,"Copyright (c) 2014-2023, Ionel Cristian Mărieș. All rights reserved." flake8,gitlab.com/pycqa/flake8,MIT,"Copyright (C) 2011-2013 Tarek Ziade . Copyright (C) 2012-2016 Ian Cordasco ." diff --git a/datadog_lambda/metric.py b/datadog_lambda/metric.py index a49c6c144..e3b01a90d 100644 --- a/datadog_lambda/metric.py +++ b/datadog_lambda/metric.py @@ -4,9 +4,9 @@ # Copyright 2019 Datadog, Inc. import os -import json import time import logging +import ujson as json from datadog_lambda.extension import should_use_extension from datadog_lambda.tags import get_enhanced_metrics_tags, dd_lambda_layer_tag @@ -85,7 +85,8 @@ def write_metric_point_to_stdout(metric_name, value, timestamp=None, tags=[]): "v": value, "e": timestamp or int(time.time()), "t": tags, - } + }, + escape_forward_slashes=False, ) ) diff --git a/datadog_lambda/patch.py b/datadog_lambda/patch.py index 0f6d28e96..5b8a92c53 100644 --- a/datadog_lambda/patch.py +++ b/datadog_lambda/patch.py @@ -3,11 +3,11 @@ # This product includes software developed at Datadog (https://www.datadoghq.com/). # Copyright 2019 Datadog, Inc. -import json import os import sys import logging import zlib +import ujson as json from wrapt import wrap_function_wrapper as wrap from wrapt.importer import when_imported @@ -144,14 +144,14 @@ def _print_request_string(request): data = zlib.decompress(data) data_dict = json.loads(data) data_dict.get("series", []).sort(key=lambda series: series.get("metric")) - sorted_data = json.dumps(data_dict) + sorted_data = json.dumps(data_dict, escape_forward_slashes=False) # Sort headers to prevent any differences in ordering headers = request.headers or {} sorted_headers = sorted( "{}:{}".format(key, value) for key, value in headers.items() ) - sorted_header_str = json.dumps(sorted_headers) + sorted_header_str = json.dumps(sorted_headers, escape_forward_slashes=False) print( "HTTP {} {} Headers: {} Data: {}".format( method, url, sorted_header_str, sorted_data diff --git a/datadog_lambda/tag_object.py b/datadog_lambda/tag_object.py index 5571bf538..6d82f83b5 100644 --- a/datadog_lambda/tag_object.py +++ b/datadog_lambda/tag_object.py @@ -4,8 +4,8 @@ # Copyright 2021 Datadog, Inc. from decimal import Decimal -import json import logging +import ujson as json redactable_keys = ["authorization", "x-authorization", "password", "token"] max_depth = 10 diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 58a45af38..85c63bbaa 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -5,8 +5,8 @@ import hashlib import logging import os -import json import base64 +import ujson as json from datetime import datetime, timezone from typing import Optional, Dict diff --git a/datadog_lambda/trigger.py b/datadog_lambda/trigger.py index 06a4507c3..68531ebf9 100644 --- a/datadog_lambda/trigger.py +++ b/datadog_lambda/trigger.py @@ -5,7 +5,7 @@ import base64 import gzip -import json +import ujson as json from io import BytesIO, BufferedReader from enum import Enum from typing import Any diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 3f6e044ba..ba31f2beb 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -6,8 +6,8 @@ import os import logging import traceback +import ujson as json from importlib import import_module -import json from time import time_ns from datadog_lambda.extension import should_use_extension, flush_extension @@ -258,7 +258,9 @@ def _inject_authorizer_span_headers(self, request_id): injected_headers[Headers.Parent_Span_Finish_Time] = finish_time_ns if request_id is not None: injected_headers[Headers.Authorizing_Request_Id] = request_id - datadog_data = base64.b64encode(json.dumps(injected_headers).encode()).decode() + datadog_data = base64.b64encode( + json.dumps(injected_headers, escape_forward_slashes=False).encode() + ).decode() self.response.setdefault("context", {}) self.response["context"]["_datadog"] = datadog_data diff --git a/datadog_lambda/xray.py b/datadog_lambda/xray.py index c4fa1643d..002d13b19 100644 --- a/datadog_lambda/xray.py +++ b/datadog_lambda/xray.py @@ -1,9 +1,9 @@ import os import logging -import json import binascii import time import socket +import ujson as json from datadog_lambda.constants import XrayDaemon, XraySubsegment, TraceContextSource @@ -102,7 +102,8 @@ def build_segment(context, key, metadata): key: metadata, } }, - } + }, + escape_forward_slashes=False, ) return segment diff --git a/pyproject.toml b/pyproject.toml index 7d77a9527..1d15753ed 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -28,6 +28,7 @@ python = ">=3.8.0,<4" datadog = ">=0.41.0,<1.0.0" wrapt = "^1.11.2" ddtrace = ">=2.7.2" +ujson = ">=5.9.0" urllib3 = [ {version = "<2.0.0", python = "<3.11", optional = true}, {version = "<2.1.0", python = ">=3.11", optional = true}, From 6483fffb1ec0ac310886bb06da8ba511a1c2e151 Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Tue, 16 Apr 2024 09:30:43 -0700 Subject: [PATCH 160/403] Hardcode version to avoid import of importlib.metadata. (#472) * Hardcode version to avoid import of importlib.metadata. * Address test failures. --- datadog_lambda/__init__.py | 9 +-------- datadog_lambda/version.py | 1 + pyproject.toml | 2 -- scripts/publish_prod.sh | 5 +++-- tests/test_version.py | 7 +++++++ tests/test_wrapper.py | 1 + 6 files changed, 13 insertions(+), 12 deletions(-) create mode 100644 datadog_lambda/version.py create mode 100644 tests/test_version.py diff --git a/datadog_lambda/__init__.py b/datadog_lambda/__init__.py index 5063b2f9f..378fd15c8 100644 --- a/datadog_lambda/__init__.py +++ b/datadog_lambda/__init__.py @@ -12,14 +12,7 @@ # The minor version corresponds to the Lambda layer version. # E.g.,, version 0.5.0 gets packaged into layer version 5. -try: - import importlib.metadata as importlib_metadata -except ModuleNotFoundError: - import importlib_metadata - -__version__ = importlib_metadata.version(__name__) - - +from datadog_lambda.version import __version__ # noqa: E402 F401 from datadog_lambda.logger import initialize_logging # noqa: E402 diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py new file mode 100644 index 000000000..4b94498ff --- /dev/null +++ b/datadog_lambda/version.py @@ -0,0 +1 @@ +__version__ = "5.92.0" diff --git a/pyproject.toml b/pyproject.toml index 1d15753ed..4385839e0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -33,9 +33,7 @@ urllib3 = [ {version = "<2.0.0", python = "<3.11", optional = true}, {version = "<2.1.0", python = ">=3.11", optional = true}, ] -importlib_metadata = {version = "*", python = "<3.8"} boto3 = { version = "^1.28.0", optional = true } -typing_extensions = {version = "^4.0", python = "<3.8"} requests = { version ="^2.22.0", optional = true } pytest = { version= "^8.0.0", optional = true } pytest-benchmark = { version = "^4.0", optional = true } diff --git a/scripts/publish_prod.sh b/scripts/publish_prod.sh index aa53df719..e138e3d85 100755 --- a/scripts/publish_prod.sh +++ b/scripts/publish_prod.sh @@ -53,10 +53,11 @@ if [ "$CONT" != "y" ]; then echo "Skipping updating package.json version" else echo - echo "Replacing version in pyproject.toml" + echo "Replacing version in pyproject.toml and datadog_lambda/version.py" echo poetry version ${NEW_VERSION} + echo "__version__ = \"${NEW_VERSION}\"" > datadog_lambda/version.py fi echo @@ -110,7 +111,7 @@ if [ "$CONT" != "y" ]; then else echo echo 'Publishing updates to github' - git commit pyproject.toml -m "Bump version to ${NEW_VERSION}" + git commit pyproject.toml datadog_lambda/version.py -m "Bump version to ${NEW_VERSION}" git push origin main git tag "v$LAYER_VERSION" git push origin "refs/tags/v$LAYER_VERSION" diff --git a/tests/test_version.py b/tests/test_version.py new file mode 100644 index 000000000..ca3c8f03e --- /dev/null +++ b/tests/test_version.py @@ -0,0 +1,7 @@ +import importlib.metadata +from datadog_lambda import __version__ + + +def test_version(): + # test version in __init__ matches version in pyproject.toml + assert importlib.metadata.version("datadog-lambda") == __version__ diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index 38c0d9fc9..13fef2b66 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -534,6 +534,7 @@ def lambda_handler(event, context): lambda_context = get_mock_context() test_span = tracer.trace("test_span") trace_ctx = tracer.current_trace_context() + trace_ctx.sampling_priority = 1 test_span.finish() lambda_handler.inferred_span = test_span lambda_handler.make_inferred_span = False From f80f83f15fdbc4d07816f143ffcd1d76857494ea Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Mon, 22 Apr 2024 10:55:33 -0700 Subject: [PATCH 161/403] Remove unneeded .dist-info files. (#478) --- Dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Dockerfile b/Dockerfile index 396ef25c1..12faa696c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -26,6 +26,8 @@ RUN rm ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_stacktrace*.so RUN rm ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/libdd_wrapper.so RUN rm ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/ddup/_ddup.*.so RUN rm ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/stack_v2/_stack_v2.*.so +RUN find . -name "*.dist-info" -type d | xargs rm -rf + FROM scratch COPY --from=builder /build/python / From 21012cb8b98a81b96d329583e0bb2fc05a8a9bf5 Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Mon, 22 Apr 2024 11:25:49 -0700 Subject: [PATCH 162/403] Pre-compile all python code and remove original .py files. (#476) * Remove urllib3 dist-info files as well. * Pre-compile all python code and remove original .py files. * Compress at optimization level 2. * Add PYTHONNODEBUGRANGES=1 to compile step. * Add comment. * Use different commandline option to support py3.8 * Update size limits. * Leave __init__.py contrib files. * Remove text like files. * oops --- Dockerfile | 17 +++++++++++++---- scripts/check_layer_size.sh | 5 ++--- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/Dockerfile b/Dockerfile index 12faa696c..ed43e2375 100644 --- a/Dockerfile +++ b/Dockerfile @@ -11,16 +11,13 @@ WORKDIR /build COPY . . RUN pip install . -t ./python/lib/$runtime/site-packages -# Remove *.pyc files -RUN find ./python/lib/$runtime/site-packages -name \*.pyc -delete - # Remove botocore (40MB) to reduce package size. aws-xray-sdk # installs it, while it's already provided by the Lambda Runtime. RUN rm -rf ./python/lib/$runtime/site-packages/botocore* RUN rm -rf ./python/lib/$runtime/site-packages/setuptools RUN rm -rf ./python/lib/$runtime/site-packages/jsonschema/tests RUN find . -name 'libddwaf.so' -delete -RUN rm -rf ./python/lib/$runtime/site-packages/urllib3 +RUN rm -rf ./python/lib/$runtime/site-packages/urllib3* RUN rm ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_taint_tracking/*.so RUN rm ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_stacktrace*.so RUN rm ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/libdd_wrapper.so @@ -28,6 +25,18 @@ RUN rm ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/dd RUN rm ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/stack_v2/_stack_v2.*.so RUN find . -name "*.dist-info" -type d | xargs rm -rf +# Precompile all .pyc files and remove .py files. This speeds up load time. +# Compile with optimization level 2 (-OO) and PYTHONNODEBUGRANGES=1 to redtce +# size of .pyc files. +# See https://docs.python.org/3/tutorial/modules.html#compiled-python-files +# https://docs.python.org/3.11/using/cmdline.html#cmdoption-O +# https://docs.python.org/3/using/cmdline.html#envvar-PYTHONNODEBUGRANGES +RUN PYTHONNODEBUGRANGES=1 python -OO -m compileall -b ./python/lib/$runtime/site-packages +# remove all .py files except ddtrace/contrib/*/__init__.py which are necessary +# for ddtrace.patch to discover instrumationation packages. +RUN find ./python/lib/$runtime/site-packages -name \*.py | grep -v ddtrace/contrib | xargs rm -rf +RUN find ./python/lib/$runtime/site-packages/ddtrace/contrib -name \*.py | grep -v __init__ | xargs rm -rf +RUN find ./python/lib/$runtime/site-packages -name __pycache__ -type d -exec rm -r {} \+ FROM scratch COPY --from=builder /build/python / diff --git a/scripts/check_layer_size.sh b/scripts/check_layer_size.sh index 84752fa19..977c02833 100755 --- a/scripts/check_layer_size.sh +++ b/scripts/check_layer_size.sh @@ -7,10 +7,9 @@ # Compares layer size to threshold, and fails if below that threshold -# 7 mb size limit set -e -MAX_LAYER_COMPRESSED_SIZE_KB=$(expr 4 \* 1024) -MAX_LAYER_UNCOMPRESSED_SIZE_KB=$(expr 13 \* 1024) +MAX_LAYER_COMPRESSED_SIZE_KB=$(expr 5 \* 1024) +MAX_LAYER_UNCOMPRESSED_SIZE_KB=$(expr 12 \* 1024) LAYER_FILES_PREFIX="datadog_lambda_py" From 6b54aec36e647be67af229fe1509fa2f3301653e Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Wed, 24 Apr 2024 17:12:25 -0400 Subject: [PATCH 163/403] fix start time of function url inferred span (#383) --- datadog_lambda/tracing.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 85c63bbaa..1d73de3e7 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -746,7 +746,7 @@ def create_inferred_span_from_lambda_function_url_event(event, context): InferredSpanInfo.set_tags(tags, tag_source="self", synchronicity="sync") if span: span.set_tags(tags) - span.start = request_time_epoch / 1000 + span.start_ns = int(request_time_epoch) * 1e6 return span From e1c4edbea26f2133bb20c608ef18627fdfaa384e Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Thu, 25 Apr 2024 10:33:37 -0700 Subject: [PATCH 164/403] Update version to v5.93.0 for release. (#479) --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index 4b94498ff..c7debb231 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "5.92.0" +__version__ = "5.93.0" diff --git a/pyproject.toml b/pyproject.toml index 4385839e0..1db09ba44 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "5.92.0" +version = "5.93.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 3c79531b7a7d7fe08a2d7b21fadd0d447bad20bb Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Tue, 30 Apr 2024 10:20:33 -0700 Subject: [PATCH 165/403] Remove extra ddtrace source files. (#481) --- Dockerfile | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Dockerfile b/Dockerfile index ed43e2375..488364a40 100644 --- a/Dockerfile +++ b/Dockerfile @@ -38,5 +38,14 @@ RUN find ./python/lib/$runtime/site-packages -name \*.py | grep -v ddtrace/contr RUN find ./python/lib/$runtime/site-packages/ddtrace/contrib -name \*.py | grep -v __init__ | xargs rm -rf RUN find ./python/lib/$runtime/site-packages -name __pycache__ -type d -exec rm -r {} \+ +# When building ddtrace from branch, remove extra source files. These are +# removed by the ddtrace build process before publishing a wheel to PyPI. +RUN find ./python/lib/$runtime/site-packages/ddtrace -name \*.c -delete +RUN find ./python/lib/$runtime/site-packages/ddtrace -name \*.cpp -delete +RUN find ./python/lib/$runtime/site-packages/ddtrace -name \*.cc -delete +RUN find ./python/lib/$runtime/site-packages/ddtrace -name \*.h -delete +RUN find ./python/lib/$runtime/site-packages/ddtrace -name \*.hpp -delete +RUN find ./python/lib/$runtime/site-packages/ddtrace -name \*.pyx -delete + FROM scratch COPY --from=builder /build/python / From a95341ec7f555b38d4ca12be1409422d756c389d Mon Sep 17 00:00:00 2001 From: Tal Usvyatsky <18072279+TalUsvyatsky@users.noreply.github.com> Date: Wed, 1 May 2024 10:15:42 -0400 Subject: [PATCH 166/403] Detect exceptions raised outside of the handler (#475) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * emit enhanced error metric and create span when an exception is raised outside of the handler function * rename handler * move fallback handler to wrapper.py * fix duration * respect DD_TRACE_ENABLED * emit telemetry and raise during init * Update datadog_lambda/tags.py Co-authored-by: jordan gonzález <30836115+duncanista@users.noreply.github.com> --------- Co-authored-by: jordan gonzález <30836115+duncanista@users.noreply.github.com> --- datadog_lambda/handler.py | 19 +++++++++-- datadog_lambda/metric.py | 6 ++-- datadog_lambda/tags.py | 6 ++-- datadog_lambda/tracing.py | 32 +++++++++++++++++ tests/test_handler.py | 72 +++++++++++++++++++++++++++++++++++++++ tests/test_tracing.py | 61 +++++++++++++++++++++++++++++++++ tests/test_wrapper.py | 18 +++++----- 7 files changed, 198 insertions(+), 16 deletions(-) create mode 100644 tests/test_handler.py diff --git a/datadog_lambda/handler.py b/datadog_lambda/handler.py index 777dc4922..433d9b926 100644 --- a/datadog_lambda/handler.py +++ b/datadog_lambda/handler.py @@ -7,6 +7,9 @@ from importlib import import_module import os +from time import time_ns + +from datadog_lambda.tracing import emit_telemetry_on_exception_outside_of_handler from datadog_lambda.wrapper import datadog_lambda_wrapper from datadog_lambda.module_name import modify_module_name @@ -27,5 +30,17 @@ class HandlerError(Exception): (mod_name, handler_name) = parts modified_mod_name = modify_module_name(mod_name) -handler_module = import_module(modified_mod_name) -handler = datadog_lambda_wrapper(getattr(handler_module, handler_name)) + +try: + handler_load_start_time_ns = time_ns() + handler_module = import_module(modified_mod_name) + handler_func = getattr(handler_module, handler_name) +except Exception as e: + emit_telemetry_on_exception_outside_of_handler( + e, + modified_mod_name, + handler_load_start_time_ns, + ) + raise + +handler = datadog_lambda_wrapper(handler_func) diff --git a/datadog_lambda/metric.py b/datadog_lambda/metric.py index e3b01a90d..bc7391a6a 100644 --- a/datadog_lambda/metric.py +++ b/datadog_lambda/metric.py @@ -100,7 +100,7 @@ def submit_enhanced_metric(metric_name, lambda_context): Args: metric_name (str): metric name w/o enhanced prefix i.e. "invocations" or "errors" - lambda_context (dict): Lambda context dict passed to the function by AWS + lambda_context (object): Lambda context dict passed to the function by AWS """ if not enhanced_metrics_enabled: logger.debug( @@ -118,7 +118,7 @@ def submit_invocations_metric(lambda_context): """Increment aws.lambda.enhanced.invocations by 1, applying runtime, layer, and cold_start tags Args: - lambda_context (dict): Lambda context dict passed to the function by AWS + lambda_context (object): Lambda context dict passed to the function by AWS """ submit_enhanced_metric("invocations", lambda_context) @@ -127,6 +127,6 @@ def submit_errors_metric(lambda_context): """Increment aws.lambda.enhanced.errors by 1, applying runtime, layer, and cold_start tags Args: - lambda_context (dict): Lambda context dict passed to the function by AWS + lambda_context (object): Lambda context dict passed to the function by AWS """ submit_enhanced_metric("errors", lambda_context) diff --git a/datadog_lambda/tags.py b/datadog_lambda/tags.py index 695d1a48b..5b3fe43e6 100644 --- a/datadog_lambda/tags.py +++ b/datadog_lambda/tags.py @@ -55,9 +55,11 @@ def parse_lambda_tags_from_arn(lambda_context): def get_enhanced_metrics_tags(lambda_context): """Get the list of tags to apply to enhanced metrics""" - tags = parse_lambda_tags_from_arn(lambda_context) + tags = [] + if lambda_context: + tags = parse_lambda_tags_from_arn(lambda_context) + tags.append(f"memorysize:{lambda_context.memory_limit_in_mb}") tags.append(get_cold_start_tag()) - tags.append(f"memorysize:{lambda_context.memory_limit_in_mb}") tags.append(runtime_tag) tags.append(library_version_tag) return tags diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 1d73de3e7..60b9e726d 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -6,6 +6,7 @@ import logging import os import base64 +import traceback import ujson as json from datetime import datetime, timezone from typing import Optional, Dict @@ -1320,3 +1321,34 @@ def is_async(span: Span) -> bool: e, ) return False + + +def emit_telemetry_on_exception_outside_of_handler( + exception, resource_name, handler_load_start_time_ns +): + """ + Emit an enhanced error metric and create a span for exceptions occurring outside the handler + """ + submit_errors_metric(None) + if dd_tracing_enabled: + span = tracer.trace( + "aws.lambda", + service="aws.lambda", + resource=resource_name, + span_type="serverless", + ) + span.start_ns = handler_load_start_time_ns + + tags = { + "error.status": 500, + "error.type": type(exception).__name__, + "error.message": exception, + "error.stack": traceback.format_exc(), + "resource_names": resource_name, + "resource.name": resource_name, + "operation_name": "aws.lambda", + "status": "error", + } + span.set_tags(tags) + span.error = 1 + span.finish() diff --git a/tests/test_handler.py b/tests/test_handler.py new file mode 100644 index 000000000..50f426dc9 --- /dev/null +++ b/tests/test_handler.py @@ -0,0 +1,72 @@ +import os +import sys +import unittest +from unittest.mock import patch + +from tests.utils import get_mock_context + + +class TestHandler(unittest.TestCase): + def tearDown(self): + for mod in sys.modules.copy(): + if mod.startswith("datadog_lambda.handler"): + del sys.modules[mod] + + def test_dd_lambda_handler_env_var_none(self): + with self.assertRaises(Exception) as context: + import datadog_lambda.handler as handler + + assert context.exception == handler.HandlerError( + "DD_LAMBDA_HANDLER is not defined. Can't use prebuilt datadog handler" + ) + + @patch.dict(os.environ, {"DD_LAMBDA_HANDLER": "malformed"}, clear=True) + def test_dd_lambda_handler_env_var_malformed(self): + with self.assertRaises(Exception) as context: + import datadog_lambda.handler as handler + + assert context.exception == handler.HandlerError( + "Value malformed for DD_LAMBDA_HANDLER has invalid format." + ) + + @patch.dict(os.environ, {"DD_LAMBDA_HANDLER": "nonsense.nonsense"}, clear=True) + @patch("datadog_lambda.tracing.emit_telemetry_on_exception_outside_of_handler") + @patch("time.time_ns", return_value=42) + def test_exception_importing_module(self, mock_time, mock_emit_telemetry): + with self.assertRaises(ModuleNotFoundError) as test_context: + import datadog_lambda.handler + + mock_emit_telemetry.assert_called_once_with( + test_context.exception, "nonsense", 42 + ) + + @patch.dict(os.environ, {"DD_LAMBDA_HANDLER": "nonsense.nonsense"}, clear=True) + @patch("importlib.import_module", return_value=None) + @patch("datadog_lambda.tracing.emit_telemetry_on_exception_outside_of_handler") + @patch("time.time_ns", return_value=42) + def test_exception_getting_handler_func( + self, mock_time, mock_emit_telemetry, mock_import + ): + with self.assertRaises(AttributeError) as test_context: + import datadog_lambda.handler + + mock_emit_telemetry.assert_called_once_with( + test_context.exception, "nonsense", 42 + ) + + @patch.dict(os.environ, {"DD_LAMBDA_HANDLER": "nonsense.nonsense"}, clear=True) + @patch("importlib.import_module") + @patch("datadog_lambda.tracing.emit_telemetry_on_exception_outside_of_handler") + @patch("datadog_lambda.wrapper.datadog_lambda_wrapper") + def test_handler_success( + self, mock_lambda_wrapper, mock_emit_telemetry, mock_import + ): + def nonsense(): + pass + + mock_import.nonsense.return_value = nonsense + + import datadog_lambda.handler + + mock_emit_telemetry.assert_not_called() + mock_lambda_wrapper.assert_called_once_with(mock_import().nonsense) diff --git a/tests/test_tracing.py b/tests/test_tracing.py index 296bd0dca..9629dcab8 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -1,6 +1,7 @@ import copy import functools import json +import traceback import pytest import os import unittest @@ -36,6 +37,7 @@ determine_service_name, service_mapping as global_service_mapping, propagator, + emit_telemetry_on_exception_outside_of_handler, ) from datadog_lambda.trigger import EventTypes @@ -1999,3 +2001,62 @@ def test_deterministic_m5_hash__always_leading_with_zero(self): # Leading zeros will be omitted, so only test for full 64 bits present if len(result_in_binary) == 66: # "0b" + 64 bits. self.assertTrue(result_in_binary.startswith("0b0")) + + +class TestExceptionOutsideHandler(unittest.TestCase): + @patch("datadog_lambda.tracing.dd_tracing_enabled", True) + @patch("datadog_lambda.tracing.submit_errors_metric") + @patch("time.time_ns", return_value=42) + def test_exception_outside_handler_tracing_enabled( + self, mock_time, mock_submit_errors_metric + ): + fake_error = ValueError("Some error message") + resource_name = "my_handler" + span_type = "aws.lambda" + mock_span = Mock() + with patch( + "datadog_lambda.tracing.tracer.trace", return_value=mock_span + ) as mock_trace: + emit_telemetry_on_exception_outside_of_handler( + fake_error, resource_name, 42 + ) + + mock_submit_errors_metric.assert_called_once_with(None) + + mock_trace.assert_called_once_with( + span_type, + service="aws.lambda", + resource=resource_name, + span_type="serverless", + ) + mock_span.set_tags.assert_called_once_with( + { + "error.status": 500, + "error.type": "ValueError", + "error.message": fake_error, + "error.stack": traceback.format_exc(), + "resource_names": resource_name, + "resource.name": resource_name, + "operation_name": span_type, + "status": "error", + } + ) + mock_span.finish.assert_called_once() + assert mock_span.error == 1 + assert mock_span.start_ns == 42 + + @patch("datadog_lambda.tracing.dd_tracing_enabled", False) + @patch("datadog_lambda.tracing.submit_errors_metric") + @patch("time.time_ns", return_value=42) + def test_exception_outside_handler_tracing_disabled( + self, mock_time, mock_submit_errors_metric + ): + fake_error = ValueError("Some error message") + resource_name = "my_handler" + with patch("datadog_lambda.tracing.tracer.trace") as mock_trace: + emit_telemetry_on_exception_outside_of_handler( + fake_error, resource_name, 42 + ) + + mock_submit_errors_metric.assert_called_once_with(None) + mock_trace.assert_not_called() diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index 13fef2b66..db9f0f9e3 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -220,8 +220,8 @@ def lambda_handler(event, context): "account_id:123457598159", "functionname:python-layer-test", "resource:python-layer-test", - "cold_start:true", "memorysize:256", + "cold_start:true", "runtime:python3.9", "datadog_lambda:v6.6.6", "dd_lambda_layer:datadog-python39_X.X.X", @@ -251,8 +251,8 @@ def lambda_handler(event, context): "account_id:123457598159", "functionname:python-layer-test", "resource:python-layer-test", - "cold_start:true", "memorysize:256", + "cold_start:true", "runtime:python3.9", "datadog_lambda:v6.6.6", "dd_lambda_layer:datadog-python39_X.X.X", @@ -267,8 +267,8 @@ def lambda_handler(event, context): "account_id:123457598159", "functionname:python-layer-test", "resource:python-layer-test", - "cold_start:true", "memorysize:256", + "cold_start:true", "runtime:python3.9", "datadog_lambda:v6.6.6", "dd_lambda_layer:datadog-python39_X.X.X", @@ -306,8 +306,8 @@ def lambda_handler(event, context): "account_id:123457598159", "functionname:python-layer-test", "resource:python-layer-test", - "cold_start:true", "memorysize:256", + "cold_start:true", "runtime:python3.9", "datadog_lambda:v6.6.6", "dd_lambda_layer:datadog-python39_X.X.X", @@ -322,8 +322,8 @@ def lambda_handler(event, context): "account_id:123457598159", "functionname:python-layer-test", "resource:python-layer-test", - "cold_start:true", "memorysize:256", + "cold_start:true", "runtime:python3.9", "datadog_lambda:v6.6.6", "dd_lambda_layer:datadog-python39_X.X.X", @@ -358,8 +358,8 @@ def lambda_handler(event, context): "account_id:123457598159", "functionname:python-layer-test", "resource:python-layer-test", - "cold_start:true", "memorysize:256", + "cold_start:true", "runtime:python3.9", "datadog_lambda:v6.6.6", "dd_lambda_layer:datadog-python39_X.X.X", @@ -374,8 +374,8 @@ def lambda_handler(event, context): "account_id:123457598159", "functionname:python-layer-test", "resource:python-layer-test", - "cold_start:false", "memorysize:256", + "cold_start:false", "runtime:python3.9", "datadog_lambda:v6.6.6", "dd_lambda_layer:datadog-python39_X.X.X", @@ -408,8 +408,8 @@ def lambda_handler(event, context): "account_id:123457598159", "functionname:python-layer-test", "resource:python-layer-test:Latest", - "cold_start:true", "memorysize:256", + "cold_start:true", "runtime:python3.9", "datadog_lambda:v6.6.6", "dd_lambda_layer:datadog-python39_X.X.X", @@ -442,8 +442,8 @@ def lambda_handler(event, context): "functionname:python-layer-test", "executedversion:1", "resource:python-layer-test:My_alias-1", - "cold_start:true", "memorysize:256", + "cold_start:true", "runtime:python3.9", "datadog_lambda:v6.6.6", "dd_lambda_layer:datadog-python39_X.X.X", From bd1e62590719e94132b0771a310d52ffc4f28454 Mon Sep 17 00:00:00 2001 From: Tal Usvyatsky <18072279+TalUsvyatsky@users.noreply.github.com> Date: Wed, 1 May 2024 13:06:25 -0400 Subject: [PATCH 167/403] v5.94.0 (#482) --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index c7debb231..b53aa6a73 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "5.93.0" +__version__ = "5.94.0" diff --git a/pyproject.toml b/pyproject.toml index 1db09ba44..f3663f1d6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "5.93.0" +version = "5.94.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 95dd5be5a7fd651b9c5169f3c66498f03f727b2e Mon Sep 17 00:00:00 2001 From: Tal Usvyatsky <18072279+TalUsvyatsky@users.noreply.github.com> Date: Thu, 2 May 2024 09:24:01 -0400 Subject: [PATCH 168/403] remove ddsaml2aws login from release script (#484) --- scripts/publish_prod.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/scripts/publish_prod.sh b/scripts/publish_prod.sh index e138e3d85..f96c021d4 100755 --- a/scripts/publish_prod.sh +++ b/scripts/publish_prod.sh @@ -85,11 +85,9 @@ if [ "$CONT" != "y" ]; then echo "Skipping deployment to GovCloud AWS" else echo "Ensuring you have access to the AWS GovCloud account" - ddsaml2aws login -a govcloud-us1-fed-human-engineering aws-vault exec sso-govcloud-us1-fed-engineering -- aws sts get-caller-identity echo "Publishing layers to GovCloud AWS regions" - ddsaml2aws login -a govcloud-us1-fed-human-engineering VERSION=$LAYER_VERSION aws-vault exec sso-govcloud-us1-fed-engineering -- ./scripts/publish_layers.sh fi From dc03756b120ba40c6b2b941019ceb977a9ce3b36 Mon Sep 17 00:00:00 2001 From: Dylan Yang Date: Thu, 9 May 2024 15:55:25 -0400 Subject: [PATCH 169/403] [SVLS-4422] Support for metrics with timestamps when the Extension is present (#480) use API to send metrics with timestamps when extension is present --- datadog_lambda/api.py | 8 ++------ datadog_lambda/metric.py | 26 +++++++++++++++++++++++--- tests/test_metric.py | 12 ++++++++++++ 3 files changed, 37 insertions(+), 9 deletions(-) diff --git a/datadog_lambda/api.py b/datadog_lambda/api.py index 079f69dab..b5414fd95 100644 --- a/datadog_lambda/api.py +++ b/datadog_lambda/api.py @@ -1,7 +1,6 @@ import os import logging import base64 -from datadog_lambda.extension import should_use_extension logger = logging.getLogger(__name__) KMS_ENCRYPTION_CONTEXT_KEY = "LambdaFunctionName" @@ -48,13 +47,10 @@ def decrypt_kms_api_key(kms_client, ciphertext): def init_api(): - if ( - not should_use_extension - and not os.environ.get("DD_FLUSH_TO_LOG", "").lower() == "true" - ): + if not os.environ.get("DD_FLUSH_TO_LOG", "").lower() == "true": # Make sure that this package would always be lazy-loaded/outside from the critical path # since underlying packages are quite heavy to load - # and useless when the extension is present + # and useless with the extension unless sending metrics with timestamps from datadog import api if not api._api_key: diff --git a/datadog_lambda/metric.py b/datadog_lambda/metric.py index bc7391a6a..115686af3 100644 --- a/datadog_lambda/metric.py +++ b/datadog_lambda/metric.py @@ -10,13 +10,13 @@ from datadog_lambda.extension import should_use_extension from datadog_lambda.tags import get_enhanced_metrics_tags, dd_lambda_layer_tag -from datadog_lambda.api import init_api logger = logging.getLogger(__name__) lambda_stats = None +extension_thread_stats = None -init_api() +flush_in_thread = os.environ.get("DD_FLUSH_IN_THREAD", "").lower() == "true" if should_use_extension: from datadog_lambda.statsd_writer import StatsDWriter @@ -28,8 +28,9 @@ # end of invocation. To make metrics submitted from a long-running Lambda # function available sooner, consider using the Datadog Lambda extension. from datadog_lambda.thread_stats_writer import ThreadStatsWriter + from datadog_lambda.api import init_api - flush_in_thread = os.environ.get("DD_FLUSH_IN_THREAD", "").lower() == "true" + init_api() lambda_stats = ThreadStatsWriter(flush_in_thread) enhanced_metrics_enabled = ( @@ -57,6 +58,22 @@ def lambda_metric(metric_name, value, timestamp=None, tags=None, force_async=Fal tags = [] if tags is None else list(tags) tags.append(dd_lambda_layer_tag) + if should_use_extension and timestamp is not None: + # The extension does not support timestamps for distributions so we create a + # a thread stats writer to submit metrics with timestamps to the API + global extension_thread_stats + if extension_thread_stats is None: + from datadog_lambda.thread_stats_writer import ThreadStatsWriter + from datadog_lambda.api import init_api + + init_api() + extension_thread_stats = ThreadStatsWriter(flush_in_thread) + + extension_thread_stats.distribution( + metric_name, value, tags=tags, timestamp=timestamp + ) + return + if should_use_extension: logger.debug( "Sending metric %s value %s to Datadog via extension", metric_name, value @@ -94,6 +111,9 @@ def write_metric_point_to_stdout(metric_name, value, timestamp=None, tags=[]): def flush_stats(): lambda_stats.flush() + if extension_thread_stats is not None: + extension_thread_stats.flush() + def submit_enhanced_metric(metric_name, lambda_context): """Submits the enhanced metric with the given name diff --git a/tests/test_metric.py b/tests/test_metric.py index 992084b9c..f07a4c6ac 100644 --- a/tests/test_metric.py +++ b/tests/test_metric.py @@ -43,6 +43,18 @@ def test_lambda_metric_flush_to_log_with_extension(self): ) del os.environ["DD_FLUSH_TO_LOG"] + @patch("datadog_lambda.metric.should_use_extension", True) + def test_lambda_metric_timestamp_with_extension(self): + patcher = patch("datadog_lambda.metric.extension_thread_stats") + self.mock_metric_extension_thread_stats = patcher.start() + self.addCleanup(patcher.stop) + + lambda_metric("test_timestamp", 1, 123) + self.mock_metric_lambda_stats.distribution.assert_not_called() + self.mock_metric_extension_thread_stats.distribution.assert_called_with( + "test_timestamp", 1, timestamp=123, tags=[dd_lambda_layer_tag] + ) + def test_lambda_metric_flush_to_log(self): os.environ["DD_FLUSH_TO_LOG"] = "True" From 87adb4d5ecc5de351e069283bd159754d253c000 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Wed, 15 May 2024 12:30:48 -0400 Subject: [PATCH 170/403] safety check before create cold start spans (#485) --- datadog_lambda/cold_start.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/datadog_lambda/cold_start.py b/datadog_lambda/cold_start.py index d4d4b8c26..8c21420da 100644 --- a/datadog_lambda/cold_start.py +++ b/datadog_lambda/cold_start.py @@ -197,7 +197,8 @@ def trace(self, root_nodes: List[ImportNode] = root_nodes): def trace_tree(self, import_node: ImportNode, parent_span): if ( - import_node.end_time_ns - import_node.start_time_ns + not self.trace_ctx + or import_node.end_time_ns - import_node.start_time_ns < self.min_duration_ms * 1e6 or import_node.module_name in self.ignored_libs ): From 5447d8963e11eba24228145ce583117fc24c4097 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Thu, 16 May 2024 15:37:08 -0400 Subject: [PATCH 171/403] bugfix for sns-sqs non-rawMessageDelivery java upstream (#486) --- datadog_lambda/tracing.py | 2 +- .../event_samples/sns-sqs-java-upstream.json | 32 +++++++++++++++++++ tests/test_tracing.py | 8 +++++ 3 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 tests/event_samples/sns-sqs-java-upstream.json diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 60b9e726d..73ac1e5c8 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -273,7 +273,7 @@ def extract_context_from_sqs_or_sns_event_or_context(event, lambda_context): else: # Handle case where trace context is injected into attributes.AWSTraceHeader # example: Root=1-654321ab-000000001234567890abcdef;Parent=0123456789abcdef;Sampled=1 - attrs = first_record.get("attributes") + attrs = event.get("Records")[0].get("attributes") if attrs: x_ray_header = attrs.get("AWSTraceHeader") if x_ray_header: diff --git a/tests/event_samples/sns-sqs-java-upstream.json b/tests/event_samples/sns-sqs-java-upstream.json new file mode 100644 index 000000000..bef072c3c --- /dev/null +++ b/tests/event_samples/sns-sqs-java-upstream.json @@ -0,0 +1,32 @@ +{ + "Records": [ + { + "messageId": "892f0033-3a4e-4d61-9e26-70d6f7901cd5", + "receiptHandle": "AQEBa1vYusKmlcrFsXDOh8/il3nFWZt+cGeLSU7cjEEpF+N4dPfHzkFpVXKEZebtXbUGyJ18lpBpRtXMpbL7gNukCv3z3Uj61NQbwTTabhsX0Y0iAbh2TSTNgaC/egNVbl3mwDjtXhmIvQIA8Zzzl4AqIlS7a76QiTeTVAjLb1c2FtJYq+znDb52GNPzZ62fSJtDpjfhFEkHwL+w23NQo/Yx4rCmaygR/F7/5hOFtsOwERpTFBei7fDM0z87HVT0nLkqvtg9wyM1kKSsMX8ltjdI3cwFSMs9aTMGFA3uAee6JKswkMp0HCXxNZZ8lp3T9wdQTBUwS8y01vMxl9e0qtYwUpakBYfdlmGHDIbZGEsf59ZpLYlUek0iFl0pdW+5LquNvlA2hA/J9ENpxJYHN4eguTNwRxxpEyzSwmfNXgukgRqDmcZT84UY9GkeaGJ2f2jfyCE525sqB2CAPcK7zx9MZ2Jt/UxsbX5APdX4skXDgck=", + "body": { + "Type": "Notification", + "MessageId": "6dacdb4e-f8dd-5752-9f49-858ee02bcd55", + "TopicArn": "arn:aws:sns:us-west-2:425362996713:DdTraceXLambda-snssqschecksNestedStacksnssqschecksNestedStackResource58F786C6-11NORKTA1JFML-snsProducerJavaForPythonNonRawsnssqsproducerjavaforpythonnonrawtopicDDBAB6EA-ZBb8uCZzkS0S", + "Message": "hello from DdTraceXLambda-snssqschec-snssqsproducerjavaforpyt-z0t7yDk3zWt1", + "Timestamp": "2024-05-16T14:22:46.902Z", + "SignatureVersion": "1", + "Signature": "HBf+KLJg/1Crvg3T5a8jJwVwIjmiNe1jEZ1QXOw11x8At/nqXUrevdm/j8KR33w4gmW/MG6WPpafH8K5k+M+tmn8Mr4sWfJhzsfV4in8s6qbbesBCVL5TsGkfauBfSeOkvrH+2/MAnexUx1m28m+qLJyeTzozelT9IdEhm1ATg5bASeVQS3mFTWYvnO4DoJdMSS9O15ZUQSitjhB8Lv5/DRLKGIYYwhAqOVBVKBfbEbz/BbaI47dqu+uarxL4+m5wAUQIACncg/mxCIsB+oGdBVvFCd0YS7NahSpIKkL08tC78mvKZGiITPOzXw0VlmryWruNYyIXPPnTDhE31Pw6Q==", + "SigningCertURL": "https://sns.us-west-2.amazonaws.com/SimpleNotificationService-60eadc530605d63b8e62a523676ef735.pem", + "UnsubscribeURL": "https://sns.us-west-2.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-west-2:425362996713:DdTraceXLambda-snssqschecksNestedStacksnssqschecksNestedStackResource58F786C6-11NORKTA1JFML-snsProducerJavaForPythonNonRawsnssqsproducerjavaforpythonnonrawtopicDDBAB6EA-ZBb8uCZzkS0S:d44c53e8-538c-472f-89e1-89c131d9cd26", + "MessageAttributes": {} + }, + "attributes": { + "ApproximateReceiveCount": "1", + "AWSTraceHeader": "Root=1-664616b6-00000000425c5f4f8367f57e;Parent=6b971d513e9f9847;Sampled=1", + "SentTimestamp": "1715869366931", + "SenderId": "AIDAIYLAVTDLUXBIEIX46", + "ApproximateFirstReceiveTimestamp": "1715869366945" + }, + "messageAttributes": {}, + "md5OfBody": "e4f9d1cfee42abb22f764d004e88e7f2", + "eventSource": "aws:sqs", + "eventSourceARN": "arn:aws:sqs:us-west-2:425362996713:DdTraceXLambda-snssqschecksNested-snsProducerJavaForPythonNonRawsns-1vws7QPqW8e6", + "awsRegion": "us-west-2" + } + ] +} diff --git a/tests/test_tracing.py b/tests/test_tracing.py index 9629dcab8..a810eb8a6 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -213,6 +213,14 @@ def _wrap(*args, **kwargs): sampling_priority=1, ), ), + ( + "sns-sqs-java-upstream", + Context( + trace_id=4781801699472307582, + span_id=7752697518321801287, + sampling_priority=1, + ), + ), ( "sqs-string-msg-attribute", Context( From 4d07a0e81ceb7b5664d377b9873fcf9efa6d929a Mon Sep 17 00:00:00 2001 From: Brett Langdon Date: Tue, 21 May 2024 13:06:04 -0400 Subject: [PATCH 172/403] Add rust compiler to base image builder (#489) This will be needed in order to build dd-trace-py from source in the future --- Dockerfile | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Dockerfile b/Dockerfile index 488364a40..407265568 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,6 +7,11 @@ ARG runtime RUN mkdir -p /build/python/lib/$runtime/site-packages WORKDIR /build +# Add Rust compiler which is needed to build dd-trace-py from source +RUN curl https://sh.rustup.rs -sSf | \ + sh -s -- --default-toolchain stable -y +ENV PATH=/root/.cargo/bin:$PATH + # Install datadog_lambda and dependencies from local COPY . . RUN pip install . -t ./python/lib/$runtime/site-packages From 32c454d1731aaeb2a57d53fca6357a9f23093a0e Mon Sep 17 00:00:00 2001 From: kimi <47579703+kimi-p@users.noreply.github.com> Date: Thu, 23 May 2024 13:33:02 -0400 Subject: [PATCH 173/403] Pin Serverless to V3 in Python Layer (#491) --- ci/input_files/build.yaml.tpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/input_files/build.yaml.tpl b/ci/input_files/build.yaml.tpl index 57f9ff0e8..97e5987f1 100644 --- a/ci/input_files/build.yaml.tpl +++ b/ci/input_files/build.yaml.tpl @@ -97,7 +97,7 @@ integration-test ({{ $runtime.name }}-{{ $runtime.arch }}): before_script: - *install-node - EXTERNAL_ID_NAME=integration-test-externalid ROLE_TO_ASSUME=sandbox-integration-test-deployer AWS_ACCOUNT=425362996713 source ./ci/get_secrets.sh - - yarn global add serverless --prefix /usr/local + - yarn global add serverless@^3.38.0 --prefix /usr/local - cd integration_tests && yarn install && cd .. script: - RUNTIME_PARAM={{ $runtime.python_version }} ARCH={{ $runtime.arch }} ./scripts/run_integration_tests.sh From 3f7c439043ce69bd4de76117b1afcca44c039846 Mon Sep 17 00:00:00 2001 From: kimi <47579703+kimi-p@users.noreply.github.com> Date: Tue, 4 Jun 2024 16:51:50 -0400 Subject: [PATCH 174/403] Use sha256 to hash StepFunctions trace id and manually set `_dd.p.tid` (#490) --- datadog_lambda/tracing.py | 48 +++++++++++++++++++++++++++------------ tests/test_tracing.py | 39 ++++++++++++++++++++----------- 2 files changed, 59 insertions(+), 28 deletions(-) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 73ac1e5c8..64a19ccdc 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -72,6 +72,8 @@ propagator = HTTPPropagator() DD_TRACE_JAVA_TRACE_ID_PADDING = "00000000" +HIGHER_64_BITS = "HIGHER_64_BITS" +LOWER_64_BITS = "LOWER_64_BITS" def _convert_xray_trace_id(xray_trace_id): @@ -354,14 +356,16 @@ def extract_context_from_kinesis_event(event, lambda_context): return extract_context_from_lambda_context(lambda_context) -def _deterministic_md5_hash(s: str) -> int: - """MD5 here is to generate trace_id, not for any encryption.""" - hex_number = hashlib.md5(s.encode("ascii")).hexdigest() - binary = bin(int(hex_number, 16)) - binary_str = str(binary) - binary_str_remove_0b = binary_str[2:].rjust(128, "0") - most_significant_64_bits_without_leading_1 = "0" + binary_str_remove_0b[1:-64] - result = int(most_significant_64_bits_without_leading_1, 2) +def _deterministic_sha256_hash(s: str, part: str) -> (int, int): + sha256_hash = hashlib.sha256(s.encode()).hexdigest() + + # First two chars is '0b'. zfill to ensure 256 bits, but we only care about the first 128 bits + binary_hash = bin(int(sha256_hash, 16))[2:].zfill(256) + if part == HIGHER_64_BITS: + updated_binary_hash = "0" + binary_hash[1:64] + else: + updated_binary_hash = "0" + binary_hash[65:128] + result = int(updated_binary_hash, 2) if result == 0: return 1 return result @@ -376,13 +380,27 @@ def extract_context_from_step_functions(event, lambda_context): execution_id = event.get("Execution").get("Id") state_name = event.get("State").get("Name") state_entered_time = event.get("State").get("EnteredTime") - trace_id = _deterministic_md5_hash(execution_id) - parent_id = _deterministic_md5_hash( - f"{execution_id}#{state_name}#{state_entered_time}" + # returning 128 bits since 128bit traceId will be break up into + # traditional traceId and _dd.p.tid tag + # https://github.com/DataDog/dd-trace-py/blob/3e34d21cb9b5e1916e549047158cb119317b96ab/ddtrace/propagation/http.py#L232-L240 + trace_id = _deterministic_sha256_hash(execution_id, LOWER_64_BITS) + + parent_id = _deterministic_sha256_hash( + f"{execution_id}#{state_name}#{state_entered_time}", HIGHER_64_BITS ) + sampling_priority = SamplingPriority.AUTO_KEEP return Context( - trace_id=trace_id, span_id=parent_id, sampling_priority=sampling_priority + trace_id=trace_id, + span_id=parent_id, + sampling_priority=sampling_priority, + # take the higher 64 bits as _dd.p.tid tag and use hex to encode + # [2:] to remove '0x' in the hex str + meta={ + "_dd.p.tid": hex( + _deterministic_sha256_hash(execution_id, HIGHER_64_BITS) + )[2:] + }, ) except Exception as e: logger.debug("The Step Functions trace extractor returned with error %s", e) @@ -1246,9 +1264,9 @@ def create_function_execution_span( "function_version": function_version, "request_id": context.aws_request_id, "resource_names": context.function_name, - "functionname": context.function_name.lower() - if context.function_name - else None, + "functionname": ( + context.function_name.lower() if context.function_name else None + ), "datadog_lambda": datadog_lambda_version, "dd_trace": ddtrace_version, "span.name": "aws.lambda", diff --git a/tests/test_tracing.py b/tests/test_tracing.py index a810eb8a6..b94e968fe 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -20,7 +20,9 @@ XraySubsegment, ) from datadog_lambda.tracing import ( - _deterministic_md5_hash, + HIGHER_64_BITS, + LOWER_64_BITS, + _deterministic_sha256_hash, create_inferred_span, extract_dd_trace_context, create_dd_dummy_metadata_subsegment, @@ -624,17 +626,19 @@ def test_step_function_trace_data(self): ctx, source, event_source = extract_dd_trace_context(sqs_event, lambda_ctx) self.assertEqual(source, "event") expected_context = Context( - trace_id=1074655265866231755, - span_id=4776286484851030060, + trace_id=3675572987363469717, + span_id=6880978411788117524, sampling_priority=1, + meta={"_dd.p.tid": "e987c84b36b11ab"}, ) self.assertEqual(ctx, expected_context) self.assertEqual( get_dd_trace_context(), { - TraceHeader.TRACE_ID: "1074655265866231755", - TraceHeader.PARENT_ID: fake_xray_header_value_parent_decimal, + TraceHeader.TRACE_ID: "3675572987363469717", + TraceHeader.PARENT_ID: "10713633173203262661", TraceHeader.SAMPLING_PRIORITY: "1", + "x-datadog-tags": "_dd.p.tid=e987c84b36b11ab", }, ) create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) @@ -1992,19 +1996,28 @@ def test_mark_trace_as_error_for_5xx_responses_sends_error_metric_and_set_error_ class TestStepFunctionsTraceContext(unittest.TestCase): def test_deterministic_m5_hash(self): - result = _deterministic_md5_hash("some_testing_random_string") - self.assertEqual(2251275791555400689, result) + result = _deterministic_sha256_hash("some_testing_random_string", LOWER_64_BITS) + self.assertEqual(7456137785171041414, result) + + def test_deterministic_m5_hash__result_the_same_as_backend_1(self): + result = _deterministic_sha256_hash( + "arn:aws:states:sa-east-1:425362996713:stateMachine:MyStateMachine-b276uka1j" + "#lambda#1", + HIGHER_64_BITS, + ) + self.assertEqual(3711631873188331089, result) - def test_deterministic_m5_hash__result_the_same_as_backend(self): - result = _deterministic_md5_hash( - "arn:aws:states:sa-east-1:601427271234:express:DatadogStateMachine:acaf1a67-336a-e854-1599-2a627eb2dd8a" - ":c8baf081-31f1-464d-971f-70cb17d01111#step-one#2022-12-08T21:08:19.224Z" + def test_deterministic_m5_hash__result_the_same_as_backend_2(self): + result = _deterministic_sha256_hash( + "arn:aws:states:sa-east-1:425362996713:stateMachine:MyStateMachine-b276uka1j" + "#lambda#2", + HIGHER_64_BITS, ) - self.assertEqual(8034507082463708833, result) + self.assertEqual(5759173372325510050, result) def test_deterministic_m5_hash__always_leading_with_zero(self): for i in range(100): - result = _deterministic_md5_hash(str(i)) + result = _deterministic_sha256_hash(str(i), 64) result_in_binary = bin(int(result)) # Leading zeros will be omitted, so only test for full 64 bits present if len(result_in_binary) == 66: # "0b" + 64 bits. From 350ecf30c0faa560bcc14ac780ba61ca552a11f3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 5 Jun 2024 15:01:38 -0400 Subject: [PATCH 175/403] --- (#487) updated-dependencies: - dependency-name: requests dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 172 ++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 125 insertions(+), 47 deletions(-) diff --git a/poetry.lock b/poetry.lock index 1986c23af..469022341 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,10 +1,9 @@ -# This file is automatically @generated by Poetry 1.4.2 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. [[package]] name = "attrs" version = "23.2.0" description = "Classes Without Boilerplate" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -24,7 +23,6 @@ tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "p name = "boto3" version = "1.34.59" description = "The AWS SDK for Python" -category = "main" optional = true python-versions = ">= 3.8" files = [ @@ -44,7 +42,6 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] name = "botocore" version = "1.34.59" description = "Low-level, data-driven core of boto 3." -category = "main" optional = true python-versions = ">= 3.8" files = [ @@ -67,7 +64,6 @@ crt = ["awscrt (==0.19.19)"] name = "bytecode" version = "0.15.1" description = "Python module to generate and modify bytecode" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -82,7 +78,6 @@ typing-extensions = {version = "*", markers = "python_version < \"3.10\""} name = "cattrs" version = "23.2.3" description = "Composable complex class support for attrs and dataclasses." -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -108,7 +103,6 @@ ujson = ["ujson (>=5.7.0)"] name = "certifi" version = "2024.2.2" description = "Python package for providing Mozilla's CA Bundle." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -120,7 +114,6 @@ files = [ name = "charset-normalizer" version = "3.3.2" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -category = "main" optional = false python-versions = ">=3.7.0" files = [ @@ -220,7 +213,6 @@ files = [ name = "colorama" version = "0.4.6" description = "Cross-platform colored terminal text." -category = "main" optional = true python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ @@ -232,7 +224,6 @@ files = [ name = "datadog" version = "0.48.0" description = "The Datadog Python library" -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ @@ -247,7 +238,6 @@ requests = ">=2.6.0" name = "ddsketch" version = "2.0.4" description = "Distributed quantile sketches" -category = "main" optional = false python-versions = ">=2.7" files = [ @@ -263,7 +253,6 @@ six = "*" name = "ddtrace" version = "2.7.2" description = "Datadog APM client library" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -350,7 +339,6 @@ opentracing = ["opentracing (>=2.0.0)"] name = "deprecated" version = "1.2.14" description = "Python @deprecated decorator to deprecate old python classes, functions or methods." -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -368,7 +356,6 @@ dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "sphinx (<2)", "tox"] name = "envier" version = "0.5.1" description = "Python application configuration via the environment" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -383,7 +370,6 @@ mypy = ["mypy"] name = "exceptiongroup" version = "1.2.0" description = "Backport of PEP 654 (exception groups)" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -398,7 +384,6 @@ test = ["pytest (>=6)"] name = "flake8" version = "5.0.4" description = "the modular source code checker: pep8 pyflakes and co" -category = "main" optional = true python-versions = ">=3.6.1" files = [ @@ -415,7 +400,6 @@ pyflakes = ">=2.5.0,<2.6.0" name = "idna" version = "3.6" description = "Internationalized Domain Names in Applications (IDNA)" -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -427,7 +411,6 @@ files = [ name = "importlib-metadata" version = "6.11.0" description = "Read metadata from Python packages" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -447,7 +430,6 @@ testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs name = "iniconfig" version = "2.0.0" description = "brain-dead simple config-ini parsing" -category = "main" optional = true python-versions = ">=3.7" files = [ @@ -459,7 +441,6 @@ files = [ name = "jmespath" version = "1.0.1" description = "JSON Matching Expressions" -category = "main" optional = true python-versions = ">=3.7" files = [ @@ -471,7 +452,6 @@ files = [ name = "mccabe" version = "0.7.0" description = "McCabe checker, plugin for flake8" -category = "main" optional = true python-versions = ">=3.6" files = [ @@ -483,7 +463,6 @@ files = [ name = "opentelemetry-api" version = "1.23.0" description = "OpenTelemetry Python API" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -499,7 +478,6 @@ importlib-metadata = ">=6.0,<7.0" name = "packaging" version = "24.0" description = "Core utilities for Python packages" -category = "main" optional = true python-versions = ">=3.7" files = [ @@ -511,7 +489,6 @@ files = [ name = "pluggy" version = "1.4.0" description = "plugin and hook calling mechanisms for python" -category = "main" optional = true python-versions = ">=3.8" files = [ @@ -527,7 +504,6 @@ testing = ["pytest", "pytest-benchmark"] name = "protobuf" version = "4.25.3" description = "" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -544,11 +520,21 @@ files = [ {file = "protobuf-4.25.3.tar.gz", hash = "sha256:25b5d0b42fd000320bd7830b349e3b696435f3b329810427a6bcce6a5492cc5c"}, ] +[[package]] +name = "py-cpuinfo" +version = "9.0.0" +description = "Get CPU info with pure Python" +optional = true +python-versions = "*" +files = [ + {file = "py-cpuinfo-9.0.0.tar.gz", hash = "sha256:3cdbbf3fac90dc6f118bfd64384f309edeadd902d7c8fb17f02ffa1fc3f49690"}, + {file = "py_cpuinfo-9.0.0-py3-none-any.whl", hash = "sha256:859625bc251f64e21f077d099d4162689c762b5d6a4c3c97553d56241c9674d5"}, +] + [[package]] name = "pycodestyle" version = "2.9.1" description = "Python style guide checker" -category = "main" optional = true python-versions = ">=3.6" files = [ @@ -560,7 +546,6 @@ files = [ name = "pyflakes" version = "2.5.0" description = "passive checker of Python programs" -category = "main" optional = true python-versions = ">=3.6" files = [ @@ -572,7 +557,6 @@ files = [ name = "pytest" version = "8.1.1" description = "pytest: simple powerful testing with Python" -category = "main" optional = true python-versions = ">=3.8" files = [ @@ -591,11 +575,30 @@ tomli = {version = ">=1", markers = "python_version < \"3.11\""} [package.extras] testing = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] +[[package]] +name = "pytest-benchmark" +version = "4.0.0" +description = "A ``pytest`` fixture for benchmarking code. It will group the tests into rounds that are calibrated to the chosen timer." +optional = true +python-versions = ">=3.7" +files = [ + {file = "pytest-benchmark-4.0.0.tar.gz", hash = "sha256:fb0785b83efe599a6a956361c0691ae1dbb5318018561af10f3e915caa0048d1"}, + {file = "pytest_benchmark-4.0.0-py3-none-any.whl", hash = "sha256:fdb7db64e31c8b277dff9850d2a2556d8b60bcb0ea6524e36e28ffd7c87f71d6"}, +] + +[package.dependencies] +py-cpuinfo = "*" +pytest = ">=3.8" + +[package.extras] +aspect = ["aspectlib"] +elasticsearch = ["elasticsearch"] +histogram = ["pygal", "pygaljs"] + [[package]] name = "python-dateutil" version = "2.9.0.post0" description = "Extensions to the standard Python datetime module" -category = "main" optional = true python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ @@ -608,14 +611,13 @@ six = ">=1.5" [[package]] name = "requests" -version = "2.31.0" +version = "2.32.0" description = "Python HTTP for Humans." -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, - {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, + {file = "requests-2.32.0-py3-none-any.whl", hash = "sha256:f2c3881dddb70d056c5bd7600a4fae312b2a300e39be6a118d30b90bd27262b5"}, + {file = "requests-2.32.0.tar.gz", hash = "sha256:fa5490319474c82ef1d2c9bc459d3652e3ae4ef4c4ebdd18a21145a47ca4b6b8"}, ] [package.dependencies] @@ -632,7 +634,6 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] name = "s3transfer" version = "0.10.0" description = "An Amazon S3 Transfer Manager" -category = "main" optional = true python-versions = ">= 3.8" files = [ @@ -650,7 +651,6 @@ crt = ["botocore[crt] (>=1.33.2,<2.0a.0)"] name = "setuptools" version = "69.1.1" description = "Easily download, build, install, upgrade, and uninstall Python packages" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -667,7 +667,6 @@ testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jar name = "six" version = "1.16.0" description = "Python 2 and 3 compatibility utilities" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -679,7 +678,6 @@ files = [ name = "sqlparse" version = "0.4.4" description = "A non-validating SQL parser." -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -696,7 +694,6 @@ test = ["pytest", "pytest-cov"] name = "tomli" version = "2.0.1" description = "A lil' TOML parser" -category = "main" optional = true python-versions = ">=3.7" files = [ @@ -708,7 +705,6 @@ files = [ name = "typing-extensions" version = "4.10.0" description = "Backported and Experimental Type Hints for Python 3.8+" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -716,11 +712,97 @@ files = [ {file = "typing_extensions-4.10.0.tar.gz", hash = "sha256:b0abd7c89e8fb96f98db18d86106ff1d90ab692004eb746cf6eda2682f91b3cb"}, ] +[[package]] +name = "ujson" +version = "5.10.0" +description = "Ultra fast JSON encoder and decoder for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "ujson-5.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2601aa9ecdbee1118a1c2065323bda35e2c5a2cf0797ef4522d485f9d3ef65bd"}, + {file = "ujson-5.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:348898dd702fc1c4f1051bc3aacbf894caa0927fe2c53e68679c073375f732cf"}, + {file = "ujson-5.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22cffecf73391e8abd65ef5f4e4dd523162a3399d5e84faa6aebbf9583df86d6"}, + {file = "ujson-5.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26b0e2d2366543c1bb4fbd457446f00b0187a2bddf93148ac2da07a53fe51569"}, + {file = "ujson-5.10.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:caf270c6dba1be7a41125cd1e4fc7ba384bf564650beef0df2dd21a00b7f5770"}, + {file = "ujson-5.10.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a245d59f2ffe750446292b0094244df163c3dc96b3ce152a2c837a44e7cda9d1"}, + {file = "ujson-5.10.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:94a87f6e151c5f483d7d54ceef83b45d3a9cca7a9cb453dbdbb3f5a6f64033f5"}, + {file = "ujson-5.10.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:29b443c4c0a113bcbb792c88bea67b675c7ca3ca80c3474784e08bba01c18d51"}, + {file = "ujson-5.10.0-cp310-cp310-win32.whl", hash = "sha256:c18610b9ccd2874950faf474692deee4223a994251bc0a083c114671b64e6518"}, + {file = "ujson-5.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:924f7318c31874d6bb44d9ee1900167ca32aa9b69389b98ecbde34c1698a250f"}, + {file = "ujson-5.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a5b366812c90e69d0f379a53648be10a5db38f9d4ad212b60af00bd4048d0f00"}, + {file = "ujson-5.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:502bf475781e8167f0f9d0e41cd32879d120a524b22358e7f205294224c71126"}, + {file = "ujson-5.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5b91b5d0d9d283e085e821651184a647699430705b15bf274c7896f23fe9c9d8"}, + {file = "ujson-5.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:129e39af3a6d85b9c26d5577169c21d53821d8cf68e079060602e861c6e5da1b"}, + {file = "ujson-5.10.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f77b74475c462cb8b88680471193064d3e715c7c6074b1c8c412cb526466efe9"}, + {file = "ujson-5.10.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7ec0ca8c415e81aa4123501fee7f761abf4b7f386aad348501a26940beb1860f"}, + {file = "ujson-5.10.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ab13a2a9e0b2865a6c6db9271f4b46af1c7476bfd51af1f64585e919b7c07fd4"}, + {file = "ujson-5.10.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:57aaf98b92d72fc70886b5a0e1a1ca52c2320377360341715dd3933a18e827b1"}, + {file = "ujson-5.10.0-cp311-cp311-win32.whl", hash = "sha256:2987713a490ceb27edff77fb184ed09acdc565db700ee852823c3dc3cffe455f"}, + {file = "ujson-5.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:f00ea7e00447918ee0eff2422c4add4c5752b1b60e88fcb3c067d4a21049a720"}, + {file = "ujson-5.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:98ba15d8cbc481ce55695beee9f063189dce91a4b08bc1d03e7f0152cd4bbdd5"}, + {file = "ujson-5.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a9d2edbf1556e4f56e50fab7d8ff993dbad7f54bac68eacdd27a8f55f433578e"}, + {file = "ujson-5.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6627029ae4f52d0e1a2451768c2c37c0c814ffc04f796eb36244cf16b8e57043"}, + {file = "ujson-5.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8ccb77b3e40b151e20519c6ae6d89bfe3f4c14e8e210d910287f778368bb3d1"}, + {file = "ujson-5.10.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3caf9cd64abfeb11a3b661329085c5e167abbe15256b3b68cb5d914ba7396f3"}, + {file = "ujson-5.10.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6e32abdce572e3a8c3d02c886c704a38a1b015a1fb858004e03d20ca7cecbb21"}, + {file = "ujson-5.10.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a65b6af4d903103ee7b6f4f5b85f1bfd0c90ba4eeac6421aae436c9988aa64a2"}, + {file = "ujson-5.10.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:604a046d966457b6cdcacc5aa2ec5314f0e8c42bae52842c1e6fa02ea4bda42e"}, + {file = "ujson-5.10.0-cp312-cp312-win32.whl", hash = "sha256:6dea1c8b4fc921bf78a8ff00bbd2bfe166345f5536c510671bccececb187c80e"}, + {file = "ujson-5.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:38665e7d8290188b1e0d57d584eb8110951a9591363316dd41cf8686ab1d0abc"}, + {file = "ujson-5.10.0-cp313-cp313-macosx_10_9_x86_64.whl", hash = "sha256:618efd84dc1acbd6bff8eaa736bb6c074bfa8b8a98f55b61c38d4ca2c1f7f287"}, + {file = "ujson-5.10.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:38d5d36b4aedfe81dfe251f76c0467399d575d1395a1755de391e58985ab1c2e"}, + {file = "ujson-5.10.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:67079b1f9fb29ed9a2914acf4ef6c02844b3153913eb735d4bf287ee1db6e557"}, + {file = "ujson-5.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d7d0e0ceeb8fe2468c70ec0c37b439dd554e2aa539a8a56365fd761edb418988"}, + {file = "ujson-5.10.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:59e02cd37bc7c44d587a0ba45347cc815fb7a5fe48de16bf05caa5f7d0d2e816"}, + {file = "ujson-5.10.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:2a890b706b64e0065f02577bf6d8ca3b66c11a5e81fb75d757233a38c07a1f20"}, + {file = "ujson-5.10.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:621e34b4632c740ecb491efc7f1fcb4f74b48ddb55e65221995e74e2d00bbff0"}, + {file = "ujson-5.10.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b9500e61fce0cfc86168b248104e954fead61f9be213087153d272e817ec7b4f"}, + {file = "ujson-5.10.0-cp313-cp313-win32.whl", hash = "sha256:4c4fc16f11ac1612f05b6f5781b384716719547e142cfd67b65d035bd85af165"}, + {file = "ujson-5.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:4573fd1695932d4f619928fd09d5d03d917274381649ade4328091ceca175539"}, + {file = "ujson-5.10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a984a3131da7f07563057db1c3020b1350a3e27a8ec46ccbfbf21e5928a43050"}, + {file = "ujson-5.10.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:73814cd1b9db6fc3270e9d8fe3b19f9f89e78ee9d71e8bd6c9a626aeaeaf16bd"}, + {file = "ujson-5.10.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:61e1591ed9376e5eddda202ec229eddc56c612b61ac6ad07f96b91460bb6c2fb"}, + {file = "ujson-5.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2c75269f8205b2690db4572a4a36fe47cd1338e4368bc73a7a0e48789e2e35a"}, + {file = "ujson-5.10.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7223f41e5bf1f919cd8d073e35b229295aa8e0f7b5de07ed1c8fddac63a6bc5d"}, + {file = "ujson-5.10.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:d4dc2fd6b3067c0782e7002ac3b38cf48608ee6366ff176bbd02cf969c9c20fe"}, + {file = "ujson-5.10.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:232cc85f8ee3c454c115455195a205074a56ff42608fd6b942aa4c378ac14dd7"}, + {file = "ujson-5.10.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:cc6139531f13148055d691e442e4bc6601f6dba1e6d521b1585d4788ab0bfad4"}, + {file = "ujson-5.10.0-cp38-cp38-win32.whl", hash = "sha256:e7ce306a42b6b93ca47ac4a3b96683ca554f6d35dd8adc5acfcd55096c8dfcb8"}, + {file = "ujson-5.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:e82d4bb2138ab05e18f089a83b6564fee28048771eb63cdecf4b9b549de8a2cc"}, + {file = "ujson-5.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dfef2814c6b3291c3c5f10065f745a1307d86019dbd7ea50e83504950136ed5b"}, + {file = "ujson-5.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4734ee0745d5928d0ba3a213647f1c4a74a2a28edc6d27b2d6d5bd9fa4319e27"}, + {file = "ujson-5.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d47ebb01bd865fdea43da56254a3930a413f0c5590372a1241514abae8aa7c76"}, + {file = "ujson-5.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dee5e97c2496874acbf1d3e37b521dd1f307349ed955e62d1d2f05382bc36dd5"}, + {file = "ujson-5.10.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7490655a2272a2d0b072ef16b0b58ee462f4973a8f6bbe64917ce5e0a256f9c0"}, + {file = "ujson-5.10.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:ba17799fcddaddf5c1f75a4ba3fd6441f6a4f1e9173f8a786b42450851bd74f1"}, + {file = "ujson-5.10.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:2aff2985cef314f21d0fecc56027505804bc78802c0121343874741650a4d3d1"}, + {file = "ujson-5.10.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:ad88ac75c432674d05b61184178635d44901eb749786c8eb08c102330e6e8996"}, + {file = "ujson-5.10.0-cp39-cp39-win32.whl", hash = "sha256:2544912a71da4ff8c4f7ab5606f947d7299971bdd25a45e008e467ca638d13c9"}, + {file = "ujson-5.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:3ff201d62b1b177a46f113bb43ad300b424b7847f9c5d38b1b4ad8f75d4a282a"}, + {file = "ujson-5.10.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:5b6fee72fa77dc172a28f21693f64d93166534c263adb3f96c413ccc85ef6e64"}, + {file = "ujson-5.10.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:61d0af13a9af01d9f26d2331ce49bb5ac1fb9c814964018ac8df605b5422dcb3"}, + {file = "ujson-5.10.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ecb24f0bdd899d368b715c9e6664166cf694d1e57be73f17759573a6986dd95a"}, + {file = "ujson-5.10.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fbd8fd427f57a03cff3ad6574b5e299131585d9727c8c366da4624a9069ed746"}, + {file = "ujson-5.10.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:beeaf1c48e32f07d8820c705ff8e645f8afa690cca1544adba4ebfa067efdc88"}, + {file = "ujson-5.10.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:baed37ea46d756aca2955e99525cc02d9181de67f25515c468856c38d52b5f3b"}, + {file = "ujson-5.10.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:7663960f08cd5a2bb152f5ee3992e1af7690a64c0e26d31ba7b3ff5b2ee66337"}, + {file = "ujson-5.10.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:d8640fb4072d36b08e95a3a380ba65779d356b2fee8696afeb7794cf0902d0a1"}, + {file = "ujson-5.10.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78778a3aa7aafb11e7ddca4e29f46bc5139131037ad628cc10936764282d6753"}, + {file = "ujson-5.10.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b0111b27f2d5c820e7f2dbad7d48e3338c824e7ac4d2a12da3dc6061cc39c8e6"}, + {file = "ujson-5.10.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:c66962ca7565605b355a9ed478292da628b8f18c0f2793021ca4425abf8b01e5"}, + {file = "ujson-5.10.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ba43cc34cce49cf2d4bc76401a754a81202d8aa926d0e2b79f0ee258cb15d3a4"}, + {file = "ujson-5.10.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:ac56eb983edce27e7f51d05bc8dd820586c6e6be1c5216a6809b0c668bb312b8"}, + {file = "ujson-5.10.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f44bd4b23a0e723bf8b10628288c2c7c335161d6840013d4d5de20e48551773b"}, + {file = "ujson-5.10.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7c10f4654e5326ec14a46bcdeb2b685d4ada6911050aa8baaf3501e57024b804"}, + {file = "ujson-5.10.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0de4971a89a762398006e844ae394bd46991f7c385d7a6a3b93ba229e6dac17e"}, + {file = "ujson-5.10.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:e1402f0564a97d2a52310ae10a64d25bcef94f8dd643fcf5d310219d915484f7"}, + {file = "ujson-5.10.0.tar.gz", hash = "sha256:b3cd8f3c5d8c7738257f1018880444f7b7d9b66232c64649f562d7ba86ad4bc1"}, +] + [[package]] name = "urllib3" version = "1.26.18" description = "HTTP library with thread-safe connection pooling, file post, and more." -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" files = [ @@ -737,7 +819,6 @@ socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] name = "urllib3" version = "2.0.7" description = "HTTP library with thread-safe connection pooling, file post, and more." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -755,7 +836,6 @@ zstd = ["zstandard (>=0.18.0)"] name = "wrapt" version = "1.16.0" description = "Module for decorators, wrappers and monkey patching." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -835,7 +915,6 @@ files = [ name = "xmltodict" version = "0.13.0" description = "Makes working with XML feel like you are working with JSON" -category = "main" optional = false python-versions = ">=3.4" files = [ @@ -847,7 +926,6 @@ files = [ name = "zipp" version = "3.17.0" description = "Backport of pathlib-compatible object wrapper for zip files" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -860,9 +938,9 @@ docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.link testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy (>=0.9.1)", "pytest-ruff"] [extras] -dev = ["boto3", "flake8", "pytest", "requests"] +dev = ["boto3", "flake8", "pytest", "pytest-benchmark", "requests"] [metadata] lock-version = "2.0" python-versions = ">=3.8.0,<4" -content-hash = "80b471e42622e7de85a0795ad15cb6c01e61dd65df354b5e289a2cd47536a26b" +content-hash = "00e1c1ca984076195947582442ca262577e8037d16e2e961040d5f8bad084124" From e7eb340b74d40f5660a8c8106c088899d09f098a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?jordan=20gonz=C3=A1lez?= <30836115+duncanista@users.noreply.github.com> Date: Wed, 5 Jun 2024 15:28:46 -0400 Subject: [PATCH 176/403] update version (#493) --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index b53aa6a73..a29fe46e5 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "5.94.0" +__version__ = "6.95.0" diff --git a/pyproject.toml b/pyproject.toml index f3663f1d6..a97959e9e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "5.94.0" +version = "6.95.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From c62cab907c2943a379ad98647b63e642972178b1 Mon Sep 17 00:00:00 2001 From: kimi <47579703+kimi-p@users.noreply.github.com> Date: Wed, 5 Jun 2024 20:37:58 -0400 Subject: [PATCH 177/403] Update README for breaking change (#494) --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 39bc4ce00..dc5b87576 100644 --- a/README.md +++ b/README.md @@ -47,6 +47,9 @@ The Continuous Profiler works by spawning a thread which periodically wakes up a ## Major Version Notes +### 6.x / Layer version 95+ +- The release changed how Lambda's traceID is hashed if the incoming payload contains Step Functions context object. This change only affects those who uses inject Step Functions context object into Lambda payload. + ### 5.x / Layer version 86+ - Python3.7 support has been [deprecated](https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html) by AWS, and support removed from this library. From a06975c98447c2ce2322603c2f0961279d47a968 Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Mon, 10 Jun 2024 10:49:00 -0700 Subject: [PATCH 178/403] Bump ddtrace version to latest. (#496) --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index a97959e9e..f161de145 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,7 +27,7 @@ classifiers = [ python = ">=3.8.0,<4" datadog = ">=0.41.0,<1.0.0" wrapt = "^1.11.2" -ddtrace = ">=2.7.2" +ddtrace = ">=2.9.0" ujson = ">=5.9.0" urllib3 = [ {version = "<2.0.0", python = "<3.11", optional = true}, From 92e625ea61f9244d1d965f5d039c3f5c2be88ace Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Mon, 10 Jun 2024 12:47:33 -0700 Subject: [PATCH 179/403] Bump version for release v6.96.0 (#497) --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index a29fe46e5..a5490c9a3 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "6.95.0" +__version__ = "6.96.0" diff --git a/pyproject.toml b/pyproject.toml index f161de145..cb144c301 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "6.95.0" +version = "6.96.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 82970d1430e9b49a2f3f4cf23abcb635a2dd25d8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 21 Jun 2024 17:29:30 -0400 Subject: [PATCH 180/403] chore(deps): bump urllib3 from 1.26.18 to 1.26.19 (#499) Bumps [urllib3](https://github.com/urllib3/urllib3) from 1.26.18 to 1.26.19. - [Release notes](https://github.com/urllib3/urllib3/releases) - [Changelog](https://github.com/urllib3/urllib3/blob/1.26.19/CHANGES.rst) - [Commits](https://github.com/urllib3/urllib3/compare/1.26.18...1.26.19) --- updated-dependencies: - dependency-name: urllib3 dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 27 +++++---------------------- 1 file changed, 5 insertions(+), 22 deletions(-) diff --git a/poetry.lock b/poetry.lock index 469022341..026dc813c 100644 --- a/poetry.lock +++ b/poetry.lock @@ -801,13 +801,13 @@ files = [ [[package]] name = "urllib3" -version = "1.26.18" +version = "1.26.19" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ - {file = "urllib3-1.26.18-py2.py3-none-any.whl", hash = "sha256:34b97092d7e0a3a8cf7cd10e386f401b3737364026c45e622aa02903dffe0f07"}, - {file = "urllib3-1.26.18.tar.gz", hash = "sha256:f8ecc1bba5667413457c529ab955bf8c67b45db799d159066261719e328580a0"}, + {file = "urllib3-1.26.19-py2.py3-none-any.whl", hash = "sha256:37a0344459b199fce0e80b0d3569837ec6b6937435c5244e7fd73fa6006830f3"}, + {file = "urllib3-1.26.19.tar.gz", hash = "sha256:3e3d753a8618b86d7de333b4223005f68720bcd6a7d2bcb9fbd2229ec7c1e429"}, ] [package.extras] @@ -815,23 +815,6 @@ brotli = ["brotli (==1.0.9)", "brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotl secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] -[[package]] -name = "urllib3" -version = "2.0.7" -description = "HTTP library with thread-safe connection pooling, file post, and more." -optional = false -python-versions = ">=3.7" -files = [ - {file = "urllib3-2.0.7-py3-none-any.whl", hash = "sha256:fdb6d215c776278489906c2f8916e6e7d4f5a9b602ccbcfdf7f016fc8da0596e"}, - {file = "urllib3-2.0.7.tar.gz", hash = "sha256:c97dfde1f7bd43a71c8d2a58e369e9b2bf692d1334ea9f9cae55add7d0dd0f84"}, -] - -[package.extras] -brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] -secure = ["certifi", "cryptography (>=1.9)", "idna (>=2.0.0)", "pyopenssl (>=17.1.0)", "urllib3-secure-extra"] -socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] -zstd = ["zstandard (>=0.18.0)"] - [[package]] name = "wrapt" version = "1.16.0" @@ -943,4 +926,4 @@ dev = ["boto3", "flake8", "pytest", "pytest-benchmark", "requests"] [metadata] lock-version = "2.0" python-versions = ">=3.8.0,<4" -content-hash = "00e1c1ca984076195947582442ca262577e8037d16e2e961040d5f8bad084124" +content-hash = "e7299f7eef791b1721b37fbc61d325cfe62aa576cb6c9aa7c9db88a23dd41eae" From 4dd3f6278b7101b26f0d985b787334f133455dce Mon Sep 17 00:00:00 2001 From: Sam Brenner <106700075+sabrenner@users.noreply.github.com> Date: Mon, 1 Jul 2024 16:05:53 -0400 Subject: [PATCH 181/403] [MLOB-1009] Auto-Instrument LLM Observability (#500) * add force flush * add enable to init * move flush to after parent aws span finishes * move flushing to be with other flushes --- datadog_lambda/wrapper.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index ba31f2beb..35c98496f 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -54,6 +54,10 @@ if profiling_env_var: from ddtrace.profiling import profiler +llmobs_env_var = os.environ.get("DD_LLMOBS_ENABLED", "false").lower() in ("true", "1") +if llmobs_env_var: + from ddtrace.llmobs import LLMObs + logger = logging.getLogger(__name__) DD_FLUSH_TO_LOG = "DD_FLUSH_TO_LOG" @@ -221,6 +225,10 @@ def __init__(self, func): # Patch third-party libraries for tracing patch_all() + # Enable LLM Observability + if llmobs_env_var: + LLMObs.enable() + logger.debug("datadog_lambda_wrapper initialized") except Exception as e: logger.error(format_err_with_traceback(e)) @@ -373,6 +381,9 @@ def _after(self, event, context): # logs api flush_extension() + if llmobs_env_var: + LLMObs.flush() + if self.encode_authorizer_context and is_authorizer_response(self.response): self._inject_authorizer_span_headers( event.get("requestContext", {}).get("requestId") From c2fc987f26c3814cd7fe21ada3fb61022a9e0b51 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Jul 2024 15:55:05 -0400 Subject: [PATCH 182/403] chore(deps-dev): bump certifi from 2024.2.2 to 2024.7.4 (#502) Bumps [certifi](https://github.com/certifi/python-certifi) from 2024.2.2 to 2024.7.4. - [Commits](https://github.com/certifi/python-certifi/compare/2024.02.02...2024.07.04) --- updated-dependencies: - dependency-name: certifi dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/poetry.lock b/poetry.lock index 026dc813c..6ba3970d3 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. [[package]] name = "attrs" @@ -101,13 +101,13 @@ ujson = ["ujson (>=5.7.0)"] [[package]] name = "certifi" -version = "2024.2.2" +version = "2024.7.4" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"}, - {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"}, + {file = "certifi-2024.7.4-py3-none-any.whl", hash = "sha256:c198e21b1289c2ab85ee4e67bb4b4ef3ead0892059901a8d5b622f24a1101e90"}, + {file = "certifi-2024.7.4.tar.gz", hash = "sha256:5a1e7645bc0ec61a09e26c36f6106dd4cf40c6db3a1fb6352b0244e7fb057c7b"}, ] [[package]] From dc964dbaa1b3c5f2e9adfeff191be7dce2e410ff Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Jul 2024 16:44:16 -0400 Subject: [PATCH 183/403] chore(deps-dev): bump zipp from 3.17.0 to 3.19.1 (#503) Bumps [zipp](https://github.com/jaraco/zipp) from 3.17.0 to 3.19.1. - [Release notes](https://github.com/jaraco/zipp/releases) - [Changelog](https://github.com/jaraco/zipp/blob/main/NEWS.rst) - [Commits](https://github.com/jaraco/zipp/compare/v3.17.0...v3.19.1) --- updated-dependencies: - dependency-name: zipp dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/poetry.lock b/poetry.lock index 6ba3970d3..a8ba57831 100644 --- a/poetry.lock +++ b/poetry.lock @@ -907,18 +907,18 @@ files = [ [[package]] name = "zipp" -version = "3.17.0" +version = "3.19.1" description = "Backport of pathlib-compatible object wrapper for zip files" optional = false python-versions = ">=3.8" files = [ - {file = "zipp-3.17.0-py3-none-any.whl", hash = "sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31"}, - {file = "zipp-3.17.0.tar.gz", hash = "sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0"}, + {file = "zipp-3.19.1-py3-none-any.whl", hash = "sha256:2828e64edb5386ea6a52e7ba7cdb17bb30a73a858f5eb6eb93d8d36f5ea26091"}, + {file = "zipp-3.19.1.tar.gz", hash = "sha256:35427f6d5594f4acf82d25541438348c26736fa9b3afa2754bcd63cdb99d8e8f"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy (>=0.9.1)", "pytest-ruff"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +test = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy", "pytest-ruff (>=0.2.1)"] [extras] dev = ["boto3", "flake8", "pytest", "pytest-benchmark", "requests"] From dae7a88c9f424982deadd7f9aa01bedaaca1893a Mon Sep 17 00:00:00 2001 From: Dylan Yang Date: Wed, 10 Jul 2024 12:19:47 -0400 Subject: [PATCH 184/403] [SVLS-4999] Add Lambda tags to metrics sent via the API (#501) * add function tags to historical dist metrics * fix * add timestamp ceiling * snake_case * exclude alias when creating arn tag --- datadog_lambda/metric.py | 23 +++++++++++++++++-- datadog_lambda/thread_stats_writer.py | 4 +++- datadog_lambda/wrapper.py | 2 +- tests/test_metric.py | 32 ++++++++++++++++++++++++--- 4 files changed, 54 insertions(+), 7 deletions(-) diff --git a/datadog_lambda/metric.py b/datadog_lambda/metric.py index 115686af3..3bc9955fc 100644 --- a/datadog_lambda/metric.py +++ b/datadog_lambda/metric.py @@ -7,6 +7,7 @@ import time import logging import ujson as json +from datetime import datetime, timedelta from datadog_lambda.extension import should_use_extension from datadog_lambda.tags import get_enhanced_metrics_tags, dd_lambda_layer_tag @@ -61,6 +62,16 @@ def lambda_metric(metric_name, value, timestamp=None, tags=None, force_async=Fal if should_use_extension and timestamp is not None: # The extension does not support timestamps for distributions so we create a # a thread stats writer to submit metrics with timestamps to the API + timestamp_ceiling = int( + (datetime.now() - timedelta(hours=4)).timestamp() + ) # 4 hours ago + if timestamp_ceiling > timestamp: + logger.warning( + "Timestamp %s is older than 4 hours, not submitting metric %s", + timestamp, + metric_name, + ) + return global extension_thread_stats if extension_thread_stats is None: from datadog_lambda.thread_stats_writer import ThreadStatsWriter @@ -108,11 +119,19 @@ def write_metric_point_to_stdout(metric_name, value, timestamp=None, tags=[]): ) -def flush_stats(): +def flush_stats(lambda_context=None): lambda_stats.flush() if extension_thread_stats is not None: - extension_thread_stats.flush() + if lambda_context is not None: + tags = get_enhanced_metrics_tags(lambda_context) + split_arn = lambda_context.invoked_function_arn.split(":") + if len(split_arn) > 7: + # Get rid of the alias + split_arn.pop() + arn = ":".join(split_arn) + tags.append("function_arn:" + arn) + extension_thread_stats.flush(tags) def submit_enhanced_metric(metric_name, lambda_context): diff --git a/datadog_lambda/thread_stats_writer.py b/datadog_lambda/thread_stats_writer.py index bfcf3c992..367b8b213 100644 --- a/datadog_lambda/thread_stats_writer.py +++ b/datadog_lambda/thread_stats_writer.py @@ -22,11 +22,13 @@ def distribution(self, metric_name, value, tags=[], timestamp=None): metric_name, value, tags=tags, timestamp=timestamp ) - def flush(self): + def flush(self, tags=None): """ "Flush distributions from ThreadStats to Datadog. Modified based on `datadog.threadstats.base.ThreadStats.flush()`, to gain better control over exception handling. """ + if tags: + self.thread_stats.constant_tags = self.thread_stats.constant_tags + tags _, dists = self.thread_stats._get_aggregate_metrics_and_dists(float("inf")) count_dists = len(dists) if not count_dists: diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 35c98496f..ed3d92b45 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -374,7 +374,7 @@ def _after(self, event, context): logger.debug("Failed to create cold start spans. %s", e) if not self.flush_to_log or should_use_extension: - flush_stats() + flush_stats(context) if should_use_extension and self.local_testing_mode: # when testing locally, the extension does not know when an # invocation completes because it does not have access to the diff --git a/tests/test_metric.py b/tests/test_metric.py index f07a4c6ac..031b11803 100644 --- a/tests/test_metric.py +++ b/tests/test_metric.py @@ -5,7 +5,7 @@ from botocore.exceptions import ClientError as BotocoreClientError from datadog.api.exceptions import ClientError - +from datetime import datetime, timedelta from datadog_lambda.metric import lambda_metric from datadog_lambda.api import decrypt_kms_api_key, KMS_ENCRYPTION_CONTEXT_KEY @@ -49,12 +49,28 @@ def test_lambda_metric_timestamp_with_extension(self): self.mock_metric_extension_thread_stats = patcher.start() self.addCleanup(patcher.stop) - lambda_metric("test_timestamp", 1, 123) + delta = timedelta(minutes=1) + timestamp = int((datetime.now() - delta).timestamp()) + + lambda_metric("test_timestamp", 1, timestamp) self.mock_metric_lambda_stats.distribution.assert_not_called() self.mock_metric_extension_thread_stats.distribution.assert_called_with( - "test_timestamp", 1, timestamp=123, tags=[dd_lambda_layer_tag] + "test_timestamp", 1, timestamp=timestamp, tags=[dd_lambda_layer_tag] ) + @patch("datadog_lambda.metric.should_use_extension", True) + def test_lambda_metric_invalid_timestamp_with_extension(self): + patcher = patch("datadog_lambda.metric.extension_thread_stats") + self.mock_metric_extension_thread_stats = patcher.start() + self.addCleanup(patcher.stop) + + delta = timedelta(hours=5) + timestamp = int((datetime.now() - delta).timestamp()) + + lambda_metric("test_timestamp", 1, timestamp) + self.mock_metric_lambda_stats.distribution.assert_not_called() + self.mock_metric_extension_thread_stats.distribution.assert_not_called() + def test_lambda_metric_flush_to_log(self): os.environ["DD_FLUSH_TO_LOG"] = "True" @@ -84,6 +100,16 @@ def test_retry_on_remote_disconnected(self): lambda_stats.flush() self.assertEqual(self.mock_threadstats_flush_distributions.call_count, 2) + def test_flush_stats_with_tags(self): + lambda_stats = ThreadStatsWriter(True) + tags = ["tag1:value1", "tag2:value2"] + lambda_stats.flush(tags) + self.mock_threadstats_flush_distributions.assert_called_once_with( + lambda_stats.thread_stats._get_aggregate_metrics_and_dists(float("inf"))[1] + ) + for tag in tags: + self.assertTrue(tag in lambda_stats.thread_stats.constant_tags) + MOCK_FUNCTION_NAME = "myFunction" From 7761a1ef83c7a4a33b3978cedef4ba5cabbfcb34 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Jul 2024 17:24:18 -0400 Subject: [PATCH 185/403] chore(deps-dev): bump setuptools from 69.1.1 to 70.0.0 (#504) Bumps [setuptools](https://github.com/pypa/setuptools) from 69.1.1 to 70.0.0. - [Release notes](https://github.com/pypa/setuptools/releases) - [Changelog](https://github.com/pypa/setuptools/blob/main/NEWS.rst) - [Commits](https://github.com/pypa/setuptools/compare/v69.1.1...v70.0.0) --- updated-dependencies: - dependency-name: setuptools dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/poetry.lock b/poetry.lock index a8ba57831..2a77ca8f1 100644 --- a/poetry.lock +++ b/poetry.lock @@ -649,19 +649,18 @@ crt = ["botocore[crt] (>=1.33.2,<2.0a.0)"] [[package]] name = "setuptools" -version = "69.1.1" +version = "70.0.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-69.1.1-py3-none-any.whl", hash = "sha256:02fa291a0471b3a18b2b2481ed902af520c69e8ae0919c13da936542754b4c56"}, - {file = "setuptools-69.1.1.tar.gz", hash = "sha256:5c0806c7d9af348e6dd3777b4f4dbb42c7ad85b190104837488eab9a7c945cf8"}, + {file = "setuptools-70.0.0-py3-none-any.whl", hash = "sha256:54faa7f2e8d2d11bcd2c07bed282eef1046b5c080d1c32add737d7b5817b1ad4"}, + {file = "setuptools-70.0.0.tar.gz", hash = "sha256:f211a66637b8fa059bb28183da127d4e86396c991a942b028c6650d4319c3fd0"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.2)", "pip (>=19.1)", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] -testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.2)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +testing = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mypy (==1.9)", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.1)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] [[package]] name = "six" From 50fb98707d2c85995e48ca1f98cd58f0ffdb8e1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?jordan=20gonz=C3=A1lez?= <30836115+duncanista@users.noreply.github.com> Date: Tue, 16 Jul 2024 12:54:56 -0400 Subject: [PATCH 186/403] upgrade dependencies (#505) --- poetry.lock | 333 +++++++++++++++++++++++++------------------------ pyproject.toml | 2 +- 2 files changed, 171 insertions(+), 164 deletions(-) diff --git a/poetry.lock b/poetry.lock index 2a77ca8f1..3eed0293f 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. [[package]] name = "attrs" @@ -21,17 +21,17 @@ tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "p [[package]] name = "boto3" -version = "1.34.59" +version = "1.34.144" description = "The AWS SDK for Python" optional = true -python-versions = ">= 3.8" +python-versions = ">=3.8" files = [ - {file = "boto3-1.34.59-py3-none-any.whl", hash = "sha256:004e67b078be58d34469406f93cc8b95bc43becef4bbe44523a0b8e51f84c668"}, - {file = "boto3-1.34.59.tar.gz", hash = "sha256:162edf182e53c198137a28432a626dba103f787a8f5000ed4758b73ccd203fa0"}, + {file = "boto3-1.34.144-py3-none-any.whl", hash = "sha256:b8433d481d50b68a0162c0379c0dd4aabfc3d1ad901800beb5b87815997511c1"}, + {file = "boto3-1.34.144.tar.gz", hash = "sha256:2f3e88b10b8fcc5f6100a9d74cd28230edc9d4fa226d99dd40a3ab38ac213673"}, ] [package.dependencies] -botocore = ">=1.34.59,<1.35.0" +botocore = ">=1.34.144,<1.35.0" jmespath = ">=0.7.1,<2.0.0" s3transfer = ">=0.10.0,<0.11.0" @@ -40,13 +40,13 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.34.59" +version = "1.34.144" description = "Low-level, data-driven core of boto 3." optional = true -python-versions = ">= 3.8" +python-versions = ">=3.8" files = [ - {file = "botocore-1.34.59-py3-none-any.whl", hash = "sha256:4bc112dafb1679ab571117593f7656604726a3da0e5ae5bad00ea772fa40e75c"}, - {file = "botocore-1.34.59.tar.gz", hash = "sha256:24edb4d21d7c97dea0c6c4a80d36b3809b1443a30b0bd5e317d6c319dfac823f"}, + {file = "botocore-1.34.144-py3-none-any.whl", hash = "sha256:a2cf26e1bf10d5917a2285e50257bc44e94a1d16574f282f3274f7a5d8d1f08b"}, + {file = "botocore-1.34.144.tar.gz", hash = "sha256:4215db28d25309d59c99507f1f77df9089e5bebbad35f6e19c7c44ec5383a3e8"}, ] [package.dependencies] @@ -54,11 +54,11 @@ jmespath = ">=0.7.1,<2.0.0" python-dateutil = ">=2.1,<3.0.0" urllib3 = [ {version = ">=1.25.4,<1.27", markers = "python_version < \"3.10\""}, - {version = ">=1.25.4,<2.1", markers = "python_version >= \"3.10\""}, + {version = ">=1.25.4,<2.2.0 || >2.2.0,<3", markers = "python_version >= \"3.10\""}, ] [package.extras] -crt = ["awscrt (==0.19.19)"] +crt = ["awscrt (==0.20.11)"] [[package]] name = "bytecode" @@ -222,13 +222,13 @@ files = [ [[package]] name = "datadog" -version = "0.48.0" +version = "0.49.1" description = "The Datadog Python library" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ - {file = "datadog-0.48.0-py2.py3-none-any.whl", hash = "sha256:c3f819e2dc632a546a5b4e8d45409e996d4fa18c60df7814c82eda548e0cca59"}, - {file = "datadog-0.48.0.tar.gz", hash = "sha256:d4d661358c3e7f801fbfe15118f5ccf08b9bd9b1f45b8b910605965283edad64"}, + {file = "datadog-0.49.1-py2.py3-none-any.whl", hash = "sha256:4a56d57490ea699a0dfd9253547485a57b4120e93489defadcf95c66272374d6"}, + {file = "datadog-0.49.1.tar.gz", hash = "sha256:4cb7a7991af6cadb868fe450cd456473e65f11fc678b7d7cf61044ff1c6074d8"}, ] [package.dependencies] @@ -236,103 +236,109 @@ requests = ">=2.6.0" [[package]] name = "ddsketch" -version = "2.0.4" +version = "3.0.1" description = "Distributed quantile sketches" optional = false -python-versions = ">=2.7" +python-versions = ">=3.7" files = [ - {file = "ddsketch-2.0.4-py3-none-any.whl", hash = "sha256:3227a270fd686a29d3a7128f9352ccf852314410380fc11384356f1ae2a75938"}, - {file = "ddsketch-2.0.4.tar.gz", hash = "sha256:32f7314077fec8747d4faebaec2c854b5ffc399c5f552f73fa94024f48d74d64"}, + {file = "ddsketch-3.0.1-py3-none-any.whl", hash = "sha256:6d047b455fe2837c43d366ff1ae6ba0c3166e15499de8688437a75cea914224e"}, + {file = "ddsketch-3.0.1.tar.gz", hash = "sha256:aa8f20b2965e61731ca4fee2ca9c209f397f5bbb23f9d192ec8bd7a2f5bd9824"}, ] [package.dependencies] -protobuf = {version = ">=3.0.0", markers = "python_version >= \"3.7\""} six = "*" +[package.extras] +serialization = ["protobuf (>=3.0.0)"] + [[package]] name = "ddtrace" -version = "2.7.2" +version = "2.9.2" description = "Datadog APM client library" optional = false python-versions = ">=3.7" files = [ - {file = "ddtrace-2.7.2-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:31a0a4ffefdc6c20e9e4ef663b411ea66bd2a4113bec7f10292df00b75e883f3"}, - {file = "ddtrace-2.7.2-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:fd148fce8c18a278b055f7e1b4c56e5b3214cd17fc42882dfb987826a00197d6"}, - {file = "ddtrace-2.7.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce0febe3be1c06b7b3ea64aa21d0a37bc06f9a4c3291e833e95687c10be459a2"}, - {file = "ddtrace-2.7.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6cc7663f1c7d42f47266ae135b4ee16773e125417597e24da86bb78ecc82f85b"}, - {file = "ddtrace-2.7.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06c6b7e6f153fb739de3da62cb9d99283a2669f8ebeb92238d272803939c7433"}, - {file = "ddtrace-2.7.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:a7879965428bb7c6abd020031ef3a5ffcc0104b7c15f021dcc0315bc421a721a"}, - {file = "ddtrace-2.7.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:5e3d33c43e8302c72d1b2b7a854d4a17c787973e61ec76cd7fc6434839aefc7c"}, - {file = "ddtrace-2.7.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fcbb686d0ffe47df42fe092e020302c912c956da742cf4787e616c8f73a26c8b"}, - {file = "ddtrace-2.7.2-cp310-cp310-win32.whl", hash = "sha256:f9a76c303cec59216b706186e2de38ae1d650405660277fed121c7658f320cf7"}, - {file = "ddtrace-2.7.2-cp310-cp310-win_amd64.whl", hash = "sha256:4385b4f4f8ec7313ead4d852d8dd50cae4c45f49b3893cc6aa4a64a3b3be93b8"}, - {file = "ddtrace-2.7.2-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:4dd90dc7c173edc32283b4f70937ea01ec43924a1b0af7ef6bbaa22076210860"}, - {file = "ddtrace-2.7.2-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:923462adde72f363821c0c165ac78aa76236ae12022d44ad7c51b8870595bbaa"}, - {file = "ddtrace-2.7.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:190c4eefc1e3c0a7befd995bf10b51451ddd497fb636fd825d7f8527e28c5864"}, - {file = "ddtrace-2.7.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c5016bc73e92adef4017e8cf7fff8a49a2c0fad8dcac600459fa30f63dbab8be"}, - {file = "ddtrace-2.7.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c230035c714ed9ea3dd16d65813f539ba9c30c87294107d5f77cdddad430a086"}, - {file = "ddtrace-2.7.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1689277365728d5735931b98ef64115d958ab76fb698472e7d92a1f71bf0000b"}, - {file = "ddtrace-2.7.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:3e3a19ae9e8e2e6aff56aa93d73a0d72ce5530c1f0347b7ebba68b5c437efe49"}, - {file = "ddtrace-2.7.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e03cf1787728ae01cb8cd0b474b09461d47afb15a2146b1753bee80a27568d86"}, - {file = "ddtrace-2.7.2-cp311-cp311-win32.whl", hash = "sha256:081ba7c3d876c6dde6d3f8078205e3ae06932f0dbe5cb283f9bdc99052c262de"}, - {file = "ddtrace-2.7.2-cp311-cp311-win_amd64.whl", hash = "sha256:0299654ce610fe4d0f73b9c599bfaacd17537d1193cc7be95fb8e5238bed0ffa"}, - {file = "ddtrace-2.7.2-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:283d1ed0d496e07b80ef372f5e78d5a5aa86a70b59b1a0039d655d5796d8cd37"}, - {file = "ddtrace-2.7.2-cp312-cp312-macosx_11_0_x86_64.whl", hash = "sha256:a0e0ad2f20ce6942b3ceca0578be72416aacd6f63a7ef07de5a86ea524b16ad4"}, - {file = "ddtrace-2.7.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2094747698d8ffd50339b4c8142923371272a4e919a1f56cc75e8cce868ff638"}, - {file = "ddtrace-2.7.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dd239ba8a9762ef1defb7bb5c70e8b488987b462936f6f9f70a6613b35376178"}, - {file = "ddtrace-2.7.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82170d1d5153554dcfd475c0c1ab64f315cc7f00c5cf6c6bb471025b661ecc41"}, - {file = "ddtrace-2.7.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3140f5db9313f6a14d02a9036f16a1d5311261daec2d90160db829d08593ce1e"}, - {file = "ddtrace-2.7.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:134194fa8e8c14798374074c5472f33479cf5220dfccea79e1abaea7f57bdef2"}, - {file = "ddtrace-2.7.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5ce6f31d785762b80a8a8d346bdd302f15977cf0b0e13f81f4fdbf7815bae2c4"}, - {file = "ddtrace-2.7.2-cp312-cp312-win32.whl", hash = "sha256:0e6cd36d2373345863b3664f440b0255c1313e4f7ea3ac343de38ffe5402fa90"}, - {file = "ddtrace-2.7.2-cp312-cp312-win_amd64.whl", hash = "sha256:8ee761d7dfa01ccfeeb81215d16da27d0cfcc47a58a6b582dfd5816bccb64005"}, - {file = "ddtrace-2.7.2-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:c3b55cb4fc6ec1994f7f1e44dfbf62f46069b16cebe8b26781a3b198c821591d"}, - {file = "ddtrace-2.7.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7aa91a2c729f9187a75084b2a0fce23c63a8d3181e9c33a640e9e638ddbc7079"}, - {file = "ddtrace-2.7.2-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b4ce51a957f21ae997795a9a2e9f11fb988718417012e2a5765f74e157f3099a"}, - {file = "ddtrace-2.7.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0fb0adacd1116b1043f92382fd3dc9e7deabd6d788c15c2b1e3b0f75c4adb711"}, - {file = "ddtrace-2.7.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:99a6cf91b3ab290afac26fa61b81b746677b1627df12373919219fd562881c2d"}, - {file = "ddtrace-2.7.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:d4f8ac0ac0970d65223247c879729c4c489e3cc69529b54e9dd2051efc68a007"}, - {file = "ddtrace-2.7.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:6052dd35bb0ec6d1023f0c4de9b0426a9e16d80fd8152d8eb8135e34bf41e1df"}, - {file = "ddtrace-2.7.2-cp37-cp37m-win32.whl", hash = "sha256:641e440ac175bb04e03e34543ed48a3ddfe4a393712c62deb2f2c78adb48db90"}, - {file = "ddtrace-2.7.2-cp37-cp37m-win_amd64.whl", hash = "sha256:1687a40014873860b8c87a9a3e18dee51fa6a593e4758f973ed4cb8832b4e53a"}, - {file = "ddtrace-2.7.2-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:d5529a7e4a083ec1388872c5a9b41b38622a7146d27d3bdee81d701f0ac6fc38"}, - {file = "ddtrace-2.7.2-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:df4b51f39b260d8706fdf5417f3f94277f76b951cbbeabdb2b3a597d5f6cd0c1"}, - {file = "ddtrace-2.7.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:27c6e8c3b1bf642ca74afe985985450f2ca18e686ecb4f2e0ab978ae5fc03f8f"}, - {file = "ddtrace-2.7.2-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c0399c670229651517338c456304a2a65ce54387b8ddecf2da7011b259c0817d"}, - {file = "ddtrace-2.7.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c81a89236f3ea91ad0e9da1fef32d9420c0d4614a44ef0a2cab168444cdb0d8"}, - {file = "ddtrace-2.7.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:06d840db3283999ddacc3c9d8f5e5f0e0692ce635500d51f5e7e7ed2109c989a"}, - {file = "ddtrace-2.7.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:0e242cab1c2a153e418060f66e477e21b45cd33843959a6d000f3f9ea8a9c06a"}, - {file = "ddtrace-2.7.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b51e2230d805873974af882c19026030f40aee14a8d1b55d378443659ff4463f"}, - {file = "ddtrace-2.7.2-cp38-cp38-win32.whl", hash = "sha256:7c589ee49644d6c022928ebe49e4586b22ac40f8f841d67e01eeda4a6f61cea0"}, - {file = "ddtrace-2.7.2-cp38-cp38-win_amd64.whl", hash = "sha256:0974c8f36f0f1be229befede438ba91c1da715abd68091c0c0e21ec4d3d85f79"}, - {file = "ddtrace-2.7.2-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:b602703fff34f3397df22fdc1184fc039d89e8c5b07cc2bcc330c9b83bcc6ad6"}, - {file = "ddtrace-2.7.2-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:81ff83a9cdc033175780379d83af4bb03785bfd3c71672954f00c5a7f8d0d63b"}, - {file = "ddtrace-2.7.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6f7e2fa06c61f9a26b253898654a97b49b805942aee19fb7c4b95e17105c6a5"}, - {file = "ddtrace-2.7.2-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d0140acfd73449e8cfa090e322f76ff85f385ce4337111ed2780cd2ee62e5e4b"}, - {file = "ddtrace-2.7.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9af429e4c48cae2fb6a9a51cdb6ccc2dc0cabbc9905c1ce6e9062335da0b9db"}, - {file = "ddtrace-2.7.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:09330db7a2c0ed91d244ef653f0aa261153dc0820874923c325058352b5278fd"}, - {file = "ddtrace-2.7.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:8638ddb94d77bdf55cc64718af66b172c4ff677b57c9e59dfd9dc8f630fb3169"}, - {file = "ddtrace-2.7.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0ba0668e439134b3f258ddcc3e5c1d1d8848a40954087288312557b455b6967e"}, - {file = "ddtrace-2.7.2-cp39-cp39-win32.whl", hash = "sha256:aa3c927299aa134ccaf8821eb7284366c60e29a542d0e7738e0b7dd9182b2025"}, - {file = "ddtrace-2.7.2-cp39-cp39-win_amd64.whl", hash = "sha256:7e3f36e91d1a91fb083258b09fa7f887a295321b4dc928630ce748ec664e70be"}, - {file = "ddtrace-2.7.2.tar.gz", hash = "sha256:89a0b4b30220aeb68c2845fa21e51ec9bf915a1893cf003850b9d8022e7cb72a"}, + {file = "ddtrace-2.9.2-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:aaa4c4c0d001e5695d8d8f03361e25fbba62716bd4dbc861daa45bc71802a165"}, + {file = "ddtrace-2.9.2-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:99fa4f3437dd908622d015fd0a92015eb2bb718554fd6e9cb3c8984737ca8173"}, + {file = "ddtrace-2.9.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c3be4f5ea1378138f26b6a84b23048a681e705e602f5f4a2db6c9f1ae6f52c9"}, + {file = "ddtrace-2.9.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b79f44ebd64496e8d2c85250290486f08cf338b02cb484a24d17204d11af39d6"}, + {file = "ddtrace-2.9.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e0f9bcf9dc2fee145c1fa295e451898dd0b6fbdbdd7cc205b5c226c945369238"}, + {file = "ddtrace-2.9.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:6418399be4eb0100d8c25e7154d94032dafb08f3387864db6ea64ae6b01044a4"}, + {file = "ddtrace-2.9.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:72a3d3cdca7508b787e6bd0d09a75f1cb7cba9580f91591be51af22c9d9bf9bf"}, + {file = "ddtrace-2.9.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:93efef2f0b88792fefe5840c47c9f262fc94471078c0cf10f54831b44ea422b6"}, + {file = "ddtrace-2.9.2-cp310-cp310-win32.whl", hash = "sha256:5ad725a61da4b4d76368b7e205ae327ae39cab5ec64d8c6e16760bc86d6a6507"}, + {file = "ddtrace-2.9.2-cp310-cp310-win_amd64.whl", hash = "sha256:9a31c9a2d714b3d45fb5ae24b912521d4569d1dac3fd3fc3c77ec9fcba5dfd26"}, + {file = "ddtrace-2.9.2-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:358ccb1b7bf9ec39658e00aa1ba4972712603deefb5562219ce0ccc5e7521e52"}, + {file = "ddtrace-2.9.2-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:98b44e28151b07a9ce8ae27951978ac340f66640c833dee9b396831ddf06a9a6"}, + {file = "ddtrace-2.9.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c9d409e6d061bbe3d026696403edd37b390a4a8bc661b7490c02199a8a9da7e9"}, + {file = "ddtrace-2.9.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6a26ecdf3f7666e604bb15e20d32b63d948e85bcde6c63b2f1d45af0681079bf"}, + {file = "ddtrace-2.9.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:519e2a9e6daf592bf4a9993ae782621016770b5182ed7567fba0ef23812ca6d7"}, + {file = "ddtrace-2.9.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:2243582de6aef14fc87621169d586679572cf3f39c79cef6f898963f37a6a296"}, + {file = "ddtrace-2.9.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c176c0ea15e2b94f139ca68ba3d5ee48430c717ae785cd9e51eeb59634629c94"}, + {file = "ddtrace-2.9.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e9befe7b40141a686f991fd98780b9dfe31e55b9ed3cf685a5fcfa256789b879"}, + {file = "ddtrace-2.9.2-cp311-cp311-win32.whl", hash = "sha256:84f1a7b517f1790374ad1079e783cd893634518521ae6e2ed41a4e343227830b"}, + {file = "ddtrace-2.9.2-cp311-cp311-win_amd64.whl", hash = "sha256:4c34823c3ed3e1da5fe11de483c4091179f21fb4f255144a5082af2f52a1e02e"}, + {file = "ddtrace-2.9.2-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:b5b749b609036917cab6ae9187aaf4e83051e0396bd0d4d9f2af4bfbaf866bf2"}, + {file = "ddtrace-2.9.2-cp312-cp312-macosx_11_0_x86_64.whl", hash = "sha256:b1f21076ecb3a7736e92dc288ff6437337098f9acc6dcbbebfcfb7a1ce7aabff"}, + {file = "ddtrace-2.9.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8bb857a7a66ac56d041f2e40778f88cea51db55d0611beb36b6a45b52504c90d"}, + {file = "ddtrace-2.9.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f1f7e403b77f6c26d2f813712c38cda09d4b5c2e07e5e6e578eb71ce674382ce"}, + {file = "ddtrace-2.9.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dace336a9c14f6f8953732806d4fccee489d670aac6b2b75a3fa9eb94c32fda6"}, + {file = "ddtrace-2.9.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e7c59ce06f887db4a6a0309bdc504beada8969979876dc8f54681e10d1993426"}, + {file = "ddtrace-2.9.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:0b7c81323a952da21e7a85b20334bb33ba47600c7b7604f4267022217c7025e3"}, + {file = "ddtrace-2.9.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:07aa83c4a6e6822fd365a92f972576980badc3d426d257d9814212d0a2a5f837"}, + {file = "ddtrace-2.9.2-cp312-cp312-win32.whl", hash = "sha256:5fe686fe657b9871f6faf2f7f7e97e659421c17dc5903b43ff174f8866726a21"}, + {file = "ddtrace-2.9.2-cp312-cp312-win_amd64.whl", hash = "sha256:858b61e57cb11c5c467907add391ce8ad2dec823bc326c8e1505368c4f0ac7d4"}, + {file = "ddtrace-2.9.2-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:28ee6dee988609f1d720934d52f6a29b7c9b914a39fb70528a51a194d1ab3b8d"}, + {file = "ddtrace-2.9.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:07ade55550c3b1debb96f9ffdb716eae5bd48335d3ca54e9c5b9e492a7dc91f2"}, + {file = "ddtrace-2.9.2-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:41cf398da7a28a78c108cccfc87abe33d7e8936f99462f6fee3877fb180913c0"}, + {file = "ddtrace-2.9.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d79259e140070dc2533c3bc5776df7731baa9e2f078daf4ce708efd33ac00d3"}, + {file = "ddtrace-2.9.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:753f845308d97f8290d4ff7ce92e7875b83efa4eb5ff3fac8e2042caf6761bfb"}, + {file = "ddtrace-2.9.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:28c88f5efc946dddefc320c682c93bb65001ee38e78569e496b20823f21ef745"}, + {file = "ddtrace-2.9.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:765d7c031b54da32fc18cbeafadd3c22cd1a6f98317e6e0498bf2898fbeae350"}, + {file = "ddtrace-2.9.2-cp37-cp37m-win32.whl", hash = "sha256:7b5dddfbd23646a16ad9b991fd2866628dc56b7abe8dd7100962ce0681b738c9"}, + {file = "ddtrace-2.9.2-cp37-cp37m-win_amd64.whl", hash = "sha256:c8c17f5f57f65ea95d6bf61511869abfaa10fb555e81b0294e30226afa047115"}, + {file = "ddtrace-2.9.2-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:aa329ace4909bd402de3d9dbaaaff9e3545fd5a9fad1c72a39e075743c673099"}, + {file = "ddtrace-2.9.2-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:afebe7e5467a743795a878cad3e9658f704c5572ca398a70a840da034a571f67"}, + {file = "ddtrace-2.9.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd1271c597f088b1ff7e5881138a1317a799025c834bd496cecfdcb816748e51"}, + {file = "ddtrace-2.9.2-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:24da863c984d3261c7dae9362cf48c01fc0dc1557c92de336a1bbeb08452e046"}, + {file = "ddtrace-2.9.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e68014fa46b4be6e58cc64feb3516ec856df714ce3d4576f3d6df9079ddfba8f"}, + {file = "ddtrace-2.9.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:10824581a708c643515747e814c6b146bed6d91e687a825111858a198eee75e6"}, + {file = "ddtrace-2.9.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:03c6874475db7d7b1fb563cd6aa3ba0c22ee72bb8c6cceb36c84dba6ca21e2f4"}, + {file = "ddtrace-2.9.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b91b8cfc7239317fe6b185beb0b8153769b43bf11fb2cda9e6e2996962e4b820"}, + {file = "ddtrace-2.9.2-cp38-cp38-win32.whl", hash = "sha256:0d9456defb679d6225d32967902853cd4d8b01f55e4da18089a9ffa9d6495328"}, + {file = "ddtrace-2.9.2-cp38-cp38-win_amd64.whl", hash = "sha256:d39c2da38c295aba1810083ce63d37041e3e40a06add960f6edf5a33517f743c"}, + {file = "ddtrace-2.9.2-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:c251e684c9e3a7828308a74d2be073d88cf28b4be457a5c201a2755ef9205d24"}, + {file = "ddtrace-2.9.2-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:707151d2aa4f04388af4e3e8b0783e99b110fa0f2f1db775f64667c62bd249c2"}, + {file = "ddtrace-2.9.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c536a53d628e8d96812edea10d84e9df2f9022a7e932beb10e187c98f4471ec"}, + {file = "ddtrace-2.9.2-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9c093fbabdeb6ecc6a749b1b5f80ebe557dcf768984bb42aadf66c57f04f3b85"}, + {file = "ddtrace-2.9.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4d5b6c58d4ebc988f61a5f81e8953531ee59490240d69463592ff63dd2f6e00b"}, + {file = "ddtrace-2.9.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:85511fade95b21ca29e9ba314eeb5847733a81128d8cbdbc43012caba45c03c8"}, + {file = "ddtrace-2.9.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:8b3b2f64414c57742e7be924079e80576110abf8725f70e56bce0603877d08bf"}, + {file = "ddtrace-2.9.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ad04028487d7cdb44318323ab4438c873e01855c3391a3c47a4400ff499bcbfc"}, + {file = "ddtrace-2.9.2-cp39-cp39-win32.whl", hash = "sha256:206759c2847ee7174e14c4a2cffd3086ad55aca10d73f50b24cc2e00ec22e871"}, + {file = "ddtrace-2.9.2-cp39-cp39-win_amd64.whl", hash = "sha256:d916dbfeeebb38cd48c64c771b74276b716902471f6bf9c02e8d5c278f0baad1"}, + {file = "ddtrace-2.9.2.tar.gz", hash = "sha256:40775def3f3fc01d1c4c5eec64f7f624621eb394fe62d107c27e181123443716"}, ] [package.dependencies] attrs = ">=20" -bytecode = {version = "*", markers = "python_version >= \"3.8\""} +bytecode = [ + {version = ">=0.13.0", markers = "python_version < \"3.11.0\""}, + {version = ">=0.15.0", markers = "python_version >= \"3.12.0\""}, + {version = ">=0.14.0", markers = "python_version ~= \"3.11.0\""}, +] cattrs = "*" -ddsketch = ">=2.0.1" -envier = "*" +ddsketch = ">=3.0.0" +envier = ">=0.5,<1.0" opentelemetry-api = ">=1" protobuf = ">=3" setuptools = {version = "*", markers = "python_version >= \"3.12\""} six = ">=1.12.0" -sqlparse = ">=0.2.2" typing-extensions = "*" xmltodict = ">=0.12" [package.extras] +openai = ["tiktoken"] opentracing = ["opentracing (>=2.0.0)"] [[package]] @@ -354,13 +360,13 @@ dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "sphinx (<2)", "tox"] [[package]] name = "envier" -version = "0.5.1" +version = "0.5.2" description = "Python application configuration via the environment" optional = false python-versions = ">=3.7" files = [ - {file = "envier-0.5.1-py3-none-any.whl", hash = "sha256:b45ef6051fea33d0c32a64e186bff2cfb446e2242d6781216c9bc9ce708c5909"}, - {file = "envier-0.5.1.tar.gz", hash = "sha256:bd5ccf707447973ea0f4125b7df202ba415ad888bcdcb8df80e0b002ee11ffdb"}, + {file = "envier-0.5.2-py3-none-any.whl", hash = "sha256:65099cf3aa9b3b3b4b92db2f7d29e2910672e085b76f7e587d2167561a834add"}, + {file = "envier-0.5.2.tar.gz", hash = "sha256:4e7e398cb09a8dd360508ef7e12511a152355426d2544b8487a34dad27cc20ad"}, ] [package.extras] @@ -368,13 +374,13 @@ mypy = ["mypy"] [[package]] name = "exceptiongroup" -version = "1.2.0" +version = "1.2.2" description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" files = [ - {file = "exceptiongroup-1.2.0-py3-none-any.whl", hash = "sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14"}, - {file = "exceptiongroup-1.2.0.tar.gz", hash = "sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68"}, + {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, + {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, ] [package.extras] @@ -398,33 +404,33 @@ pyflakes = ">=2.5.0,<2.6.0" [[package]] name = "idna" -version = "3.6" +version = "3.7" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.5" files = [ - {file = "idna-3.6-py3-none-any.whl", hash = "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f"}, - {file = "idna-3.6.tar.gz", hash = "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca"}, + {file = "idna-3.7-py3-none-any.whl", hash = "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"}, + {file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"}, ] [[package]] name = "importlib-metadata" -version = "6.11.0" +version = "7.1.0" description = "Read metadata from Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "importlib_metadata-6.11.0-py3-none-any.whl", hash = "sha256:f0afba6205ad8f8947c7d338b5342d5db2afbfd82f9cbef7879a9539cc12eb9b"}, - {file = "importlib_metadata-6.11.0.tar.gz", hash = "sha256:1231cf92d825c9e03cfc4da076a16de6422c863558229ea0b22b675657463443"}, + {file = "importlib_metadata-7.1.0-py3-none-any.whl", hash = "sha256:30962b96c0c223483ed6cc7280e7f0199feb01a0e40cfae4d4450fc6fab1f570"}, + {file = "importlib_metadata-7.1.0.tar.gz", hash = "sha256:b78938b926ee8d5f020fc4772d487045805a55ddbad2ecf21c6d60938dc7fcd2"}, ] [package.dependencies] zipp = ">=0.5" [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] perf = ["ipython"] -testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"] +testing = ["flufl.flake8", "importlib-resources (>=1.3)", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-perf (>=0.9.2)", "pytest-ruff (>=0.2.1)"] [[package]] name = "iniconfig" @@ -461,39 +467,39 @@ files = [ [[package]] name = "opentelemetry-api" -version = "1.23.0" +version = "1.25.0" description = "OpenTelemetry Python API" optional = false python-versions = ">=3.8" files = [ - {file = "opentelemetry_api-1.23.0-py3-none-any.whl", hash = "sha256:cc03ea4025353048aadb9c64919099663664672ea1c6be6ddd8fee8e4cd5e774"}, - {file = "opentelemetry_api-1.23.0.tar.gz", hash = "sha256:14a766548c8dd2eb4dfc349739eb4c3893712a0daa996e5dbf945f9da665da9d"}, + {file = "opentelemetry_api-1.25.0-py3-none-any.whl", hash = "sha256:757fa1aa020a0f8fa139f8959e53dec2051cc26b832e76fa839a6d76ecefd737"}, + {file = "opentelemetry_api-1.25.0.tar.gz", hash = "sha256:77c4985f62f2614e42ce77ee4c9da5fa5f0bc1e1821085e9a47533a9323ae869"}, ] [package.dependencies] deprecated = ">=1.2.6" -importlib-metadata = ">=6.0,<7.0" +importlib-metadata = ">=6.0,<=7.1" [[package]] name = "packaging" -version = "24.0" +version = "24.1" description = "Core utilities for Python packages" optional = true -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "packaging-24.0-py3-none-any.whl", hash = "sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5"}, - {file = "packaging-24.0.tar.gz", hash = "sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9"}, + {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"}, + {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"}, ] [[package]] name = "pluggy" -version = "1.4.0" +version = "1.5.0" description = "plugin and hook calling mechanisms for python" optional = true python-versions = ">=3.8" files = [ - {file = "pluggy-1.4.0-py3-none-any.whl", hash = "sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981"}, - {file = "pluggy-1.4.0.tar.gz", hash = "sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be"}, + {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, + {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, ] [package.extras] @@ -502,22 +508,22 @@ testing = ["pytest", "pytest-benchmark"] [[package]] name = "protobuf" -version = "4.25.3" +version = "5.27.2" description = "" optional = false python-versions = ">=3.8" files = [ - {file = "protobuf-4.25.3-cp310-abi3-win32.whl", hash = "sha256:d4198877797a83cbfe9bffa3803602bbe1625dc30d8a097365dbc762e5790faa"}, - {file = "protobuf-4.25.3-cp310-abi3-win_amd64.whl", hash = "sha256:209ba4cc916bab46f64e56b85b090607a676f66b473e6b762e6f1d9d591eb2e8"}, - {file = "protobuf-4.25.3-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:f1279ab38ecbfae7e456a108c5c0681e4956d5b1090027c1de0f934dfdb4b35c"}, - {file = "protobuf-4.25.3-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:e7cb0ae90dd83727f0c0718634ed56837bfeeee29a5f82a7514c03ee1364c019"}, - {file = "protobuf-4.25.3-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:7c8daa26095f82482307bc717364e7c13f4f1c99659be82890dcfc215194554d"}, - {file = "protobuf-4.25.3-cp38-cp38-win32.whl", hash = "sha256:f4f118245c4a087776e0a8408be33cf09f6c547442c00395fbfb116fac2f8ac2"}, - {file = "protobuf-4.25.3-cp38-cp38-win_amd64.whl", hash = "sha256:c053062984e61144385022e53678fbded7aea14ebb3e0305ae3592fb219ccfa4"}, - {file = "protobuf-4.25.3-cp39-cp39-win32.whl", hash = "sha256:19b270aeaa0099f16d3ca02628546b8baefe2955bbe23224aaf856134eccf1e4"}, - {file = "protobuf-4.25.3-cp39-cp39-win_amd64.whl", hash = "sha256:e3c97a1555fd6388f857770ff8b9703083de6bf1f9274a002a332d65fbb56c8c"}, - {file = "protobuf-4.25.3-py3-none-any.whl", hash = "sha256:f0700d54bcf45424477e46a9f0944155b46fb0639d69728739c0e47bab83f2b9"}, - {file = "protobuf-4.25.3.tar.gz", hash = "sha256:25b5d0b42fd000320bd7830b349e3b696435f3b329810427a6bcce6a5492cc5c"}, + {file = "protobuf-5.27.2-cp310-abi3-win32.whl", hash = "sha256:354d84fac2b0d76062e9b3221f4abbbacdfd2a4d8af36bab0474f3a0bb30ab38"}, + {file = "protobuf-5.27.2-cp310-abi3-win_amd64.whl", hash = "sha256:0e341109c609749d501986b835f667c6e1e24531096cff9d34ae411595e26505"}, + {file = "protobuf-5.27.2-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:a109916aaac42bff84702fb5187f3edadbc7c97fc2c99c5ff81dd15dcce0d1e5"}, + {file = "protobuf-5.27.2-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:176c12b1f1c880bf7a76d9f7c75822b6a2bc3db2d28baa4d300e8ce4cde7409b"}, + {file = "protobuf-5.27.2-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:b848dbe1d57ed7c191dfc4ea64b8b004a3f9ece4bf4d0d80a367b76df20bf36e"}, + {file = "protobuf-5.27.2-cp38-cp38-win32.whl", hash = "sha256:4fadd8d83e1992eed0248bc50a4a6361dc31bcccc84388c54c86e530b7f58863"}, + {file = "protobuf-5.27.2-cp38-cp38-win_amd64.whl", hash = "sha256:610e700f02469c4a997e58e328cac6f305f649826853813177e6290416e846c6"}, + {file = "protobuf-5.27.2-cp39-cp39-win32.whl", hash = "sha256:9e8f199bf7f97bd7ecebffcae45ebf9527603549b2b562df0fbc6d4d688f14ca"}, + {file = "protobuf-5.27.2-cp39-cp39-win_amd64.whl", hash = "sha256:7fc3add9e6003e026da5fc9e59b131b8f22b428b991ccd53e2af8071687b4fce"}, + {file = "protobuf-5.27.2-py3-none-any.whl", hash = "sha256:54330f07e4949d09614707c48b06d1a22f8ffb5763c159efd5c0928326a91470"}, + {file = "protobuf-5.27.2.tar.gz", hash = "sha256:f3ecdef226b9af856075f28227ff2c90ce3a594d092c39bee5513573f25e2714"}, ] [[package]] @@ -555,13 +561,13 @@ files = [ [[package]] name = "pytest" -version = "8.1.1" +version = "8.2.2" description = "pytest: simple powerful testing with Python" optional = true python-versions = ">=3.8" files = [ - {file = "pytest-8.1.1-py3-none-any.whl", hash = "sha256:2a8386cfc11fa9d2c50ee7b2a57e7d898ef90470a7a34c4b949ff59662bb78b7"}, - {file = "pytest-8.1.1.tar.gz", hash = "sha256:ac978141a75948948817d360297b7aae0fcb9d6ff6bc9ec6d514b85d5a65c044"}, + {file = "pytest-8.2.2-py3-none-any.whl", hash = "sha256:c434598117762e2bd304e526244f67bf66bbd7b5d6cf22138be51ff661980343"}, + {file = "pytest-8.2.2.tar.gz", hash = "sha256:de4bb8104e201939ccdc688b27a89a7be2079b22e2bd2b07f806b6ba71117977"}, ] [package.dependencies] @@ -569,11 +575,11 @@ colorama = {version = "*", markers = "sys_platform == \"win32\""} exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} iniconfig = "*" packaging = "*" -pluggy = ">=1.4,<2.0" +pluggy = ">=1.5,<2.0" tomli = {version = ">=1", markers = "python_version < \"3.11\""} [package.extras] -testing = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] +dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] [[package]] name = "pytest-benchmark" @@ -611,13 +617,13 @@ six = ">=1.5" [[package]] name = "requests" -version = "2.32.0" +version = "2.32.3" description = "Python HTTP for Humans." optional = false python-versions = ">=3.8" files = [ - {file = "requests-2.32.0-py3-none-any.whl", hash = "sha256:f2c3881dddb70d056c5bd7600a4fae312b2a300e39be6a118d30b90bd27262b5"}, - {file = "requests-2.32.0.tar.gz", hash = "sha256:fa5490319474c82ef1d2c9bc459d3652e3ae4ef4c4ebdd18a21145a47ca4b6b8"}, + {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, + {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, ] [package.dependencies] @@ -632,13 +638,13 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "s3transfer" -version = "0.10.0" +version = "0.10.2" description = "An Amazon S3 Transfer Manager" optional = true -python-versions = ">= 3.8" +python-versions = ">=3.8" files = [ - {file = "s3transfer-0.10.0-py3-none-any.whl", hash = "sha256:3cdb40f5cfa6966e812209d0994f2a4709b561c88e90cf00c2696d2df4e56b2e"}, - {file = "s3transfer-0.10.0.tar.gz", hash = "sha256:d0c8bbf672d5eebbe4e57945e23b972d963f07d82f661cabf678a5c88831595b"}, + {file = "s3transfer-0.10.2-py3-none-any.whl", hash = "sha256:eca1c20de70a39daee580aef4986996620f365c4e0fda6a86100231d62f1bf69"}, + {file = "s3transfer-0.10.2.tar.gz", hash = "sha256:0711534e9356d3cc692fdde846b4a1e4b0cb6519971860796e6bc4c7aea00ef6"}, ] [package.dependencies] @@ -649,18 +655,18 @@ crt = ["botocore[crt] (>=1.33.2,<2.0a.0)"] [[package]] name = "setuptools" -version = "70.0.0" +version = "70.3.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-70.0.0-py3-none-any.whl", hash = "sha256:54faa7f2e8d2d11bcd2c07bed282eef1046b5c080d1c32add737d7b5817b1ad4"}, - {file = "setuptools-70.0.0.tar.gz", hash = "sha256:f211a66637b8fa059bb28183da127d4e86396c991a942b028c6650d4319c3fd0"}, + {file = "setuptools-70.3.0-py3-none-any.whl", hash = "sha256:fe384da74336c398e0d956d1cae0669bc02eed936cdb1d49b57de1990dc11ffc"}, + {file = "setuptools-70.3.0.tar.gz", hash = "sha256:f171bab1dfbc86b132997f26a119f6056a57950d058587841a0082e8830f9dc5"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mypy (==1.9)", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.1)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test", "mypy (==1.10.0)", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (>=0.3.2)", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] [[package]] name = "six" @@ -673,22 +679,6 @@ files = [ {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, ] -[[package]] -name = "sqlparse" -version = "0.4.4" -description = "A non-validating SQL parser." -optional = false -python-versions = ">=3.5" -files = [ - {file = "sqlparse-0.4.4-py3-none-any.whl", hash = "sha256:5430a4fe2ac7d0f93e66f1efc6e1338a41884b7ddf2a350cedd20ccc4d9d28f3"}, - {file = "sqlparse-0.4.4.tar.gz", hash = "sha256:d446183e84b8349fa3061f0fe7f06ca94ba65b426946ffebe6e3e8295332420c"}, -] - -[package.extras] -dev = ["build", "flake8"] -doc = ["sphinx"] -test = ["pytest", "pytest-cov"] - [[package]] name = "tomli" version = "2.0.1" @@ -702,13 +692,13 @@ files = [ [[package]] name = "typing-extensions" -version = "4.10.0" +version = "4.12.2" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" files = [ - {file = "typing_extensions-4.10.0-py3-none-any.whl", hash = "sha256:69b1a937c3a517342112fb4c6df7e72fc39a38e7891a5730ed4985b5214b5475"}, - {file = "typing_extensions-4.10.0.tar.gz", hash = "sha256:b0abd7c89e8fb96f98db18d86106ff1d90ab692004eb746cf6eda2682f91b3cb"}, + {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, + {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, ] [[package]] @@ -814,6 +804,23 @@ brotli = ["brotli (==1.0.9)", "brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotl secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] +[[package]] +name = "urllib3" +version = "2.0.7" +description = "HTTP library with thread-safe connection pooling, file post, and more." +optional = false +python-versions = ">=3.7" +files = [ + {file = "urllib3-2.0.7-py3-none-any.whl", hash = "sha256:fdb6d215c776278489906c2f8916e6e7d4f5a9b602ccbcfdf7f016fc8da0596e"}, + {file = "urllib3-2.0.7.tar.gz", hash = "sha256:c97dfde1f7bd43a71c8d2a58e369e9b2bf692d1334ea9f9cae55add7d0dd0f84"}, +] + +[package.extras] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +secure = ["certifi", "cryptography (>=1.9)", "idna (>=2.0.0)", "pyopenssl (>=17.1.0)", "urllib3-secure-extra"] +socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] +zstd = ["zstandard (>=0.18.0)"] + [[package]] name = "wrapt" version = "1.16.0" @@ -906,18 +913,18 @@ files = [ [[package]] name = "zipp" -version = "3.19.1" +version = "3.19.2" description = "Backport of pathlib-compatible object wrapper for zip files" optional = false python-versions = ">=3.8" files = [ - {file = "zipp-3.19.1-py3-none-any.whl", hash = "sha256:2828e64edb5386ea6a52e7ba7cdb17bb30a73a858f5eb6eb93d8d36f5ea26091"}, - {file = "zipp-3.19.1.tar.gz", hash = "sha256:35427f6d5594f4acf82d25541438348c26736fa9b3afa2754bcd63cdb99d8e8f"}, + {file = "zipp-3.19.2-py3-none-any.whl", hash = "sha256:f091755f667055f2d02b32c53771a7a6c8b47e1fdbc4b72a8b9072b3eef8015c"}, + {file = "zipp-3.19.2.tar.gz", hash = "sha256:bf1dcf6450f873a13e952a29504887c89e6de7506209e5b1bcc3460135d4de19"}, ] [package.extras] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -test = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy", "pytest-ruff (>=0.2.1)"] +test = ["big-O", "importlib-resources", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy", "pytest-ruff (>=0.2.1)"] [extras] dev = ["boto3", "flake8", "pytest", "pytest-benchmark", "requests"] @@ -925,4 +932,4 @@ dev = ["boto3", "flake8", "pytest", "pytest-benchmark", "requests"] [metadata] lock-version = "2.0" python-versions = ">=3.8.0,<4" -content-hash = "e7299f7eef791b1721b37fbc61d325cfe62aa576cb6c9aa7c9db88a23dd41eae" +content-hash = "0164e61d15369d5902be37ac38aecddbeb1a991cfe06a98c23e613d57911b961" diff --git a/pyproject.toml b/pyproject.toml index cb144c301..cf96f9307 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,7 +27,7 @@ classifiers = [ python = ">=3.8.0,<4" datadog = ">=0.41.0,<1.0.0" wrapt = "^1.11.2" -ddtrace = ">=2.9.0" +ddtrace = ">=2.9.2" ujson = ">=5.9.0" urllib3 = [ {version = "<2.0.0", python = "<3.11", optional = true}, From 7b5abe4abb2ada8bdcf4800a648b47d8d70e4ba6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?jordan=20gonz=C3=A1lez?= <30836115+duncanista@users.noreply.github.com> Date: Tue, 16 Jul 2024 13:25:22 -0400 Subject: [PATCH 187/403] v6.97.0 (#506) --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index a5490c9a3..d85fbb515 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "6.96.0" +__version__ = "6.97.0" diff --git a/pyproject.toml b/pyproject.toml index cf96f9307..d137450a7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "6.96.0" +version = "6.97.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From d4b411eb4731fcd48a4dd1bafd889b72abf1600c Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Thu, 8 Aug 2024 15:22:40 -0400 Subject: [PATCH 188/403] feat: Remove urllib3 pin (#510) * feat: Remove urllib3 pin * fix: increase size limit * feat: Split into dev dependencies. Update boto3 * fix: resolve conflicts. bump ddtrace * go back to optional dep instead of dev dep because poetry and pip dont play nice * feat: ints --- poetry.lock | 229 +++++++++--------- pyproject.toml | 9 +- scripts/check_layer_size.sh | 2 +- .../logs/async-metrics_python310.log | 68 +++--- .../logs/async-metrics_python311.log | 70 +++--- .../logs/async-metrics_python312.log | 68 +++--- .../snapshots/logs/async-metrics_python38.log | 68 +++--- .../snapshots/logs/async-metrics_python39.log | 70 +++--- .../snapshots/logs/sync-metrics_python310.log | 88 +++---- .../snapshots/logs/sync-metrics_python311.log | 90 +++---- .../snapshots/logs/sync-metrics_python312.log | 88 +++---- .../snapshots/logs/sync-metrics_python38.log | 88 +++---- .../snapshots/logs/sync-metrics_python39.log | 88 +++---- 13 files changed, 511 insertions(+), 515 deletions(-) diff --git a/poetry.lock b/poetry.lock index 3eed0293f..6a8bda88b 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,37 +1,37 @@ -# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. [[package]] name = "attrs" -version = "23.2.0" +version = "24.2.0" description = "Classes Without Boilerplate" optional = false python-versions = ">=3.7" files = [ - {file = "attrs-23.2.0-py3-none-any.whl", hash = "sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1"}, - {file = "attrs-23.2.0.tar.gz", hash = "sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30"}, + {file = "attrs-24.2.0-py3-none-any.whl", hash = "sha256:81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2"}, + {file = "attrs-24.2.0.tar.gz", hash = "sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346"}, ] [package.extras] -cov = ["attrs[tests]", "coverage[toml] (>=5.3)"] -dev = ["attrs[tests]", "pre-commit"] -docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope-interface"] -tests = ["attrs[tests-no-zope]", "zope-interface"] -tests-mypy = ["mypy (>=1.6)", "pytest-mypy-plugins"] -tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "pytest (>=4.3.0)", "pytest-xdist[psutil]"] +benchmark = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +cov = ["cloudpickle", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier (<24.7)"] +tests = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] [[package]] name = "boto3" -version = "1.34.144" +version = "1.34.156" description = "The AWS SDK for Python" optional = true python-versions = ">=3.8" files = [ - {file = "boto3-1.34.144-py3-none-any.whl", hash = "sha256:b8433d481d50b68a0162c0379c0dd4aabfc3d1ad901800beb5b87815997511c1"}, - {file = "boto3-1.34.144.tar.gz", hash = "sha256:2f3e88b10b8fcc5f6100a9d74cd28230edc9d4fa226d99dd40a3ab38ac213673"}, + {file = "boto3-1.34.156-py3-none-any.whl", hash = "sha256:cbbd453270b8ce94ef9da60dfbb6f9ceeb3eeee226b635aa9ec44b1def98cc96"}, + {file = "boto3-1.34.156.tar.gz", hash = "sha256:b33e9a8f8be80d3053b8418836a7c1900410b23a30c7cb040927d601a1082e68"}, ] [package.dependencies] -botocore = ">=1.34.144,<1.35.0" +botocore = ">=1.34.156,<1.35.0" jmespath = ">=0.7.1,<2.0.0" s3transfer = ">=0.10.0,<0.11.0" @@ -40,13 +40,13 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.34.144" +version = "1.34.156" description = "Low-level, data-driven core of boto 3." optional = true python-versions = ">=3.8" files = [ - {file = "botocore-1.34.144-py3-none-any.whl", hash = "sha256:a2cf26e1bf10d5917a2285e50257bc44e94a1d16574f282f3274f7a5d8d1f08b"}, - {file = "botocore-1.34.144.tar.gz", hash = "sha256:4215db28d25309d59c99507f1f77df9089e5bebbad35f6e19c7c44ec5383a3e8"}, + {file = "botocore-1.34.156-py3-none-any.whl", hash = "sha256:c48f8c8996216dfdeeb0aa6d3c0f2c7ae25234766434a2ea3e57bdc08494bdda"}, + {file = "botocore-1.34.156.tar.gz", hash = "sha256:5d1478c41ab9681e660b3322432fe09c4055759c317984b7b8d3af9557ff769a"}, ] [package.dependencies] @@ -58,7 +58,7 @@ urllib3 = [ ] [package.extras] -crt = ["awscrt (==0.20.11)"] +crt = ["awscrt (==0.21.2)"] [[package]] name = "bytecode" @@ -253,71 +253,71 @@ serialization = ["protobuf (>=3.0.0)"] [[package]] name = "ddtrace" -version = "2.9.2" +version = "2.10.4" description = "Datadog APM client library" optional = false python-versions = ">=3.7" files = [ - {file = "ddtrace-2.9.2-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:aaa4c4c0d001e5695d8d8f03361e25fbba62716bd4dbc861daa45bc71802a165"}, - {file = "ddtrace-2.9.2-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:99fa4f3437dd908622d015fd0a92015eb2bb718554fd6e9cb3c8984737ca8173"}, - {file = "ddtrace-2.9.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c3be4f5ea1378138f26b6a84b23048a681e705e602f5f4a2db6c9f1ae6f52c9"}, - {file = "ddtrace-2.9.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b79f44ebd64496e8d2c85250290486f08cf338b02cb484a24d17204d11af39d6"}, - {file = "ddtrace-2.9.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e0f9bcf9dc2fee145c1fa295e451898dd0b6fbdbdd7cc205b5c226c945369238"}, - {file = "ddtrace-2.9.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:6418399be4eb0100d8c25e7154d94032dafb08f3387864db6ea64ae6b01044a4"}, - {file = "ddtrace-2.9.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:72a3d3cdca7508b787e6bd0d09a75f1cb7cba9580f91591be51af22c9d9bf9bf"}, - {file = "ddtrace-2.9.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:93efef2f0b88792fefe5840c47c9f262fc94471078c0cf10f54831b44ea422b6"}, - {file = "ddtrace-2.9.2-cp310-cp310-win32.whl", hash = "sha256:5ad725a61da4b4d76368b7e205ae327ae39cab5ec64d8c6e16760bc86d6a6507"}, - {file = "ddtrace-2.9.2-cp310-cp310-win_amd64.whl", hash = "sha256:9a31c9a2d714b3d45fb5ae24b912521d4569d1dac3fd3fc3c77ec9fcba5dfd26"}, - {file = "ddtrace-2.9.2-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:358ccb1b7bf9ec39658e00aa1ba4972712603deefb5562219ce0ccc5e7521e52"}, - {file = "ddtrace-2.9.2-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:98b44e28151b07a9ce8ae27951978ac340f66640c833dee9b396831ddf06a9a6"}, - {file = "ddtrace-2.9.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c9d409e6d061bbe3d026696403edd37b390a4a8bc661b7490c02199a8a9da7e9"}, - {file = "ddtrace-2.9.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6a26ecdf3f7666e604bb15e20d32b63d948e85bcde6c63b2f1d45af0681079bf"}, - {file = "ddtrace-2.9.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:519e2a9e6daf592bf4a9993ae782621016770b5182ed7567fba0ef23812ca6d7"}, - {file = "ddtrace-2.9.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:2243582de6aef14fc87621169d586679572cf3f39c79cef6f898963f37a6a296"}, - {file = "ddtrace-2.9.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c176c0ea15e2b94f139ca68ba3d5ee48430c717ae785cd9e51eeb59634629c94"}, - {file = "ddtrace-2.9.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e9befe7b40141a686f991fd98780b9dfe31e55b9ed3cf685a5fcfa256789b879"}, - {file = "ddtrace-2.9.2-cp311-cp311-win32.whl", hash = "sha256:84f1a7b517f1790374ad1079e783cd893634518521ae6e2ed41a4e343227830b"}, - {file = "ddtrace-2.9.2-cp311-cp311-win_amd64.whl", hash = "sha256:4c34823c3ed3e1da5fe11de483c4091179f21fb4f255144a5082af2f52a1e02e"}, - {file = "ddtrace-2.9.2-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:b5b749b609036917cab6ae9187aaf4e83051e0396bd0d4d9f2af4bfbaf866bf2"}, - {file = "ddtrace-2.9.2-cp312-cp312-macosx_11_0_x86_64.whl", hash = "sha256:b1f21076ecb3a7736e92dc288ff6437337098f9acc6dcbbebfcfb7a1ce7aabff"}, - {file = "ddtrace-2.9.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8bb857a7a66ac56d041f2e40778f88cea51db55d0611beb36b6a45b52504c90d"}, - {file = "ddtrace-2.9.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f1f7e403b77f6c26d2f813712c38cda09d4b5c2e07e5e6e578eb71ce674382ce"}, - {file = "ddtrace-2.9.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dace336a9c14f6f8953732806d4fccee489d670aac6b2b75a3fa9eb94c32fda6"}, - {file = "ddtrace-2.9.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e7c59ce06f887db4a6a0309bdc504beada8969979876dc8f54681e10d1993426"}, - {file = "ddtrace-2.9.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:0b7c81323a952da21e7a85b20334bb33ba47600c7b7604f4267022217c7025e3"}, - {file = "ddtrace-2.9.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:07aa83c4a6e6822fd365a92f972576980badc3d426d257d9814212d0a2a5f837"}, - {file = "ddtrace-2.9.2-cp312-cp312-win32.whl", hash = "sha256:5fe686fe657b9871f6faf2f7f7e97e659421c17dc5903b43ff174f8866726a21"}, - {file = "ddtrace-2.9.2-cp312-cp312-win_amd64.whl", hash = "sha256:858b61e57cb11c5c467907add391ce8ad2dec823bc326c8e1505368c4f0ac7d4"}, - {file = "ddtrace-2.9.2-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:28ee6dee988609f1d720934d52f6a29b7c9b914a39fb70528a51a194d1ab3b8d"}, - {file = "ddtrace-2.9.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:07ade55550c3b1debb96f9ffdb716eae5bd48335d3ca54e9c5b9e492a7dc91f2"}, - {file = "ddtrace-2.9.2-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:41cf398da7a28a78c108cccfc87abe33d7e8936f99462f6fee3877fb180913c0"}, - {file = "ddtrace-2.9.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d79259e140070dc2533c3bc5776df7731baa9e2f078daf4ce708efd33ac00d3"}, - {file = "ddtrace-2.9.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:753f845308d97f8290d4ff7ce92e7875b83efa4eb5ff3fac8e2042caf6761bfb"}, - {file = "ddtrace-2.9.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:28c88f5efc946dddefc320c682c93bb65001ee38e78569e496b20823f21ef745"}, - {file = "ddtrace-2.9.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:765d7c031b54da32fc18cbeafadd3c22cd1a6f98317e6e0498bf2898fbeae350"}, - {file = "ddtrace-2.9.2-cp37-cp37m-win32.whl", hash = "sha256:7b5dddfbd23646a16ad9b991fd2866628dc56b7abe8dd7100962ce0681b738c9"}, - {file = "ddtrace-2.9.2-cp37-cp37m-win_amd64.whl", hash = "sha256:c8c17f5f57f65ea95d6bf61511869abfaa10fb555e81b0294e30226afa047115"}, - {file = "ddtrace-2.9.2-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:aa329ace4909bd402de3d9dbaaaff9e3545fd5a9fad1c72a39e075743c673099"}, - {file = "ddtrace-2.9.2-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:afebe7e5467a743795a878cad3e9658f704c5572ca398a70a840da034a571f67"}, - {file = "ddtrace-2.9.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd1271c597f088b1ff7e5881138a1317a799025c834bd496cecfdcb816748e51"}, - {file = "ddtrace-2.9.2-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:24da863c984d3261c7dae9362cf48c01fc0dc1557c92de336a1bbeb08452e046"}, - {file = "ddtrace-2.9.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e68014fa46b4be6e58cc64feb3516ec856df714ce3d4576f3d6df9079ddfba8f"}, - {file = "ddtrace-2.9.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:10824581a708c643515747e814c6b146bed6d91e687a825111858a198eee75e6"}, - {file = "ddtrace-2.9.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:03c6874475db7d7b1fb563cd6aa3ba0c22ee72bb8c6cceb36c84dba6ca21e2f4"}, - {file = "ddtrace-2.9.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b91b8cfc7239317fe6b185beb0b8153769b43bf11fb2cda9e6e2996962e4b820"}, - {file = "ddtrace-2.9.2-cp38-cp38-win32.whl", hash = "sha256:0d9456defb679d6225d32967902853cd4d8b01f55e4da18089a9ffa9d6495328"}, - {file = "ddtrace-2.9.2-cp38-cp38-win_amd64.whl", hash = "sha256:d39c2da38c295aba1810083ce63d37041e3e40a06add960f6edf5a33517f743c"}, - {file = "ddtrace-2.9.2-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:c251e684c9e3a7828308a74d2be073d88cf28b4be457a5c201a2755ef9205d24"}, - {file = "ddtrace-2.9.2-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:707151d2aa4f04388af4e3e8b0783e99b110fa0f2f1db775f64667c62bd249c2"}, - {file = "ddtrace-2.9.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c536a53d628e8d96812edea10d84e9df2f9022a7e932beb10e187c98f4471ec"}, - {file = "ddtrace-2.9.2-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9c093fbabdeb6ecc6a749b1b5f80ebe557dcf768984bb42aadf66c57f04f3b85"}, - {file = "ddtrace-2.9.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4d5b6c58d4ebc988f61a5f81e8953531ee59490240d69463592ff63dd2f6e00b"}, - {file = "ddtrace-2.9.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:85511fade95b21ca29e9ba314eeb5847733a81128d8cbdbc43012caba45c03c8"}, - {file = "ddtrace-2.9.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:8b3b2f64414c57742e7be924079e80576110abf8725f70e56bce0603877d08bf"}, - {file = "ddtrace-2.9.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ad04028487d7cdb44318323ab4438c873e01855c3391a3c47a4400ff499bcbfc"}, - {file = "ddtrace-2.9.2-cp39-cp39-win32.whl", hash = "sha256:206759c2847ee7174e14c4a2cffd3086ad55aca10d73f50b24cc2e00ec22e871"}, - {file = "ddtrace-2.9.2-cp39-cp39-win_amd64.whl", hash = "sha256:d916dbfeeebb38cd48c64c771b74276b716902471f6bf9c02e8d5c278f0baad1"}, - {file = "ddtrace-2.9.2.tar.gz", hash = "sha256:40775def3f3fc01d1c4c5eec64f7f624621eb394fe62d107c27e181123443716"}, + {file = "ddtrace-2.10.4-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:a7c5604654682aa0f5a717d93d36d1a1737cda4ca107c272ca477acf8c6fe076"}, + {file = "ddtrace-2.10.4-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:a0d9c6f0d91a97c71596787df80e0ecc582d42a584679a587b8e3e6fa8e5aa54"}, + {file = "ddtrace-2.10.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:70c9c6452bb052e26ce6799024205c37ac76b3554d31b5ede7df90e00d7bbbb4"}, + {file = "ddtrace-2.10.4-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a764002f486794760817396095376f4cfb88b5571b5b6c75ae8a27cf3609d881"}, + {file = "ddtrace-2.10.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b87219b9f49828357fa70fcb2a2cb18981896d44175fc687b65ff906c663f26"}, + {file = "ddtrace-2.10.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:65fe081b385e43b86d061dbfda9582308287f17c3f1ad2fe38305765079dd825"}, + {file = "ddtrace-2.10.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d8903c4eb54b6b690abe138275811492bc288791f488f39c1d779e279b06d312"}, + {file = "ddtrace-2.10.4-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:39b2b08a96f2715fa57d441fcd2ba4b49eee4d23fa8d162032f98ec5a652b74c"}, + {file = "ddtrace-2.10.4-cp310-cp310-win32.whl", hash = "sha256:f364f0b2ec96cad163a6943dcb9ec6c3262da6d261a0c2057a4524bee8b07166"}, + {file = "ddtrace-2.10.4-cp310-cp310-win_amd64.whl", hash = "sha256:dc6b0179f169e3b7424441e0af55a08795491e35ab9e9586a8970e66a11ac14f"}, + {file = "ddtrace-2.10.4-cp311-cp311-macosx_12_0_universal2.whl", hash = "sha256:7a4f9d6ec5cb9cbb0fbfdb3b47873e160716fbc7a98c863d6e6a260b882ef18f"}, + {file = "ddtrace-2.10.4-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:9d69c965bd4c7448d4a6dbb92736c7bc16c4bd3168ec1a5ee31afbb02be9b846"}, + {file = "ddtrace-2.10.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f84810d4f4423864c41efb1586aa573b074a9179aa2b4416a3d249aec91f679"}, + {file = "ddtrace-2.10.4-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7775e90338ee8d8e0c65a92edb88f9a477977cad7b27436581a2b9368440960b"}, + {file = "ddtrace-2.10.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb0e72eb97e0cc18ffa4e5f7bb34c7738c0af1aa05f26e72c9e4467266061442"}, + {file = "ddtrace-2.10.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:3f003822488bca7f8d2c245a80adce02118fba76e567f3818b042fd7ef132d57"}, + {file = "ddtrace-2.10.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:beb9a9a9adc8627a1b6487f2b350b418c5188d5b9c83be19a15403e708c62280"}, + {file = "ddtrace-2.10.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:41880b06ea7720b75df6d1703190e0bb0e5eb478c1ffcec6711a1a5c44503596"}, + {file = "ddtrace-2.10.4-cp311-cp311-win32.whl", hash = "sha256:b538db5512aac530d46bd2f438324d4c6cb950363d865c264dcd5f844a3c56ad"}, + {file = "ddtrace-2.10.4-cp311-cp311-win_amd64.whl", hash = "sha256:45c98313d0572d7dd3a493d5b53ccb5798691dbe785e0245dc057cd30939cbb2"}, + {file = "ddtrace-2.10.4-cp312-cp312-macosx_12_0_universal2.whl", hash = "sha256:3d9f90f84a83d53c9c363b3c3673606b1066f4ea0d09edf4d5684ed1a64bf131"}, + {file = "ddtrace-2.10.4-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:2cfc3737fd79e13ba786b29e7fb5d9a48899779d1f62bb13cfc9065df43dd049"}, + {file = "ddtrace-2.10.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ee686cd9c311e204a2c40e8102b17a7fe2226e9a29a99585f0bcf515527b6f9"}, + {file = "ddtrace-2.10.4-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b5cd07d2e9b6148067bec473982a95c724049eeae036d9156df677ea4b181483"}, + {file = "ddtrace-2.10.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e001982c0b01dc6905103be11d00c81ff743e28cc42eb6484f422f2cc2b1d6db"}, + {file = "ddtrace-2.10.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:f6626f79264e0bce443864b4582de7983080e772942f3f5db08f1ff0262f8371"}, + {file = "ddtrace-2.10.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a6fded075f195e7c922a43c2fd13243e25272cafd866853f6e9a9ce4ac647721"}, + {file = "ddtrace-2.10.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:872259fdc12448f6e8b7cfe7b20e58467847c2ef579962134772b41909858b0e"}, + {file = "ddtrace-2.10.4-cp312-cp312-win32.whl", hash = "sha256:2c19868446d0a9ea9473847b335bdcfc69e9adc9fea7469c1ecbbb2decc8ab2e"}, + {file = "ddtrace-2.10.4-cp312-cp312-win_amd64.whl", hash = "sha256:826586f0d3f7363f1c406d4caeb3b8a0db84348c0b9f12e1e61c29d79a03b26e"}, + {file = "ddtrace-2.10.4-cp37-cp37m-macosx_12_0_x86_64.whl", hash = "sha256:001f626335a6bbe7bacbc11b545956fc82c00eb8993831fc5dc7e5898e01bc10"}, + {file = "ddtrace-2.10.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6a5179e4d66061cf566c622a8f099497c50ea9e57f4f6bc1dfa0fc25dd6f5111"}, + {file = "ddtrace-2.10.4-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3dae175bcd1e3634db576059dfdc76f304212e31794d45351ed643f3c32a3913"}, + {file = "ddtrace-2.10.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64db1467c4aaa55c828daa9db380737608959ed9a5f883bd53db5acd95c1d7c6"}, + {file = "ddtrace-2.10.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:e21ce02e8f5c415f94748ac6ad406ba4f0f1e84a5416a14e14772495af98ac5a"}, + {file = "ddtrace-2.10.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:9e4a69b60dd60da6dbee88599560903af71f34b9891ab9f0e71a33ac210b71de"}, + {file = "ddtrace-2.10.4-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:41f865c1babe7a8b48e1393251ac91b6a0d856a6544e3c2da01981c342dcc750"}, + {file = "ddtrace-2.10.4-cp37-cp37m-win32.whl", hash = "sha256:15e766fdb525065e03c370ef511cb86f861712c46f34f82290fd0bb8a1ffb724"}, + {file = "ddtrace-2.10.4-cp37-cp37m-win_amd64.whl", hash = "sha256:32cdefb83ff9426a701ad8eb507d54d277526037b1a9e69366f8c03928980939"}, + {file = "ddtrace-2.10.4-cp38-cp38-macosx_12_0_universal2.whl", hash = "sha256:445725d19d95a7526c46678f364b1a107d3c5be7ab10f0f78edc362a2d258c56"}, + {file = "ddtrace-2.10.4-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:ab923631245e40b55474f3c86e5c44fb324e3dc8d99ce58d66ba972ed4a2f92e"}, + {file = "ddtrace-2.10.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:032e46dbad09668d7dc8ebaa70772ea326b41101cc8200394d7a8cf246f43aca"}, + {file = "ddtrace-2.10.4-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:41a621029079780420bfeffac559bed963808844d8aecbdab62c1e2294ece299"}, + {file = "ddtrace-2.10.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e731f76657caa42c6d773ce6ec0674c9ac5c5e01ddd8ada96f48ff8f1267e562"}, + {file = "ddtrace-2.10.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:30b9ef3fd8ccba20d671a0f33330202d563988e33fc382a9d5ffa586a46dbe1b"}, + {file = "ddtrace-2.10.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:9402df23b894f32eb92cd20531f1c336824f4b82c56167baf2666bd6c42cba09"}, + {file = "ddtrace-2.10.4-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:9aa7015bc6375705e5fb2ee7eb1ca4be6298dcc976d5c066e2afecc0c6dbb498"}, + {file = "ddtrace-2.10.4-cp38-cp38-win32.whl", hash = "sha256:16f7a843fc8fcec9a49ca4f164353a88a1370f90f1b42a094bd22cf082a9b3c2"}, + {file = "ddtrace-2.10.4-cp38-cp38-win_amd64.whl", hash = "sha256:b855914ddeb8a80ec63f830cb5ac1e1a4cb3b11b9cb03dcb056da1924d4a28a3"}, + {file = "ddtrace-2.10.4-cp39-cp39-macosx_12_0_universal2.whl", hash = "sha256:75b0d8d6980f76dac1e9d56800c343b9cd3c5504ec8d821deaa3a52e3eccb11e"}, + {file = "ddtrace-2.10.4-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:8b1b9c2da530f6da01624ea5f5a9121198d96fa06c59d9b20dd1540122c19889"}, + {file = "ddtrace-2.10.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02f1e292a45fed6bce8289241877c825279fb981f773ad3a82205523a27a8458"}, + {file = "ddtrace-2.10.4-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a08d40f0fd126ad09916fccee0f85c20395907aa7961900d5ad67bfcd6d12afd"}, + {file = "ddtrace-2.10.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ff8a5648db09d9c2736f88a3eb641a665bec0adbd24db4bfd8cb00a9cc84200"}, + {file = "ddtrace-2.10.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a3409973b9bfe7c1c3ed568ce78a80b760bad8bb964983835b6b90d787166f11"}, + {file = "ddtrace-2.10.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9b0db4567b7dce7339c29d302da6430917d5c4ffd9eb8cca76c54dd870b61205"}, + {file = "ddtrace-2.10.4-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:c987c5ff4863b9acf2de8eb395dbf06dad928cd8d962618823809ae778702ad9"}, + {file = "ddtrace-2.10.4-cp39-cp39-win32.whl", hash = "sha256:f9c2e5c551c48b07b416d4dba73011c04d462b024ad4b7dfe38e65dcc9bde6b3"}, + {file = "ddtrace-2.10.4-cp39-cp39-win_amd64.whl", hash = "sha256:40f5c918fefb83a27bfd6665cb96a8a2ae264c1b01d2b8c54e3bfacd04de4c44"}, + {file = "ddtrace-2.10.4.tar.gz", hash = "sha256:d55a4e45b98d0f16adaefb6d95dc942bfadc9e9651ca884f5f70f8f098f6a893"}, ] [package.dependencies] @@ -415,22 +415,22 @@ files = [ [[package]] name = "importlib-metadata" -version = "7.1.0" +version = "8.0.0" description = "Read metadata from Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "importlib_metadata-7.1.0-py3-none-any.whl", hash = "sha256:30962b96c0c223483ed6cc7280e7f0199feb01a0e40cfae4d4450fc6fab1f570"}, - {file = "importlib_metadata-7.1.0.tar.gz", hash = "sha256:b78938b926ee8d5f020fc4772d487045805a55ddbad2ecf21c6d60938dc7fcd2"}, + {file = "importlib_metadata-8.0.0-py3-none-any.whl", hash = "sha256:15584cf2b1bf449d98ff8a6ff1abef57bf20f3ac6454f431736cd3e660921b2f"}, + {file = "importlib_metadata-8.0.0.tar.gz", hash = "sha256:188bd24e4c346d3f0a933f275c2fec67050326a856b9a359881d7c2a697e8812"}, ] [package.dependencies] zipp = ">=0.5" [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] perf = ["ipython"] -testing = ["flufl.flake8", "importlib-resources (>=1.3)", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-perf (>=0.9.2)", "pytest-ruff (>=0.2.1)"] +test = ["flufl.flake8", "importlib-resources (>=1.3)", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-perf (>=0.9.2)", "pytest-ruff (>=0.2.1)"] [[package]] name = "iniconfig" @@ -467,18 +467,18 @@ files = [ [[package]] name = "opentelemetry-api" -version = "1.25.0" +version = "1.26.0" description = "OpenTelemetry Python API" optional = false python-versions = ">=3.8" files = [ - {file = "opentelemetry_api-1.25.0-py3-none-any.whl", hash = "sha256:757fa1aa020a0f8fa139f8959e53dec2051cc26b832e76fa839a6d76ecefd737"}, - {file = "opentelemetry_api-1.25.0.tar.gz", hash = "sha256:77c4985f62f2614e42ce77ee4c9da5fa5f0bc1e1821085e9a47533a9323ae869"}, + {file = "opentelemetry_api-1.26.0-py3-none-any.whl", hash = "sha256:7d7ea33adf2ceda2dd680b18b1677e4152000b37ca76e679da71ff103b943064"}, + {file = "opentelemetry_api-1.26.0.tar.gz", hash = "sha256:2bd639e4bed5b18486fef0b5a520aaffde5a18fc225e808a1ac4df363f43a1ce"}, ] [package.dependencies] deprecated = ">=1.2.6" -importlib-metadata = ">=6.0,<=7.1" +importlib-metadata = ">=6.0,<=8.0.0" [[package]] name = "packaging" @@ -508,22 +508,22 @@ testing = ["pytest", "pytest-benchmark"] [[package]] name = "protobuf" -version = "5.27.2" +version = "5.27.3" description = "" optional = false python-versions = ">=3.8" files = [ - {file = "protobuf-5.27.2-cp310-abi3-win32.whl", hash = "sha256:354d84fac2b0d76062e9b3221f4abbbacdfd2a4d8af36bab0474f3a0bb30ab38"}, - {file = "protobuf-5.27.2-cp310-abi3-win_amd64.whl", hash = "sha256:0e341109c609749d501986b835f667c6e1e24531096cff9d34ae411595e26505"}, - {file = "protobuf-5.27.2-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:a109916aaac42bff84702fb5187f3edadbc7c97fc2c99c5ff81dd15dcce0d1e5"}, - {file = "protobuf-5.27.2-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:176c12b1f1c880bf7a76d9f7c75822b6a2bc3db2d28baa4d300e8ce4cde7409b"}, - {file = "protobuf-5.27.2-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:b848dbe1d57ed7c191dfc4ea64b8b004a3f9ece4bf4d0d80a367b76df20bf36e"}, - {file = "protobuf-5.27.2-cp38-cp38-win32.whl", hash = "sha256:4fadd8d83e1992eed0248bc50a4a6361dc31bcccc84388c54c86e530b7f58863"}, - {file = "protobuf-5.27.2-cp38-cp38-win_amd64.whl", hash = "sha256:610e700f02469c4a997e58e328cac6f305f649826853813177e6290416e846c6"}, - {file = "protobuf-5.27.2-cp39-cp39-win32.whl", hash = "sha256:9e8f199bf7f97bd7ecebffcae45ebf9527603549b2b562df0fbc6d4d688f14ca"}, - {file = "protobuf-5.27.2-cp39-cp39-win_amd64.whl", hash = "sha256:7fc3add9e6003e026da5fc9e59b131b8f22b428b991ccd53e2af8071687b4fce"}, - {file = "protobuf-5.27.2-py3-none-any.whl", hash = "sha256:54330f07e4949d09614707c48b06d1a22f8ffb5763c159efd5c0928326a91470"}, - {file = "protobuf-5.27.2.tar.gz", hash = "sha256:f3ecdef226b9af856075f28227ff2c90ce3a594d092c39bee5513573f25e2714"}, + {file = "protobuf-5.27.3-cp310-abi3-win32.whl", hash = "sha256:dcb307cd4ef8fec0cf52cb9105a03d06fbb5275ce6d84a6ae33bc6cf84e0a07b"}, + {file = "protobuf-5.27.3-cp310-abi3-win_amd64.whl", hash = "sha256:16ddf3f8c6c41e1e803da7abea17b1793a97ef079a912e42351eabb19b2cffe7"}, + {file = "protobuf-5.27.3-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:68248c60d53f6168f565a8c76dc58ba4fa2ade31c2d1ebdae6d80f969cdc2d4f"}, + {file = "protobuf-5.27.3-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:b8a994fb3d1c11156e7d1e427186662b64694a62b55936b2b9348f0a7c6625ce"}, + {file = "protobuf-5.27.3-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:a55c48f2a2092d8e213bd143474df33a6ae751b781dd1d1f4d953c128a415b25"}, + {file = "protobuf-5.27.3-cp38-cp38-win32.whl", hash = "sha256:043853dcb55cc262bf2e116215ad43fa0859caab79bb0b2d31b708f128ece035"}, + {file = "protobuf-5.27.3-cp38-cp38-win_amd64.whl", hash = "sha256:c2a105c24f08b1e53d6c7ffe69cb09d0031512f0b72f812dd4005b8112dbe91e"}, + {file = "protobuf-5.27.3-cp39-cp39-win32.whl", hash = "sha256:c84eee2c71ed83704f1afbf1a85c3171eab0fd1ade3b399b3fad0884cbcca8bf"}, + {file = "protobuf-5.27.3-cp39-cp39-win_amd64.whl", hash = "sha256:af7c0b7cfbbb649ad26132e53faa348580f844d9ca46fd3ec7ca48a1ea5db8a1"}, + {file = "protobuf-5.27.3-py3-none-any.whl", hash = "sha256:8572c6533e544ebf6899c360e91d6bcbbee2549251643d32c52cf8a5de295ba5"}, + {file = "protobuf-5.27.3.tar.gz", hash = "sha256:82460903e640f2b7e34ee81a947fdaad89de796d324bcbc38ff5430bcdead82c"}, ] [[package]] @@ -561,13 +561,13 @@ files = [ [[package]] name = "pytest" -version = "8.2.2" +version = "8.3.2" description = "pytest: simple powerful testing with Python" optional = true python-versions = ">=3.8" files = [ - {file = "pytest-8.2.2-py3-none-any.whl", hash = "sha256:c434598117762e2bd304e526244f67bf66bbd7b5d6cf22138be51ff661980343"}, - {file = "pytest-8.2.2.tar.gz", hash = "sha256:de4bb8104e201939ccdc688b27a89a7be2079b22e2bd2b07f806b6ba71117977"}, + {file = "pytest-8.3.2-py3-none-any.whl", hash = "sha256:4ba08f9ae7dcf84ded419494d229b48d0903ea6407b030eaec46df5e6a73bba5"}, + {file = "pytest-8.3.2.tar.gz", hash = "sha256:c132345d12ce551242c87269de812483f5bcc87cdbb4722e48487ba194f9fdce"}, ] [package.dependencies] @@ -575,7 +575,7 @@ colorama = {version = "*", markers = "sys_platform == \"win32\""} exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} iniconfig = "*" packaging = "*" -pluggy = ">=1.5,<2.0" +pluggy = ">=1.5,<2" tomli = {version = ">=1", markers = "python_version < \"3.11\""} [package.extras] @@ -655,18 +655,19 @@ crt = ["botocore[crt] (>=1.33.2,<2.0a.0)"] [[package]] name = "setuptools" -version = "70.3.0" +version = "72.1.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-70.3.0-py3-none-any.whl", hash = "sha256:fe384da74336c398e0d956d1cae0669bc02eed936cdb1d49b57de1990dc11ffc"}, - {file = "setuptools-70.3.0.tar.gz", hash = "sha256:f171bab1dfbc86b132997f26a119f6056a57950d058587841a0082e8830f9dc5"}, + {file = "setuptools-72.1.0-py3-none-any.whl", hash = "sha256:5a03e1860cf56bb6ef48ce186b0e557fdba433237481a9a625176c2831be15d1"}, + {file = "setuptools-72.1.0.tar.gz", hash = "sha256:8d243eff56d095e5817f796ede6ae32941278f542e0f941867cc05ae52b162ec"}, ] [package.extras] +core = ["importlib-metadata (>=6)", "importlib-resources (>=5.10.2)", "jaraco.text (>=3.7)", "more-itertools (>=8.8)", "ordered-set (>=3.1.1)", "packaging (>=24)", "platformdirs (>=2.6.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test", "mypy (==1.10.0)", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (>=0.3.2)", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test", "mypy (==1.11.*)", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (<0.4)", "pytest-ruff (>=0.2.1)", "pytest-ruff (>=0.3.2)", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] [[package]] name = "six" @@ -806,18 +807,18 @@ socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] [[package]] name = "urllib3" -version = "2.0.7" +version = "2.2.2" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "urllib3-2.0.7-py3-none-any.whl", hash = "sha256:fdb6d215c776278489906c2f8916e6e7d4f5a9b602ccbcfdf7f016fc8da0596e"}, - {file = "urllib3-2.0.7.tar.gz", hash = "sha256:c97dfde1f7bd43a71c8d2a58e369e9b2bf692d1334ea9f9cae55add7d0dd0f84"}, + {file = "urllib3-2.2.2-py3-none-any.whl", hash = "sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472"}, + {file = "urllib3-2.2.2.tar.gz", hash = "sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168"}, ] [package.extras] brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] -secure = ["certifi", "cryptography (>=1.9)", "idna (>=2.0.0)", "pyopenssl (>=17.1.0)", "urllib3-secure-extra"] +h2 = ["h2 (>=4,<5)"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] zstd = ["zstandard (>=0.18.0)"] @@ -932,4 +933,4 @@ dev = ["boto3", "flake8", "pytest", "pytest-benchmark", "requests"] [metadata] lock-version = "2.0" python-versions = ">=3.8.0,<4" -content-hash = "0164e61d15369d5902be37ac38aecddbeb1a991cfe06a98c23e613d57911b961" +content-hash = "bf1aca9cf4f75b18197105ef45c4ef035790dbe8ad10598becad6f31340c4442" diff --git a/pyproject.toml b/pyproject.toml index d137450a7..710faa676 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,19 +27,14 @@ classifiers = [ python = ">=3.8.0,<4" datadog = ">=0.41.0,<1.0.0" wrapt = "^1.11.2" -ddtrace = ">=2.9.2" +ddtrace = ">=2.10.0" ujson = ">=5.9.0" -urllib3 = [ - {version = "<2.0.0", python = "<3.11", optional = true}, - {version = "<2.1.0", python = ">=3.11", optional = true}, -] -boto3 = { version = "^1.28.0", optional = true } +boto3 = { version = "^1.34.0", optional = true } requests = { version ="^2.22.0", optional = true } pytest = { version= "^8.0.0", optional = true } pytest-benchmark = { version = "^4.0", optional = true } flake8 = { version = "^5.0.4", optional = true } - [tool.poetry.extras] dev = [ "boto3", diff --git a/scripts/check_layer_size.sh b/scripts/check_layer_size.sh index 977c02833..90d5861b0 100755 --- a/scripts/check_layer_size.sh +++ b/scripts/check_layer_size.sh @@ -9,7 +9,7 @@ set -e MAX_LAYER_COMPRESSED_SIZE_KB=$(expr 5 \* 1024) -MAX_LAYER_UNCOMPRESSED_SIZE_KB=$(expr 12 \* 1024) +MAX_LAYER_UNCOMPRESSED_SIZE_KB=$(expr 13 \* 1024) LAYER_FILES_PREFIX="datadog_lambda_py" diff --git a/tests/integration/snapshots/logs/async-metrics_python310.log b/tests/integration/snapshots/logs/async-metrics_python310.log index bec8aa8a3..704e89b57 100644 --- a/tests/integration/snapshots/logs/async-metrics_python310.log +++ b/tests/integration/snapshots/logs/async-metrics_python310.log @@ -9,8 +9,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python310", "resource:integration-tests-python-XXXX-async-metrics_python310", - "cold_start:true", "memorysize:1024", + "cold_start:true", "runtime:python3.10", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python310_X.X.X" @@ -36,8 +36,8 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -180,8 +180,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python310", "resource:integration-tests-python-XXXX-async-metrics_python310", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.10", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python310_X.X.X" @@ -207,8 +207,8 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -246,7 +246,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -346,8 +346,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python310", "resource:integration-tests-python-XXXX-async-metrics_python310", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.10", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python310_X.X.X" @@ -373,8 +373,8 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -505,8 +505,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python310", "resource:integration-tests-python-XXXX-async-metrics_python310", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.10", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python310_X.X.X" @@ -532,8 +532,8 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -575,7 +575,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "http" }, @@ -679,8 +679,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python310", "resource:integration-tests-python-XXXX-async-metrics_python310", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.10", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python310_X.X.X" @@ -706,8 +706,8 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -745,7 +745,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -845,8 +845,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python310", "resource:integration-tests-python-XXXX-async-metrics_python310", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.10", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python310_X.X.X" @@ -872,8 +872,8 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -908,7 +908,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1008,8 +1008,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python310", "resource:integration-tests-python-XXXX-async-metrics_python310", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.10", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python310_X.X.X" @@ -1035,8 +1035,8 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1072,7 +1072,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1172,8 +1172,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python310", "resource:integration-tests-python-XXXX-async-metrics_python310", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.10", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python310_X.X.X" @@ -1199,8 +1199,8 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1235,7 +1235,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1335,8 +1335,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python310", "resource:integration-tests-python-XXXX-async-metrics_python310", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.10", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python310_X.X.X" @@ -1362,8 +1362,8 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1404,7 +1404,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python311.log b/tests/integration/snapshots/logs/async-metrics_python311.log index 1e6a384d4..b97628ac3 100644 --- a/tests/integration/snapshots/logs/async-metrics_python311.log +++ b/tests/integration/snapshots/logs/async-metrics_python311.log @@ -9,8 +9,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python311", "resource:integration-tests-python-XXXX-async-metrics_python311", - "cold_start:true", "memorysize:1024", + "cold_start:true", "runtime:python3.11", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python311_X.X.X" @@ -36,8 +36,8 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -180,8 +180,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python311", "resource:integration-tests-python-XXXX-async-metrics_python311", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.11", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python311_X.X.X" @@ -207,8 +207,8 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -246,7 +246,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -346,8 +346,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python311", "resource:integration-tests-python-XXXX-async-metrics_python311", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.11", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python311_X.X.X" @@ -373,8 +373,8 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -505,8 +505,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python311", "resource:integration-tests-python-XXXX-async-metrics_python311", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.11", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python311_X.X.X" @@ -532,8 +532,8 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -575,7 +575,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "http" }, @@ -679,8 +679,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python311", "resource:integration-tests-python-XXXX-async-metrics_python311", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.11", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python311_X.X.X" @@ -706,9 +706,8 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -END Duration: XXXX ms Memory Used: XXXX MB +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -746,7 +745,7 @@ END Duration: XXXX ms Memory Used: XXXX MB "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -835,6 +834,7 @@ END Duration: XXXX ms Memory Used: XXXX MB ] ] } +END Duration: XXXX ms Memory Used: XXXX MB START { "m": "aws.lambda.enhanced.invocations", @@ -845,8 +845,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python311", "resource:integration-tests-python-XXXX-async-metrics_python311", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.11", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python311_X.X.X" @@ -872,8 +872,8 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -908,7 +908,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1008,8 +1008,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python311", "resource:integration-tests-python-XXXX-async-metrics_python311", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.11", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python311_X.X.X" @@ -1035,8 +1035,8 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1072,7 +1072,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1172,8 +1172,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python311", "resource:integration-tests-python-XXXX-async-metrics_python311", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.11", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python311_X.X.X" @@ -1199,8 +1199,8 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1235,7 +1235,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1335,8 +1335,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python311", "resource:integration-tests-python-XXXX-async-metrics_python311", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.11", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python311_X.X.X" @@ -1362,8 +1362,8 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1404,7 +1404,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python312.log b/tests/integration/snapshots/logs/async-metrics_python312.log index fdf90e984..79dbefc1a 100644 --- a/tests/integration/snapshots/logs/async-metrics_python312.log +++ b/tests/integration/snapshots/logs/async-metrics_python312.log @@ -9,8 +9,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python312", "resource:integration-tests-python-XXXX-async-metrics_python312", - "cold_start:true", "memorysize:1024", + "cold_start:true", "runtime:python3.12", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python312_X.X.X" @@ -36,8 +36,8 @@ START "dd_lambda_layer:datadog-python312_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -180,8 +180,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python312", "resource:integration-tests-python-XXXX-async-metrics_python312", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.12", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python312_X.X.X" @@ -207,8 +207,8 @@ START "dd_lambda_layer:datadog-python312_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -246,7 +246,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -346,8 +346,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python312", "resource:integration-tests-python-XXXX-async-metrics_python312", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.12", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python312_X.X.X" @@ -373,8 +373,8 @@ START "dd_lambda_layer:datadog-python312_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -505,8 +505,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python312", "resource:integration-tests-python-XXXX-async-metrics_python312", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.12", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python312_X.X.X" @@ -532,8 +532,8 @@ START "dd_lambda_layer:datadog-python312_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -575,7 +575,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "http" }, @@ -679,8 +679,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python312", "resource:integration-tests-python-XXXX-async-metrics_python312", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.12", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python312_X.X.X" @@ -706,8 +706,8 @@ START "dd_lambda_layer:datadog-python312_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -745,7 +745,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -845,8 +845,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python312", "resource:integration-tests-python-XXXX-async-metrics_python312", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.12", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python312_X.X.X" @@ -872,8 +872,8 @@ START "dd_lambda_layer:datadog-python312_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -908,7 +908,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1008,8 +1008,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python312", "resource:integration-tests-python-XXXX-async-metrics_python312", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.12", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python312_X.X.X" @@ -1035,8 +1035,8 @@ START "dd_lambda_layer:datadog-python312_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1072,7 +1072,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1172,8 +1172,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python312", "resource:integration-tests-python-XXXX-async-metrics_python312", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.12", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python312_X.X.X" @@ -1199,8 +1199,8 @@ START "dd_lambda_layer:datadog-python312_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1235,7 +1235,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1335,8 +1335,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python312", "resource:integration-tests-python-XXXX-async-metrics_python312", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.12", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python312_X.X.X" @@ -1362,8 +1362,8 @@ START "dd_lambda_layer:datadog-python312_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1404,7 +1404,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python38.log b/tests/integration/snapshots/logs/async-metrics_python38.log index 50a9f7004..3b9d7c765 100644 --- a/tests/integration/snapshots/logs/async-metrics_python38.log +++ b/tests/integration/snapshots/logs/async-metrics_python38.log @@ -9,8 +9,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python38", "resource:integration-tests-python-XXXX-async-metrics_python38", - "cold_start:true", "memorysize:1024", + "cold_start:true", "runtime:python3.8", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python38_X.X.X" @@ -36,8 +36,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -180,8 +180,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python38", "resource:integration-tests-python-XXXX-async-metrics_python38", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.8", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python38_X.X.X" @@ -207,8 +207,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -246,7 +246,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -346,8 +346,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python38", "resource:integration-tests-python-XXXX-async-metrics_python38", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.8", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python38_X.X.X" @@ -373,8 +373,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -505,8 +505,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python38", "resource:integration-tests-python-XXXX-async-metrics_python38", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.8", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python38_X.X.X" @@ -532,8 +532,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -575,7 +575,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "http" }, @@ -679,8 +679,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python38", "resource:integration-tests-python-XXXX-async-metrics_python38", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.8", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python38_X.X.X" @@ -706,8 +706,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -745,7 +745,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -845,8 +845,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python38", "resource:integration-tests-python-XXXX-async-metrics_python38", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.8", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python38_X.X.X" @@ -872,8 +872,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -908,7 +908,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1008,8 +1008,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python38", "resource:integration-tests-python-XXXX-async-metrics_python38", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.8", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python38_X.X.X" @@ -1035,8 +1035,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1072,7 +1072,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1172,8 +1172,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python38", "resource:integration-tests-python-XXXX-async-metrics_python38", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.8", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python38_X.X.X" @@ -1199,8 +1199,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1235,7 +1235,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1335,8 +1335,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python38", "resource:integration-tests-python-XXXX-async-metrics_python38", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.8", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python38_X.X.X" @@ -1362,8 +1362,8 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1404,7 +1404,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python39.log b/tests/integration/snapshots/logs/async-metrics_python39.log index d411dd1e0..4e8202463 100644 --- a/tests/integration/snapshots/logs/async-metrics_python39.log +++ b/tests/integration/snapshots/logs/async-metrics_python39.log @@ -9,8 +9,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python39", "resource:integration-tests-python-XXXX-async-metrics_python39", - "cold_start:true", "memorysize:1024", + "cold_start:true", "runtime:python3.9", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python39_X.X.X" @@ -36,8 +36,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -180,8 +180,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python39", "resource:integration-tests-python-XXXX-async-metrics_python39", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.9", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python39_X.X.X" @@ -207,8 +207,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -246,7 +246,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -346,8 +346,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python39", "resource:integration-tests-python-XXXX-async-metrics_python39", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.9", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python39_X.X.X" @@ -373,8 +373,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -505,8 +505,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python39", "resource:integration-tests-python-XXXX-async-metrics_python39", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.9", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python39_X.X.X" @@ -532,8 +532,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -575,7 +575,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "http" }, @@ -679,8 +679,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python39", "resource:integration-tests-python-XXXX-async-metrics_python39", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.9", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python39_X.X.X" @@ -706,8 +706,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -745,7 +745,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -845,8 +845,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python39", "resource:integration-tests-python-XXXX-async-metrics_python39", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.9", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python39_X.X.X" @@ -872,8 +872,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -908,7 +908,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1008,8 +1008,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python39", "resource:integration-tests-python-XXXX-async-metrics_python39", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.9", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python39_X.X.X" @@ -1035,9 +1035,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -END Duration: XXXX ms Memory Used: XXXX MB +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1073,7 +1072,7 @@ END Duration: XXXX ms Memory Used: XXXX MB "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1162,6 +1161,7 @@ END Duration: XXXX ms Memory Used: XXXX MB ] ] } +END Duration: XXXX ms Memory Used: XXXX MB START { "m": "aws.lambda.enhanced.invocations", @@ -1172,8 +1172,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python39", "resource:integration-tests-python-XXXX-async-metrics_python39", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.9", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python39_X.X.X" @@ -1199,8 +1199,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1235,7 +1235,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1335,8 +1335,8 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-async-metrics_python39", "resource:integration-tests-python-XXXX-async-metrics_python39", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.9", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python39_X.X.X" @@ -1362,8 +1362,8 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1404,7 +1404,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python310.log b/tests/integration/snapshots/logs/sync-metrics_python310.log index 97a0cf4da..339c821c4 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python310.log +++ b/tests/integration/snapshots/logs/sync-metrics_python310.log @@ -9,15 +9,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python310", "resource:integration-tests-python-XXXX-sync-metrics_python310", - "cold_start:true", "memorysize:1024", + "cold_start:true", "runtime:python3.10", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -149,7 +149,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -199,15 +199,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python310", "resource:integration-tests-python-XXXX-sync-metrics_python310", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.10", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -245,7 +245,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -334,7 +334,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -384,15 +384,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python310", "resource:integration-tests-python-XXXX-sync-metrics_python310", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.10", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -424,7 +424,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -512,7 +512,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -562,15 +562,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python310", "resource:integration-tests-python-XXXX-sync-metrics_python310", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.10", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -612,7 +612,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "http" }, @@ -705,7 +705,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -755,15 +755,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python310", "resource:integration-tests-python-XXXX-sync-metrics_python310", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.10", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -801,7 +801,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -890,7 +890,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -940,15 +940,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python310", "resource:integration-tests-python-XXXX-sync-metrics_python310", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.10", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -983,7 +983,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1072,7 +1072,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1122,15 +1122,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python310", "resource:integration-tests-python-XXXX-sync-metrics_python310", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.10", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1166,7 +1166,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1255,7 +1255,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1305,15 +1305,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python310", "resource:integration-tests-python-XXXX-sync-metrics_python310", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.10", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1348,7 +1348,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1437,7 +1437,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1487,15 +1487,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python310", "resource:integration-tests-python-XXXX-sync-metrics_python310", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.10", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python310_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1536,7 +1536,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1627,7 +1627,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ diff --git a/tests/integration/snapshots/logs/sync-metrics_python311.log b/tests/integration/snapshots/logs/sync-metrics_python311.log index bfb38df97..878b0d642 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python311.log +++ b/tests/integration/snapshots/logs/sync-metrics_python311.log @@ -9,15 +9,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python311", "resource:integration-tests-python-XXXX-sync-metrics_python311", - "cold_start:true", "memorysize:1024", + "cold_start:true", "runtime:python3.11", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -149,7 +149,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -199,15 +199,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python311", "resource:integration-tests-python-XXXX-sync-metrics_python311", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.11", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -245,7 +245,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -334,7 +334,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -384,15 +384,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python311", "resource:integration-tests-python-XXXX-sync-metrics_python311", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.11", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -424,7 +424,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -512,7 +512,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -562,15 +562,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python311", "resource:integration-tests-python-XXXX-sync-metrics_python311", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.11", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -612,7 +612,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "http" }, @@ -705,7 +705,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -755,15 +755,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python311", "resource:integration-tests-python-XXXX-sync-metrics_python311", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.11", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -801,7 +801,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -890,7 +890,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -940,15 +940,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python311", "resource:integration-tests-python-XXXX-sync-metrics_python311", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.11", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -983,7 +983,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1072,8 +1072,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX -END Duration: XXXX ms Memory Used: XXXX MB +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1112,6 +1111,7 @@ END Duration: XXXX ms Memory Used: XXXX MB ] ] } +END Duration: XXXX ms Memory Used: XXXX MB START { "m": "aws.lambda.enhanced.invocations", @@ -1122,15 +1122,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python311", "resource:integration-tests-python-XXXX-sync-metrics_python311", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.11", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1166,7 +1166,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1255,7 +1255,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1305,15 +1305,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python311", "resource:integration-tests-python-XXXX-sync-metrics_python311", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.11", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1348,7 +1348,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1437,7 +1437,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1487,15 +1487,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python311", "resource:integration-tests-python-XXXX-sync-metrics_python311", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.11", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python311_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1536,7 +1536,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1627,7 +1627,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ diff --git a/tests/integration/snapshots/logs/sync-metrics_python312.log b/tests/integration/snapshots/logs/sync-metrics_python312.log index e9e3e3395..c4dc17bcc 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python312.log +++ b/tests/integration/snapshots/logs/sync-metrics_python312.log @@ -9,15 +9,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python312", "resource:integration-tests-python-XXXX-sync-metrics_python312", - "cold_start:true", "memorysize:1024", + "cold_start:true", "runtime:python3.12", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python312_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -149,7 +149,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -199,15 +199,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python312", "resource:integration-tests-python-XXXX-sync-metrics_python312", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.12", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python312_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -245,7 +245,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -334,7 +334,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -384,15 +384,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python312", "resource:integration-tests-python-XXXX-sync-metrics_python312", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.12", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python312_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -424,7 +424,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -512,7 +512,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -562,15 +562,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python312", "resource:integration-tests-python-XXXX-sync-metrics_python312", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.12", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python312_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -612,7 +612,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "http" }, @@ -705,7 +705,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -755,15 +755,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python312", "resource:integration-tests-python-XXXX-sync-metrics_python312", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.12", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python312_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -801,7 +801,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -890,7 +890,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -940,15 +940,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python312", "resource:integration-tests-python-XXXX-sync-metrics_python312", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.12", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python312_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -983,7 +983,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1072,7 +1072,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1122,15 +1122,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python312", "resource:integration-tests-python-XXXX-sync-metrics_python312", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.12", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python312_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1166,7 +1166,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1255,7 +1255,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1305,15 +1305,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python312", "resource:integration-tests-python-XXXX-sync-metrics_python312", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.12", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python312_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1348,7 +1348,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1437,7 +1437,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1487,15 +1487,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python312", "resource:integration-tests-python-XXXX-sync-metrics_python312", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.12", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python312_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1536,7 +1536,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1627,7 +1627,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ diff --git a/tests/integration/snapshots/logs/sync-metrics_python38.log b/tests/integration/snapshots/logs/sync-metrics_python38.log index e9e6eea6f..3e756430b 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python38.log +++ b/tests/integration/snapshots/logs/sync-metrics_python38.log @@ -9,15 +9,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python38", "resource:integration-tests-python-XXXX-sync-metrics_python38", - "cold_start:true", "memorysize:1024", + "cold_start:true", "runtime:python3.8", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -149,7 +149,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -199,15 +199,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python38", "resource:integration-tests-python-XXXX-sync-metrics_python38", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.8", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -245,7 +245,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -334,7 +334,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -384,15 +384,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python38", "resource:integration-tests-python-XXXX-sync-metrics_python38", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.8", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -424,7 +424,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -512,7 +512,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -562,15 +562,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python38", "resource:integration-tests-python-XXXX-sync-metrics_python38", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.8", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -612,7 +612,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "http" }, @@ -705,7 +705,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -755,15 +755,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python38", "resource:integration-tests-python-XXXX-sync-metrics_python38", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.8", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -801,7 +801,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -890,7 +890,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -940,15 +940,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python38", "resource:integration-tests-python-XXXX-sync-metrics_python38", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.8", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -983,7 +983,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1072,7 +1072,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1122,15 +1122,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python38", "resource:integration-tests-python-XXXX-sync-metrics_python38", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.8", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1166,7 +1166,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1255,7 +1255,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1305,15 +1305,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python38", "resource:integration-tests-python-XXXX-sync-metrics_python38", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.8", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1348,7 +1348,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1437,7 +1437,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1487,15 +1487,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python38", "resource:integration-tests-python-XXXX-sync-metrics_python38", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.8", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python38_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1536,7 +1536,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1627,7 +1627,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ diff --git a/tests/integration/snapshots/logs/sync-metrics_python39.log b/tests/integration/snapshots/logs/sync-metrics_python39.log index ebc39ab5a..ceffe679a 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -9,15 +9,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python39", "resource:integration-tests-python-XXXX-sync-metrics_python39", - "cold_start:true", "memorysize:1024", + "cold_start:true", "runtime:python3.9", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -149,7 +149,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -199,15 +199,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python39", "resource:integration-tests-python-XXXX-sync-metrics_python39", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.9", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -245,7 +245,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -334,7 +334,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -384,15 +384,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python39", "resource:integration-tests-python-XXXX-sync-metrics_python39", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.9", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -424,7 +424,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -512,7 +512,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -562,15 +562,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python39", "resource:integration-tests-python-XXXX-sync-metrics_python39", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.9", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -612,7 +612,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "http" }, @@ -705,7 +705,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -755,15 +755,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python39", "resource:integration-tests-python-XXXX-sync-metrics_python39", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.9", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -801,7 +801,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -890,7 +890,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -940,15 +940,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python39", "resource:integration-tests-python-XXXX-sync-metrics_python39", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.9", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -983,7 +983,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1072,7 +1072,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1122,15 +1122,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python39", "resource:integration-tests-python-XXXX-sync-metrics_python39", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.9", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1166,7 +1166,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1255,7 +1255,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1305,15 +1305,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python39", "resource:integration-tests-python-XXXX-sync-metrics_python39", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.9", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1348,7 +1348,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1437,7 +1437,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1487,15 +1487,15 @@ START "account_id:XXXX", "functionname:integration-tests-python-XXXX-sync-metrics_python39", "resource:integration-tests-python-XXXX-sync-metrics_python39", - "cold_start:false", "memorysize:1024", + "cold_start:false", "runtime:python3.9", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python39_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "User-Agent:python-requests/X.X.X", "traceparent:XXX", "tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1536,7 +1536,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " "metrics": { "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": -1 + "_sampling_priority_v1": 1 }, "type": "web" }, @@ -1627,7 +1627,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", " ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate", "Accept:*/*", "Connection:keep-alive", "Content-Encoding:deflate", "Content-Length:XXXX", "Content-Type:application/json", "DD-API-KEY:XXXX", "User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)", "traceparent:XXX", "tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ From 8ac32edf792c78766dc0fb1459aaa8de1a314e3f Mon Sep 17 00:00:00 2001 From: Dylan Yang Date: Thu, 8 Aug 2024 15:34:27 -0400 Subject: [PATCH 189/403] Handle datetime parameter for historical custom metrics submitted to the API (#509) handle datetime params --- datadog_lambda/metric.py | 2 ++ tests/test_metric.py | 13 +++++++++++++ 2 files changed, 15 insertions(+) diff --git a/datadog_lambda/metric.py b/datadog_lambda/metric.py index 3bc9955fc..44f8e3775 100644 --- a/datadog_lambda/metric.py +++ b/datadog_lambda/metric.py @@ -65,6 +65,8 @@ def lambda_metric(metric_name, value, timestamp=None, tags=None, force_async=Fal timestamp_ceiling = int( (datetime.now() - timedelta(hours=4)).timestamp() ) # 4 hours ago + if isinstance(timestamp, datetime): + timestamp = int(timestamp.timestamp()) if timestamp_ceiling > timestamp: logger.warning( "Timestamp %s is older than 4 hours, not submitting metric %s", diff --git a/tests/test_metric.py b/tests/test_metric.py index 031b11803..10ef91917 100644 --- a/tests/test_metric.py +++ b/tests/test_metric.py @@ -58,6 +58,19 @@ def test_lambda_metric_timestamp_with_extension(self): "test_timestamp", 1, timestamp=timestamp, tags=[dd_lambda_layer_tag] ) + @patch("datadog_lambda.metric.should_use_extension", True) + def test_lambda_metric_datetime_with_extension(self): + patcher = patch("datadog_lambda.metric.extension_thread_stats") + self.mock_metric_extension_thread_stats = patcher.start() + self.addCleanup(patcher.stop) + + delta = timedelta(hours=5) + timestamp = datetime.now() - delta + + lambda_metric("test_timestamp", 1, timestamp) + self.mock_metric_lambda_stats.distribution.assert_not_called() + self.mock_metric_extension_thread_stats.distribution.assert_not_called() + @patch("datadog_lambda.metric.should_use_extension", True) def test_lambda_metric_invalid_timestamp_with_extension(self): patcher = patch("datadog_lambda.metric.extension_thread_stats") From 692b9c91029447b610d31df27298ef6ff4282e65 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Mon, 12 Aug 2024 10:40:12 -0400 Subject: [PATCH 190/403] v6.98.0 (#512) --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index d85fbb515..d29698b5c 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "6.97.0" +__version__ = "6.98.0" diff --git a/pyproject.toml b/pyproject.toml index 710faa676..db2bd0a8a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "6.97.0" +version = "6.98.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From d97d9bbb81d6aaed9260c1e37bd1398a3a91f12b Mon Sep 17 00:00:00 2001 From: Abhinav Vedmala Date: Mon, 12 Aug 2024 13:48:38 -0400 Subject: [PATCH 191/403] Step Functions Legacy Lambda Span Linking (#511) This change will check if events fall into the Legacy Lambda case and parse them accordingly so that we can extract the trace context and infer a span link between the Step Function and the downstream Legacy Lambda --- datadog_lambda/tracing.py | 8 ++++++++ datadog_lambda/wrapper.py | 3 +++ tests/test_tracing.py | 28 ++++++++++++++++++++++++++++ 3 files changed, 39 insertions(+) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 64a19ccdc..2a6960462 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -407,6 +407,14 @@ def extract_context_from_step_functions(event, lambda_context): return extract_context_from_lambda_context(lambda_context) +def is_legacy_lambda_step_function(event): + """ + Check if the event is a step function that called a legacy lambda + """ + event = event.get("Payload", {}) + return "Execution" in event and "StateMachine" in event and "State" in event + + def extract_context_custom_extractor(extractor, event, lambda_context): """ Extract Datadog trace context using a custom trace extractor function diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index ed3d92b45..e97c0ebee 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -44,6 +44,7 @@ is_authorizer_response, tracer, propagator, + is_legacy_lambda_step_function, ) from datadog_lambda.trigger import ( extract_trigger_tags, @@ -277,6 +278,8 @@ def _before(self, event, context): self.response = None set_cold_start(init_timestamp_ns) submit_invocations_metric(context) + if is_legacy_lambda_step_function(event): + event = event["Payload"] self.trigger_tags = extract_trigger_tags(event, context) # Extract Datadog trace context and source from incoming requests dd_context, trace_context_source, event_source = extract_dd_trace_context( diff --git a/tests/test_tracing.py b/tests/test_tracing.py index b94e968fe..b21b9337c 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -40,6 +40,7 @@ service_mapping as global_service_mapping, propagator, emit_telemetry_on_exception_outside_of_handler, + is_legacy_lambda_step_function, ) from datadog_lambda.trigger import EventTypes @@ -647,6 +648,33 @@ def test_step_function_trace_data(self): expected_context, ) + def test_is_legacy_lambda_step_function(self): + sf_event = { + "Payload": { + "Execution": { + "Id": "665c417c-1237-4742-aaca-8b3becbb9e75", + }, + "StateMachine": {}, + "State": { + "Name": "my-awesome-state", + "EnteredTime": "Mon Nov 13 12:43:33 PST 2023", + }, + } + } + self.assertTrue(is_legacy_lambda_step_function(sf_event)) + + sf_event = { + "Execution": { + "Id": "665c417c-1237-4742-aaca-8b3becbb9e75", + }, + "StateMachine": {}, + "State": { + "Name": "my-awesome-state", + "EnteredTime": "Mon Nov 13 12:43:33 PST 2023", + }, + } + self.assertFalse(is_legacy_lambda_step_function(sf_event)) + class TestXRayContextConversion(unittest.TestCase): def test_convert_xray_trace_id(self): From c52970ffb97aee30a0378be9f15a3f19c265ecdf Mon Sep 17 00:00:00 2001 From: Aleksandr Pasechnik Date: Fri, 27 Sep 2024 12:42:23 -0400 Subject: [PATCH 192/403] [SVLS-5265] S3 Event Handler Span Pointers (#513) Adding Span Pointers for the upstream S3 objects when a lambda is triggered by an S3 ObjectCreated event. --- datadog_lambda/span_pointers.py | 91 +++++++++ datadog_lambda/tracing.py | 9 + datadog_lambda/wrapper.py | 16 +- poetry.lock | 318 ++++++++++++------------------- pyproject.toml | 2 +- scripts/run_integration_tests.sh | 4 +- tests/test_span_pointers.py | 93 +++++++++ tests/test_tracing.py | 86 ++++++++- 8 files changed, 403 insertions(+), 216 deletions(-) create mode 100644 datadog_lambda/span_pointers.py create mode 100644 tests/test_span_pointers.py diff --git a/datadog_lambda/span_pointers.py b/datadog_lambda/span_pointers.py new file mode 100644 index 000000000..4c33975f5 --- /dev/null +++ b/datadog_lambda/span_pointers.py @@ -0,0 +1,91 @@ +from itertools import chain +import logging +from typing import List + +from ddtrace._trace.utils_botocore.span_pointers import ( + _aws_s3_object_span_pointer_description, +) +from ddtrace._trace._span_pointer import _SpanPointerDirection +from ddtrace._trace._span_pointer import _SpanPointerDescription +from datadog_lambda.trigger import EventTypes + + +logger = logging.getLogger(__name__) + + +def calculate_span_pointers( + event_source, + event, +) -> List[_SpanPointerDescription]: + try: + if event_source.equals(EventTypes.S3): + return _calculate_s3_span_pointers_for_event(event) + + except Exception as e: + logger.warning( + "failed to calculate span pointers for event: %s", + str(e), + ) + + return [] + + +def _calculate_s3_span_pointers_for_event(event) -> List[_SpanPointerDescription]: + # Example event: + # https://docs.aws.amazon.com/lambda/latest/dg/with-s3.html + + return list( + chain.from_iterable( + _calculate_s3_span_pointers_for_event_record(record) + for record in event.get("Records", []) + ) + ) + + +def _calculate_s3_span_pointers_for_event_record( + record, +) -> List[_SpanPointerDescription]: + # Event types: + # https://docs.aws.amazon.com/AmazonS3/latest/userguide/notification-how-to-event-types-and-destinations.html + + if record.get("eventName").startswith("ObjectCreated:"): + s3_information = record.get("s3", None) + if s3_information is not None: + return _calculate_s3_span_pointers_for_object_created_s3_information( + s3_information + ) + + return [] + + +def _calculate_s3_span_pointers_for_object_created_s3_information( + s3_information, +) -> List[_SpanPointerDescription]: + try: + bucket = s3_information["bucket"]["name"] + key = s3_information["object"]["key"] + etag = s3_information["object"]["eTag"] + + except KeyError as e: + logger.warning( + "missing s3 information required to make a span pointer: %s", + str(e), + ) + return [] + + try: + return [ + _aws_s3_object_span_pointer_description( + pointer_direction=_SpanPointerDirection.UPSTREAM, + bucket=bucket, + key=key, + etag=etag, + ) + ] + + except Exception as e: + logger.warning( + "failed to generate S3 span pointer: %s", + str(e), + ) + return [] diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 2a6960462..0aded4de0 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -1259,6 +1259,7 @@ def create_function_execution_span( merge_xray_traces, trigger_tags, parent_span=None, + span_pointers=None, ): tags = None if context: @@ -1296,6 +1297,14 @@ def create_function_execution_span( span.set_tags(tags) if parent_span: span.parent_id = parent_span.span_id + if span_pointers: + for span_pointer_description in span_pointers: + span._add_span_pointer( + pointer_kind=span_pointer_description.pointer_kind, + pointer_direction=span_pointer_description.pointer_direction, + pointer_hash=span_pointer_description.pointer_hash, + extra_attributes=span_pointer_description.extra_attributes, + ) return span diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index e97c0ebee..2632d22eb 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -30,6 +30,7 @@ ) from datadog_lambda.module_name import modify_module_name from datadog_lambda.patch import patch_all +from datadog_lambda.span_pointers import calculate_span_pointers from datadog_lambda.tracing import ( extract_dd_trace_context, create_dd_dummy_metadata_subsegment, @@ -307,14 +308,15 @@ def _before(self, event, context): event, context, event_source, self.decode_authorizer_context ) self.span = create_function_execution_span( - context, - self.function_name, - is_cold_start(), - is_proactive_init(), - trace_context_source, - self.merge_xray_traces, - self.trigger_tags, + context=context, + function_name=self.function_name, + is_cold_start=is_cold_start(), + is_proactive_init=is_proactive_init(), + trace_context_source=trace_context_source, + merge_xray_traces=self.merge_xray_traces, + trigger_tags=self.trigger_tags, parent_span=self.inferred_span, + span_pointers=calculate_span_pointers(event_source, event), ) else: set_correlation_ids() diff --git a/poetry.lock b/poetry.lock index 6a8bda88b..dcac5c82c 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,37 +1,18 @@ # This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. -[[package]] -name = "attrs" -version = "24.2.0" -description = "Classes Without Boilerplate" -optional = false -python-versions = ">=3.7" -files = [ - {file = "attrs-24.2.0-py3-none-any.whl", hash = "sha256:81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2"}, - {file = "attrs-24.2.0.tar.gz", hash = "sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346"}, -] - -[package.extras] -benchmark = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -cov = ["cloudpickle", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier (<24.7)"] -tests = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] - [[package]] name = "boto3" -version = "1.34.156" +version = "1.35.28" description = "The AWS SDK for Python" optional = true python-versions = ">=3.8" files = [ - {file = "boto3-1.34.156-py3-none-any.whl", hash = "sha256:cbbd453270b8ce94ef9da60dfbb6f9ceeb3eeee226b635aa9ec44b1def98cc96"}, - {file = "boto3-1.34.156.tar.gz", hash = "sha256:b33e9a8f8be80d3053b8418836a7c1900410b23a30c7cb040927d601a1082e68"}, + {file = "boto3-1.35.28-py3-none-any.whl", hash = "sha256:dc088b86a14f17d3cd2e96915c6ccfd31bce640dfe9180df579ed311bc6bf0fc"}, + {file = "boto3-1.35.28.tar.gz", hash = "sha256:8960fc458b9ba3c8a9890a607c31cee375db821f39aefaec9ff638248e81644a"}, ] [package.dependencies] -botocore = ">=1.34.156,<1.35.0" +botocore = ">=1.35.28,<1.36.0" jmespath = ">=0.7.1,<2.0.0" s3transfer = ">=0.10.0,<0.11.0" @@ -40,13 +21,13 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.34.156" +version = "1.35.28" description = "Low-level, data-driven core of boto 3." optional = true python-versions = ">=3.8" files = [ - {file = "botocore-1.34.156-py3-none-any.whl", hash = "sha256:c48f8c8996216dfdeeb0aa6d3c0f2c7ae25234766434a2ea3e57bdc08494bdda"}, - {file = "botocore-1.34.156.tar.gz", hash = "sha256:5d1478c41ab9681e660b3322432fe09c4055759c317984b7b8d3af9557ff769a"}, + {file = "botocore-1.35.28-py3-none-any.whl", hash = "sha256:b66c78f3d6379bd16f0362f07168fa7699cdda3921fc880047192d96f2c8c527"}, + {file = "botocore-1.35.28.tar.gz", hash = "sha256:115d13f2172d8e9fa92e8d913f0e80092b97624d190f46772ed2930d4a355d55"}, ] [package.dependencies] @@ -58,7 +39,7 @@ urllib3 = [ ] [package.extras] -crt = ["awscrt (==0.21.2)"] +crt = ["awscrt (==0.21.5)"] [[package]] name = "bytecode" @@ -74,40 +55,15 @@ files = [ [package.dependencies] typing-extensions = {version = "*", markers = "python_version < \"3.10\""} -[[package]] -name = "cattrs" -version = "23.2.3" -description = "Composable complex class support for attrs and dataclasses." -optional = false -python-versions = ">=3.8" -files = [ - {file = "cattrs-23.2.3-py3-none-any.whl", hash = "sha256:0341994d94971052e9ee70662542699a3162ea1e0c62f7ce1b4a57f563685108"}, - {file = "cattrs-23.2.3.tar.gz", hash = "sha256:a934090d95abaa9e911dac357e3a8699e0b4b14f8529bcc7d2b1ad9d51672b9f"}, -] - -[package.dependencies] -attrs = ">=23.1.0" -exceptiongroup = {version = ">=1.1.1", markers = "python_version < \"3.11\""} -typing-extensions = {version = ">=4.1.0,<4.6.3 || >4.6.3", markers = "python_version < \"3.11\""} - -[package.extras] -bson = ["pymongo (>=4.4.0)"] -cbor2 = ["cbor2 (>=5.4.6)"] -msgpack = ["msgpack (>=1.0.5)"] -orjson = ["orjson (>=3.9.2)"] -pyyaml = ["pyyaml (>=6.0)"] -tomlkit = ["tomlkit (>=0.11.8)"] -ujson = ["ujson (>=5.7.0)"] - [[package]] name = "certifi" -version = "2024.7.4" +version = "2024.8.30" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2024.7.4-py3-none-any.whl", hash = "sha256:c198e21b1289c2ab85ee4e67bb4b4ef3ead0892059901a8d5b622f24a1101e90"}, - {file = "certifi-2024.7.4.tar.gz", hash = "sha256:5a1e7645bc0ec61a09e26c36f6106dd4cf40c6db3a1fb6352b0244e7fb057c7b"}, + {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"}, + {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"}, ] [[package]] @@ -222,119 +178,98 @@ files = [ [[package]] name = "datadog" -version = "0.49.1" +version = "0.50.1" description = "The Datadog Python library" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ - {file = "datadog-0.49.1-py2.py3-none-any.whl", hash = "sha256:4a56d57490ea699a0dfd9253547485a57b4120e93489defadcf95c66272374d6"}, - {file = "datadog-0.49.1.tar.gz", hash = "sha256:4cb7a7991af6cadb868fe450cd456473e65f11fc678b7d7cf61044ff1c6074d8"}, + {file = "datadog-0.50.1-py2.py3-none-any.whl", hash = "sha256:eb101abee34fe6c1121558fd5ea48f592eb661604abb7914c4f693d8ad25a515"}, + {file = "datadog-0.50.1.tar.gz", hash = "sha256:579d4db54bd6ef918c5250217edb15b80b7b11582b8e24fce43702768c3f2e2d"}, ] [package.dependencies] requests = ">=2.6.0" -[[package]] -name = "ddsketch" -version = "3.0.1" -description = "Distributed quantile sketches" -optional = false -python-versions = ">=3.7" -files = [ - {file = "ddsketch-3.0.1-py3-none-any.whl", hash = "sha256:6d047b455fe2837c43d366ff1ae6ba0c3166e15499de8688437a75cea914224e"}, - {file = "ddsketch-3.0.1.tar.gz", hash = "sha256:aa8f20b2965e61731ca4fee2ca9c209f397f5bbb23f9d192ec8bd7a2f5bd9824"}, -] - -[package.dependencies] -six = "*" - -[package.extras] -serialization = ["protobuf (>=3.0.0)"] - [[package]] name = "ddtrace" -version = "2.10.4" +version = "2.14.0" description = "Datadog APM client library" optional = false python-versions = ">=3.7" files = [ - {file = "ddtrace-2.10.4-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:a7c5604654682aa0f5a717d93d36d1a1737cda4ca107c272ca477acf8c6fe076"}, - {file = "ddtrace-2.10.4-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:a0d9c6f0d91a97c71596787df80e0ecc582d42a584679a587b8e3e6fa8e5aa54"}, - {file = "ddtrace-2.10.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:70c9c6452bb052e26ce6799024205c37ac76b3554d31b5ede7df90e00d7bbbb4"}, - {file = "ddtrace-2.10.4-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a764002f486794760817396095376f4cfb88b5571b5b6c75ae8a27cf3609d881"}, - {file = "ddtrace-2.10.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b87219b9f49828357fa70fcb2a2cb18981896d44175fc687b65ff906c663f26"}, - {file = "ddtrace-2.10.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:65fe081b385e43b86d061dbfda9582308287f17c3f1ad2fe38305765079dd825"}, - {file = "ddtrace-2.10.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d8903c4eb54b6b690abe138275811492bc288791f488f39c1d779e279b06d312"}, - {file = "ddtrace-2.10.4-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:39b2b08a96f2715fa57d441fcd2ba4b49eee4d23fa8d162032f98ec5a652b74c"}, - {file = "ddtrace-2.10.4-cp310-cp310-win32.whl", hash = "sha256:f364f0b2ec96cad163a6943dcb9ec6c3262da6d261a0c2057a4524bee8b07166"}, - {file = "ddtrace-2.10.4-cp310-cp310-win_amd64.whl", hash = "sha256:dc6b0179f169e3b7424441e0af55a08795491e35ab9e9586a8970e66a11ac14f"}, - {file = "ddtrace-2.10.4-cp311-cp311-macosx_12_0_universal2.whl", hash = "sha256:7a4f9d6ec5cb9cbb0fbfdb3b47873e160716fbc7a98c863d6e6a260b882ef18f"}, - {file = "ddtrace-2.10.4-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:9d69c965bd4c7448d4a6dbb92736c7bc16c4bd3168ec1a5ee31afbb02be9b846"}, - {file = "ddtrace-2.10.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f84810d4f4423864c41efb1586aa573b074a9179aa2b4416a3d249aec91f679"}, - {file = "ddtrace-2.10.4-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7775e90338ee8d8e0c65a92edb88f9a477977cad7b27436581a2b9368440960b"}, - {file = "ddtrace-2.10.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb0e72eb97e0cc18ffa4e5f7bb34c7738c0af1aa05f26e72c9e4467266061442"}, - {file = "ddtrace-2.10.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:3f003822488bca7f8d2c245a80adce02118fba76e567f3818b042fd7ef132d57"}, - {file = "ddtrace-2.10.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:beb9a9a9adc8627a1b6487f2b350b418c5188d5b9c83be19a15403e708c62280"}, - {file = "ddtrace-2.10.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:41880b06ea7720b75df6d1703190e0bb0e5eb478c1ffcec6711a1a5c44503596"}, - {file = "ddtrace-2.10.4-cp311-cp311-win32.whl", hash = "sha256:b538db5512aac530d46bd2f438324d4c6cb950363d865c264dcd5f844a3c56ad"}, - {file = "ddtrace-2.10.4-cp311-cp311-win_amd64.whl", hash = "sha256:45c98313d0572d7dd3a493d5b53ccb5798691dbe785e0245dc057cd30939cbb2"}, - {file = "ddtrace-2.10.4-cp312-cp312-macosx_12_0_universal2.whl", hash = "sha256:3d9f90f84a83d53c9c363b3c3673606b1066f4ea0d09edf4d5684ed1a64bf131"}, - {file = "ddtrace-2.10.4-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:2cfc3737fd79e13ba786b29e7fb5d9a48899779d1f62bb13cfc9065df43dd049"}, - {file = "ddtrace-2.10.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ee686cd9c311e204a2c40e8102b17a7fe2226e9a29a99585f0bcf515527b6f9"}, - {file = "ddtrace-2.10.4-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b5cd07d2e9b6148067bec473982a95c724049eeae036d9156df677ea4b181483"}, - {file = "ddtrace-2.10.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e001982c0b01dc6905103be11d00c81ff743e28cc42eb6484f422f2cc2b1d6db"}, - {file = "ddtrace-2.10.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:f6626f79264e0bce443864b4582de7983080e772942f3f5db08f1ff0262f8371"}, - {file = "ddtrace-2.10.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a6fded075f195e7c922a43c2fd13243e25272cafd866853f6e9a9ce4ac647721"}, - {file = "ddtrace-2.10.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:872259fdc12448f6e8b7cfe7b20e58467847c2ef579962134772b41909858b0e"}, - {file = "ddtrace-2.10.4-cp312-cp312-win32.whl", hash = "sha256:2c19868446d0a9ea9473847b335bdcfc69e9adc9fea7469c1ecbbb2decc8ab2e"}, - {file = "ddtrace-2.10.4-cp312-cp312-win_amd64.whl", hash = "sha256:826586f0d3f7363f1c406d4caeb3b8a0db84348c0b9f12e1e61c29d79a03b26e"}, - {file = "ddtrace-2.10.4-cp37-cp37m-macosx_12_0_x86_64.whl", hash = "sha256:001f626335a6bbe7bacbc11b545956fc82c00eb8993831fc5dc7e5898e01bc10"}, - {file = "ddtrace-2.10.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6a5179e4d66061cf566c622a8f099497c50ea9e57f4f6bc1dfa0fc25dd6f5111"}, - {file = "ddtrace-2.10.4-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3dae175bcd1e3634db576059dfdc76f304212e31794d45351ed643f3c32a3913"}, - {file = "ddtrace-2.10.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64db1467c4aaa55c828daa9db380737608959ed9a5f883bd53db5acd95c1d7c6"}, - {file = "ddtrace-2.10.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:e21ce02e8f5c415f94748ac6ad406ba4f0f1e84a5416a14e14772495af98ac5a"}, - {file = "ddtrace-2.10.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:9e4a69b60dd60da6dbee88599560903af71f34b9891ab9f0e71a33ac210b71de"}, - {file = "ddtrace-2.10.4-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:41f865c1babe7a8b48e1393251ac91b6a0d856a6544e3c2da01981c342dcc750"}, - {file = "ddtrace-2.10.4-cp37-cp37m-win32.whl", hash = "sha256:15e766fdb525065e03c370ef511cb86f861712c46f34f82290fd0bb8a1ffb724"}, - {file = "ddtrace-2.10.4-cp37-cp37m-win_amd64.whl", hash = "sha256:32cdefb83ff9426a701ad8eb507d54d277526037b1a9e69366f8c03928980939"}, - {file = "ddtrace-2.10.4-cp38-cp38-macosx_12_0_universal2.whl", hash = "sha256:445725d19d95a7526c46678f364b1a107d3c5be7ab10f0f78edc362a2d258c56"}, - {file = "ddtrace-2.10.4-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:ab923631245e40b55474f3c86e5c44fb324e3dc8d99ce58d66ba972ed4a2f92e"}, - {file = "ddtrace-2.10.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:032e46dbad09668d7dc8ebaa70772ea326b41101cc8200394d7a8cf246f43aca"}, - {file = "ddtrace-2.10.4-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:41a621029079780420bfeffac559bed963808844d8aecbdab62c1e2294ece299"}, - {file = "ddtrace-2.10.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e731f76657caa42c6d773ce6ec0674c9ac5c5e01ddd8ada96f48ff8f1267e562"}, - {file = "ddtrace-2.10.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:30b9ef3fd8ccba20d671a0f33330202d563988e33fc382a9d5ffa586a46dbe1b"}, - {file = "ddtrace-2.10.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:9402df23b894f32eb92cd20531f1c336824f4b82c56167baf2666bd6c42cba09"}, - {file = "ddtrace-2.10.4-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:9aa7015bc6375705e5fb2ee7eb1ca4be6298dcc976d5c066e2afecc0c6dbb498"}, - {file = "ddtrace-2.10.4-cp38-cp38-win32.whl", hash = "sha256:16f7a843fc8fcec9a49ca4f164353a88a1370f90f1b42a094bd22cf082a9b3c2"}, - {file = "ddtrace-2.10.4-cp38-cp38-win_amd64.whl", hash = "sha256:b855914ddeb8a80ec63f830cb5ac1e1a4cb3b11b9cb03dcb056da1924d4a28a3"}, - {file = "ddtrace-2.10.4-cp39-cp39-macosx_12_0_universal2.whl", hash = "sha256:75b0d8d6980f76dac1e9d56800c343b9cd3c5504ec8d821deaa3a52e3eccb11e"}, - {file = "ddtrace-2.10.4-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:8b1b9c2da530f6da01624ea5f5a9121198d96fa06c59d9b20dd1540122c19889"}, - {file = "ddtrace-2.10.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02f1e292a45fed6bce8289241877c825279fb981f773ad3a82205523a27a8458"}, - {file = "ddtrace-2.10.4-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a08d40f0fd126ad09916fccee0f85c20395907aa7961900d5ad67bfcd6d12afd"}, - {file = "ddtrace-2.10.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ff8a5648db09d9c2736f88a3eb641a665bec0adbd24db4bfd8cb00a9cc84200"}, - {file = "ddtrace-2.10.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a3409973b9bfe7c1c3ed568ce78a80b760bad8bb964983835b6b90d787166f11"}, - {file = "ddtrace-2.10.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9b0db4567b7dce7339c29d302da6430917d5c4ffd9eb8cca76c54dd870b61205"}, - {file = "ddtrace-2.10.4-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:c987c5ff4863b9acf2de8eb395dbf06dad928cd8d962618823809ae778702ad9"}, - {file = "ddtrace-2.10.4-cp39-cp39-win32.whl", hash = "sha256:f9c2e5c551c48b07b416d4dba73011c04d462b024ad4b7dfe38e65dcc9bde6b3"}, - {file = "ddtrace-2.10.4-cp39-cp39-win_amd64.whl", hash = "sha256:40f5c918fefb83a27bfd6665cb96a8a2ae264c1b01d2b8c54e3bfacd04de4c44"}, - {file = "ddtrace-2.10.4.tar.gz", hash = "sha256:d55a4e45b98d0f16adaefb6d95dc942bfadc9e9651ca884f5f70f8f098f6a893"}, + {file = "ddtrace-2.14.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:c55bf165b923a12a1386fbf951735a4b8335a0cfa1558833d2b78abdd289c783"}, + {file = "ddtrace-2.14.0-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:b6abaec1263e0ed19fe48d068e02907b7cc6bd312049c4d562f3fe80fcb9e8e5"}, + {file = "ddtrace-2.14.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:84aff2e9a98172c44b187616838705c7abd4c6e2122e595eb324ba0f269cc7cf"}, + {file = "ddtrace-2.14.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82c5147d9b27604ac642de32e05fc2d5bac76b15a9ad98b530a585fed347ca86"}, + {file = "ddtrace-2.14.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cfb54abfb7b1b1c33a794d926df76e8161bd284a3b15ad55d13290c41b734e95"}, + {file = "ddtrace-2.14.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e89d31f3871bee63322dc5d0168d57cfb07ff2581e240510f7103a27e5608046"}, + {file = "ddtrace-2.14.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:75ce4fce7be384bdaae2a4d8600104397352ca71afea6a37a3243f6013031f5d"}, + {file = "ddtrace-2.14.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:81c093b8ad180ce55aec1e6d257de9729a2a2c09dec0fcddc2e7aaede102c32c"}, + {file = "ddtrace-2.14.0-cp310-cp310-win32.whl", hash = "sha256:b22e13c25af867d92c3b5898e3c01c7dc05ec2ec9975ee54f1ed1ed7ac05969a"}, + {file = "ddtrace-2.14.0-cp310-cp310-win_amd64.whl", hash = "sha256:d0faab57ee36e054d01fe0684418f20235532411fe470837cce91b60c8aa48a7"}, + {file = "ddtrace-2.14.0-cp311-cp311-macosx_12_0_universal2.whl", hash = "sha256:1f28dbfc35e8e4b3885d55552ef85aa49f66d64291df6212dae878eb057e92e7"}, + {file = "ddtrace-2.14.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:80cf740482b6f1c65c394e54a6ed269785bfb6319bcd51b91275d671a0d3d2b2"}, + {file = "ddtrace-2.14.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f0d07c561238baa8d1d667f315409b9f74a64e77cc2bbad416df6c08d3e9e86"}, + {file = "ddtrace-2.14.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bbf1c209f5c9b5b505524fe0c5cb3a0f19ece72680d090240af30a6e5172ae23"}, + {file = "ddtrace-2.14.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03d7883787db4cd302ebcf6121421d38f3022d98cd04e57473953f0e320f8f4c"}, + {file = "ddtrace-2.14.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:8cbe7b8848c46e5d7c2efaa4428ea5be9fda699bd69d1d271a8fe805b5554246"}, + {file = "ddtrace-2.14.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:2286245dc4bfee011851d7e96d4cf15ec59260b54693cae7ffd688ba6d5562a7"}, + {file = "ddtrace-2.14.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:49214fbfb675f69369339389eea5f399706e9df222b5aba0d92f84f078918074"}, + {file = "ddtrace-2.14.0-cp311-cp311-win32.whl", hash = "sha256:f8900a124e56e2232c5a34624b45ce7d8e1bba9cad214f2d16dc73a64b30ce09"}, + {file = "ddtrace-2.14.0-cp311-cp311-win_amd64.whl", hash = "sha256:5f4d340f8c438f6ceb510b4f1fa1a22db14b536420acf8f9d68d5acd95d2e543"}, + {file = "ddtrace-2.14.0-cp312-cp312-macosx_12_0_universal2.whl", hash = "sha256:567cb2254abd0e1e36251ed5a8395c6da6a7f808a854a9fe69ff5a410ab0e586"}, + {file = "ddtrace-2.14.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:3737025a28090e48eb8c087608b5620056c2b63460889028723bb4918e663293"}, + {file = "ddtrace-2.14.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ef5f8a4bbe25c9d175c4cf239d63b48a7d26c9ad190b52ac3c27494ff78fc048"}, + {file = "ddtrace-2.14.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7d6581d6684afa3d8661e6aff4771edc2b87fcc19628bc0e72724b794a551d3d"}, + {file = "ddtrace-2.14.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3c3d834e7e0175c51c2a0fe37ef0bba7f80a00915c000826550ea94e570e5b0"}, + {file = "ddtrace-2.14.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:5843b6cc83395979f3a17ecb14e14a446795bac64cb4e05bc6eff30be55d014a"}, + {file = "ddtrace-2.14.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:0209386ee86c95a1ceb245539f81746d4986110c6c974ce1152afbb114531b9a"}, + {file = "ddtrace-2.14.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:2f1d475562ca82ed79616614a1f11880e580920566fd5ba35b777d738f93affb"}, + {file = "ddtrace-2.14.0-cp312-cp312-win32.whl", hash = "sha256:83f63720fe40d930b614137d45dc1df5942a440779478f1a192c05ab20fbbbac"}, + {file = "ddtrace-2.14.0-cp312-cp312-win_amd64.whl", hash = "sha256:0f8bf0a20e9a9094262c59f7237a743cf5aefd20dc29722912a4782e09b2ce1f"}, + {file = "ddtrace-2.14.0-cp37-cp37m-macosx_12_0_x86_64.whl", hash = "sha256:d7006a90a2200e0692d0c307147020365f244f2043e994aeac9d1c3476d5056f"}, + {file = "ddtrace-2.14.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a375825022164fab9230b5d51662503953c3d3ef4ae0928f72d3429b8d82067a"}, + {file = "ddtrace-2.14.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:088f0e67af81096594065327a98058e4b3555a37458214289ddafe0636b752bb"}, + {file = "ddtrace-2.14.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ffa219e3fa22403e615be2e0669cc1d1d2ca1afa6ef141079ae5e6973306181"}, + {file = "ddtrace-2.14.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:3cd1ffa14bcfc66f3cee0d191ca4681fae602334d9a8044bd5a73b2fc4693454"}, + {file = "ddtrace-2.14.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:7c111498a85693c31ff3e9bd43994ce6734ab960057b36b87e7cbb14e4e90df0"}, + {file = "ddtrace-2.14.0-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:4ea1f947b128075c42f1df90f447172a07775cb6c2701698ceaad671dfc71bc7"}, + {file = "ddtrace-2.14.0-cp37-cp37m-win32.whl", hash = "sha256:de373d0e7cb0a37ee9ff452f344dcca2d525f3d3ec500f175237456d78472d20"}, + {file = "ddtrace-2.14.0-cp37-cp37m-win_amd64.whl", hash = "sha256:a9880134d03f732503d46b2f75e3febea817827b7d025b7a963bc4d0db892edd"}, + {file = "ddtrace-2.14.0-cp38-cp38-macosx_12_0_universal2.whl", hash = "sha256:8a02903585ae581a3b40ad01e062535d8affb3968a408fd96eb48f70615381a4"}, + {file = "ddtrace-2.14.0-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:b8a1fba689370e5fe956dab6e48f67cb37679fcd26d09fa402f8f4a99472140a"}, + {file = "ddtrace-2.14.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:073b5cf02bc9302c8132f9ff9db000448a3fd7ba3c3139fc1fb92cd3207d6d96"}, + {file = "ddtrace-2.14.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:86bf04c50fa5ae351c50e716befc5f114993936c18a553d4e177c6272f9df3a4"}, + {file = "ddtrace-2.14.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2dd8d22e61261a04849e89590f4aa81c8a39bd2b7355babf77213fe8c94608bd"}, + {file = "ddtrace-2.14.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6bb4f00aef805d4e21b16c288823a158f203728e4855f7c8eb7e527c8e49c5c1"}, + {file = "ddtrace-2.14.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:a15180012c57b60469a65be8b6c1f7bdf9372a51b8e8e4de622802f13d770ed1"}, + {file = "ddtrace-2.14.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:206a01ae3986e09777f0d3d1dc65f1a39d29a77194af07467f3cc9679a60373c"}, + {file = "ddtrace-2.14.0-cp38-cp38-win32.whl", hash = "sha256:852ca5bb6b5c5bdf8accaf45fda78171d0deecf378ac1efddf69e0f098196807"}, + {file = "ddtrace-2.14.0-cp38-cp38-win_amd64.whl", hash = "sha256:7ba1c9de72e059db44b018743c1abee9c4e50f8538567359312595554d3a427e"}, + {file = "ddtrace-2.14.0-cp39-cp39-macosx_12_0_universal2.whl", hash = "sha256:a426098d703548802f8d80a76e7740d42b40061493e82b9ab055154dd9837c8f"}, + {file = "ddtrace-2.14.0-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:5e72740fcdab45ed919b130f6ae2e5a26c6aaa7a13be94673dee0bce11a561a6"}, + {file = "ddtrace-2.14.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:70b5c386ff3c5b76ad96812fdaf4206660efd51e5ebe98ec46e4eaf8bae5440c"}, + {file = "ddtrace-2.14.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b262463a46fa178d0257798b84439810dac5de8e81ffc7f6c14350b5a1b9be3e"}, + {file = "ddtrace-2.14.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf628b5588ea8b14e4bbd0187b7adc7c1fc493bd98df354e9f1da5bd8e8b4e15"}, + {file = "ddtrace-2.14.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:2256ab35a9fc9190fe14bb2af95b769e6c08f872efbeb4ae3ffd7e1ce0a2c650"}, + {file = "ddtrace-2.14.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:77b73b0878ddfa1a91f74c03b2b9b739fb296b9624ccfe743525d8190e434a6d"}, + {file = "ddtrace-2.14.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:5c3a34ddc9b8f63d46e32e2b9d52f5ab23e373ae90395f09aef60edb0e6238cb"}, + {file = "ddtrace-2.14.0-cp39-cp39-win32.whl", hash = "sha256:8a3f5facc044e016ff0529b44ba16d54e56868eb48c6249c03e15cd9407562e5"}, + {file = "ddtrace-2.14.0-cp39-cp39-win_amd64.whl", hash = "sha256:e9f48394d2a2d1d2ac48fb955d8637b2dd7b055b9033bd686008c12d41b37552"}, + {file = "ddtrace-2.14.0.tar.gz", hash = "sha256:fb8e851164a4b1f64002d1f76b720281d5cf63eb904f1d04a36bf3c4955b6693"}, ] [package.dependencies] -attrs = ">=20" bytecode = [ {version = ">=0.13.0", markers = "python_version < \"3.11.0\""}, {version = ">=0.15.0", markers = "python_version >= \"3.12.0\""}, {version = ">=0.14.0", markers = "python_version ~= \"3.11.0\""}, ] -cattrs = "*" -ddsketch = ">=3.0.0" envier = ">=0.5,<1.0" opentelemetry-api = ">=1" protobuf = ">=3" -setuptools = {version = "*", markers = "python_version >= \"3.12\""} -six = ">=1.12.0" typing-extensions = "*" +wrapt = ">=1" xmltodict = ">=0.12" [package.extras] @@ -376,7 +311,7 @@ mypy = ["mypy"] name = "exceptiongroup" version = "1.2.2" description = "Backport of PEP 654 (exception groups)" -optional = false +optional = true python-versions = ">=3.7" files = [ {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, @@ -404,24 +339,27 @@ pyflakes = ">=2.5.0,<2.6.0" [[package]] name = "idna" -version = "3.7" +version = "3.10" description = "Internationalized Domain Names in Applications (IDNA)" optional = false -python-versions = ">=3.5" +python-versions = ">=3.6" files = [ - {file = "idna-3.7-py3-none-any.whl", hash = "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"}, - {file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"}, + {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, + {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, ] +[package.extras] +all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] + [[package]] name = "importlib-metadata" -version = "8.0.0" +version = "8.4.0" description = "Read metadata from Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "importlib_metadata-8.0.0-py3-none-any.whl", hash = "sha256:15584cf2b1bf449d98ff8a6ff1abef57bf20f3ac6454f431736cd3e660921b2f"}, - {file = "importlib_metadata-8.0.0.tar.gz", hash = "sha256:188bd24e4c346d3f0a933f275c2fec67050326a856b9a359881d7c2a697e8812"}, + {file = "importlib_metadata-8.4.0-py3-none-any.whl", hash = "sha256:66f342cc6ac9818fc6ff340576acd24d65ba0b3efabb2b4ac08b598965a4a2f1"}, + {file = "importlib_metadata-8.4.0.tar.gz", hash = "sha256:9a547d3bc3608b025f93d403fdd1aae741c24fbb8314df4b155675742ce303c5"}, ] [package.dependencies] @@ -467,18 +405,18 @@ files = [ [[package]] name = "opentelemetry-api" -version = "1.26.0" +version = "1.27.0" description = "OpenTelemetry Python API" optional = false python-versions = ">=3.8" files = [ - {file = "opentelemetry_api-1.26.0-py3-none-any.whl", hash = "sha256:7d7ea33adf2ceda2dd680b18b1677e4152000b37ca76e679da71ff103b943064"}, - {file = "opentelemetry_api-1.26.0.tar.gz", hash = "sha256:2bd639e4bed5b18486fef0b5a520aaffde5a18fc225e808a1ac4df363f43a1ce"}, + {file = "opentelemetry_api-1.27.0-py3-none-any.whl", hash = "sha256:953d5871815e7c30c81b56d910c707588000fff7a3ca1c73e6531911d53065e7"}, + {file = "opentelemetry_api-1.27.0.tar.gz", hash = "sha256:ed673583eaa5f81b5ce5e86ef7cdaf622f88ef65f0b9aab40b843dcae5bef342"}, ] [package.dependencies] deprecated = ">=1.2.6" -importlib-metadata = ">=6.0,<=8.0.0" +importlib-metadata = ">=6.0,<=8.4.0" [[package]] name = "packaging" @@ -508,22 +446,22 @@ testing = ["pytest", "pytest-benchmark"] [[package]] name = "protobuf" -version = "5.27.3" +version = "5.28.2" description = "" optional = false python-versions = ">=3.8" files = [ - {file = "protobuf-5.27.3-cp310-abi3-win32.whl", hash = "sha256:dcb307cd4ef8fec0cf52cb9105a03d06fbb5275ce6d84a6ae33bc6cf84e0a07b"}, - {file = "protobuf-5.27.3-cp310-abi3-win_amd64.whl", hash = "sha256:16ddf3f8c6c41e1e803da7abea17b1793a97ef079a912e42351eabb19b2cffe7"}, - {file = "protobuf-5.27.3-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:68248c60d53f6168f565a8c76dc58ba4fa2ade31c2d1ebdae6d80f969cdc2d4f"}, - {file = "protobuf-5.27.3-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:b8a994fb3d1c11156e7d1e427186662b64694a62b55936b2b9348f0a7c6625ce"}, - {file = "protobuf-5.27.3-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:a55c48f2a2092d8e213bd143474df33a6ae751b781dd1d1f4d953c128a415b25"}, - {file = "protobuf-5.27.3-cp38-cp38-win32.whl", hash = "sha256:043853dcb55cc262bf2e116215ad43fa0859caab79bb0b2d31b708f128ece035"}, - {file = "protobuf-5.27.3-cp38-cp38-win_amd64.whl", hash = "sha256:c2a105c24f08b1e53d6c7ffe69cb09d0031512f0b72f812dd4005b8112dbe91e"}, - {file = "protobuf-5.27.3-cp39-cp39-win32.whl", hash = "sha256:c84eee2c71ed83704f1afbf1a85c3171eab0fd1ade3b399b3fad0884cbcca8bf"}, - {file = "protobuf-5.27.3-cp39-cp39-win_amd64.whl", hash = "sha256:af7c0b7cfbbb649ad26132e53faa348580f844d9ca46fd3ec7ca48a1ea5db8a1"}, - {file = "protobuf-5.27.3-py3-none-any.whl", hash = "sha256:8572c6533e544ebf6899c360e91d6bcbbee2549251643d32c52cf8a5de295ba5"}, - {file = "protobuf-5.27.3.tar.gz", hash = "sha256:82460903e640f2b7e34ee81a947fdaad89de796d324bcbc38ff5430bcdead82c"}, + {file = "protobuf-5.28.2-cp310-abi3-win32.whl", hash = "sha256:eeea10f3dc0ac7e6b4933d32db20662902b4ab81bf28df12218aa389e9c2102d"}, + {file = "protobuf-5.28.2-cp310-abi3-win_amd64.whl", hash = "sha256:2c69461a7fcc8e24be697624c09a839976d82ae75062b11a0972e41fd2cd9132"}, + {file = "protobuf-5.28.2-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:a8b9403fc70764b08d2f593ce44f1d2920c5077bf7d311fefec999f8c40f78b7"}, + {file = "protobuf-5.28.2-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:35cfcb15f213449af7ff6198d6eb5f739c37d7e4f1c09b5d0641babf2cc0c68f"}, + {file = "protobuf-5.28.2-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:5e8a95246d581eef20471b5d5ba010d55f66740942b95ba9b872d918c459452f"}, + {file = "protobuf-5.28.2-cp38-cp38-win32.whl", hash = "sha256:87317e9bcda04a32f2ee82089a204d3a2f0d3c8aeed16568c7daf4756e4f1fe0"}, + {file = "protobuf-5.28.2-cp38-cp38-win_amd64.whl", hash = "sha256:c0ea0123dac3399a2eeb1a1443d82b7afc9ff40241433296769f7da42d142ec3"}, + {file = "protobuf-5.28.2-cp39-cp39-win32.whl", hash = "sha256:ca53faf29896c526863366a52a8f4d88e69cd04ec9571ed6082fa117fac3ab36"}, + {file = "protobuf-5.28.2-cp39-cp39-win_amd64.whl", hash = "sha256:8ddc60bf374785fb7cb12510b267f59067fa10087325b8e1855b898a0d81d276"}, + {file = "protobuf-5.28.2-py3-none-any.whl", hash = "sha256:52235802093bd8a2811abbe8bf0ab9c5f54cca0a751fdd3f6ac2a21438bffece"}, + {file = "protobuf-5.28.2.tar.gz", hash = "sha256:59379674ff119717404f7454647913787034f03fe7049cbef1d74a97bb4593f0"}, ] [[package]] @@ -561,13 +499,13 @@ files = [ [[package]] name = "pytest" -version = "8.3.2" +version = "8.3.3" description = "pytest: simple powerful testing with Python" optional = true python-versions = ">=3.8" files = [ - {file = "pytest-8.3.2-py3-none-any.whl", hash = "sha256:4ba08f9ae7dcf84ded419494d229b48d0903ea6407b030eaec46df5e6a73bba5"}, - {file = "pytest-8.3.2.tar.gz", hash = "sha256:c132345d12ce551242c87269de812483f5bcc87cdbb4722e48487ba194f9fdce"}, + {file = "pytest-8.3.3-py3-none-any.whl", hash = "sha256:a6853c7375b2663155079443d2e45de913a911a11d669df02a50814944db57b2"}, + {file = "pytest-8.3.3.tar.gz", hash = "sha256:70b98107bd648308a7952b06e6ca9a50bc660be218d53c257cc1fc94fda10181"}, ] [package.dependencies] @@ -653,27 +591,11 @@ botocore = ">=1.33.2,<2.0a.0" [package.extras] crt = ["botocore[crt] (>=1.33.2,<2.0a.0)"] -[[package]] -name = "setuptools" -version = "72.1.0" -description = "Easily download, build, install, upgrade, and uninstall Python packages" -optional = false -python-versions = ">=3.8" -files = [ - {file = "setuptools-72.1.0-py3-none-any.whl", hash = "sha256:5a03e1860cf56bb6ef48ce186b0e557fdba433237481a9a625176c2831be15d1"}, - {file = "setuptools-72.1.0.tar.gz", hash = "sha256:8d243eff56d095e5817f796ede6ae32941278f542e0f941867cc05ae52b162ec"}, -] - -[package.extras] -core = ["importlib-metadata (>=6)", "importlib-resources (>=5.10.2)", "jaraco.text (>=3.7)", "more-itertools (>=8.8)", "ordered-set (>=3.1.1)", "packaging (>=24)", "platformdirs (>=2.6.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"] -doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test", "mypy (==1.11.*)", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (<0.4)", "pytest-ruff (>=0.2.1)", "pytest-ruff (>=0.3.2)", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] - [[package]] name = "six" version = "1.16.0" description = "Python 2 and 3 compatibility utilities" -optional = false +optional = true python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" files = [ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, @@ -791,13 +713,13 @@ files = [ [[package]] name = "urllib3" -version = "1.26.19" +version = "1.26.20" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ - {file = "urllib3-1.26.19-py2.py3-none-any.whl", hash = "sha256:37a0344459b199fce0e80b0d3569837ec6b6937435c5244e7fd73fa6006830f3"}, - {file = "urllib3-1.26.19.tar.gz", hash = "sha256:3e3d753a8618b86d7de333b4223005f68720bcd6a7d2bcb9fbd2229ec7c1e429"}, + {file = "urllib3-1.26.20-py2.py3-none-any.whl", hash = "sha256:0ed14ccfbf1c30a9072c7ca157e4319b70d65f623e91e7b32fadb2853431016e"}, + {file = "urllib3-1.26.20.tar.gz", hash = "sha256:40c2dc0c681e47eb8f90e7e27bf6ff7df2e677421fd46756da1161c39ca70d32"}, ] [package.extras] @@ -807,13 +729,13 @@ socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] [[package]] name = "urllib3" -version = "2.2.2" +version = "2.2.3" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.8" files = [ - {file = "urllib3-2.2.2-py3-none-any.whl", hash = "sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472"}, - {file = "urllib3-2.2.2.tar.gz", hash = "sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168"}, + {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"}, + {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"}, ] [package.extras] @@ -914,18 +836,22 @@ files = [ [[package]] name = "zipp" -version = "3.19.2" +version = "3.20.2" description = "Backport of pathlib-compatible object wrapper for zip files" optional = false python-versions = ">=3.8" files = [ - {file = "zipp-3.19.2-py3-none-any.whl", hash = "sha256:f091755f667055f2d02b32c53771a7a6c8b47e1fdbc4b72a8b9072b3eef8015c"}, - {file = "zipp-3.19.2.tar.gz", hash = "sha256:bf1dcf6450f873a13e952a29504887c89e6de7506209e5b1bcc3460135d4de19"}, + {file = "zipp-3.20.2-py3-none-any.whl", hash = "sha256:a817ac80d6cf4b23bf7f2828b7cabf326f15a001bea8b1f9b49631780ba28350"}, + {file = "zipp-3.20.2.tar.gz", hash = "sha256:bc9eb26f4506fda01b81bcde0ca78103b6e62f991b381fec825435c836edbc29"}, ] [package.extras] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)"] +cover = ["pytest-cov"] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -test = ["big-O", "importlib-resources", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy", "pytest-ruff (>=0.2.1)"] +enabler = ["pytest-enabler (>=2.2)"] +test = ["big-O", "importlib-resources", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-ignore-flaky"] +type = ["pytest-mypy"] [extras] dev = ["boto3", "flake8", "pytest", "pytest-benchmark", "requests"] @@ -933,4 +859,4 @@ dev = ["boto3", "flake8", "pytest", "pytest-benchmark", "requests"] [metadata] lock-version = "2.0" python-versions = ">=3.8.0,<4" -content-hash = "bf1aca9cf4f75b18197105ef45c4ef035790dbe8ad10598becad6f31340c4442" +content-hash = "a6aec85347838ba30c70f912ff0d9de03f3089cb658024c1f8d3214baaead760" diff --git a/pyproject.toml b/pyproject.toml index db2bd0a8a..d74fd9fce 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,7 +27,7 @@ classifiers = [ python = ">=3.8.0,<4" datadog = ">=0.41.0,<1.0.0" wrapt = "^1.11.2" -ddtrace = ">=2.10.0" +ddtrace = ">=2.14.0" ujson = ">=5.9.0" boto3 = { version = "^1.34.0", optional = true } requests = { version ="^2.22.0", optional = true } diff --git a/scripts/run_integration_tests.sh b/scripts/run_integration_tests.sh index cc36698ba..5e8c5f671 100755 --- a/scripts/run_integration_tests.sh +++ b/scripts/run_integration_tests.sh @@ -2,9 +2,9 @@ # Usage - run commands from repo root: # To check if new changes to the layer cause changes to any snapshots: -# BUILD_LAYERS=true DD_API_KEY=XXXX aws-vault exec sso-serverless-sandbox-account-admin -- ./scripts/run_integration_tests +# BUILD_LAYERS=true DD_API_KEY=XXXX aws-vault exec sso-serverless-sandbox-account-admin -- ./scripts/run_integration_tests.sh # To regenerate snapshots: -# UPDATE_SNAPSHOTS=true DD_API_KEY=XXXX aws-vault exec sso-serverless-sandbox-account-admin -- ./scripts/run_integration_tests +# UPDATE_SNAPSHOTS=true DD_API_KEY=XXXX aws-vault exec sso-serverless-sandbox-account-admin -- ./scripts/run_integration_tests.sh set -e diff --git a/tests/test_span_pointers.py b/tests/test_span_pointers.py new file mode 100644 index 000000000..f8181d443 --- /dev/null +++ b/tests/test_span_pointers.py @@ -0,0 +1,93 @@ +from typing import List +from typing import NamedTuple + +from ddtrace._trace._span_pointer import _SpanPointerDirection +from ddtrace._trace._span_pointer import _SpanPointerDescription +from datadog_lambda.trigger import _EventSource +from datadog_lambda.trigger import EventTypes +from datadog_lambda.span_pointers import calculate_span_pointers +import pytest + + +class TestCalculateSpanPointers: + class SpanPointersCase(NamedTuple): + name: str + event_source: _EventSource + event: dict + span_pointers: List[_SpanPointerDescription] + + @pytest.mark.parametrize( + "test_case", + [ + SpanPointersCase( + name="some unsupported event", + event_source=_EventSource(EventTypes.UNKNOWN), + event={}, + span_pointers=[], + ), + SpanPointersCase( + name="empty s3 event", + event_source=_EventSource(EventTypes.S3), + event={}, + span_pointers=[], + ), + SpanPointersCase( + name="sensible s3 event", + event_source=_EventSource(EventTypes.S3), + event={ + "Records": [ + { + "eventName": "ObjectCreated:Put", + "s3": { + "bucket": { + "name": "mybucket", + }, + "object": { + "key": "mykey", + "eTag": "123abc", + }, + }, + }, + ], + }, + span_pointers=[ + _SpanPointerDescription( + pointer_kind="aws.s3.object", + pointer_direction=_SpanPointerDirection.UPSTREAM, + pointer_hash="8d49f5b0b742484159d4cd572bae1ce5", + extra_attributes={}, + ), + ], + ), + SpanPointersCase( + name="malformed s3 event", + event_source=_EventSource(EventTypes.S3), + event={ + "Records": [ + { + "eventName": "ObjectCreated:Put", + "s3": { + "bucket": { + "name": "mybucket", + }, + "object": { + "key": "mykey", + # missing eTag + }, + }, + }, + ], + }, + span_pointers=[], + ), + ], + ids=lambda test_case: test_case.name, + ) + def test_calculate_span_pointers(self, test_case: SpanPointersCase): + assert ( + calculate_span_pointers( + test_case.event_source, + test_case.event, + ) + == test_case.span_pointers + ) diff --git a/tests/test_tracing.py b/tests/test_tracing.py index b21b9337c..0fb2ee31d 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -12,6 +12,9 @@ from ddtrace import tracer from ddtrace.context import Context +from ddtrace._trace._span_pointer import _SpanPointer +from ddtrace._trace._span_pointer import _SpanPointerDirection +from ddtrace._trace._span_pointer import _SpanPointerDescription from datadog_lambda.constants import ( SamplingPriority, @@ -746,12 +749,20 @@ class TestFunctionSpanTags(unittest.TestCase): def test_function(self): ctx = get_mock_context() span = create_function_execution_span( - ctx, "", False, False, {"source": ""}, False, {} + context=ctx, + function_name="", + is_cold_start=False, + is_proactive_init=False, + trace_context_source={"source": ""}, + merge_xray_traces=False, + trigger_tags={}, + span_pointers=None, ) self.assertEqual(span.get_tag("function_arn"), function_arn) self.assertEqual(span.get_tag("function_version"), "$LATEST") self.assertEqual(span.get_tag("resource_names"), "Function") self.assertEqual(span.get_tag("functionname"), "function") + self.assertEqual(span._links, []) def test_function_with_version(self): function_version = "1" @@ -759,7 +770,13 @@ def test_function_with_version(self): invoked_function_arn=function_arn + ":" + function_version ) span = create_function_execution_span( - ctx, "", False, False, {"source": ""}, False, {} + context=ctx, + function_name="", + is_cold_start=False, + is_proactive_init=False, + trace_context_source={"source": ""}, + merge_xray_traces=False, + trigger_tags={}, ) self.assertEqual(span.get_tag("function_arn"), function_arn) self.assertEqual(span.get_tag("function_version"), function_version) @@ -770,7 +787,13 @@ def test_function_with_alias(self): function_alias = "alias" ctx = get_mock_context(invoked_function_arn=function_arn + ":" + function_alias) span = create_function_execution_span( - ctx, "", False, False, {"source": ""}, False, {} + context=ctx, + function_name="", + is_cold_start=False, + is_proactive_init=False, + trace_context_source={"source": ""}, + merge_xray_traces=False, + trigger_tags={}, ) self.assertEqual(span.get_tag("function_arn"), function_arn) self.assertEqual(span.get_tag("function_version"), function_alias) @@ -780,13 +803,13 @@ def test_function_with_alias(self): def test_function_with_trigger_tags(self): ctx = get_mock_context() span = create_function_execution_span( - ctx, - "", - False, - False, - {"source": ""}, - False, - {"function_trigger.event_source": "cloudwatch-logs"}, + context=ctx, + function_name="", + is_cold_start=False, + is_proactive_init=False, + trace_context_source={"source": ""}, + merge_xray_traces=False, + trigger_tags={"function_trigger.event_source": "cloudwatch-logs"}, ) self.assertEqual(span.get_tag("function_arn"), function_arn) self.assertEqual(span.get_tag("resource_names"), "Function") @@ -795,6 +818,49 @@ def test_function_with_trigger_tags(self): span.get_tag("function_trigger.event_source"), "cloudwatch-logs" ) + def test_function_with_span_pointers(self): + ctx = get_mock_context() + span = create_function_execution_span( + context=ctx, + function_name="", + is_cold_start=False, + is_proactive_init=False, + trace_context_source={"source": ""}, + merge_xray_traces=False, + trigger_tags={}, + span_pointers=[ + _SpanPointerDescription( + pointer_kind="some.kind", + pointer_direction=_SpanPointerDirection.UPSTREAM, + pointer_hash="some.hash", + extra_attributes={}, + ), + _SpanPointerDescription( + pointer_kind="other.kind", + pointer_direction=_SpanPointerDirection.DOWNSTREAM, + pointer_hash="other.hash", + extra_attributes={"extra": "stuff"}, + ), + ], + ) + self.assertEqual( + span._links, + [ + _SpanPointer( + pointer_kind="some.kind", + pointer_direction=_SpanPointerDirection.UPSTREAM, + pointer_hash="some.hash", + extra_attributes={}, + ), + _SpanPointer( + pointer_kind="other.kind", + pointer_direction=_SpanPointerDirection.DOWNSTREAM, + pointer_hash="other.hash", + extra_attributes={"extra": "stuff"}, + ), + ], + ) + class TestSetTraceRootSpan(unittest.TestCase): def setUp(self): From adfc9e8495e0ca37d5bd5368883eb0af0f4c5e9f Mon Sep 17 00:00:00 2001 From: Brett Langdon Date: Fri, 27 Sep 2024 13:55:12 -0400 Subject: [PATCH 193/403] fix: support dynamic libdd_wrapper.so filename (#516) --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 407265568..610fef385 100644 --- a/Dockerfile +++ b/Dockerfile @@ -25,7 +25,7 @@ RUN find . -name 'libddwaf.so' -delete RUN rm -rf ./python/lib/$runtime/site-packages/urllib3* RUN rm ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_taint_tracking/*.so RUN rm ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_stacktrace*.so -RUN rm ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/libdd_wrapper.so +RUN rm ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/libdd_wrapper*.so RUN rm ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/ddup/_ddup.*.so RUN rm ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/stack_v2/_stack_v2.*.so RUN find . -name "*.dist-info" -type d | xargs rm -rf From de6b4ffcb974e8d305fd81ef76e4413ac785bb16 Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Mon, 30 Sep 2024 19:17:45 +0200 Subject: [PATCH 194/403] Support calling flush_stats with None context. (#518) * Support calling flush_stats with None context. * Fix lint error. --- datadog_lambda/metric.py | 1 + tests/test_metric.py | 10 +++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/datadog_lambda/metric.py b/datadog_lambda/metric.py index 44f8e3775..d312e3bba 100644 --- a/datadog_lambda/metric.py +++ b/datadog_lambda/metric.py @@ -125,6 +125,7 @@ def flush_stats(lambda_context=None): lambda_stats.flush() if extension_thread_stats is not None: + tags = None if lambda_context is not None: tags = get_enhanced_metrics_tags(lambda_context) split_arn = lambda_context.invoked_function_arn.split(":") diff --git a/tests/test_metric.py b/tests/test_metric.py index 10ef91917..241f563b7 100644 --- a/tests/test_metric.py +++ b/tests/test_metric.py @@ -7,7 +7,7 @@ from datadog.api.exceptions import ClientError from datetime import datetime, timedelta -from datadog_lambda.metric import lambda_metric +from datadog_lambda.metric import lambda_metric, flush_stats from datadog_lambda.api import decrypt_kms_api_key, KMS_ENCRYPTION_CONTEXT_KEY from datadog_lambda.thread_stats_writer import ThreadStatsWriter from datadog_lambda.tags import dd_lambda_layer_tag @@ -101,6 +101,10 @@ def setUp(self): self.mock_threadstats_flush_distributions = patcher.start() self.addCleanup(patcher.stop) + patcher = patch("datadog_lambda.metric.extension_thread_stats") + self.mock_extension_thread_stats = patcher.start() + self.addCleanup(patcher.stop) + def test_retry_on_remote_disconnected(self): # Raise the RemoteDisconnected error lambda_stats = ThreadStatsWriter(True) @@ -123,6 +127,10 @@ def test_flush_stats_with_tags(self): for tag in tags: self.assertTrue(tag in lambda_stats.thread_stats.constant_tags) + def test_flush_stats_without_context(self): + flush_stats(lambda_context=None) + self.mock_extension_thread_stats.flush.assert_called_with(None) + MOCK_FUNCTION_NAME = "myFunction" From 10da76bf64530ca626f47f8971427b7e4f5d89c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?jordan=20gonz=C3=A1lez?= <30836115+duncanista@users.noreply.github.com> Date: Tue, 1 Oct 2024 17:57:51 -0400 Subject: [PATCH 195/403] add `ap-southeast-5` (#517) --- ci/datasources/regions.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/ci/datasources/regions.yaml b/ci/datasources/regions.yaml index 9f12a0118..93816ce9c 100644 --- a/ci/datasources/regions.yaml +++ b/ci/datasources/regions.yaml @@ -11,6 +11,7 @@ regions: - code: "ap-southeast-2" - code: "ap-southeast-3" - code: "ap-southeast-4" + - code: "ap-southeast-5" - code: "ap-northeast-1" - code: "ap-northeast-2" - code: "ap-northeast-3" From 66b85d1b8e394db5db8b74ad13fb4f30b0b00173 Mon Sep 17 00:00:00 2001 From: Aleksandr Pasechnik Date: Thu, 3 Oct 2024 11:42:09 -0400 Subject: [PATCH 196/403] Upgrade dd-trace-py to v2.14.1 (#520) --- poetry.lock | 146 ++++++++++++++++++++++++------------------------- pyproject.toml | 2 +- 2 files changed, 74 insertions(+), 74 deletions(-) diff --git a/poetry.lock b/poetry.lock index dcac5c82c..e9557200f 100644 --- a/poetry.lock +++ b/poetry.lock @@ -2,17 +2,17 @@ [[package]] name = "boto3" -version = "1.35.28" +version = "1.35.31" description = "The AWS SDK for Python" optional = true python-versions = ">=3.8" files = [ - {file = "boto3-1.35.28-py3-none-any.whl", hash = "sha256:dc088b86a14f17d3cd2e96915c6ccfd31bce640dfe9180df579ed311bc6bf0fc"}, - {file = "boto3-1.35.28.tar.gz", hash = "sha256:8960fc458b9ba3c8a9890a607c31cee375db821f39aefaec9ff638248e81644a"}, + {file = "boto3-1.35.31-py3-none-any.whl", hash = "sha256:2e9af74d10d8af7610a8d8468d2914961f116912a024fce17351825260385a52"}, + {file = "boto3-1.35.31.tar.gz", hash = "sha256:8c593af260c4ea3eb6f079c09908f94494ca2222aa4e40a7ff490fab1cee8b39"}, ] [package.dependencies] -botocore = ">=1.35.28,<1.36.0" +botocore = ">=1.35.31,<1.36.0" jmespath = ">=0.7.1,<2.0.0" s3transfer = ">=0.10.0,<0.11.0" @@ -21,13 +21,13 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.35.28" +version = "1.35.31" description = "Low-level, data-driven core of boto 3." optional = true python-versions = ">=3.8" files = [ - {file = "botocore-1.35.28-py3-none-any.whl", hash = "sha256:b66c78f3d6379bd16f0362f07168fa7699cdda3921fc880047192d96f2c8c527"}, - {file = "botocore-1.35.28.tar.gz", hash = "sha256:115d13f2172d8e9fa92e8d913f0e80092b97624d190f46772ed2930d4a355d55"}, + {file = "botocore-1.35.31-py3-none-any.whl", hash = "sha256:4cee814875bc78656aef4011d3d6b2231e96f53ea3661ee428201afb579d5c31"}, + {file = "botocore-1.35.31.tar.gz", hash = "sha256:f7bfa910cf2cbcc8c2307c1cf7b93495d614c2d699883417893e0a337fe4eb63"}, ] [package.dependencies] @@ -192,71 +192,71 @@ requests = ">=2.6.0" [[package]] name = "ddtrace" -version = "2.14.0" +version = "2.14.1" description = "Datadog APM client library" optional = false python-versions = ">=3.7" files = [ - {file = "ddtrace-2.14.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:c55bf165b923a12a1386fbf951735a4b8335a0cfa1558833d2b78abdd289c783"}, - {file = "ddtrace-2.14.0-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:b6abaec1263e0ed19fe48d068e02907b7cc6bd312049c4d562f3fe80fcb9e8e5"}, - {file = "ddtrace-2.14.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:84aff2e9a98172c44b187616838705c7abd4c6e2122e595eb324ba0f269cc7cf"}, - {file = "ddtrace-2.14.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82c5147d9b27604ac642de32e05fc2d5bac76b15a9ad98b530a585fed347ca86"}, - {file = "ddtrace-2.14.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cfb54abfb7b1b1c33a794d926df76e8161bd284a3b15ad55d13290c41b734e95"}, - {file = "ddtrace-2.14.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e89d31f3871bee63322dc5d0168d57cfb07ff2581e240510f7103a27e5608046"}, - {file = "ddtrace-2.14.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:75ce4fce7be384bdaae2a4d8600104397352ca71afea6a37a3243f6013031f5d"}, - {file = "ddtrace-2.14.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:81c093b8ad180ce55aec1e6d257de9729a2a2c09dec0fcddc2e7aaede102c32c"}, - {file = "ddtrace-2.14.0-cp310-cp310-win32.whl", hash = "sha256:b22e13c25af867d92c3b5898e3c01c7dc05ec2ec9975ee54f1ed1ed7ac05969a"}, - {file = "ddtrace-2.14.0-cp310-cp310-win_amd64.whl", hash = "sha256:d0faab57ee36e054d01fe0684418f20235532411fe470837cce91b60c8aa48a7"}, - {file = "ddtrace-2.14.0-cp311-cp311-macosx_12_0_universal2.whl", hash = "sha256:1f28dbfc35e8e4b3885d55552ef85aa49f66d64291df6212dae878eb057e92e7"}, - {file = "ddtrace-2.14.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:80cf740482b6f1c65c394e54a6ed269785bfb6319bcd51b91275d671a0d3d2b2"}, - {file = "ddtrace-2.14.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f0d07c561238baa8d1d667f315409b9f74a64e77cc2bbad416df6c08d3e9e86"}, - {file = "ddtrace-2.14.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bbf1c209f5c9b5b505524fe0c5cb3a0f19ece72680d090240af30a6e5172ae23"}, - {file = "ddtrace-2.14.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03d7883787db4cd302ebcf6121421d38f3022d98cd04e57473953f0e320f8f4c"}, - {file = "ddtrace-2.14.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:8cbe7b8848c46e5d7c2efaa4428ea5be9fda699bd69d1d271a8fe805b5554246"}, - {file = "ddtrace-2.14.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:2286245dc4bfee011851d7e96d4cf15ec59260b54693cae7ffd688ba6d5562a7"}, - {file = "ddtrace-2.14.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:49214fbfb675f69369339389eea5f399706e9df222b5aba0d92f84f078918074"}, - {file = "ddtrace-2.14.0-cp311-cp311-win32.whl", hash = "sha256:f8900a124e56e2232c5a34624b45ce7d8e1bba9cad214f2d16dc73a64b30ce09"}, - {file = "ddtrace-2.14.0-cp311-cp311-win_amd64.whl", hash = "sha256:5f4d340f8c438f6ceb510b4f1fa1a22db14b536420acf8f9d68d5acd95d2e543"}, - {file = "ddtrace-2.14.0-cp312-cp312-macosx_12_0_universal2.whl", hash = "sha256:567cb2254abd0e1e36251ed5a8395c6da6a7f808a854a9fe69ff5a410ab0e586"}, - {file = "ddtrace-2.14.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:3737025a28090e48eb8c087608b5620056c2b63460889028723bb4918e663293"}, - {file = "ddtrace-2.14.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ef5f8a4bbe25c9d175c4cf239d63b48a7d26c9ad190b52ac3c27494ff78fc048"}, - {file = "ddtrace-2.14.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7d6581d6684afa3d8661e6aff4771edc2b87fcc19628bc0e72724b794a551d3d"}, - {file = "ddtrace-2.14.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3c3d834e7e0175c51c2a0fe37ef0bba7f80a00915c000826550ea94e570e5b0"}, - {file = "ddtrace-2.14.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:5843b6cc83395979f3a17ecb14e14a446795bac64cb4e05bc6eff30be55d014a"}, - {file = "ddtrace-2.14.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:0209386ee86c95a1ceb245539f81746d4986110c6c974ce1152afbb114531b9a"}, - {file = "ddtrace-2.14.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:2f1d475562ca82ed79616614a1f11880e580920566fd5ba35b777d738f93affb"}, - {file = "ddtrace-2.14.0-cp312-cp312-win32.whl", hash = "sha256:83f63720fe40d930b614137d45dc1df5942a440779478f1a192c05ab20fbbbac"}, - {file = "ddtrace-2.14.0-cp312-cp312-win_amd64.whl", hash = "sha256:0f8bf0a20e9a9094262c59f7237a743cf5aefd20dc29722912a4782e09b2ce1f"}, - {file = "ddtrace-2.14.0-cp37-cp37m-macosx_12_0_x86_64.whl", hash = "sha256:d7006a90a2200e0692d0c307147020365f244f2043e994aeac9d1c3476d5056f"}, - {file = "ddtrace-2.14.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a375825022164fab9230b5d51662503953c3d3ef4ae0928f72d3429b8d82067a"}, - {file = "ddtrace-2.14.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:088f0e67af81096594065327a98058e4b3555a37458214289ddafe0636b752bb"}, - {file = "ddtrace-2.14.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ffa219e3fa22403e615be2e0669cc1d1d2ca1afa6ef141079ae5e6973306181"}, - {file = "ddtrace-2.14.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:3cd1ffa14bcfc66f3cee0d191ca4681fae602334d9a8044bd5a73b2fc4693454"}, - {file = "ddtrace-2.14.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:7c111498a85693c31ff3e9bd43994ce6734ab960057b36b87e7cbb14e4e90df0"}, - {file = "ddtrace-2.14.0-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:4ea1f947b128075c42f1df90f447172a07775cb6c2701698ceaad671dfc71bc7"}, - {file = "ddtrace-2.14.0-cp37-cp37m-win32.whl", hash = "sha256:de373d0e7cb0a37ee9ff452f344dcca2d525f3d3ec500f175237456d78472d20"}, - {file = "ddtrace-2.14.0-cp37-cp37m-win_amd64.whl", hash = "sha256:a9880134d03f732503d46b2f75e3febea817827b7d025b7a963bc4d0db892edd"}, - {file = "ddtrace-2.14.0-cp38-cp38-macosx_12_0_universal2.whl", hash = "sha256:8a02903585ae581a3b40ad01e062535d8affb3968a408fd96eb48f70615381a4"}, - {file = "ddtrace-2.14.0-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:b8a1fba689370e5fe956dab6e48f67cb37679fcd26d09fa402f8f4a99472140a"}, - {file = "ddtrace-2.14.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:073b5cf02bc9302c8132f9ff9db000448a3fd7ba3c3139fc1fb92cd3207d6d96"}, - {file = "ddtrace-2.14.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:86bf04c50fa5ae351c50e716befc5f114993936c18a553d4e177c6272f9df3a4"}, - {file = "ddtrace-2.14.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2dd8d22e61261a04849e89590f4aa81c8a39bd2b7355babf77213fe8c94608bd"}, - {file = "ddtrace-2.14.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6bb4f00aef805d4e21b16c288823a158f203728e4855f7c8eb7e527c8e49c5c1"}, - {file = "ddtrace-2.14.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:a15180012c57b60469a65be8b6c1f7bdf9372a51b8e8e4de622802f13d770ed1"}, - {file = "ddtrace-2.14.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:206a01ae3986e09777f0d3d1dc65f1a39d29a77194af07467f3cc9679a60373c"}, - {file = "ddtrace-2.14.0-cp38-cp38-win32.whl", hash = "sha256:852ca5bb6b5c5bdf8accaf45fda78171d0deecf378ac1efddf69e0f098196807"}, - {file = "ddtrace-2.14.0-cp38-cp38-win_amd64.whl", hash = "sha256:7ba1c9de72e059db44b018743c1abee9c4e50f8538567359312595554d3a427e"}, - {file = "ddtrace-2.14.0-cp39-cp39-macosx_12_0_universal2.whl", hash = "sha256:a426098d703548802f8d80a76e7740d42b40061493e82b9ab055154dd9837c8f"}, - {file = "ddtrace-2.14.0-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:5e72740fcdab45ed919b130f6ae2e5a26c6aaa7a13be94673dee0bce11a561a6"}, - {file = "ddtrace-2.14.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:70b5c386ff3c5b76ad96812fdaf4206660efd51e5ebe98ec46e4eaf8bae5440c"}, - {file = "ddtrace-2.14.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b262463a46fa178d0257798b84439810dac5de8e81ffc7f6c14350b5a1b9be3e"}, - {file = "ddtrace-2.14.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf628b5588ea8b14e4bbd0187b7adc7c1fc493bd98df354e9f1da5bd8e8b4e15"}, - {file = "ddtrace-2.14.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:2256ab35a9fc9190fe14bb2af95b769e6c08f872efbeb4ae3ffd7e1ce0a2c650"}, - {file = "ddtrace-2.14.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:77b73b0878ddfa1a91f74c03b2b9b739fb296b9624ccfe743525d8190e434a6d"}, - {file = "ddtrace-2.14.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:5c3a34ddc9b8f63d46e32e2b9d52f5ab23e373ae90395f09aef60edb0e6238cb"}, - {file = "ddtrace-2.14.0-cp39-cp39-win32.whl", hash = "sha256:8a3f5facc044e016ff0529b44ba16d54e56868eb48c6249c03e15cd9407562e5"}, - {file = "ddtrace-2.14.0-cp39-cp39-win_amd64.whl", hash = "sha256:e9f48394d2a2d1d2ac48fb955d8637b2dd7b055b9033bd686008c12d41b37552"}, - {file = "ddtrace-2.14.0.tar.gz", hash = "sha256:fb8e851164a4b1f64002d1f76b720281d5cf63eb904f1d04a36bf3c4955b6693"}, + {file = "ddtrace-2.14.1-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:45006561033362ae3bf8619e4e23b5f044c1d85ab75f60bfada9cb26b50f3136"}, + {file = "ddtrace-2.14.1-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:ec918f63a49f426f0b8507ed045752d31a4fbac6058861dab37e59ea21ec14e6"}, + {file = "ddtrace-2.14.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6dbef64063312afac39fe3c46aa848e0191b741a31664ce994445c76beb49aa5"}, + {file = "ddtrace-2.14.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aff1e0749d8bda9e7ec68a3d7c847a02fc6cca8f8a0444c7d33d8c11d6cb9d28"}, + {file = "ddtrace-2.14.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9cec95ed8e442efdab682e54b4d200d100c028207a2597fc0e879518f08495b2"}, + {file = "ddtrace-2.14.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:33d0437a4a4e71ae1defb58d940d3efddb3372201bc5ae0ecb960bc5b1684453"}, + {file = "ddtrace-2.14.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:66e07bca5bcdb16231bdaf6f848b9d2ab677ab6569185cf33ffceac1406123fb"}, + {file = "ddtrace-2.14.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:6257295f04950773929ab2586a6b1193015dffdf2e1f915decfb8cce99e7be3e"}, + {file = "ddtrace-2.14.1-cp310-cp310-win32.whl", hash = "sha256:e57d43bb848a40f4b5efacb3ebece41ddfc4d40b4fb9e5d1b49d43fd33565666"}, + {file = "ddtrace-2.14.1-cp310-cp310-win_amd64.whl", hash = "sha256:e595d2acba589f2881809c3a1e8302a8ddbfc9d49a546eadf9fb57ee18e39472"}, + {file = "ddtrace-2.14.1-cp311-cp311-macosx_12_0_universal2.whl", hash = "sha256:bd5c7274978625688b4eece12deb19704c2ba16187e1e8c35a76b312b6ee587f"}, + {file = "ddtrace-2.14.1-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:901e57ed636fbf5b5d002b0348f33d502779cc31d75ac703b63e0b6a84085c07"}, + {file = "ddtrace-2.14.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20c4cd8ae87bef85542984ac203f5dd20359daf3a5d7f3f6f7f69736adb0c79e"}, + {file = "ddtrace-2.14.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5ad1fbb0705ff096184e3e5013c6e8f3b7181847ddfb18ea7f8311c3913a5734"}, + {file = "ddtrace-2.14.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a57bb3f8e1bce2e19e3e7effa244bd6cf34a8203692f222c775d8b7d0cd17fa"}, + {file = "ddtrace-2.14.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c8e071118dc999d66b94bbe4d927967c76f97a6d10579d75881ee0ecde97baa8"}, + {file = "ddtrace-2.14.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:08edf6315429f7b46c760f8726e1f4dd1538c9afd2c02861b5341fd78c39ae5a"}, + {file = "ddtrace-2.14.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:707a7c4a0af62234b0d0a8480d9b0c534d57f25a22f554842bceacbd6ad11f96"}, + {file = "ddtrace-2.14.1-cp311-cp311-win32.whl", hash = "sha256:d52e5cecfddd9b0155792f8f2dc8060337d692a37b24cf8dd862b3026797c1cb"}, + {file = "ddtrace-2.14.1-cp311-cp311-win_amd64.whl", hash = "sha256:761cbfc629636d38a166f8b8eb5425bdbb29aeaad093095230078257e75572cc"}, + {file = "ddtrace-2.14.1-cp312-cp312-macosx_12_0_universal2.whl", hash = "sha256:b7e128001653ad1e24a6705251110c49f8017cb22071de3b77b43bf77978d90b"}, + {file = "ddtrace-2.14.1-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:18133ea923613214dfff790a48f4a0cfdfc642804bdb4e3b3e7176848f6b1d8f"}, + {file = "ddtrace-2.14.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d59eb2995eec053a7301a07c34795db06ce12b1b86ce787afa3c67ec3bcf6a"}, + {file = "ddtrace-2.14.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8b4aa9aa17f64f2f8e33b9133c5929eebc82773bdf4f739472a4308595bede1e"}, + {file = "ddtrace-2.14.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70f78d588a8a11c5b5b12612100fd0e05eb6e85d9c33848555e151b20fa5f2c3"}, + {file = "ddtrace-2.14.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3cafa9a6663bef1a3caee783f21f5a94c6bb77cf9ab62b9ec6f7c160cdd012aa"}, + {file = "ddtrace-2.14.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4a9385b52405d069a7cf0d17917a9efafb7261e3d77fe6a3366840e4978e70d9"}, + {file = "ddtrace-2.14.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:219ccfd16c0117ab2b26249acb0c88cc0eb0d9543d422ac0ba8f0bfaddb1be2f"}, + {file = "ddtrace-2.14.1-cp312-cp312-win32.whl", hash = "sha256:97c154e3fb9312fdc926d42204f6aa6966d51a834ef48b5f1655ad8d37b8ee32"}, + {file = "ddtrace-2.14.1-cp312-cp312-win_amd64.whl", hash = "sha256:0286787a6d883606351b2c59ea21deefdeb80cf07f80d37cf86aef8dd1f17637"}, + {file = "ddtrace-2.14.1-cp37-cp37m-macosx_12_0_x86_64.whl", hash = "sha256:294583ef333a9cbe5f8ec4906f37dd9dad27d5007a848d291908c1f6df5dabbe"}, + {file = "ddtrace-2.14.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e863f82f3911242bbcac1c1f9575ba025dae0fc00c57d949b14ca62a27f6dc10"}, + {file = "ddtrace-2.14.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8fee112bd030daf73a26845ebeeb94d2fbdd6aff716643cbad2cf7c68fe722c1"}, + {file = "ddtrace-2.14.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6705f094130d39f9024831273790d240d1af00c18055377fd7084af693ada600"}, + {file = "ddtrace-2.14.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:ae3461dac55604e035e8fecaf1ae5ef65a3bb0cd6c212966df54316ed46c144e"}, + {file = "ddtrace-2.14.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:7bd0d58fd9b06c1c8b07ce8dd186261f5c102d1c56cebff740874e01dc5936ae"}, + {file = "ddtrace-2.14.1-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:5a67f9e97571de6f942f20d6d2f2882b7f257b182a73837ae9dd2b9e1376882b"}, + {file = "ddtrace-2.14.1-cp37-cp37m-win32.whl", hash = "sha256:0a823207f4b9035cc879d58e9b2121b20d803bf6b5ac1d9359393298625aae10"}, + {file = "ddtrace-2.14.1-cp37-cp37m-win_amd64.whl", hash = "sha256:9c33cae0222ade654a77a371ed00d8f62cf37c556effebe19a4e0bfb036775a4"}, + {file = "ddtrace-2.14.1-cp38-cp38-macosx_12_0_universal2.whl", hash = "sha256:2bf270159b34c665cdfb9aaac1f7f449dae8665006302a82c97960b74d00dadd"}, + {file = "ddtrace-2.14.1-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:177ebdb00433aedeefb827e62b65900b8f80781d4b787cd26d219360cebfc1cc"}, + {file = "ddtrace-2.14.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a189b7b4645056cca7e60bd7c66bd88d8561a61326214f6ba7b0299c1b192f74"}, + {file = "ddtrace-2.14.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e444b5d398fb93270740ae43e181ba2693529feb0bbef196525cc6a8981cd0b4"}, + {file = "ddtrace-2.14.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39085a8499dbf078081a0ab48fb9e3912386a99325fa70875c07b93325c8e22e"}, + {file = "ddtrace-2.14.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:c60cba86266502635e0078e0017884c2d685381ce4f009884e49a384bbec100b"}, + {file = "ddtrace-2.14.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8a777b6579ca47b7111481d16d1b7fb83ce4356ffc15d3baf38cc5fd28ec1ff0"}, + {file = "ddtrace-2.14.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:8061bad8fc33981c5d1bd424047595016cc1bf08329492852dd737fcd19516c0"}, + {file = "ddtrace-2.14.1-cp38-cp38-win32.whl", hash = "sha256:1cfc9200b68f48eaa1382efcb73a66757d44891d2b35707d92b2787d0a710277"}, + {file = "ddtrace-2.14.1-cp38-cp38-win_amd64.whl", hash = "sha256:9e4ca8d072412d9a1052130cb163f665d01b2314c741bb4809e5bcb1621a9ea3"}, + {file = "ddtrace-2.14.1-cp39-cp39-macosx_12_0_universal2.whl", hash = "sha256:2d5d333050abad107eabf2a322753869e0cda4a7daef58b1704ea19cb7b60649"}, + {file = "ddtrace-2.14.1-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:3dc5731a22a35726c1e32873e86972e0b36ad44bf4d0c848d4ea0970995889bc"}, + {file = "ddtrace-2.14.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3acb996ea7096f6ceebee9e4c84d61e583c7c3f222de6f2ee55981234d74338"}, + {file = "ddtrace-2.14.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4cbe96ca1985b10e26a920e1a201416fe247f80abb534833a74a43c927c0d69b"}, + {file = "ddtrace-2.14.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b7f2483b46a973a1b2271ac2dbf537d3d9e1ab1ed529fc1d3a82cc7b2643dd6"}, + {file = "ddtrace-2.14.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:019e0606b2bb38a2d38695165195bf18b23334bd9083a2805bbbec1a48a952d5"}, + {file = "ddtrace-2.14.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:55cbb14cd48548ebbacc6abff1b5a226531bc5a36dd063e235b0da8b544ee04f"}, + {file = "ddtrace-2.14.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:79b01d499a2cf34d8bdf871c82b33d295f4a3d8ab1b25b2e650094d8b0ad7b07"}, + {file = "ddtrace-2.14.1-cp39-cp39-win32.whl", hash = "sha256:55c9a18c8d1443a6ffa788427f6d7450676eb54619631b31f0220fd16351b4c6"}, + {file = "ddtrace-2.14.1-cp39-cp39-win_amd64.whl", hash = "sha256:905c7c84681e6ffd59680a8cb9ac5883699a7c4f3ed00b4c8cc25a8b50a60633"}, + {file = "ddtrace-2.14.1.tar.gz", hash = "sha256:9d7a443824ed84eac2923b8655c45d07aff374088f562dedbb4e7734122bbad5"}, ] [package.dependencies] @@ -604,13 +604,13 @@ files = [ [[package]] name = "tomli" -version = "2.0.1" +version = "2.0.2" description = "A lil' TOML parser" optional = true -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, + {file = "tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38"}, + {file = "tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"}, ] [[package]] @@ -859,4 +859,4 @@ dev = ["boto3", "flake8", "pytest", "pytest-benchmark", "requests"] [metadata] lock-version = "2.0" python-versions = ">=3.8.0,<4" -content-hash = "a6aec85347838ba30c70f912ff0d9de03f3089cb658024c1f8d3214baaead760" +content-hash = "46554f78374b2b0f1d4ea85f984b2a35ffe481f981c360c2f16d534d6c9eb660" diff --git a/pyproject.toml b/pyproject.toml index d74fd9fce..edbd6259b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,7 +27,7 @@ classifiers = [ python = ">=3.8.0,<4" datadog = ">=0.41.0,<1.0.0" wrapt = "^1.11.2" -ddtrace = ">=2.14.0" +ddtrace = ">=2.14.1" ujson = ">=5.9.0" boto3 = { version = "^1.34.0", optional = true } requests = { version ="^2.22.0", optional = true } From 88f209920b5901789d17991a6e2fe675fceb60d6 Mon Sep 17 00:00:00 2001 From: Aleksandr Pasechnik Date: Fri, 4 Oct 2024 11:04:07 -0400 Subject: [PATCH 197/403] v6.99.0 (#519) --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index d29698b5c..54fd99d25 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "6.98.0" +__version__ = "6.99.0" diff --git a/pyproject.toml b/pyproject.toml index edbd6259b..396b731eb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "6.98.0" +version = "6.99.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 2b85536bbc24cef46bd61381ec62f57011e0633f Mon Sep 17 00:00:00 2001 From: Nicholas Hulston Date: Tue, 29 Oct 2024 14:12:38 -0400 Subject: [PATCH 198/403] Add `http.route` tags for API Gateway (#524) Add route tags --- datadog_lambda/trigger.py | 6 ++++++ .../integration/snapshots/logs/async-metrics_python310.log | 2 ++ .../integration/snapshots/logs/async-metrics_python311.log | 2 ++ .../integration/snapshots/logs/async-metrics_python312.log | 2 ++ tests/integration/snapshots/logs/async-metrics_python38.log | 2 ++ tests/integration/snapshots/logs/async-metrics_python39.log | 2 ++ tests/integration/snapshots/logs/sync-metrics_python310.log | 2 ++ tests/integration/snapshots/logs/sync-metrics_python311.log | 2 ++ tests/integration/snapshots/logs/sync-metrics_python312.log | 2 ++ tests/integration/snapshots/logs/sync-metrics_python38.log | 2 ++ tests/integration/snapshots/logs/sync-metrics_python39.log | 2 ++ tests/test_trigger.py | 3 +++ 12 files changed, 29 insertions(+) diff --git a/datadog_lambda/trigger.py b/datadog_lambda/trigger.py index 68531ebf9..64eff1a05 100644 --- a/datadog_lambda/trigger.py +++ b/datadog_lambda/trigger.py @@ -299,6 +299,12 @@ def extract_http_tags(event): if headers and headers.get("Referer"): http_tags["http.referer"] = headers.get("Referer") + # Try to get `routeKey` from API GW v2; otherwise try to get `resource` from API GW v1 + route = event.get("routeKey") or event.get("resource") + if route: + # "GET /my/endpoint" = > "/my/endpoint" + http_tags["http.route"] = route.split(" ")[-1] + return http_tags diff --git a/tests/integration/snapshots/logs/async-metrics_python310.log b/tests/integration/snapshots/logs/async-metrics_python310.log index 704e89b57..40c23c680 100644 --- a/tests/integration/snapshots/logs/async-metrics_python310.log +++ b/tests/integration/snapshots/logs/async-metrics_python310.log @@ -106,6 +106,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", + "http.route": "/", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, @@ -605,6 +606,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", + "http.route": "/httpapi/get", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python311.log b/tests/integration/snapshots/logs/async-metrics_python311.log index b97628ac3..f1f12db4e 100644 --- a/tests/integration/snapshots/logs/async-metrics_python311.log +++ b/tests/integration/snapshots/logs/async-metrics_python311.log @@ -106,6 +106,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", + "http.route": "/", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, @@ -605,6 +606,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", + "http.route": "/httpapi/get", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python312.log b/tests/integration/snapshots/logs/async-metrics_python312.log index 79dbefc1a..3bc69cca6 100644 --- a/tests/integration/snapshots/logs/async-metrics_python312.log +++ b/tests/integration/snapshots/logs/async-metrics_python312.log @@ -106,6 +106,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", + "http.route": "/", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, @@ -605,6 +606,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", + "http.route": "/httpapi/get", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python38.log b/tests/integration/snapshots/logs/async-metrics_python38.log index 3b9d7c765..fdc6b1923 100644 --- a/tests/integration/snapshots/logs/async-metrics_python38.log +++ b/tests/integration/snapshots/logs/async-metrics_python38.log @@ -106,6 +106,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", + "http.route": "/", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, @@ -605,6 +606,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", + "http.route": "/httpapi/get", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python39.log b/tests/integration/snapshots/logs/async-metrics_python39.log index 4e8202463..c6c682905 100644 --- a/tests/integration/snapshots/logs/async-metrics_python39.log +++ b/tests/integration/snapshots/logs/async-metrics_python39.log @@ -106,6 +106,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", + "http.route": "/", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, @@ -605,6 +606,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", + "http.route": "/httpapi/get", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python310.log b/tests/integration/snapshots/logs/sync-metrics_python310.log index 339c821c4..5d9262ce7 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python310.log +++ b/tests/integration/snapshots/logs/sync-metrics_python310.log @@ -86,6 +86,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", + "http.route": "/", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, @@ -642,6 +643,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", + "http.route": "/httpapi/get", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python311.log b/tests/integration/snapshots/logs/sync-metrics_python311.log index 878b0d642..e93a4d0ee 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python311.log +++ b/tests/integration/snapshots/logs/sync-metrics_python311.log @@ -86,6 +86,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", + "http.route": "/", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, @@ -642,6 +643,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", + "http.route": "/httpapi/get", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python312.log b/tests/integration/snapshots/logs/sync-metrics_python312.log index c4dc17bcc..c912cedec 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python312.log +++ b/tests/integration/snapshots/logs/sync-metrics_python312.log @@ -86,6 +86,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", + "http.route": "/", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, @@ -642,6 +643,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", + "http.route": "/httpapi/get", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python38.log b/tests/integration/snapshots/logs/sync-metrics_python38.log index 3e756430b..74a1e06bd 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python38.log +++ b/tests/integration/snapshots/logs/sync-metrics_python38.log @@ -86,6 +86,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", + "http.route": "/", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, @@ -642,6 +643,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", + "http.route": "/httpapi/get", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python39.log b/tests/integration/snapshots/logs/sync-metrics_python39.log index ceffe679a..19f0e84ce 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -86,6 +86,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", + "http.route": "/", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, @@ -642,6 +643,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", + "http.route": "/httpapi/get", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, diff --git a/tests/test_trigger.py b/tests/test_trigger.py index 59178b1e7..c1e7f5d73 100644 --- a/tests/test_trigger.py +++ b/tests/test_trigger.py @@ -258,6 +258,7 @@ def test_extract_trigger_tags_api_gateway(self): "http.url": "70ixmpl4fl.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/prod/path/to/resource", "http.method": "POST", + "http.route": "/{proxy+}", }, ) @@ -276,6 +277,7 @@ def test_extract_trigger_tags_api_gateway_non_proxy(self): "http.url": "lgxbo6a518.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/dev/http/get", "http.method": "GET", + "http.route": "/http/get", }, ) @@ -342,6 +344,7 @@ def test_extract_trigger_tags_api_gateway_http_api(self): "http.url": "x02yirxc7a.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", + "http.route": "/httpapi/get", }, ) From 02cc8c61e1b043bf46147b6d5b3ff64c4b52f716 Mon Sep 17 00:00:00 2001 From: Aleksandr Pasechnik Date: Wed, 30 Oct 2024 15:17:11 -0400 Subject: [PATCH 199/403] feat: [SVLS-5677] DynamoDB Stream event span pointers (#522) --- datadog_lambda/span_pointers.py | 75 +++- poetry.lock | 387 +++++++++--------- pyproject.toml | 2 +- tests/Dockerfile | 5 + .../logs/async-metrics_python310.log | 48 ++- .../logs/async-metrics_python311.log | 48 ++- .../logs/async-metrics_python312.log | 48 ++- .../snapshots/logs/async-metrics_python38.log | 48 ++- .../snapshots/logs/async-metrics_python39.log | 48 ++- .../snapshots/logs/sync-metrics_python310.log | 48 ++- .../snapshots/logs/sync-metrics_python311.log | 48 ++- .../snapshots/logs/sync-metrics_python312.log | 48 ++- .../snapshots/logs/sync-metrics_python38.log | 48 ++- .../snapshots/logs/sync-metrics_python39.log | 48 ++- tests/test_span_pointers.py | 61 +++ 15 files changed, 799 insertions(+), 211 deletions(-) diff --git a/datadog_lambda/span_pointers.py b/datadog_lambda/span_pointers.py index 4c33975f5..669257bd8 100644 --- a/datadog_lambda/span_pointers.py +++ b/datadog_lambda/span_pointers.py @@ -2,7 +2,10 @@ import logging from typing import List -from ddtrace._trace.utils_botocore.span_pointers import ( +from ddtrace._trace.utils_botocore.span_pointers.dynamodb import ( + _aws_dynamodb_item_span_pointer_description, +) +from ddtrace._trace.utils_botocore.span_pointers.s3 import ( _aws_s3_object_span_pointer_description, ) from ddtrace._trace._span_pointer import _SpanPointerDirection @@ -21,10 +24,13 @@ def calculate_span_pointers( if event_source.equals(EventTypes.S3): return _calculate_s3_span_pointers_for_event(event) + elif event_source.equals(EventTypes.DYNAMODB): + return _calculate_dynamodb_span_pointers_for_event(event) + except Exception as e: logger.warning( "failed to calculate span pointers for event: %s", - str(e), + e, ) return [] @@ -69,7 +75,7 @@ def _calculate_s3_span_pointers_for_object_created_s3_information( except KeyError as e: logger.warning( "missing s3 information required to make a span pointer: %s", - str(e), + e, ) return [] @@ -86,6 +92,67 @@ def _calculate_s3_span_pointers_for_object_created_s3_information( except Exception as e: logger.warning( "failed to generate S3 span pointer: %s", - str(e), + e, + ) + return [] + + +def _calculate_dynamodb_span_pointers_for_event(event) -> List[_SpanPointerDescription]: + # Example event: + # https://docs.aws.amazon.com/lambda/latest/dg/with-ddb.html + + return list( + chain.from_iterable( + _calculate_dynamodb_span_pointers_for_event_record(record) + for record in event.get("Records", []) + ) + ) + + +def _calculate_dynamodb_span_pointers_for_event_record( + record, +) -> List[_SpanPointerDescription]: + try: + table_name = _extract_table_name_from_dynamodb_stream_record(record) + primary_key = record["dynamodb"]["Keys"] + + except Exception as e: + logger.warning( + "missing DynamoDB information required to make a span pointer: %s", + e, ) return [] + + try: + return [ + _aws_dynamodb_item_span_pointer_description( + pointer_direction=_SpanPointerDirection.UPSTREAM, + table_name=table_name, + primary_key=primary_key, + ) + ] + + except Exception as e: + logger.warning( + "failed to generate DynamoDB span pointer: %s", + e, + ) + return [] + + +def _extract_table_name_from_dynamodb_stream_record(record) -> str: + # Example eventSourceARN: + # arn:aws:dynamodb:us-east-2:123456789012:table/my-table/stream/2024-06-10T19:26:16.525 + event_source_arn = record["eventSourceARN"] + + [_arn, _aws, _dynamodb, _region, _account, dynamodb_info] = event_source_arn.split( + ":", maxsplit=5 + ) + if _arn != "arn" or _aws != "aws" or _dynamodb != "dynamodb": + raise ValueError(f"unexpected eventSourceARN format: {event_source_arn}") + + [_table, table_name, _stream, _timestamp] = dynamodb_info.split("/") + if _table != "table" or _stream != "stream": + raise ValueError(f"unexpected eventSourceARN format: {event_source_arn}") + + return table_name diff --git a/poetry.lock b/poetry.lock index e9557200f..c87fea848 100644 --- a/poetry.lock +++ b/poetry.lock @@ -2,17 +2,17 @@ [[package]] name = "boto3" -version = "1.35.31" +version = "1.35.51" description = "The AWS SDK for Python" optional = true python-versions = ">=3.8" files = [ - {file = "boto3-1.35.31-py3-none-any.whl", hash = "sha256:2e9af74d10d8af7610a8d8468d2914961f116912a024fce17351825260385a52"}, - {file = "boto3-1.35.31.tar.gz", hash = "sha256:8c593af260c4ea3eb6f079c09908f94494ca2222aa4e40a7ff490fab1cee8b39"}, + {file = "boto3-1.35.51-py3-none-any.whl", hash = "sha256:c922f6a18958af9d8af0489d6d8503b517029d8159b26aa4859a8294561c72e9"}, + {file = "boto3-1.35.51.tar.gz", hash = "sha256:a57c6c7012ecb40c43e565a6f7a891f39efa990ff933eab63cd456f7501c2731"}, ] [package.dependencies] -botocore = ">=1.35.31,<1.36.0" +botocore = ">=1.35.51,<1.36.0" jmespath = ">=0.7.1,<2.0.0" s3transfer = ">=0.10.0,<0.11.0" @@ -21,13 +21,13 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.35.31" +version = "1.35.51" description = "Low-level, data-driven core of boto 3." optional = true python-versions = ">=3.8" files = [ - {file = "botocore-1.35.31-py3-none-any.whl", hash = "sha256:4cee814875bc78656aef4011d3d6b2231e96f53ea3661ee428201afb579d5c31"}, - {file = "botocore-1.35.31.tar.gz", hash = "sha256:f7bfa910cf2cbcc8c2307c1cf7b93495d614c2d699883417893e0a337fe4eb63"}, + {file = "botocore-1.35.51-py3-none-any.whl", hash = "sha256:4d65b00111bd12b98e9f920ecab602cf619cc6a6d0be6e5dd53f517e4b92901c"}, + {file = "botocore-1.35.51.tar.gz", hash = "sha256:a9b3d1da76b3e896ad74605c01d88f596324a3337393d4bfbfa0d6c35822ca9c"}, ] [package.dependencies] @@ -39,17 +39,17 @@ urllib3 = [ ] [package.extras] -crt = ["awscrt (==0.21.5)"] +crt = ["awscrt (==0.22.0)"] [[package]] name = "bytecode" -version = "0.15.1" +version = "0.16.0" description = "Python module to generate and modify bytecode" optional = false python-versions = ">=3.8" files = [ - {file = "bytecode-0.15.1-py3-none-any.whl", hash = "sha256:0a1dc340cac823cff605609b8b214f7f9bf80418c6b9e0fc8c6db1793c27137d"}, - {file = "bytecode-0.15.1.tar.gz", hash = "sha256:7263239a8d3f70fc7c303862b20cd2c6788052e37ce0a26e67309d280e985984"}, + {file = "bytecode-0.16.0-py3-none-any.whl", hash = "sha256:76080b7c0eb9e7e17f961d61fd06e933aa47f3b753770a3249537439d8203a25"}, + {file = "bytecode-0.16.0.tar.gz", hash = "sha256:06676a3c3bccc9d3dc73ee625650ea57df2bc117358826f4f290f0e1faa42292"}, ] [package.dependencies] @@ -68,101 +68,116 @@ files = [ [[package]] name = "charset-normalizer" -version = "3.3.2" +version = "3.4.0" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.7.0" files = [ - {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, - {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:4f9fc98dad6c2eaa32fc3af1417d95b5e3d08aff968df0cd320066def971f9a6"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0de7b687289d3c1b3e8660d0741874abe7888100efe14bd0f9fd7141bcbda92b"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5ed2e36c3e9b4f21dd9422f6893dec0abf2cca553af509b10cd630f878d3eb99"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d3ff7fc90b98c637bda91c89d51264a3dcf210cade3a2c6f838c7268d7a4ca"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1110e22af8ca26b90bd6364fe4c763329b0ebf1ee213ba32b68c73de5752323d"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:86f4e8cca779080f66ff4f191a685ced73d2f72d50216f7112185dc02b90b9b7"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f683ddc7eedd742e2889d2bfb96d69573fde1d92fcb811979cdb7165bb9c7d3"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:27623ba66c183eca01bf9ff833875b459cad267aeeb044477fedac35e19ba907"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f606a1881d2663630ea5b8ce2efe2111740df4b687bd78b34a8131baa007f79b"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:0b309d1747110feb25d7ed6b01afdec269c647d382c857ef4663bbe6ad95a912"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:136815f06a3ae311fae551c3df1f998a1ebd01ddd424aa5603a4336997629e95"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:14215b71a762336254351b00ec720a8e85cada43b987da5a042e4ce3e82bd68e"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:79983512b108e4a164b9c8d34de3992f76d48cadc9554c9e60b43f308988aabe"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-win32.whl", hash = "sha256:c94057af19bc953643a33581844649a7fdab902624d2eb739738a30e2b3e60fc"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:55f56e2ebd4e3bc50442fbc0888c9d8c94e4e06a933804e2af3e89e2f9c1c749"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0d99dd8ff461990f12d6e42c7347fd9ab2532fb70e9621ba520f9e8637161d7c"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c57516e58fd17d03ebe67e181a4e4e2ccab1168f8c2976c6a334d4f819fe5944"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6dba5d19c4dfab08e58d5b36304b3f92f3bd5d42c1a3fa37b5ba5cdf6dfcbcee"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf4475b82be41b07cc5e5ff94810e6a01f276e37c2d55571e3fe175e467a1a1c"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce031db0408e487fd2775d745ce30a7cd2923667cf3b69d48d219f1d8f5ddeb6"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8ff4e7cdfdb1ab5698e675ca622e72d58a6fa2a8aa58195de0c0061288e6e3ea"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3710a9751938947e6327ea9f3ea6332a09bf0ba0c09cae9cb1f250bd1f1549bc"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82357d85de703176b5587dbe6ade8ff67f9f69a41c0733cf2425378b49954de5"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:47334db71978b23ebcf3c0f9f5ee98b8d65992b65c9c4f2d34c2eaf5bcaf0594"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8ce7fd6767a1cc5a92a639b391891bf1c268b03ec7e021c7d6d902285259685c"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f1a2f519ae173b5b6a2c9d5fa3116ce16e48b3462c8b96dfdded11055e3d6365"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:63bc5c4ae26e4bc6be6469943b8253c0fd4e4186c43ad46e713ea61a0ba49129"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bcb4f8ea87d03bc51ad04add8ceaf9b0f085ac045ab4d74e73bbc2dc033f0236"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-win32.whl", hash = "sha256:9ae4ef0b3f6b41bad6366fb0ea4fc1d7ed051528e113a60fa2a65a9abb5b1d99"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cee4373f4d3ad28f1ab6290684d8e2ebdb9e7a1b74fdc39e4c211995f77bec27"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0713f3adb9d03d49d365b70b84775d0a0d18e4ab08d12bc46baa6132ba78aaf6"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:de7376c29d95d6719048c194a9cf1a1b0393fbe8488a22008610b0361d834ecf"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4a51b48f42d9358460b78725283f04bddaf44a9358197b889657deba38f329db"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b295729485b06c1a0683af02a9e42d2caa9db04a373dc38a6a58cdd1e8abddf1"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ee803480535c44e7f5ad00788526da7d85525cfefaf8acf8ab9a310000be4b03"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d59d125ffbd6d552765510e3f31ed75ebac2c7470c7274195b9161a32350284"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8cda06946eac330cbe6598f77bb54e690b4ca93f593dee1568ad22b04f347c15"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07afec21bbbbf8a5cc3651aa96b980afe2526e7f048fdfb7f1014d84acc8b6d8"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6b40e8d38afe634559e398cc32b1472f376a4099c75fe6299ae607e404c033b2"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b8dcd239c743aa2f9c22ce674a145e0a25cb1566c495928440a181ca1ccf6719"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:84450ba661fb96e9fd67629b93d2941c871ca86fc38d835d19d4225ff946a631"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:44aeb140295a2f0659e113b31cfe92c9061622cadbc9e2a2f7b8ef6b1e29ef4b"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1db4e7fefefd0f548d73e2e2e041f9df5c59e178b4c72fbac4cc6f535cfb1565"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-win32.whl", hash = "sha256:5726cf76c982532c1863fb64d8c6dd0e4c90b6ece9feb06c9f202417a31f7dd7"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:b197e7094f232959f8f20541ead1d9862ac5ebea1d58e9849c1bf979255dfac9"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:dd4eda173a9fcccb5f2e2bd2a9f423d180194b1bf17cf59e3269899235b2a114"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e9e3c4c9e1ed40ea53acf11e2a386383c3304212c965773704e4603d589343ed"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:92a7e36b000bf022ef3dbb9c46bfe2d52c047d5e3f3343f43204263c5addc250"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54b6a92d009cbe2fb11054ba694bc9e284dad30a26757b1e372a1fdddaf21920"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ffd9493de4c922f2a38c2bf62b831dcec90ac673ed1ca182fe11b4d8e9f2a64"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:35c404d74c2926d0287fbd63ed5d27eb911eb9e4a3bb2c6d294f3cfd4a9e0c23"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4796efc4faf6b53a18e3d46343535caed491776a22af773f366534056c4e1fbc"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e7fdd52961feb4c96507aa649550ec2a0d527c086d284749b2f582f2d40a2e0d"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:92db3c28b5b2a273346bebb24857fda45601aef6ae1c011c0a997106581e8a88"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ab973df98fc99ab39080bfb0eb3a925181454d7c3ac8a1e695fddfae696d9e90"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:4b67fdab07fdd3c10bb21edab3cbfe8cf5696f453afce75d815d9d7223fbe88b"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:aa41e526a5d4a9dfcfbab0716c7e8a1b215abd3f3df5a45cf18a12721d31cb5d"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ffc519621dce0c767e96b9c53f09c5d215578e10b02c285809f76509a3931482"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-win32.whl", hash = "sha256:f19c1585933c82098c2a520f8ec1227f20e339e33aca8fa6f956f6691b784e67"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:707b82d19e65c9bd28b81dde95249b07bf9f5b90ebe1ef17d9b57473f8a64b7b"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:dbe03226baf438ac4fda9e2d0715022fd579cb641c4cf639fa40d53b2fe6f3e2"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd9a8bd8900e65504a305bf8ae6fa9fbc66de94178c420791d0293702fce2df7"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8831399554b92b72af5932cdbbd4ddc55c55f631bb13ff8fe4e6536a06c5c51"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a14969b8691f7998e74663b77b4c36c0337cb1df552da83d5c9004a93afdb574"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dcaf7c1524c0542ee2fc82cc8ec337f7a9f7edee2532421ab200d2b920fc97cf"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:425c5f215d0eecee9a56cdb703203dda90423247421bf0d67125add85d0c4455"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:d5b054862739d276e09928de37c79ddeec42a6e1bfc55863be96a36ba22926f6"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:f3e73a4255342d4eb26ef6df01e3962e73aa29baa3124a8e824c5d3364a65748"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:2f6c34da58ea9c1a9515621f4d9ac379871a8f21168ba1b5e09d74250de5ad62"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:f09cb5a7bbe1ecae6e87901a2eb23e0256bb524a79ccc53eb0b7629fbe7677c4"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:0099d79bdfcf5c1f0c2c72f91516702ebf8b0b8ddd8905f97a8aecf49712c621"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-win32.whl", hash = "sha256:9c98230f5042f4945f957d006edccc2af1e03ed5e37ce7c373f00a5a4daa6149"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:62f60aebecfc7f4b82e3f639a7d1433a20ec32824db2199a11ad4f5e146ef5ee"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:af73657b7a68211996527dbfeffbb0864e043d270580c5aef06dc4b659a4b578"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cab5d0b79d987c67f3b9e9c53f54a61360422a5a0bc075f43cab5621d530c3b6"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9289fd5dddcf57bab41d044f1756550f9e7cf0c8e373b8cdf0ce8773dc4bd417"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b493a043635eb376e50eedf7818f2f322eabbaa974e948bd8bdd29eb7ef2a51"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9fa2566ca27d67c86569e8c85297aaf413ffab85a8960500f12ea34ff98e4c41"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8e538f46104c815be19c975572d74afb53f29650ea2025bbfaef359d2de2f7f"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fd30dc99682dc2c603c2b315bded2799019cea829f8bf57dc6b61efde6611c8"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2006769bd1640bdf4d5641c69a3d63b71b81445473cac5ded39740a226fa88ab"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:dc15e99b2d8a656f8e666854404f1ba54765871104e50c8e9813af8a7db07f12"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:ab2e5bef076f5a235c3774b4f4028a680432cded7cad37bba0fd90d64b187d19"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:4ec9dd88a5b71abfc74e9df5ebe7921c35cbb3b641181a531ca65cdb5e8e4dea"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:43193c5cda5d612f247172016c4bb71251c784d7a4d9314677186a838ad34858"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:aa693779a8b50cd97570e5a0f343538a8dbd3e496fa5dcb87e29406ad0299654"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-win32.whl", hash = "sha256:7706f5850360ac01d80c89bcef1640683cc12ed87f42579dab6c5d3ed6888613"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:c3e446d253bd88f6377260d07c895816ebf33ffffd56c1c792b13bff9c3e1ade"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:980b4f289d1d90ca5efcf07958d3eb38ed9c0b7676bf2831a54d4f66f9c27dfa"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f28f891ccd15c514a0981f3b9db9aa23d62fe1a99997512b0491d2ed323d229a"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8aacce6e2e1edcb6ac625fb0f8c3a9570ccc7bfba1f63419b3769ccf6a00ed0"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd7af3717683bea4c87acd8c0d3d5b44d56120b26fd3f8a692bdd2d5260c620a"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5ff2ed8194587faf56555927b3aa10e6fb69d931e33953943bc4f837dfee2242"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e91f541a85298cf35433bf66f3fab2a4a2cff05c127eeca4af174f6d497f0d4b"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:309a7de0a0ff3040acaebb35ec45d18db4b28232f21998851cfa709eeff49d62"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:285e96d9d53422efc0d7a17c60e59f37fbf3dfa942073f666db4ac71e8d726d0"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:5d447056e2ca60382d460a604b6302d8db69476fd2015c81e7c35417cfabe4cd"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:20587d20f557fe189b7947d8e7ec5afa110ccf72a3128d61a2a387c3313f46be"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:130272c698667a982a5d0e626851ceff662565379baf0ff2cc58067b81d4f11d"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:ab22fbd9765e6954bc0bcff24c25ff71dcbfdb185fcdaca49e81bac68fe724d3"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7782afc9b6b42200f7362858f9e73b1f8316afb276d316336c0ec3bd73312742"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-win32.whl", hash = "sha256:2de62e8801ddfff069cd5c504ce3bc9672b23266597d4e4f50eda28846c322f2"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:95c3c157765b031331dd4db3c775e58deaee050a3042fcad72cbc4189d7c8dca"}, + {file = "charset_normalizer-3.4.0-py3-none-any.whl", hash = "sha256:fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079"}, + {file = "charset_normalizer-3.4.0.tar.gz", hash = "sha256:223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e"}, ] [[package]] @@ -192,71 +207,71 @@ requests = ">=2.6.0" [[package]] name = "ddtrace" -version = "2.14.1" +version = "2.15.0" description = "Datadog APM client library" optional = false python-versions = ">=3.7" files = [ - {file = "ddtrace-2.14.1-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:45006561033362ae3bf8619e4e23b5f044c1d85ab75f60bfada9cb26b50f3136"}, - {file = "ddtrace-2.14.1-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:ec918f63a49f426f0b8507ed045752d31a4fbac6058861dab37e59ea21ec14e6"}, - {file = "ddtrace-2.14.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6dbef64063312afac39fe3c46aa848e0191b741a31664ce994445c76beb49aa5"}, - {file = "ddtrace-2.14.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aff1e0749d8bda9e7ec68a3d7c847a02fc6cca8f8a0444c7d33d8c11d6cb9d28"}, - {file = "ddtrace-2.14.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9cec95ed8e442efdab682e54b4d200d100c028207a2597fc0e879518f08495b2"}, - {file = "ddtrace-2.14.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:33d0437a4a4e71ae1defb58d940d3efddb3372201bc5ae0ecb960bc5b1684453"}, - {file = "ddtrace-2.14.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:66e07bca5bcdb16231bdaf6f848b9d2ab677ab6569185cf33ffceac1406123fb"}, - {file = "ddtrace-2.14.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:6257295f04950773929ab2586a6b1193015dffdf2e1f915decfb8cce99e7be3e"}, - {file = "ddtrace-2.14.1-cp310-cp310-win32.whl", hash = "sha256:e57d43bb848a40f4b5efacb3ebece41ddfc4d40b4fb9e5d1b49d43fd33565666"}, - {file = "ddtrace-2.14.1-cp310-cp310-win_amd64.whl", hash = "sha256:e595d2acba589f2881809c3a1e8302a8ddbfc9d49a546eadf9fb57ee18e39472"}, - {file = "ddtrace-2.14.1-cp311-cp311-macosx_12_0_universal2.whl", hash = "sha256:bd5c7274978625688b4eece12deb19704c2ba16187e1e8c35a76b312b6ee587f"}, - {file = "ddtrace-2.14.1-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:901e57ed636fbf5b5d002b0348f33d502779cc31d75ac703b63e0b6a84085c07"}, - {file = "ddtrace-2.14.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20c4cd8ae87bef85542984ac203f5dd20359daf3a5d7f3f6f7f69736adb0c79e"}, - {file = "ddtrace-2.14.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5ad1fbb0705ff096184e3e5013c6e8f3b7181847ddfb18ea7f8311c3913a5734"}, - {file = "ddtrace-2.14.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a57bb3f8e1bce2e19e3e7effa244bd6cf34a8203692f222c775d8b7d0cd17fa"}, - {file = "ddtrace-2.14.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c8e071118dc999d66b94bbe4d927967c76f97a6d10579d75881ee0ecde97baa8"}, - {file = "ddtrace-2.14.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:08edf6315429f7b46c760f8726e1f4dd1538c9afd2c02861b5341fd78c39ae5a"}, - {file = "ddtrace-2.14.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:707a7c4a0af62234b0d0a8480d9b0c534d57f25a22f554842bceacbd6ad11f96"}, - {file = "ddtrace-2.14.1-cp311-cp311-win32.whl", hash = "sha256:d52e5cecfddd9b0155792f8f2dc8060337d692a37b24cf8dd862b3026797c1cb"}, - {file = "ddtrace-2.14.1-cp311-cp311-win_amd64.whl", hash = "sha256:761cbfc629636d38a166f8b8eb5425bdbb29aeaad093095230078257e75572cc"}, - {file = "ddtrace-2.14.1-cp312-cp312-macosx_12_0_universal2.whl", hash = "sha256:b7e128001653ad1e24a6705251110c49f8017cb22071de3b77b43bf77978d90b"}, - {file = "ddtrace-2.14.1-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:18133ea923613214dfff790a48f4a0cfdfc642804bdb4e3b3e7176848f6b1d8f"}, - {file = "ddtrace-2.14.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d59eb2995eec053a7301a07c34795db06ce12b1b86ce787afa3c67ec3bcf6a"}, - {file = "ddtrace-2.14.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8b4aa9aa17f64f2f8e33b9133c5929eebc82773bdf4f739472a4308595bede1e"}, - {file = "ddtrace-2.14.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70f78d588a8a11c5b5b12612100fd0e05eb6e85d9c33848555e151b20fa5f2c3"}, - {file = "ddtrace-2.14.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3cafa9a6663bef1a3caee783f21f5a94c6bb77cf9ab62b9ec6f7c160cdd012aa"}, - {file = "ddtrace-2.14.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4a9385b52405d069a7cf0d17917a9efafb7261e3d77fe6a3366840e4978e70d9"}, - {file = "ddtrace-2.14.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:219ccfd16c0117ab2b26249acb0c88cc0eb0d9543d422ac0ba8f0bfaddb1be2f"}, - {file = "ddtrace-2.14.1-cp312-cp312-win32.whl", hash = "sha256:97c154e3fb9312fdc926d42204f6aa6966d51a834ef48b5f1655ad8d37b8ee32"}, - {file = "ddtrace-2.14.1-cp312-cp312-win_amd64.whl", hash = "sha256:0286787a6d883606351b2c59ea21deefdeb80cf07f80d37cf86aef8dd1f17637"}, - {file = "ddtrace-2.14.1-cp37-cp37m-macosx_12_0_x86_64.whl", hash = "sha256:294583ef333a9cbe5f8ec4906f37dd9dad27d5007a848d291908c1f6df5dabbe"}, - {file = "ddtrace-2.14.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e863f82f3911242bbcac1c1f9575ba025dae0fc00c57d949b14ca62a27f6dc10"}, - {file = "ddtrace-2.14.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8fee112bd030daf73a26845ebeeb94d2fbdd6aff716643cbad2cf7c68fe722c1"}, - {file = "ddtrace-2.14.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6705f094130d39f9024831273790d240d1af00c18055377fd7084af693ada600"}, - {file = "ddtrace-2.14.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:ae3461dac55604e035e8fecaf1ae5ef65a3bb0cd6c212966df54316ed46c144e"}, - {file = "ddtrace-2.14.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:7bd0d58fd9b06c1c8b07ce8dd186261f5c102d1c56cebff740874e01dc5936ae"}, - {file = "ddtrace-2.14.1-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:5a67f9e97571de6f942f20d6d2f2882b7f257b182a73837ae9dd2b9e1376882b"}, - {file = "ddtrace-2.14.1-cp37-cp37m-win32.whl", hash = "sha256:0a823207f4b9035cc879d58e9b2121b20d803bf6b5ac1d9359393298625aae10"}, - {file = "ddtrace-2.14.1-cp37-cp37m-win_amd64.whl", hash = "sha256:9c33cae0222ade654a77a371ed00d8f62cf37c556effebe19a4e0bfb036775a4"}, - {file = "ddtrace-2.14.1-cp38-cp38-macosx_12_0_universal2.whl", hash = "sha256:2bf270159b34c665cdfb9aaac1f7f449dae8665006302a82c97960b74d00dadd"}, - {file = "ddtrace-2.14.1-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:177ebdb00433aedeefb827e62b65900b8f80781d4b787cd26d219360cebfc1cc"}, - {file = "ddtrace-2.14.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a189b7b4645056cca7e60bd7c66bd88d8561a61326214f6ba7b0299c1b192f74"}, - {file = "ddtrace-2.14.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e444b5d398fb93270740ae43e181ba2693529feb0bbef196525cc6a8981cd0b4"}, - {file = "ddtrace-2.14.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39085a8499dbf078081a0ab48fb9e3912386a99325fa70875c07b93325c8e22e"}, - {file = "ddtrace-2.14.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:c60cba86266502635e0078e0017884c2d685381ce4f009884e49a384bbec100b"}, - {file = "ddtrace-2.14.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8a777b6579ca47b7111481d16d1b7fb83ce4356ffc15d3baf38cc5fd28ec1ff0"}, - {file = "ddtrace-2.14.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:8061bad8fc33981c5d1bd424047595016cc1bf08329492852dd737fcd19516c0"}, - {file = "ddtrace-2.14.1-cp38-cp38-win32.whl", hash = "sha256:1cfc9200b68f48eaa1382efcb73a66757d44891d2b35707d92b2787d0a710277"}, - {file = "ddtrace-2.14.1-cp38-cp38-win_amd64.whl", hash = "sha256:9e4ca8d072412d9a1052130cb163f665d01b2314c741bb4809e5bcb1621a9ea3"}, - {file = "ddtrace-2.14.1-cp39-cp39-macosx_12_0_universal2.whl", hash = "sha256:2d5d333050abad107eabf2a322753869e0cda4a7daef58b1704ea19cb7b60649"}, - {file = "ddtrace-2.14.1-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:3dc5731a22a35726c1e32873e86972e0b36ad44bf4d0c848d4ea0970995889bc"}, - {file = "ddtrace-2.14.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3acb996ea7096f6ceebee9e4c84d61e583c7c3f222de6f2ee55981234d74338"}, - {file = "ddtrace-2.14.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4cbe96ca1985b10e26a920e1a201416fe247f80abb534833a74a43c927c0d69b"}, - {file = "ddtrace-2.14.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b7f2483b46a973a1b2271ac2dbf537d3d9e1ab1ed529fc1d3a82cc7b2643dd6"}, - {file = "ddtrace-2.14.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:019e0606b2bb38a2d38695165195bf18b23334bd9083a2805bbbec1a48a952d5"}, - {file = "ddtrace-2.14.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:55cbb14cd48548ebbacc6abff1b5a226531bc5a36dd063e235b0da8b544ee04f"}, - {file = "ddtrace-2.14.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:79b01d499a2cf34d8bdf871c82b33d295f4a3d8ab1b25b2e650094d8b0ad7b07"}, - {file = "ddtrace-2.14.1-cp39-cp39-win32.whl", hash = "sha256:55c9a18c8d1443a6ffa788427f6d7450676eb54619631b31f0220fd16351b4c6"}, - {file = "ddtrace-2.14.1-cp39-cp39-win_amd64.whl", hash = "sha256:905c7c84681e6ffd59680a8cb9ac5883699a7c4f3ed00b4c8cc25a8b50a60633"}, - {file = "ddtrace-2.14.1.tar.gz", hash = "sha256:9d7a443824ed84eac2923b8655c45d07aff374088f562dedbb4e7734122bbad5"}, + {file = "ddtrace-2.15.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:8e95399bcbbef7653329ca34f4ec47b49c8364f90097b781982b41ad39c9d9cc"}, + {file = "ddtrace-2.15.0-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:42f34571041e92f6326819c543d114059ab381a4e73a4f90c803a74aff750421"}, + {file = "ddtrace-2.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e9a043a0c8e4f4ad2ef5820ad5a75e66eff0f10223768a697302c27b0f3fbed"}, + {file = "ddtrace-2.15.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:20706878d973b046a032d7e44b4314f9c6fbf3329942664ca5f4949119625644"}, + {file = "ddtrace-2.15.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22a51d604d1f647eff82f5ae2a14c924a2164ded3d2217dbf5b2787f2384a11a"}, + {file = "ddtrace-2.15.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:c3ccb04acddf37dcc6458949dbe91a1f230deaf30cf386501c2e6b20986a37bf"}, + {file = "ddtrace-2.15.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6004a1fc48ff6f564d35c790e002bdb7ce39a904126d9d3ce3696b9586ce6ad8"}, + {file = "ddtrace-2.15.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e4a676ddb3c03149545a21d874ae846d3a467dbc37ba253681deecccb5cfae03"}, + {file = "ddtrace-2.15.0-cp310-cp310-win32.whl", hash = "sha256:cfa81e4d7897dd335a79c0c727001797f9a3ffea6c4f1444335fd6bb7694cd97"}, + {file = "ddtrace-2.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:0ad47afc29f66bece98a166e808dc07d197a78098c81546417e0455d3cf10b31"}, + {file = "ddtrace-2.15.0-cp311-cp311-macosx_12_0_universal2.whl", hash = "sha256:8e2da75e5bd550fc04415a2446536a3d31c2c28bbfc44ecb2435058693e71329"}, + {file = "ddtrace-2.15.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:d41abf53aeab1248ef5a4c58366fe5e67522cc1995727724f1c8e3c5acdd0150"}, + {file = "ddtrace-2.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:30a8960cc062eabbaf4a37febcf5e68e9984100cd345bce4fa1c65366290d0eb"}, + {file = "ddtrace-2.15.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8fbf939613d2c81bcd04b7d9e854b4391e26b9c21c6b719ecfbdeb19e6c35089"}, + {file = "ddtrace-2.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f528fe2d90f2f549ce9ca699b45889b92698005f8d356d54cdff2730ee608798"}, + {file = "ddtrace-2.15.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:721eddd72f5d062a7da5bcd6f9f06010368b75648b6b54661949ee22ee5b0fe5"}, + {file = "ddtrace-2.15.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9d0649f0b3e590e119c63ed553120acaea54e511ee495f4ab7d7c1ef2d2ec778"}, + {file = "ddtrace-2.15.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:7c21f909aec4d666ad08dd26e42afa07ec560e2e157b4abdbec92b9f3ffa2ab4"}, + {file = "ddtrace-2.15.0-cp311-cp311-win32.whl", hash = "sha256:dc0b0d42f96da8f70a5bd64247392c3a10c16e03633098f6ad5fef8894655d6a"}, + {file = "ddtrace-2.15.0-cp311-cp311-win_amd64.whl", hash = "sha256:09953ad48275eb5281c642454d3403db413eb957cb7935d80951580982339831"}, + {file = "ddtrace-2.15.0-cp312-cp312-macosx_12_0_universal2.whl", hash = "sha256:29cc10454b4c3ea25dfd41b008916d37d19b87f18145a47e7a82bb8dce696ba1"}, + {file = "ddtrace-2.15.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:1ecebd2ac49395a58e7649bcb8e2a65055b2edc35a347350cb71c062f2031bf2"}, + {file = "ddtrace-2.15.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7e2e6fa42b99093205dec28f0be320f537ce8e70caca00e61e49d9d0898639e0"}, + {file = "ddtrace-2.15.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a69a43621052a82fa832ca005cc20d1408d94f5822e0a1484a48c94b1fd25654"}, + {file = "ddtrace-2.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:456ff1ed2f844d44be33429becfb6175252399d1f97507972ab02146a6b694b2"}, + {file = "ddtrace-2.15.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0872179e321986b7b67c6192469fdfe6b394c08e86852d21907ff8d7f1c212d5"}, + {file = "ddtrace-2.15.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4125abc8a11add44c15a5f57f71e25fd5dca02af5696ec49336ec8ad9c11b15e"}, + {file = "ddtrace-2.15.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0363c2aaf59b0421ed3717989c65f8104e95c2007a656333f9cccd2f10d310a1"}, + {file = "ddtrace-2.15.0-cp312-cp312-win32.whl", hash = "sha256:d7c48d8532ff54e6ce9dd9ff018390cbca2b8bb17d2c9dc190fafdd397ce5395"}, + {file = "ddtrace-2.15.0-cp312-cp312-win_amd64.whl", hash = "sha256:ad891608cbe28749600ddd279cb48aec8b756a87152405fac7e625e535cf0a53"}, + {file = "ddtrace-2.15.0-cp37-cp37m-macosx_12_0_x86_64.whl", hash = "sha256:5a41317eefd81ba33a779b96841508727791ee70c02d39bdaf90815a4c008c93"}, + {file = "ddtrace-2.15.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7b89cf3b05fd858586651dc9db0037345c82bcd57369259620ea0681c56dcdf2"}, + {file = "ddtrace-2.15.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:24091734498774cf733611904d5619c07753c4fcc97e3fd52ff0716b74bc1aeb"}, + {file = "ddtrace-2.15.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ddbae2ebcc54cfbd9c8fa58555e7f74ee290ff2aa4ade3b3832b48e5426402c"}, + {file = "ddtrace-2.15.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:a137e538166c195dd2f2052860c5798c5cfdba87c6113eab8b86d34810a1d938"}, + {file = "ddtrace-2.15.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:23339bf3f6ba951cbfedbe6b126c66241872d699fc2a34e5e73c5f90f496755d"}, + {file = "ddtrace-2.15.0-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:15e2a0edb5ca42b56ee1be36183c11148884e97a8dacb1f7fe7dedd3d68fd423"}, + {file = "ddtrace-2.15.0-cp37-cp37m-win32.whl", hash = "sha256:74a0ea0e109171274728a6820b4476fbe33224a6e8e46d600f572fb8fcd93af8"}, + {file = "ddtrace-2.15.0-cp37-cp37m-win_amd64.whl", hash = "sha256:edf49f1c4dd975cf44e8f6fc33442e78f2c356bdca59edc8df0c0294238dbb9f"}, + {file = "ddtrace-2.15.0-cp38-cp38-macosx_12_0_universal2.whl", hash = "sha256:970271047fccaed427e6b8d23904e530377338de2fdef7e81ce643eae23e022b"}, + {file = "ddtrace-2.15.0-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:656e92c4be00ffffea588541999151131af225aa73c28ce208fb280f2bdcc559"}, + {file = "ddtrace-2.15.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f665047da8e23b5d94cb7aabdb9176240e2108ac2f0e034677ce81be2372729"}, + {file = "ddtrace-2.15.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9a59d17228af3eb1f7f9ef8a08f20f0485628f1b2b9e104811e3182bab982ed9"}, + {file = "ddtrace-2.15.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f4c8271621eeaee5b4f30e8dd03f61de1bbca30cfd0da7ad57dd468ff46bbb6"}, + {file = "ddtrace-2.15.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:830471742c76fc77412e432c4d396318c0146e7f9dc8cb24a03043cf956bb034"}, + {file = "ddtrace-2.15.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:db7520b1234fcc78c12323ddb436703100754524607a104459f0063c343418e3"}, + {file = "ddtrace-2.15.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:490e34dd2ff15b08856c9b496cad3ffa0f3a1ad3501c21d0541acd0eb27f6603"}, + {file = "ddtrace-2.15.0-cp38-cp38-win32.whl", hash = "sha256:b0202d9e2ea76d9004dc25f09cc80e861ef2c8ded36179496db5a910be67665f"}, + {file = "ddtrace-2.15.0-cp38-cp38-win_amd64.whl", hash = "sha256:a996c2965f8533596e0c873eba26b68272e494127b5acb07f8040f3a5d906fbe"}, + {file = "ddtrace-2.15.0-cp39-cp39-macosx_12_0_universal2.whl", hash = "sha256:87307d9d55b786c67eebec93274cfeed9326c2608161ad9202dee7da4a6ef9a5"}, + {file = "ddtrace-2.15.0-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:181de5041b0490e70a294f0e6c5014bb9bdba7e31cf031f13f2c21687088a3d0"}, + {file = "ddtrace-2.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8564cbab6571e396d11d7876f34fb99faa5d68ce38774f92825dd1c76001fca"}, + {file = "ddtrace-2.15.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4af2510ce33adf71235c2d80873afa093d1f360976969cdd068c08c86692b253"}, + {file = "ddtrace-2.15.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:588d5eda7bfa9eb8296af86c089f8b7ec2e4e641e5af1e46d1204115b376d7ee"}, + {file = "ddtrace-2.15.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0653b483c55cac027e0fe2fd4e0cadcad966bc8b0d3d1a90b0ef820cad8d8d27"}, + {file = "ddtrace-2.15.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:856222d9237ba6281f39b242e1e840b0434c2008e91c27cb2a7cb3cf0d32fc94"}, + {file = "ddtrace-2.15.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:90da30ee34163fd85a7f021244cd0282905e50d6651a176d4f8a886e2fad5a21"}, + {file = "ddtrace-2.15.0-cp39-cp39-win32.whl", hash = "sha256:38d184fff1fb1d65d61ae7594d364e1acfd57b50fa2e0ce62096959b2c61c316"}, + {file = "ddtrace-2.15.0-cp39-cp39-win_amd64.whl", hash = "sha256:b635d086070fd34548de7bb72f2537243415259db7ed97bbe9f4515172dec0ad"}, + {file = "ddtrace-2.15.0.tar.gz", hash = "sha256:45101c2fa0db8eb67516a66f6cd8ac77a624c3736389d8b75fce0273af4d2e97"}, ] [package.dependencies] @@ -295,13 +310,13 @@ dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "sphinx (<2)", "tox"] [[package]] name = "envier" -version = "0.5.2" +version = "0.6.1" description = "Python application configuration via the environment" optional = false python-versions = ">=3.7" files = [ - {file = "envier-0.5.2-py3-none-any.whl", hash = "sha256:65099cf3aa9b3b3b4b92db2f7d29e2910672e085b76f7e587d2167561a834add"}, - {file = "envier-0.5.2.tar.gz", hash = "sha256:4e7e398cb09a8dd360508ef7e12511a152355426d2544b8487a34dad27cc20ad"}, + {file = "envier-0.6.1-py3-none-any.whl", hash = "sha256:73609040a76be48bbcb97074d9969666484aa0de706183a6e9ef773156a8a6a9"}, + {file = "envier-0.6.1.tar.gz", hash = "sha256:3309a01bb3d8850c9e7a31a5166d5a836846db2faecb79b9cb32654dd50ca9f9"}, ] [package.extras] @@ -446,22 +461,22 @@ testing = ["pytest", "pytest-benchmark"] [[package]] name = "protobuf" -version = "5.28.2" +version = "5.28.3" description = "" optional = false python-versions = ">=3.8" files = [ - {file = "protobuf-5.28.2-cp310-abi3-win32.whl", hash = "sha256:eeea10f3dc0ac7e6b4933d32db20662902b4ab81bf28df12218aa389e9c2102d"}, - {file = "protobuf-5.28.2-cp310-abi3-win_amd64.whl", hash = "sha256:2c69461a7fcc8e24be697624c09a839976d82ae75062b11a0972e41fd2cd9132"}, - {file = "protobuf-5.28.2-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:a8b9403fc70764b08d2f593ce44f1d2920c5077bf7d311fefec999f8c40f78b7"}, - {file = "protobuf-5.28.2-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:35cfcb15f213449af7ff6198d6eb5f739c37d7e4f1c09b5d0641babf2cc0c68f"}, - {file = "protobuf-5.28.2-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:5e8a95246d581eef20471b5d5ba010d55f66740942b95ba9b872d918c459452f"}, - {file = "protobuf-5.28.2-cp38-cp38-win32.whl", hash = "sha256:87317e9bcda04a32f2ee82089a204d3a2f0d3c8aeed16568c7daf4756e4f1fe0"}, - {file = "protobuf-5.28.2-cp38-cp38-win_amd64.whl", hash = "sha256:c0ea0123dac3399a2eeb1a1443d82b7afc9ff40241433296769f7da42d142ec3"}, - {file = "protobuf-5.28.2-cp39-cp39-win32.whl", hash = "sha256:ca53faf29896c526863366a52a8f4d88e69cd04ec9571ed6082fa117fac3ab36"}, - {file = "protobuf-5.28.2-cp39-cp39-win_amd64.whl", hash = "sha256:8ddc60bf374785fb7cb12510b267f59067fa10087325b8e1855b898a0d81d276"}, - {file = "protobuf-5.28.2-py3-none-any.whl", hash = "sha256:52235802093bd8a2811abbe8bf0ab9c5f54cca0a751fdd3f6ac2a21438bffece"}, - {file = "protobuf-5.28.2.tar.gz", hash = "sha256:59379674ff119717404f7454647913787034f03fe7049cbef1d74a97bb4593f0"}, + {file = "protobuf-5.28.3-cp310-abi3-win32.whl", hash = "sha256:0c4eec6f987338617072592b97943fdbe30d019c56126493111cf24344c1cc24"}, + {file = "protobuf-5.28.3-cp310-abi3-win_amd64.whl", hash = "sha256:91fba8f445723fcf400fdbe9ca796b19d3b1242cd873907979b9ed71e4afe868"}, + {file = "protobuf-5.28.3-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:a3f6857551e53ce35e60b403b8a27b0295f7d6eb63d10484f12bc6879c715687"}, + {file = "protobuf-5.28.3-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:3fa2de6b8b29d12c61911505d893afe7320ce7ccba4df913e2971461fa36d584"}, + {file = "protobuf-5.28.3-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:712319fbdddb46f21abb66cd33cb9e491a5763b2febd8f228251add221981135"}, + {file = "protobuf-5.28.3-cp38-cp38-win32.whl", hash = "sha256:3e6101d095dfd119513cde7259aa703d16c6bbdfae2554dfe5cfdbe94e32d548"}, + {file = "protobuf-5.28.3-cp38-cp38-win_amd64.whl", hash = "sha256:27b246b3723692bf1068d5734ddaf2fccc2cdd6e0c9b47fe099244d80200593b"}, + {file = "protobuf-5.28.3-cp39-cp39-win32.whl", hash = "sha256:135658402f71bbd49500322c0f736145731b16fc79dc8f367ab544a17eab4535"}, + {file = "protobuf-5.28.3-cp39-cp39-win_amd64.whl", hash = "sha256:70585a70fc2dd4818c51287ceef5bdba6387f88a578c86d47bb34669b5552c36"}, + {file = "protobuf-5.28.3-py3-none-any.whl", hash = "sha256:cee1757663fa32a1ee673434fcf3bf24dd54763c79690201208bafec62f19eed"}, + {file = "protobuf-5.28.3.tar.gz", hash = "sha256:64badbc49180a5e401f373f9ce7ab1d18b63f7dd4a9cdc43c92b9f0b481cef7b"}, ] [[package]] @@ -576,13 +591,13 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "s3transfer" -version = "0.10.2" +version = "0.10.3" description = "An Amazon S3 Transfer Manager" optional = true python-versions = ">=3.8" files = [ - {file = "s3transfer-0.10.2-py3-none-any.whl", hash = "sha256:eca1c20de70a39daee580aef4986996620f365c4e0fda6a86100231d62f1bf69"}, - {file = "s3transfer-0.10.2.tar.gz", hash = "sha256:0711534e9356d3cc692fdde846b4a1e4b0cb6519971860796e6bc4c7aea00ef6"}, + {file = "s3transfer-0.10.3-py3-none-any.whl", hash = "sha256:263ed587a5803c6c708d3ce44dc4dfedaab4c1a32e8329bab818933d79ddcf5d"}, + {file = "s3transfer-0.10.3.tar.gz", hash = "sha256:4f50ed74ab84d474ce614475e0b8d5047ff080810aac5d01ea25231cfc944b0c"}, ] [package.dependencies] @@ -825,13 +840,13 @@ files = [ [[package]] name = "xmltodict" -version = "0.13.0" +version = "0.14.2" description = "Makes working with XML feel like you are working with JSON" optional = false -python-versions = ">=3.4" +python-versions = ">=3.6" files = [ - {file = "xmltodict-0.13.0-py2.py3-none-any.whl", hash = "sha256:aa89e8fd76320154a40d19a0df04a4695fb9dc5ba977cbb68ab3e4eb225e7852"}, - {file = "xmltodict-0.13.0.tar.gz", hash = "sha256:341595a488e3e01a85a9d8911d8912fd922ede5fecc4dce437eb4b6c8d037e56"}, + {file = "xmltodict-0.14.2-py2.py3-none-any.whl", hash = "sha256:20cc7d723ed729276e808f26fb6b3599f786cbc37e06c65e192ba77c40f20aac"}, + {file = "xmltodict-0.14.2.tar.gz", hash = "sha256:201e7c28bb210e374999d1dde6382923ab0ed1a8a5faeece48ab525b7810a553"}, ] [[package]] @@ -859,4 +874,4 @@ dev = ["boto3", "flake8", "pytest", "pytest-benchmark", "requests"] [metadata] lock-version = "2.0" python-versions = ">=3.8.0,<4" -content-hash = "46554f78374b2b0f1d4ea85f984b2a35ffe481f981c360c2f16d534d6c9eb660" +content-hash = "10fb256b161b7afe015b278c9c937cfbf4f5c53227455ded8251ae62d5f6c587" diff --git a/pyproject.toml b/pyproject.toml index 396b731eb..3dab65a77 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,7 +27,7 @@ classifiers = [ python = ">=3.8.0,<4" datadog = ">=0.41.0,<1.0.0" wrapt = "^1.11.2" -ddtrace = ">=2.14.1" +ddtrace = ">=2.15.0" ujson = ">=5.9.0" boto3 = { version = "^1.34.0", optional = true } requests = { version ="^2.22.0", optional = true } diff --git a/tests/Dockerfile b/tests/Dockerfile index 948de1bcd..7b96ab89a 100644 --- a/tests/Dockerfile +++ b/tests/Dockerfile @@ -3,6 +3,11 @@ FROM python:$python_version ENV PYTHONDONTWRITEBYTECODE True +# Add Rust compiler which is needed to build dd-trace-py from source +RUN curl https://sh.rustup.rs -sSf | \ + sh -s -- --default-toolchain stable -y +ENV PATH=/root/.cargo/bin:$PATH + RUN mkdir -p /test/datadog_lambda WORKDIR /test diff --git a/tests/integration/snapshots/logs/async-metrics_python310.log b/tests/integration/snapshots/logs/async-metrics_python310.log index 40c23c680..b3b94ca43 100644 --- a/tests/integration/snapshots/logs/async-metrics_python310.log +++ b/tests/integration/snapshots/logs/async-metrics_python310.log @@ -279,7 +279,39 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless" + "type": "serverless", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + }, + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + }, + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", @@ -942,7 +974,19 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless" + "type": "serverless", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.s3.object", + "ptr.dir": "u", + "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", diff --git a/tests/integration/snapshots/logs/async-metrics_python311.log b/tests/integration/snapshots/logs/async-metrics_python311.log index f1f12db4e..5ea440b38 100644 --- a/tests/integration/snapshots/logs/async-metrics_python311.log +++ b/tests/integration/snapshots/logs/async-metrics_python311.log @@ -279,7 +279,39 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless" + "type": "serverless", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + }, + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + }, + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", @@ -942,7 +974,19 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless" + "type": "serverless", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.s3.object", + "ptr.dir": "u", + "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", diff --git a/tests/integration/snapshots/logs/async-metrics_python312.log b/tests/integration/snapshots/logs/async-metrics_python312.log index 3bc69cca6..ceaaa7595 100644 --- a/tests/integration/snapshots/logs/async-metrics_python312.log +++ b/tests/integration/snapshots/logs/async-metrics_python312.log @@ -279,7 +279,39 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless" + "type": "serverless", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + }, + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + }, + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", @@ -942,7 +974,19 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless" + "type": "serverless", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.s3.object", + "ptr.dir": "u", + "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", diff --git a/tests/integration/snapshots/logs/async-metrics_python38.log b/tests/integration/snapshots/logs/async-metrics_python38.log index fdc6b1923..3ce5c99d8 100644 --- a/tests/integration/snapshots/logs/async-metrics_python38.log +++ b/tests/integration/snapshots/logs/async-metrics_python38.log @@ -279,7 +279,39 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless" + "type": "serverless", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + }, + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + }, + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", @@ -942,7 +974,19 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless" + "type": "serverless", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.s3.object", + "ptr.dir": "u", + "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", diff --git a/tests/integration/snapshots/logs/async-metrics_python39.log b/tests/integration/snapshots/logs/async-metrics_python39.log index c6c682905..ede453ff2 100644 --- a/tests/integration/snapshots/logs/async-metrics_python39.log +++ b/tests/integration/snapshots/logs/async-metrics_python39.log @@ -279,7 +279,39 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless" + "type": "serverless", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + }, + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + }, + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", @@ -942,7 +974,19 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless" + "type": "serverless", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.s3.object", + "ptr.dir": "u", + "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", diff --git a/tests/integration/snapshots/logs/sync-metrics_python310.log b/tests/integration/snapshots/logs/sync-metrics_python310.log index 5d9262ce7..540ce0818 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python310.log +++ b/tests/integration/snapshots/logs/sync-metrics_python310.log @@ -278,7 +278,39 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless" + "type": "serverless", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + }, + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + }, + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", @@ -1017,7 +1049,19 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless" + "type": "serverless", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.s3.object", + "ptr.dir": "u", + "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", diff --git a/tests/integration/snapshots/logs/sync-metrics_python311.log b/tests/integration/snapshots/logs/sync-metrics_python311.log index e93a4d0ee..68b930db7 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python311.log +++ b/tests/integration/snapshots/logs/sync-metrics_python311.log @@ -278,7 +278,39 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless" + "type": "serverless", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + }, + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + }, + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", @@ -1017,7 +1049,19 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless" + "type": "serverless", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.s3.object", + "ptr.dir": "u", + "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", diff --git a/tests/integration/snapshots/logs/sync-metrics_python312.log b/tests/integration/snapshots/logs/sync-metrics_python312.log index c912cedec..9e4d916ed 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python312.log +++ b/tests/integration/snapshots/logs/sync-metrics_python312.log @@ -278,7 +278,39 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless" + "type": "serverless", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + }, + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + }, + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", @@ -1017,7 +1049,19 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless" + "type": "serverless", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.s3.object", + "ptr.dir": "u", + "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", diff --git a/tests/integration/snapshots/logs/sync-metrics_python38.log b/tests/integration/snapshots/logs/sync-metrics_python38.log index 74a1e06bd..6c7b3c50d 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python38.log +++ b/tests/integration/snapshots/logs/sync-metrics_python38.log @@ -278,7 +278,39 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless" + "type": "serverless", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + }, + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + }, + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", @@ -1017,7 +1049,19 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless" + "type": "serverless", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.s3.object", + "ptr.dir": "u", + "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", diff --git a/tests/integration/snapshots/logs/sync-metrics_python39.log b/tests/integration/snapshots/logs/sync-metrics_python39.log index 19f0e84ce..26db0d4bf 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -278,7 +278,39 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless" + "type": "serverless", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + }, + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + }, + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", @@ -1017,7 +1049,19 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless" + "type": "serverless", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.s3.object", + "ptr.dir": "u", + "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", diff --git a/tests/test_span_pointers.py b/tests/test_span_pointers.py index f8181d443..8073a7041 100644 --- a/tests/test_span_pointers.py +++ b/tests/test_span_pointers.py @@ -80,6 +80,67 @@ class SpanPointersCase(NamedTuple): }, span_pointers=[], ), + SpanPointersCase( + name="empty dynamodb event", + event_source=_EventSource(EventTypes.DYNAMODB), + event={}, + span_pointers=[], + ), + SpanPointersCase( + name="sensible dynamodb event", + event_source=_EventSource(EventTypes.DYNAMODB), + event={ + "Records": [ + { + "eventSourceARN": "arn:aws:dynamodb:us-west-2:123456789012:table/some-table/stream/2015-06-27T00:48:05.899", + "dynamodb": { + "Keys": { + "some-key": {"S": "some-value"}, + }, + }, + }, + { + "eventSourceARN": "arn:aws:dynamodb:us-west-2:123456789012:table/some-table/stream/2015-06-27T00:48:05.899", + "dynamodb": { + "Keys": { + "some-key": {"S": "some-other-value"}, + }, + }, + }, + ], + }, + span_pointers=[ + _SpanPointerDescription( + pointer_kind="aws.dynamodb.item", + pointer_direction=_SpanPointerDirection.UPSTREAM, + pointer_hash="7f1aee721472bcb48701d45c7c7f7821", + extra_attributes={}, + ), + _SpanPointerDescription( + pointer_kind="aws.dynamodb.item", + pointer_direction=_SpanPointerDirection.UPSTREAM, + pointer_hash="36b820424312a6069bd3f2185f1af584", + extra_attributes={}, + ), + ], + ), + SpanPointersCase( + name="malformed dynamodb event", + event_source=_EventSource(EventTypes.DYNAMODB), + event={ + "Records": [ + { + "eventSourceARN": "arn:aws:dynamodb:us-west-2:123456789012:table/some-table", # missing stream info + "dynamodb": { + "Keys": { + "some-key": {"S": "some-value"}, + }, + }, + }, + ], + }, + span_pointers=[], + ), ], ids=lambda test_case: test_case.name, ) From 59e6e7c01019a80f3cb425c1c75ae58b404db6b5 Mon Sep 17 00:00:00 2001 From: Nicholas Hulston Date: Thu, 31 Oct 2024 09:15:11 -0400 Subject: [PATCH 200/403] Fix lossiness when submitting timestamped custom metrics (#527) --- datadog_lambda/thread_stats_writer.py | 8 +++- tests/test_metric.py | 68 ++++++++++++++++++++++++--- 2 files changed, 69 insertions(+), 7 deletions(-) diff --git a/datadog_lambda/thread_stats_writer.py b/datadog_lambda/thread_stats_writer.py index 367b8b213..422a9a0a4 100644 --- a/datadog_lambda/thread_stats_writer.py +++ b/datadog_lambda/thread_stats_writer.py @@ -27,8 +27,11 @@ def flush(self, tags=None): Modified based on `datadog.threadstats.base.ThreadStats.flush()`, to gain better control over exception handling. """ + original_constant_tags = self.thread_stats.constant_tags.copy() if tags: - self.thread_stats.constant_tags = self.thread_stats.constant_tags + tags + # Temporarily add tags for this flush + self.thread_stats.constant_tags = original_constant_tags + tags + _, dists = self.thread_stats._get_aggregate_metrics_and_dists(float("inf")) count_dists = len(dists) if not count_dists: @@ -62,6 +65,9 @@ def flush(self, tags=None): logger.debug( "Flush #%s failed", self.thread_stats.flush_count, exc_info=True ) + finally: + # Reset constant_tags to its original state + self.thread_stats.constant_tags = original_constant_tags def stop(self): self.thread_stats.stop() diff --git a/tests/test_metric.py b/tests/test_metric.py index 241f563b7..345740a45 100644 --- a/tests/test_metric.py +++ b/tests/test_metric.py @@ -119,13 +119,69 @@ def test_retry_on_remote_disconnected(self): def test_flush_stats_with_tags(self): lambda_stats = ThreadStatsWriter(True) + original_constant_tags = lambda_stats.thread_stats.constant_tags.copy() tags = ["tag1:value1", "tag2:value2"] - lambda_stats.flush(tags) - self.mock_threadstats_flush_distributions.assert_called_once_with( - lambda_stats.thread_stats._get_aggregate_metrics_and_dists(float("inf"))[1] - ) - for tag in tags: - self.assertTrue(tag in lambda_stats.thread_stats.constant_tags) + + # Add a metric to be flushed + lambda_stats.distribution("test.metric", 1, tags=["metric:tag"]) + + with patch.object( + lambda_stats.thread_stats.reporter, "flush_distributions" + ) as mock_flush_distributions: + lambda_stats.flush(tags) + mock_flush_distributions.assert_called_once() + # Verify that after flush, constant_tags is reset to original + self.assertEqual( + lambda_stats.thread_stats.constant_tags, original_constant_tags + ) + + def test_flush_temp_constant_tags(self): + lambda_stats = ThreadStatsWriter(flush_in_thread=True) + lambda_stats.thread_stats.constant_tags = ["initial:tag"] + original_constant_tags = lambda_stats.thread_stats.constant_tags.copy() + + lambda_stats.distribution("test.metric", 1, tags=["metric:tag"]) + flush_tags = ["flush:tag1", "flush:tag2"] + + with patch.object( + lambda_stats.thread_stats.reporter, "flush_distributions" + ) as mock_flush_distributions: + lambda_stats.flush(tags=flush_tags) + mock_flush_distributions.assert_called_once() + flushed_dists = mock_flush_distributions.call_args[0][0] + + # Expected tags: original constant_tags + flush_tags + metric tags + expected_tags = original_constant_tags + flush_tags + ["metric:tag"] + + # Verify the tags on the metric + self.assertEqual(len(flushed_dists), 1) + metric = flushed_dists[0] + self.assertEqual(sorted(metric["tags"]), sorted(expected_tags)) + + # Verify that constant_tags is reset after flush + self.assertEqual( + lambda_stats.thread_stats.constant_tags, original_constant_tags + ) + + # Repeat to ensure tags do not accumulate over multiple flushes + new_flush_tags = ["flush:tag3"] + lambda_stats.distribution("test.metric2", 2, tags=["metric2:tag"]) + + with patch.object( + lambda_stats.thread_stats.reporter, "flush_distributions" + ) as mock_flush_distributions: + lambda_stats.flush(tags=new_flush_tags) + mock_flush_distributions.assert_called_once() + flushed_dists = mock_flush_distributions.call_args[0][0] + # Expected tags for the new metric + expected_tags = original_constant_tags + new_flush_tags + ["metric2:tag"] + + self.assertEqual(len(flushed_dists), 1) + metric = flushed_dists[0] + self.assertEqual(sorted(metric["tags"]), sorted(expected_tags)) + self.assertEqual( + lambda_stats.thread_stats.constant_tags, original_constant_tags + ) def test_flush_stats_without_context(self): flush_stats(lambda_context=None) From f15a6dc6375b31761483636fefb069ff122ababd Mon Sep 17 00:00:00 2001 From: Aleksandr Pasechnik Date: Thu, 31 Oct 2024 16:08:42 -0400 Subject: [PATCH 201/403] v6.100.0 (#530) * v6.100.0 * chore: also update version.py --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index 54fd99d25..1357787d1 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "6.99.0" +__version__ = "6.100.0" diff --git a/pyproject.toml b/pyproject.toml index 3dab65a77..c31f8f5fb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "6.99.0" +version = "6.100.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 2cda2089688c181f70381acfc5294d763920762d Mon Sep 17 00:00:00 2001 From: Aleksandr Pasechnik Date: Mon, 4 Nov 2024 12:07:31 -0500 Subject: [PATCH 202/403] chore: move aws span pointer helper imports (#529) --- datadog_lambda/span_pointers.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/datadog_lambda/span_pointers.py b/datadog_lambda/span_pointers.py index 669257bd8..d5c8bde79 100644 --- a/datadog_lambda/span_pointers.py +++ b/datadog_lambda/span_pointers.py @@ -2,12 +2,6 @@ import logging from typing import List -from ddtrace._trace.utils_botocore.span_pointers.dynamodb import ( - _aws_dynamodb_item_span_pointer_description, -) -from ddtrace._trace.utils_botocore.span_pointers.s3 import ( - _aws_s3_object_span_pointer_description, -) from ddtrace._trace._span_pointer import _SpanPointerDirection from ddtrace._trace._span_pointer import _SpanPointerDescription from datadog_lambda.trigger import EventTypes @@ -80,6 +74,10 @@ def _calculate_s3_span_pointers_for_object_created_s3_information( return [] try: + from ddtrace._trace.utils_botocore.span_pointers.s3 import ( + _aws_s3_object_span_pointer_description, + ) + return [ _aws_s3_object_span_pointer_description( pointer_direction=_SpanPointerDirection.UPSTREAM, @@ -124,6 +122,10 @@ def _calculate_dynamodb_span_pointers_for_event_record( return [] try: + from ddtrace._trace.utils_botocore.span_pointers.dynamodb import ( + _aws_dynamodb_item_span_pointer_description, + ) + return [ _aws_dynamodb_item_span_pointer_description( pointer_direction=_SpanPointerDirection.UPSTREAM, From ea0a09efbdc95813b1760b1b388cac7dcff1985a Mon Sep 17 00:00:00 2001 From: Aleksandr Pasechnik Date: Mon, 4 Nov 2024 14:28:14 -0500 Subject: [PATCH 203/403] feat: [SVLS-5765] use DD_BOTOCORE_ADD_SPAN_POINTERS (#531) --- datadog_lambda/span_pointers.py | 16 ++++++++++++---- tests/test_span_pointers.py | 33 ++++++++++++++++++++++++++++++++- 2 files changed, 44 insertions(+), 5 deletions(-) diff --git a/datadog_lambda/span_pointers.py b/datadog_lambda/span_pointers.py index d5c8bde79..86c9e60b7 100644 --- a/datadog_lambda/span_pointers.py +++ b/datadog_lambda/span_pointers.py @@ -1,5 +1,6 @@ from itertools import chain import logging +import os from typing import List from ddtrace._trace._span_pointer import _SpanPointerDirection @@ -10,16 +11,23 @@ logger = logging.getLogger(__name__) +dd_botocore_add_span_pointers = os.environ.get( + "DD_BOTOCORE_ADD_SPAN_POINTERS", "true" +).lower() in ("true", "1") + + def calculate_span_pointers( event_source, event, + botocore_add_span_pointers=dd_botocore_add_span_pointers, ) -> List[_SpanPointerDescription]: try: - if event_source.equals(EventTypes.S3): - return _calculate_s3_span_pointers_for_event(event) + if botocore_add_span_pointers: + if event_source.equals(EventTypes.S3): + return _calculate_s3_span_pointers_for_event(event) - elif event_source.equals(EventTypes.DYNAMODB): - return _calculate_dynamodb_span_pointers_for_event(event) + elif event_source.equals(EventTypes.DYNAMODB): + return _calculate_dynamodb_span_pointers_for_event(event) except Exception as e: logger.warning( diff --git a/tests/test_span_pointers.py b/tests/test_span_pointers.py index 8073a7041..f4cd1b268 100644 --- a/tests/test_span_pointers.py +++ b/tests/test_span_pointers.py @@ -14,6 +14,7 @@ class SpanPointersCase(NamedTuple): name: str event_source: _EventSource event: dict + dd_botocore_span_pointers: bool span_pointers: List[_SpanPointerDescription] @pytest.mark.parametrize( @@ -23,12 +24,14 @@ class SpanPointersCase(NamedTuple): name="some unsupported event", event_source=_EventSource(EventTypes.UNKNOWN), event={}, + dd_botocore_span_pointers=True, span_pointers=[], ), SpanPointersCase( name="empty s3 event", event_source=_EventSource(EventTypes.S3), event={}, + dd_botocore_span_pointers=True, span_pointers=[], ), SpanPointersCase( @@ -50,6 +53,7 @@ class SpanPointersCase(NamedTuple): }, ], }, + dd_botocore_span_pointers=True, span_pointers=[ _SpanPointerDescription( pointer_kind="aws.s3.object", @@ -59,6 +63,28 @@ class SpanPointersCase(NamedTuple): ), ], ), + SpanPointersCase( + name="sensible s3 event with dd_botocore_span_pointers disabled", + event_source=_EventSource(EventTypes.S3), + event={ + "Records": [ + { + "eventName": "ObjectCreated:Put", + "s3": { + "bucket": { + "name": "mybucket", + }, + "object": { + "key": "mykey", + "eTag": "123abc", + }, + }, + }, + ], + }, + dd_botocore_span_pointers=False, + span_pointers=[], + ), SpanPointersCase( name="malformed s3 event", event_source=_EventSource(EventTypes.S3), @@ -78,12 +104,14 @@ class SpanPointersCase(NamedTuple): }, ], }, + dd_botocore_span_pointers=True, span_pointers=[], ), SpanPointersCase( name="empty dynamodb event", event_source=_EventSource(EventTypes.DYNAMODB), event={}, + dd_botocore_span_pointers=True, span_pointers=[], ), SpanPointersCase( @@ -109,6 +137,7 @@ class SpanPointersCase(NamedTuple): }, ], }, + dd_botocore_span_pointers=True, span_pointers=[ _SpanPointerDescription( pointer_kind="aws.dynamodb.item", @@ -139,16 +168,18 @@ class SpanPointersCase(NamedTuple): }, ], }, + dd_botocore_span_pointers=True, span_pointers=[], ), ], ids=lambda test_case: test_case.name, ) - def test_calculate_span_pointers(self, test_case: SpanPointersCase): + def test_calculate_span_pointers(self, test_case: SpanPointersCase) -> None: assert ( calculate_span_pointers( test_case.event_source, test_case.event, + botocore_add_span_pointers=test_case.dd_botocore_span_pointers, ) == test_case.span_pointers ) From 3e92292b587d2f51f9943a294cae3fc166d4eddb Mon Sep 17 00:00:00 2001 From: Aleksandr Pasechnik Date: Tue, 5 Nov 2024 13:27:35 -0500 Subject: [PATCH 204/403] chore: upgrade dd-trace-py to 2.16.0 (#534) --- poetry.lock | 138 ++++++++++++++++++++++++------------------------- pyproject.toml | 2 +- 2 files changed, 70 insertions(+), 70 deletions(-) diff --git a/poetry.lock b/poetry.lock index c87fea848..a0ba70c8a 100644 --- a/poetry.lock +++ b/poetry.lock @@ -2,17 +2,17 @@ [[package]] name = "boto3" -version = "1.35.51" +version = "1.35.54" description = "The AWS SDK for Python" optional = true python-versions = ">=3.8" files = [ - {file = "boto3-1.35.51-py3-none-any.whl", hash = "sha256:c922f6a18958af9d8af0489d6d8503b517029d8159b26aa4859a8294561c72e9"}, - {file = "boto3-1.35.51.tar.gz", hash = "sha256:a57c6c7012ecb40c43e565a6f7a891f39efa990ff933eab63cd456f7501c2731"}, + {file = "boto3-1.35.54-py3-none-any.whl", hash = "sha256:2d5e160b614db55fbee7981001c54476cb827c441cef65b2fcb2c52a62019909"}, + {file = "boto3-1.35.54.tar.gz", hash = "sha256:7d9c359bbbc858a60b51c86328db813353c8bd1940212cdbd0a7da835291c2e1"}, ] [package.dependencies] -botocore = ">=1.35.51,<1.36.0" +botocore = ">=1.35.54,<1.36.0" jmespath = ">=0.7.1,<2.0.0" s3transfer = ">=0.10.0,<0.11.0" @@ -21,13 +21,13 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.35.51" +version = "1.35.54" description = "Low-level, data-driven core of boto 3." optional = true python-versions = ">=3.8" files = [ - {file = "botocore-1.35.51-py3-none-any.whl", hash = "sha256:4d65b00111bd12b98e9f920ecab602cf619cc6a6d0be6e5dd53f517e4b92901c"}, - {file = "botocore-1.35.51.tar.gz", hash = "sha256:a9b3d1da76b3e896ad74605c01d88f596324a3337393d4bfbfa0d6c35822ca9c"}, + {file = "botocore-1.35.54-py3-none-any.whl", hash = "sha256:9cca1811094b6cdc144c2c063a3ec2db6d7c88194b04d4277cd34fc8e3473aff"}, + {file = "botocore-1.35.54.tar.gz", hash = "sha256:131bb59ce59c8a939b31e8e647242d70cf11d32d4529fa4dca01feea1e891a76"}, ] [package.dependencies] @@ -207,71 +207,71 @@ requests = ">=2.6.0" [[package]] name = "ddtrace" -version = "2.15.0" +version = "2.16.0" description = "Datadog APM client library" optional = false python-versions = ">=3.7" files = [ - {file = "ddtrace-2.15.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:8e95399bcbbef7653329ca34f4ec47b49c8364f90097b781982b41ad39c9d9cc"}, - {file = "ddtrace-2.15.0-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:42f34571041e92f6326819c543d114059ab381a4e73a4f90c803a74aff750421"}, - {file = "ddtrace-2.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e9a043a0c8e4f4ad2ef5820ad5a75e66eff0f10223768a697302c27b0f3fbed"}, - {file = "ddtrace-2.15.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:20706878d973b046a032d7e44b4314f9c6fbf3329942664ca5f4949119625644"}, - {file = "ddtrace-2.15.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22a51d604d1f647eff82f5ae2a14c924a2164ded3d2217dbf5b2787f2384a11a"}, - {file = "ddtrace-2.15.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:c3ccb04acddf37dcc6458949dbe91a1f230deaf30cf386501c2e6b20986a37bf"}, - {file = "ddtrace-2.15.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6004a1fc48ff6f564d35c790e002bdb7ce39a904126d9d3ce3696b9586ce6ad8"}, - {file = "ddtrace-2.15.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e4a676ddb3c03149545a21d874ae846d3a467dbc37ba253681deecccb5cfae03"}, - {file = "ddtrace-2.15.0-cp310-cp310-win32.whl", hash = "sha256:cfa81e4d7897dd335a79c0c727001797f9a3ffea6c4f1444335fd6bb7694cd97"}, - {file = "ddtrace-2.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:0ad47afc29f66bece98a166e808dc07d197a78098c81546417e0455d3cf10b31"}, - {file = "ddtrace-2.15.0-cp311-cp311-macosx_12_0_universal2.whl", hash = "sha256:8e2da75e5bd550fc04415a2446536a3d31c2c28bbfc44ecb2435058693e71329"}, - {file = "ddtrace-2.15.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:d41abf53aeab1248ef5a4c58366fe5e67522cc1995727724f1c8e3c5acdd0150"}, - {file = "ddtrace-2.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:30a8960cc062eabbaf4a37febcf5e68e9984100cd345bce4fa1c65366290d0eb"}, - {file = "ddtrace-2.15.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8fbf939613d2c81bcd04b7d9e854b4391e26b9c21c6b719ecfbdeb19e6c35089"}, - {file = "ddtrace-2.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f528fe2d90f2f549ce9ca699b45889b92698005f8d356d54cdff2730ee608798"}, - {file = "ddtrace-2.15.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:721eddd72f5d062a7da5bcd6f9f06010368b75648b6b54661949ee22ee5b0fe5"}, - {file = "ddtrace-2.15.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9d0649f0b3e590e119c63ed553120acaea54e511ee495f4ab7d7c1ef2d2ec778"}, - {file = "ddtrace-2.15.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:7c21f909aec4d666ad08dd26e42afa07ec560e2e157b4abdbec92b9f3ffa2ab4"}, - {file = "ddtrace-2.15.0-cp311-cp311-win32.whl", hash = "sha256:dc0b0d42f96da8f70a5bd64247392c3a10c16e03633098f6ad5fef8894655d6a"}, - {file = "ddtrace-2.15.0-cp311-cp311-win_amd64.whl", hash = "sha256:09953ad48275eb5281c642454d3403db413eb957cb7935d80951580982339831"}, - {file = "ddtrace-2.15.0-cp312-cp312-macosx_12_0_universal2.whl", hash = "sha256:29cc10454b4c3ea25dfd41b008916d37d19b87f18145a47e7a82bb8dce696ba1"}, - {file = "ddtrace-2.15.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:1ecebd2ac49395a58e7649bcb8e2a65055b2edc35a347350cb71c062f2031bf2"}, - {file = "ddtrace-2.15.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7e2e6fa42b99093205dec28f0be320f537ce8e70caca00e61e49d9d0898639e0"}, - {file = "ddtrace-2.15.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a69a43621052a82fa832ca005cc20d1408d94f5822e0a1484a48c94b1fd25654"}, - {file = "ddtrace-2.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:456ff1ed2f844d44be33429becfb6175252399d1f97507972ab02146a6b694b2"}, - {file = "ddtrace-2.15.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0872179e321986b7b67c6192469fdfe6b394c08e86852d21907ff8d7f1c212d5"}, - {file = "ddtrace-2.15.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4125abc8a11add44c15a5f57f71e25fd5dca02af5696ec49336ec8ad9c11b15e"}, - {file = "ddtrace-2.15.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0363c2aaf59b0421ed3717989c65f8104e95c2007a656333f9cccd2f10d310a1"}, - {file = "ddtrace-2.15.0-cp312-cp312-win32.whl", hash = "sha256:d7c48d8532ff54e6ce9dd9ff018390cbca2b8bb17d2c9dc190fafdd397ce5395"}, - {file = "ddtrace-2.15.0-cp312-cp312-win_amd64.whl", hash = "sha256:ad891608cbe28749600ddd279cb48aec8b756a87152405fac7e625e535cf0a53"}, - {file = "ddtrace-2.15.0-cp37-cp37m-macosx_12_0_x86_64.whl", hash = "sha256:5a41317eefd81ba33a779b96841508727791ee70c02d39bdaf90815a4c008c93"}, - {file = "ddtrace-2.15.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7b89cf3b05fd858586651dc9db0037345c82bcd57369259620ea0681c56dcdf2"}, - {file = "ddtrace-2.15.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:24091734498774cf733611904d5619c07753c4fcc97e3fd52ff0716b74bc1aeb"}, - {file = "ddtrace-2.15.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ddbae2ebcc54cfbd9c8fa58555e7f74ee290ff2aa4ade3b3832b48e5426402c"}, - {file = "ddtrace-2.15.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:a137e538166c195dd2f2052860c5798c5cfdba87c6113eab8b86d34810a1d938"}, - {file = "ddtrace-2.15.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:23339bf3f6ba951cbfedbe6b126c66241872d699fc2a34e5e73c5f90f496755d"}, - {file = "ddtrace-2.15.0-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:15e2a0edb5ca42b56ee1be36183c11148884e97a8dacb1f7fe7dedd3d68fd423"}, - {file = "ddtrace-2.15.0-cp37-cp37m-win32.whl", hash = "sha256:74a0ea0e109171274728a6820b4476fbe33224a6e8e46d600f572fb8fcd93af8"}, - {file = "ddtrace-2.15.0-cp37-cp37m-win_amd64.whl", hash = "sha256:edf49f1c4dd975cf44e8f6fc33442e78f2c356bdca59edc8df0c0294238dbb9f"}, - {file = "ddtrace-2.15.0-cp38-cp38-macosx_12_0_universal2.whl", hash = "sha256:970271047fccaed427e6b8d23904e530377338de2fdef7e81ce643eae23e022b"}, - {file = "ddtrace-2.15.0-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:656e92c4be00ffffea588541999151131af225aa73c28ce208fb280f2bdcc559"}, - {file = "ddtrace-2.15.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f665047da8e23b5d94cb7aabdb9176240e2108ac2f0e034677ce81be2372729"}, - {file = "ddtrace-2.15.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9a59d17228af3eb1f7f9ef8a08f20f0485628f1b2b9e104811e3182bab982ed9"}, - {file = "ddtrace-2.15.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f4c8271621eeaee5b4f30e8dd03f61de1bbca30cfd0da7ad57dd468ff46bbb6"}, - {file = "ddtrace-2.15.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:830471742c76fc77412e432c4d396318c0146e7f9dc8cb24a03043cf956bb034"}, - {file = "ddtrace-2.15.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:db7520b1234fcc78c12323ddb436703100754524607a104459f0063c343418e3"}, - {file = "ddtrace-2.15.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:490e34dd2ff15b08856c9b496cad3ffa0f3a1ad3501c21d0541acd0eb27f6603"}, - {file = "ddtrace-2.15.0-cp38-cp38-win32.whl", hash = "sha256:b0202d9e2ea76d9004dc25f09cc80e861ef2c8ded36179496db5a910be67665f"}, - {file = "ddtrace-2.15.0-cp38-cp38-win_amd64.whl", hash = "sha256:a996c2965f8533596e0c873eba26b68272e494127b5acb07f8040f3a5d906fbe"}, - {file = "ddtrace-2.15.0-cp39-cp39-macosx_12_0_universal2.whl", hash = "sha256:87307d9d55b786c67eebec93274cfeed9326c2608161ad9202dee7da4a6ef9a5"}, - {file = "ddtrace-2.15.0-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:181de5041b0490e70a294f0e6c5014bb9bdba7e31cf031f13f2c21687088a3d0"}, - {file = "ddtrace-2.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8564cbab6571e396d11d7876f34fb99faa5d68ce38774f92825dd1c76001fca"}, - {file = "ddtrace-2.15.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4af2510ce33adf71235c2d80873afa093d1f360976969cdd068c08c86692b253"}, - {file = "ddtrace-2.15.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:588d5eda7bfa9eb8296af86c089f8b7ec2e4e641e5af1e46d1204115b376d7ee"}, - {file = "ddtrace-2.15.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0653b483c55cac027e0fe2fd4e0cadcad966bc8b0d3d1a90b0ef820cad8d8d27"}, - {file = "ddtrace-2.15.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:856222d9237ba6281f39b242e1e840b0434c2008e91c27cb2a7cb3cf0d32fc94"}, - {file = "ddtrace-2.15.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:90da30ee34163fd85a7f021244cd0282905e50d6651a176d4f8a886e2fad5a21"}, - {file = "ddtrace-2.15.0-cp39-cp39-win32.whl", hash = "sha256:38d184fff1fb1d65d61ae7594d364e1acfd57b50fa2e0ce62096959b2c61c316"}, - {file = "ddtrace-2.15.0-cp39-cp39-win_amd64.whl", hash = "sha256:b635d086070fd34548de7bb72f2537243415259db7ed97bbe9f4515172dec0ad"}, - {file = "ddtrace-2.15.0.tar.gz", hash = "sha256:45101c2fa0db8eb67516a66f6cd8ac77a624c3736389d8b75fce0273af4d2e97"}, + {file = "ddtrace-2.16.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:f76359344de807ade173fcb723c6a25d65949c81412848ace248eb9d0be9b101"}, + {file = "ddtrace-2.16.0-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:d0d011263ba88ccde6d74d2f32cc97e639c43f0ebafcb0c2efe3a4f94c0f1488"}, + {file = "ddtrace-2.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3b518566e35dcd30b2ccf84736d431d31c0b16a0c26d435df3992223ca0fc1c7"}, + {file = "ddtrace-2.16.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82f0d2c418edc6bf8d258a58b678a9f655447fdfd5088a1bd0e1ba296fd422a1"}, + {file = "ddtrace-2.16.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dfa7f9ff5d897a2b4634b3aac2247fabd1fcb4efc0ccfa6123f77be7779c635a"}, + {file = "ddtrace-2.16.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:36e595b201efeeddfb627ecd4f1ecf8668aafcd5a5421808c0b2c70d5ca9ee06"}, + {file = "ddtrace-2.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:faf0b4e0fdad003aeb4b389dafb3bc1703f66f25f0ee14c1683a565011211f7a"}, + {file = "ddtrace-2.16.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:957e2c14e017365bd418d5db09cb0560fd82d63bc93dce2bc150438b9d88db81"}, + {file = "ddtrace-2.16.0-cp310-cp310-win32.whl", hash = "sha256:500528809f5e199e3802326da461c8a889194083e5e76329e98adeb0107c6485"}, + {file = "ddtrace-2.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:91f358e6812d277ad184d5bcaf22417e81460edb558fc842ba2a6c388e78c74d"}, + {file = "ddtrace-2.16.0-cp311-cp311-macosx_12_0_universal2.whl", hash = "sha256:5579532c8d2e73ae0be659cfd0df3d967b9916b7ffb90adc46d3de2089acff03"}, + {file = "ddtrace-2.16.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:3eef49a87a258aa43511ee053bf14a73e35553614643b63d07aaf2c0a11a1a4e"}, + {file = "ddtrace-2.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4859e823953f9703b71c2053ec36e1816252a820acd5947997bbca14bd0a07b"}, + {file = "ddtrace-2.16.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c756ec08525fc7cdda0db7f99bb5bdf663d7c3c222635090433ce50dcb0fc1d0"}, + {file = "ddtrace-2.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ab7d7c9019ad2a3d705f365c8e0f63a2fc2598d6ba98b6794031e7059f295e7d"}, + {file = "ddtrace-2.16.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:20fa331f1cab3b21dcaf2404506811e3a5a5466eb483d79c1953be5d791fddc8"}, + {file = "ddtrace-2.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f8bd2527db9ec6715ff25c2a84bda7caab392f9b978c6fe2c959cbfe6a179bda"}, + {file = "ddtrace-2.16.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:11790b2b8456eaf5d4a0ee4dbfa41ad19d9e2c81f2858bc9661e9e740c8958a2"}, + {file = "ddtrace-2.16.0-cp311-cp311-win32.whl", hash = "sha256:4cce50aa408f5d853396c861685ab007626604b1f279d05d1b0ecc09ef97eb2d"}, + {file = "ddtrace-2.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:f690984c2b17000542166b0cf0faad453c03074001fe750d234adcd8e7560ff4"}, + {file = "ddtrace-2.16.0-cp312-cp312-macosx_12_0_universal2.whl", hash = "sha256:175d85e73634e834eb3de41fa5699996cb7a110958fb21ffdf6c6aa87df9cf49"}, + {file = "ddtrace-2.16.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:7ec8022fc23f00d138967cdb10a7573717c084dcd51f217039fb3d83a7ec1c0f"}, + {file = "ddtrace-2.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e05d8347a98f0cfb2cbfed1eace1fd21d9102ab0f4b7029e4ab96b8683b06bae"}, + {file = "ddtrace-2.16.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cb50fc77b1b395238c954c7c315c1d5fb59ab7cd1b8a14c0cb546b09d087da3f"}, + {file = "ddtrace-2.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e0f11f32748fdf3418bf1fab965b0a2a4c0c7ea5a2ea00005f238ae3d291881"}, + {file = "ddtrace-2.16.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:99bf4e6bdb1809ed72fedbad1f43879a2008db7305f970645e8a9f66e9cdcf60"}, + {file = "ddtrace-2.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:7c28131dc38f188b52549aee1814a60db40e3348e3d967dd55697efee2c3f634"}, + {file = "ddtrace-2.16.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:4ba587036c5783f556fd853f09b3b54c4d4384d68b995bdd7b639f6ab1a325ad"}, + {file = "ddtrace-2.16.0-cp312-cp312-win32.whl", hash = "sha256:7fc50c6ec59ee9482a8672e361b7c703800893d05785053e8145fb9d6a0c97e3"}, + {file = "ddtrace-2.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:79a6213c718685429c6d9a581dc00fad9cf7ba2ce9557c36ec5977a7060ba559"}, + {file = "ddtrace-2.16.0-cp37-cp37m-macosx_12_0_x86_64.whl", hash = "sha256:9468e5c9821c40720ffe30ad2f0b02b8abd7724227fa371721f71196e941e000"}, + {file = "ddtrace-2.16.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f5976f8a437619730f47880f0fdd1d5203bb3b17178400ec73f16c0287e62208"}, + {file = "ddtrace-2.16.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:feecbc0aae5496e4301e54a1120af6ed7d73f42f83d6b7da7588a61a78865c39"}, + {file = "ddtrace-2.16.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c2c6c81d1fd19a217a6c00ef42b37e2642a6047c6061498496971091ee6eed36"}, + {file = "ddtrace-2.16.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d37ddbd1c88bd42fc8674b3c07c86125cc6098d3062011f68c6cc8ed3cfc137a"}, + {file = "ddtrace-2.16.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:f25837b6f071e1075dc1e7fd859215d4ca6f5e5c3edd000498650f8a47ca4864"}, + {file = "ddtrace-2.16.0-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:5615e8cce828beb4709bea15e2a0035f7f5eba51d1df45df3c22ce21a4fa81ad"}, + {file = "ddtrace-2.16.0-cp37-cp37m-win32.whl", hash = "sha256:f73e2356c9215a7b88ef4a6f968ce283203c8755b9191961b8881eec6f603d69"}, + {file = "ddtrace-2.16.0-cp37-cp37m-win_amd64.whl", hash = "sha256:506643ed434c855816a4076e8c8e3541726277388a41ce950c4946f27d9b8c2d"}, + {file = "ddtrace-2.16.0-cp38-cp38-macosx_12_0_universal2.whl", hash = "sha256:79045c263264a918e53ea5c39d6b47a5fd3eea1c663debec315bc45a2ab42adb"}, + {file = "ddtrace-2.16.0-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:747edbf2cd082ce55910d40f1e08db700be46b168504fb16f5f33652bdb2bd81"}, + {file = "ddtrace-2.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac30ea20ed4b1e4803ea07eade8335f0b1f66314d5a41a55ba9fe9b1221640c4"}, + {file = "ddtrace-2.16.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a37c007c091af3b8fba685d10908aa663a7dc0142a5ca871cc29c1213a5ba25b"}, + {file = "ddtrace-2.16.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4c7402cbad004b07e7a2b77ea75661f924ba8191a9ec92ca34ccb5198b5dbfd"}, + {file = "ddtrace-2.16.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:71b78f8f90b5311c0afef5923b550de1c31a72cfac9d591e40b5a579aff7c3b3"}, + {file = "ddtrace-2.16.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:9f07c40d62de9e989991a080b679c41dd5fa79913f3d09445afc6667fbb1b614"}, + {file = "ddtrace-2.16.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:754860334379be99722ce569e95e21ddda40790145c7bb432868c924a81fe83d"}, + {file = "ddtrace-2.16.0-cp38-cp38-win32.whl", hash = "sha256:191de226a97ddf94ca1a76043abfb76c8bfa538dec5916aaaeea1f28b5031ce2"}, + {file = "ddtrace-2.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:f9e791ecdba03f7865b92c90416022c47656df5c6f1819da25f866ae85361107"}, + {file = "ddtrace-2.16.0-cp39-cp39-macosx_12_0_universal2.whl", hash = "sha256:ca81449cbb010716895fe5d00078c3674a56373a428eda047c1be60222cd2a2e"}, + {file = "ddtrace-2.16.0-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:8d2e43841919c8bea8585dcb04a6cd3bdac0ac2e3f71d8abdd8faabd0650abd9"}, + {file = "ddtrace-2.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0c63a9fdbfe07af6be60bbecf0b38deba5a48b45ac1daebbd089d84c6abf49ff"}, + {file = "ddtrace-2.16.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:962fe84eeb24ef4f137b8f446d5096f18735c529523817712042231f6f8a3963"}, + {file = "ddtrace-2.16.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c92d461652ffa766dacf63087d3a971f315df540f4c52c2f4cf31b048fd3de0b"}, + {file = "ddtrace-2.16.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:da4c787622133e4360c5934f09ff68e618b2f7fa4eee87a93f89068a873bc633"}, + {file = "ddtrace-2.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a4d882555af0422a81daf61a019daf52dd200c1082cc8631899920d75b81e520"}, + {file = "ddtrace-2.16.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:c56227201b999ddddfba0e7966bd6665f45cb47599cfc620491b65a55cb4481f"}, + {file = "ddtrace-2.16.0-cp39-cp39-win32.whl", hash = "sha256:69f44a92255a287dc25c5ea4a95a84adf388cbc87249c5523f051066d9af0e6b"}, + {file = "ddtrace-2.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:1b9b72679f73d82735f3fdec80d9da54fb3093c7904230a76569830e28a43d3b"}, + {file = "ddtrace-2.16.0.tar.gz", hash = "sha256:6870fbfd848d87b82bfa3ab4e5909ea7a9de00df30fb928385bfa5b9667ae4cc"}, ] [package.dependencies] @@ -874,4 +874,4 @@ dev = ["boto3", "flake8", "pytest", "pytest-benchmark", "requests"] [metadata] lock-version = "2.0" python-versions = ">=3.8.0,<4" -content-hash = "10fb256b161b7afe015b278c9c937cfbf4f5c53227455ded8251ae62d5f6c587" +content-hash = "421bc65995c100a53cc158e89b2ac74fbf62b45d6d509115e56aa1f25ea880e1" diff --git a/pyproject.toml b/pyproject.toml index c31f8f5fb..6a468f011 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,7 +27,7 @@ classifiers = [ python = ">=3.8.0,<4" datadog = ">=0.41.0,<1.0.0" wrapt = "^1.11.2" -ddtrace = ">=2.15.0" +ddtrace = ">=2.16.0" ujson = ">=5.9.0" boto3 = { version = "^1.34.0", optional = true } requests = { version ="^2.22.0", optional = true } From e58b06586391896fa1c1689081052a052e8770bf Mon Sep 17 00:00:00 2001 From: Abhinav Vedmala Date: Tue, 5 Nov 2024 14:03:32 -0500 Subject: [PATCH 205/403] fix: add typecheck to lambda wrapper (#533) * check if event is a dict before getting * early exit in is_legacy_lambda_step_function --- datadog_lambda/tracing.py | 5 ++++- tests/test_tracing.py | 3 +++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 0aded4de0..dfb08dd24 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -411,7 +411,10 @@ def is_legacy_lambda_step_function(event): """ Check if the event is a step function that called a legacy lambda """ - event = event.get("Payload", {}) + if not isinstance(event, dict) or "Payload" not in event: + return False + + event = event.get("Payload") return "Execution" in event and "StateMachine" in event and "State" in event diff --git a/tests/test_tracing.py b/tests/test_tracing.py index 0fb2ee31d..22ac70497 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -678,6 +678,9 @@ def test_is_legacy_lambda_step_function(self): } self.assertFalse(is_legacy_lambda_step_function(sf_event)) + other_event = ["foo", "bar"] + self.assertFalse(is_legacy_lambda_step_function(other_event)) + class TestXRayContextConversion(unittest.TestCase): def test_convert_xray_trace_id(self): From fa9d00dfa0003ac5342b9d49ed61b8553602f49d Mon Sep 17 00:00:00 2001 From: Aleksandr Pasechnik Date: Wed, 6 Nov 2024 09:57:17 -0500 Subject: [PATCH 206/403] chore: v6.101.0 release candidate (#535) --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index 1357787d1..9d6a2f29c 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "6.100.0" +__version__ = "6.101.0" diff --git a/pyproject.toml b/pyproject.toml index 6a468f011..7bb5df476 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "6.100.0" +version = "6.101.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 7d16e8aca6d76834ea69123d5289b9d764cb5509 Mon Sep 17 00:00:00 2001 From: Aleksandr Pasechnik Date: Thu, 14 Nov 2024 12:53:18 -0500 Subject: [PATCH 207/403] chore: [SVLS-5973] fix span pointer flow control (#538) --- datadog_lambda/span_pointers.py | 61 +++++++++++++++++++++++++-------- 1 file changed, 47 insertions(+), 14 deletions(-) diff --git a/datadog_lambda/span_pointers.py b/datadog_lambda/span_pointers.py index 86c9e60b7..e111469e6 100644 --- a/datadog_lambda/span_pointers.py +++ b/datadog_lambda/span_pointers.py @@ -2,6 +2,7 @@ import logging import os from typing import List +from typing import Optional from ddtrace._trace._span_pointer import _SpanPointerDirection from ddtrace._trace._span_pointer import _SpanPointerDescription @@ -30,7 +31,7 @@ def calculate_span_pointers( return _calculate_dynamodb_span_pointers_for_event(event) except Exception as e: - logger.warning( + logger.debug( "failed to calculate span pointers for event: %s", e, ) @@ -75,7 +76,7 @@ def _calculate_s3_span_pointers_for_object_created_s3_information( etag = s3_information["object"]["eTag"] except KeyError as e: - logger.warning( + logger.debug( "missing s3 information required to make a span pointer: %s", e, ) @@ -86,17 +87,31 @@ def _calculate_s3_span_pointers_for_object_created_s3_information( _aws_s3_object_span_pointer_description, ) - return [ - _aws_s3_object_span_pointer_description( + try: + span_pointer_description = _aws_s3_object_span_pointer_description( + operation="S3.LambdaEvent", pointer_direction=_SpanPointerDirection.UPSTREAM, bucket=bucket, key=key, etag=etag, ) - ] + except TypeError: + # The older version of this function did not have an operation + # parameter. + span_pointer_description = _aws_s3_object_span_pointer_description( + pointer_direction=_SpanPointerDirection.UPSTREAM, + bucket=bucket, + key=key, + etag=etag, + ) + + if span_pointer_description is None: + return [] + + return [span_pointer_description] except Exception as e: - logger.warning( + logger.debug( "failed to generate S3 span pointer: %s", e, ) @@ -120,10 +135,13 @@ def _calculate_dynamodb_span_pointers_for_event_record( ) -> List[_SpanPointerDescription]: try: table_name = _extract_table_name_from_dynamodb_stream_record(record) + if table_name is None: + return [] + primary_key = record["dynamodb"]["Keys"] except Exception as e: - logger.warning( + logger.debug( "missing DynamoDB information required to make a span pointer: %s", e, ) @@ -134,23 +152,36 @@ def _calculate_dynamodb_span_pointers_for_event_record( _aws_dynamodb_item_span_pointer_description, ) - return [ - _aws_dynamodb_item_span_pointer_description( + try: + span_pointer_description = _aws_dynamodb_item_span_pointer_description( + operation="DynamoDB.LambdaEvent", pointer_direction=_SpanPointerDirection.UPSTREAM, table_name=table_name, primary_key=primary_key, ) - ] + except TypeError: + # The older version of this function did not have an operation + # parameter. + span_pointer_description = _aws_dynamodb_item_span_pointer_description( + pointer_direction=_SpanPointerDirection.UPSTREAM, + table_name=table_name, + primary_key=primary_key, + ) + + if span_pointer_description is None: + return [] + + return [span_pointer_description] except Exception as e: - logger.warning( + logger.debug( "failed to generate DynamoDB span pointer: %s", e, ) return [] -def _extract_table_name_from_dynamodb_stream_record(record) -> str: +def _extract_table_name_from_dynamodb_stream_record(record) -> Optional[str]: # Example eventSourceARN: # arn:aws:dynamodb:us-east-2:123456789012:table/my-table/stream/2024-06-10T19:26:16.525 event_source_arn = record["eventSourceARN"] @@ -159,10 +190,12 @@ def _extract_table_name_from_dynamodb_stream_record(record) -> str: ":", maxsplit=5 ) if _arn != "arn" or _aws != "aws" or _dynamodb != "dynamodb": - raise ValueError(f"unexpected eventSourceARN format: {event_source_arn}") + logger.debug("unexpected eventSourceARN format: %s", event_source_arn) + return None [_table, table_name, _stream, _timestamp] = dynamodb_info.split("/") if _table != "table" or _stream != "stream": - raise ValueError(f"unexpected eventSourceARN format: {event_source_arn}") + logger.debug("unexpected eventSourceARN format: %s", event_source_arn) + return None return table_name From 57d1a818130d2b1bf347ae5517e072e2cc769baa Mon Sep 17 00:00:00 2001 From: Aleksandr Pasechnik Date: Thu, 14 Nov 2024 12:56:58 -0500 Subject: [PATCH 208/403] chore: simplified GovCloud release script (#536) --- scripts/publish_prod.sh | 138 +++++++++++++++++++++++----------------- 1 file changed, 78 insertions(+), 60 deletions(-) diff --git a/scripts/publish_prod.sh b/scripts/publish_prod.sh index f96c021d4..f3d13653c 100755 --- a/scripts/publish_prod.sh +++ b/scripts/publish_prod.sh @@ -4,6 +4,8 @@ set -e +read -p "Are we only doing the simplified GovCloud release? ONLY IF THE NORMAL RELEASE IS DONE AND YOU HAVE DOWNLOADED THE LAYERS (y/n)? " GOVCLOUD_ONLY + # Ensure on main, and pull the latest BRANCH=$(git rev-parse --abbrev-ref HEAD) if [ $BRANCH != "main" ]; then @@ -32,54 +34,65 @@ else fi # Ensure pypi registry access -read -p "Do you have access to PyPI (y/n)?" CONT -if [ "$CONT" != "y" ]; then - echo "Exiting" - exit 1 +if [ $GOVCLOUD_ONLY == "y" ]; then + echo "Skipping PyPI check since this is a GovCloud-only release" + +else + read -p "Do you have access to PyPI (y/n)?" CONT + if [ "$CONT" != "y" ]; then + echo "Exiting" + exit 1 + fi fi CURRENT_VERSION=$(poetry version --short) LAYER_VERSION=$(echo $NEW_VERSION | cut -d '.' -f 2) -read -p "Ready to update the library version from $CURRENT_VERSION to $NEW_VERSION and publish layer version $LAYER_VERSION (y/n)?" CONT -if [ "$CONT" != "y" ]; then - echo "Exiting" - exit 1 -fi +if [ $GOVCLOUD_ONLY == "y" ]; then + echo "Skipping Libary Updates, code changes, layer builds and signing for GovCloud-only release" -echo "Answer 'n' if already done in a PR" -read -p "Update pyproject.toml version? (y/n)?" CONT -if [ "$CONT" != "y" ]; then - echo "Skipping updating package.json version" else - echo - echo "Replacing version in pyproject.toml and datadog_lambda/version.py" - echo - - poetry version ${NEW_VERSION} - echo "__version__ = \"${NEW_VERSION}\"" > datadog_lambda/version.py -fi - -echo -echo "Building layers..." -./scripts/build_layers.sh + read -p "Ready to update the library version from $CURRENT_VERSION to $NEW_VERSION and publish layer version $LAYER_VERSION (y/n)?" CONT + if [ "$CONT" != "y" ]; then + echo "Exiting" + exit 1 + fi + + echo "Answer 'n' if already done in a PR" + read -p "Update pyproject.toml version? (y/n)?" CONT + if [ "$CONT" != "y" ]; then + echo "Skipping updating package.json version" + else + echo + echo "Replacing version in pyproject.toml and datadog_lambda/version.py" + echo + + poetry version ${NEW_VERSION} + echo "__version__ = \"${NEW_VERSION}\"" > datadog_lambda/version.py + fi -echo -echo "Signing layers for commercial AWS regions" -aws-vault exec sso-prod-engineering -- ./scripts/sign_layers.sh prod - -echo "Answer 'n' if GitLab already did this" -read -p "Deploy layers to commercial AWS (y/n)?" CONT -if [ "$CONT" != "y" ]; then - echo "Skipping deployment to commercial AWS" -else - echo "Ensuring you have access to the production AWS account" - aws-vault exec sso-prod-engineering -- aws sts get-caller-identity + echo + echo "Building layers..." + ./scripts/build_layers.sh echo - echo "Publishing layers to commercial AWS regions" - VERSION=$LAYER_VERSION aws-vault exec sso-prod-engineering --no-session -- ./scripts/publish_layers.sh + echo "Signing layers for commercial AWS regions" + aws-vault exec sso-prod-engineering -- ./scripts/sign_layers.sh prod + + echo "Answer 'n' if GitLab already did this" + read -p "Deploy layers to commercial AWS (y/n)?" CONT + if [ "$CONT" != "y" ]; then + echo "Skipping deployment to commercial AWS" + else + echo "Ensuring you have access to the production AWS account" + aws-vault exec sso-prod-engineering -- aws sts get-caller-identity + + echo + echo "Publishing layers to commercial AWS regions" + VERSION=$LAYER_VERSION aws-vault exec sso-prod-engineering --no-session -- ./scripts/publish_layers.sh + fi fi + read -p "Deploy layers to GovCloud AWS (y/n)?" CONT if [ "$CONT" != "y" ]; then echo "Skipping deployment to GovCloud AWS" @@ -91,32 +104,37 @@ else VERSION=$LAYER_VERSION aws-vault exec sso-govcloud-us1-fed-engineering -- ./scripts/publish_layers.sh fi -echo "Answer 'n' if GitLab already did this" -read -p "Ready to publish $NEW_VERSION to PyPI (y/n)?" CONT -if [ "$CONT" != "y" ]; then - echo "Skipping publishing to PyPI" -else - echo - echo "Publishing to https://pypi.org/project/datadog-lambda/" - ./scripts/pypi.sh -fi - +if [ $GOVCLOUD_ONLY == "y" ]; then + echo "Skipping PyPI check and Github Release since this is a GovCloud-only release" -echo "Answer 'n' if you already released in GitHub" -read -p "Do you want to bump the version in GitHub? (y/n)" CONT -if [ "$CONT" != "y" ]; then - echo "Skipping publishing updates to GitHub" else + echo "Answer 'n' if GitLab already did this" + read -p "Ready to publish $NEW_VERSION to PyPI (y/n)?" CONT + if [ "$CONT" != "y" ]; then + echo "Skipping publishing to PyPI" + else + echo + echo "Publishing to https://pypi.org/project/datadog-lambda/" + ./scripts/pypi.sh + fi + + + echo "Answer 'n' if you already released in GitHub" + read -p "Do you want to bump the version in GitHub? (y/n)" CONT + if [ "$CONT" != "y" ]; then + echo "Skipping publishing updates to GitHub" + else + echo + echo 'Publishing updates to github' + git commit pyproject.toml datadog_lambda/version.py -m "Bump version to ${NEW_VERSION}" + git push origin main + git tag "v$LAYER_VERSION" + git push origin "refs/tags/v$LAYER_VERSION" + fi + echo - echo 'Publishing updates to github' - git commit pyproject.toml datadog_lambda/version.py -m "Bump version to ${NEW_VERSION}" - git push origin main - git tag "v$LAYER_VERSION" - git push origin "refs/tags/v$LAYER_VERSION" + echo "Now create a new release with the tag v${LAYER_VERSION} created unless you have done this already" + echo "https://github.com/DataDog/datadog-lambda-python/releases/new?tag=v$LAYER_VERSION&title=v$LAYER_VERSION" fi - -echo -echo "Now create a new release with the tag v${LAYER_VERSION} created unless you have done this already" -echo "https://github.com/DataDog/datadog-lambda-python/releases/new?tag=v$LAYER_VERSION&title=v$LAYER_VERSION" # Open a PR to the documentation repo to automatically bump layer version VERSION=$LAYER_VERSION LAYER=datadog-lambda-python ./scripts/create_documentation_pr.sh From 49df8ee8321f191ce5215e30e820c096a5131377 Mon Sep 17 00:00:00 2001 From: Aleksandr Pasechnik Date: Fri, 15 Nov 2024 09:36:22 -0500 Subject: [PATCH 209/403] chore: v6.102.0 release candidate (#539) --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index 9d6a2f29c..f8489c6d5 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "6.101.0" +__version__ = "6.102.0" diff --git a/pyproject.toml b/pyproject.toml index 7bb5df476..4acdb8420 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "6.101.0" +version = "6.102.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From c4da90eca378d791201f8a0325d824848ec11709 Mon Sep 17 00:00:00 2001 From: Abhinav Vedmala Date: Mon, 18 Nov 2024 15:15:03 -0500 Subject: [PATCH 210/403] Explicit trace ID propagation for SFN w/o Hashing (#537) * add logic to extract traceID from _datadog header * rename test * fix type * added root arn case * trigger ci * Add `http.route` tags for API Gateway (#524) Add route tags * feat: [SVLS-5677] DynamoDB Stream event span pointers (#522) * trigger ci * use default propagator.extract * lint * lint * updated to use trace/parent hash from _datadog * lint * skip is context complete check * remove unused import * fix legacy lambda parsing with new header * using context object instead of pre-hashed values * fixed trigger tags and tests * pull sfn trace id generation out into a helper * added unit tests * update test data * rename stepfunctions to states * update current serverless version to v1 * Update trigger comment Co-authored-by: kimi <47579703+kimi-p@users.noreply.github.com> --------- Co-authored-by: Nicholas Hulston Co-authored-by: Aleksandr Pasechnik Co-authored-by: kimi <47579703+kimi-p@users.noreply.github.com> --- datadog_lambda/constants.py | 4 +- datadog_lambda/tracing.py | 96 +++++++++++++++++++++++++-------- datadog_lambda/trigger.py | 11 +++- tests/event_samples/states.json | 22 ++++++++ tests/test_tracing.py | 93 +++++++++++++++++++++++++------- tests/test_trigger.py | 29 ++++++++++ 6 files changed, 211 insertions(+), 44 deletions(-) create mode 100644 tests/event_samples/states.json diff --git a/datadog_lambda/constants.py b/datadog_lambda/constants.py index fd8afb3ed..6ab627384 100644 --- a/datadog_lambda/constants.py +++ b/datadog_lambda/constants.py @@ -3,9 +3,8 @@ # This product includes software developed at Datadog (https://www.datadoghq.com/). # Copyright 2019 Datadog, Inc. -# Datadog trace sampling priority - +# Datadog trace sampling priority class SamplingPriority(object): USER_REJECT = -1 AUTO_REJECT = 0 @@ -18,6 +17,7 @@ class TraceHeader(object): TRACE_ID = "x-datadog-trace-id" PARENT_ID = "x-datadog-parent-id" SAMPLING_PRIORITY = "x-datadog-sampling-priority" + TAGS = "x-datadog-tags" # X-Ray subsegment to save Datadog trace metadata diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index dfb08dd24..5ed306a34 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -356,9 +356,8 @@ def extract_context_from_kinesis_event(event, lambda_context): return extract_context_from_lambda_context(lambda_context) -def _deterministic_sha256_hash(s: str, part: str) -> (int, int): +def _deterministic_sha256_hash(s: str, part: str) -> int: sha256_hash = hashlib.sha256(s.encode()).hexdigest() - # First two chars is '0b'. zfill to ensure 256 bits, but we only care about the first 128 bits binary_hash = bin(int(sha256_hash, 16))[2:].zfill(256) if part == HIGHER_64_BITS: @@ -371,36 +370,88 @@ def _deterministic_sha256_hash(s: str, part: str) -> (int, int): return result +def _parse_high_64_bits(trace_tags: str) -> str: + """ + Parse a list of trace tags such as [_dd.p.tid=66bcb5eb00000000,_dd.p.dm=-0] and return the + value of the _dd.p.tid tag or an empty string if not found. + """ + if trace_tags: + for tag in trace_tags.split(","): + if "_dd.p.tid=" in tag: + return tag.split("=")[1] + + return "" + + +def _generate_sfn_parent_id(context: dict) -> int: + execution_id = context.get("Execution").get("Id") + state_name = context.get("State").get("Name") + state_entered_time = context.get("State").get("EnteredTime") + + return _deterministic_sha256_hash( + f"{execution_id}#{state_name}#{state_entered_time}", HIGHER_64_BITS + ) + + +def _generate_sfn_trace_id(execution_id: str, part: str): + """ + Take the SHA-256 hash of the execution_id to calculate the trace ID. If the high 64 bits are + specified, we take those bits and use hex to encode it. We also remove the first two characters + as they will be '0x in the hex string. + + We care about full 128 bits because they will break up into traditional traceID and + _dd.p.tid tag. + """ + if part == HIGHER_64_BITS: + return hex(_deterministic_sha256_hash(execution_id, part))[2:] + return _deterministic_sha256_hash(execution_id, part) + + def extract_context_from_step_functions(event, lambda_context): """ Only extract datadog trace context when Step Functions Context Object is injected into lambda's event dict. + + If '_datadog' header is present, we have two cases: + 1. Root is a Lambda and we use its traceID + 2. Root is a SFN, and we use its executionARN to calculate the traceID + We calculate the parentID the same in both cases by using the parent SFN's context object. + + Otherwise, we're dealing with the legacy case where we only have the parent SFN's context + object. """ try: - execution_id = event.get("Execution").get("Id") - state_name = event.get("State").get("Name") - state_entered_time = event.get("State").get("EnteredTime") - # returning 128 bits since 128bit traceId will be break up into - # traditional traceId and _dd.p.tid tag - # https://github.com/DataDog/dd-trace-py/blob/3e34d21cb9b5e1916e549047158cb119317b96ab/ddtrace/propagation/http.py#L232-L240 - trace_id = _deterministic_sha256_hash(execution_id, LOWER_64_BITS) - - parent_id = _deterministic_sha256_hash( - f"{execution_id}#{state_name}#{state_entered_time}", HIGHER_64_BITS - ) + meta = {} + dd_data = event.get("_datadog") + + if dd_data and dd_data.get("serverless-version") == "v1": + if "x-datadog-trace-id" in dd_data: # lambda root + trace_id = int(dd_data.get("x-datadog-trace-id")) + high_64_bit_trace_id = _parse_high_64_bits( + dd_data.get("x-datadog-tags") + ) + if high_64_bit_trace_id: + meta["_dd.p.tid"] = high_64_bit_trace_id + else: # sfn root + root_execution_id = dd_data.get("RootExecutionId") + trace_id = _generate_sfn_trace_id(root_execution_id, LOWER_64_BITS) + meta["_dd.p.tid"] = _generate_sfn_trace_id( + root_execution_id, HIGHER_64_BITS + ) + + parent_id = _generate_sfn_parent_id(dd_data) + else: + execution_id = event.get("Execution").get("Id") + trace_id = _generate_sfn_trace_id(execution_id, LOWER_64_BITS) + meta["_dd.p.tid"] = _generate_sfn_trace_id(execution_id, HIGHER_64_BITS) + parent_id = _generate_sfn_parent_id(event) sampling_priority = SamplingPriority.AUTO_KEEP return Context( trace_id=trace_id, span_id=parent_id, sampling_priority=sampling_priority, - # take the higher 64 bits as _dd.p.tid tag and use hex to encode - # [2:] to remove '0x' in the hex str - meta={ - "_dd.p.tid": hex( - _deterministic_sha256_hash(execution_id, HIGHER_64_BITS) - )[2:] - }, + meta=meta, ) except Exception as e: logger.debug("The Step Functions trace extractor returned with error %s", e) @@ -415,7 +466,10 @@ def is_legacy_lambda_step_function(event): return False event = event.get("Payload") - return "Execution" in event and "StateMachine" in event and "State" in event + return isinstance(event, dict) and ( + "_datadog" in event + or ("Execution" in event and "StateMachine" in event and "State" in event) + ) def extract_context_custom_extractor(extractor, event, lambda_context): diff --git a/datadog_lambda/trigger.py b/datadog_lambda/trigger.py index 64eff1a05..11759a0a7 100644 --- a/datadog_lambda/trigger.py +++ b/datadog_lambda/trigger.py @@ -146,7 +146,9 @@ def parse_event_source(event: dict) -> _EventSource: if event.get("source") == "aws.events" or has_event_categories: event_source = _EventSource(EventTypes.CLOUDWATCH_EVENTS) - if "Execution" in event and "StateMachine" in event and "State" in event: + if ( + "_datadog" in event and event.get("_datadog").get("serverless-version") == "v1" + ) or ("Execution" in event and "StateMachine" in event and "State" in event): event_source = _EventSource(EventTypes.STEPFUNCTIONS) event_record = get_first_record(event) @@ -254,6 +256,13 @@ def parse_event_source_arn(source: _EventSource, event: dict, context: Any) -> s if source.event_type == EventTypes.CLOUDWATCH_EVENTS and event.get("resources"): return event.get("resources")[0] + # Returning state machine arn as event source arn. + if source.event_type == EventTypes.STEPFUNCTIONS: + context = event + if "_datadog" in event: + context = event.get("_datadog") + return context.get("StateMachine").get("Id") + def get_event_source_arn(source: _EventSource, event: dict, context: Any) -> str: event_source_arn = event.get("eventSourceARN") or event.get("eventSourceArn") diff --git a/tests/event_samples/states.json b/tests/event_samples/states.json new file mode 100644 index 000000000..778fe4376 --- /dev/null +++ b/tests/event_samples/states.json @@ -0,0 +1,22 @@ +{ + "_datadog": { + "Execution": { + "Id": "arn:aws:states:ca-central-1:425362996713:execution:MyStateMachine-wsx8chv4d:1356a963-42a5-48b0-ba3f-73bde559a50c", + "StartTime": "2024-11-13T16:46:47.715Z", + "Name": "1356a963-42a5-48b0-ba3f-73bde559a50c", + "RoleArn": "arn:aws:iam::425362996713:role/service-role/StepFunctions-MyStateMachine-wsx8chv4d-role-1su0fkfd3", + "RedriveCount": 0 + }, + "StateMachine": { + "Id": "arn:aws:states:ca-central-1:425362996713:stateMachine:MyStateMachine-wsx8chv4d", + "Name": "MyStateMachine-wsx8chv4d" + }, + "State": { + "Name": "Lambda Invoke", + "EnteredTime": "2024-11-13T16:46:47.740Z", + "RetryCount": 0 + }, + "RootExecutionId": "arn:aws:states:ca-central-1:425362996713:execution:MyStateMachine-wsx8chv4d:1356a963-42a5-48b0-ba3f-73bde559a50c", + "serverless-version": "v1" + } +} diff --git a/tests/test_tracing.py b/tests/test_tracing.py index 22ac70497..d0db05cd4 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -617,7 +617,7 @@ def test_with_complete_datadog_trace_headers_with_trigger_tags(self): @with_trace_propagation_style("datadog") def test_step_function_trace_data(self): lambda_ctx = get_mock_context() - sqs_event = { + sfn_event = { "Execution": { "Id": "665c417c-1237-4742-aaca-8b3becbb9e75", }, @@ -627,7 +627,7 @@ def test_step_function_trace_data(self): "EnteredTime": "Mon Nov 13 12:43:33 PST 2023", }, } - ctx, source, event_source = extract_dd_trace_context(sqs_event, lambda_ctx) + ctx, source, event_source = extract_dd_trace_context(sfn_event, lambda_ctx) self.assertEqual(source, "event") expected_context = Context( trace_id=3675572987363469717, @@ -642,7 +642,7 @@ def test_step_function_trace_data(self): TraceHeader.TRACE_ID: "3675572987363469717", TraceHeader.PARENT_ID: "10713633173203262661", TraceHeader.SAMPLING_PRIORITY: "1", - "x-datadog-tags": "_dd.p.tid=e987c84b36b11ab", + TraceHeader.TAGS: "_dd.p.tid=e987c84b36b11ab", }, ) create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) @@ -651,9 +651,11 @@ def test_step_function_trace_data(self): expected_context, ) - def test_is_legacy_lambda_step_function(self): - sf_event = { - "Payload": { + @with_trace_propagation_style("datadog") + def test_step_function_trace_data_lambda_root(self): + lambda_ctx = get_mock_context() + sfn_event = { + "_datadog": { "Execution": { "Id": "665c417c-1237-4742-aaca-8b3becbb9e75", }, @@ -662,24 +664,75 @@ def test_is_legacy_lambda_step_function(self): "Name": "my-awesome-state", "EnteredTime": "Mon Nov 13 12:43:33 PST 2023", }, + "x-datadog-trace-id": "5821803790426892636", + "x-datadog-tags": "_dd.p.dm=-0,_dd.p.tid=672a7cb100000000", + "serverless-version": "v1", } } - self.assertTrue(is_legacy_lambda_step_function(sf_event)) - - sf_event = { - "Execution": { - "Id": "665c417c-1237-4742-aaca-8b3becbb9e75", - }, - "StateMachine": {}, - "State": { - "Name": "my-awesome-state", - "EnteredTime": "Mon Nov 13 12:43:33 PST 2023", + ctx, source, event_source = extract_dd_trace_context(sfn_event, lambda_ctx) + self.assertEqual(source, "event") + expected_context = Context( + trace_id=5821803790426892636, + span_id=6880978411788117524, + sampling_priority=1, + meta={"_dd.p.tid": "672a7cb100000000"}, + ) + self.assertEqual(ctx, expected_context) + self.assertEqual( + get_dd_trace_context(), + { + TraceHeader.TRACE_ID: "5821803790426892636", + TraceHeader.PARENT_ID: "10713633173203262661", + TraceHeader.SAMPLING_PRIORITY: "1", + TraceHeader.TAGS: "_dd.p.tid=672a7cb100000000", }, - } - self.assertFalse(is_legacy_lambda_step_function(sf_event)) + ) + create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) + self.mock_send_segment.assert_called_with( + XraySubsegment.TRACE_KEY, + expected_context, + ) - other_event = ["foo", "bar"] - self.assertFalse(is_legacy_lambda_step_function(other_event)) + @with_trace_propagation_style("datadog") + def test_step_function_trace_data_sfn_root(self): + lambda_ctx = get_mock_context() + sfn_event = { + "_datadog": { + "Execution": { + "Id": "665c417c-1237-4742-aaca-8b3becbb9e75", + }, + "StateMachine": {}, + "State": { + "Name": "my-awesome-state", + "EnteredTime": "Mon Nov 13 12:43:33 PST 2023", + }, + "RootExecutionId": "4875aba4-ae31-4a4c-bf8a-63e9eee31dad", + "serverless-version": "v1", + } + } + ctx, source, event_source = extract_dd_trace_context(sfn_event, lambda_ctx) + self.assertEqual(source, "event") + expected_context = Context( + trace_id=4521899030418994483, + span_id=6880978411788117524, + sampling_priority=1, + meta={"_dd.p.tid": "12d1270d99cc5e03"}, + ) + self.assertEqual(ctx, expected_context) + self.assertEqual( + get_dd_trace_context(), + { + TraceHeader.TRACE_ID: "4521899030418994483", + TraceHeader.PARENT_ID: "10713633173203262661", + TraceHeader.SAMPLING_PRIORITY: "1", + TraceHeader.TAGS: "_dd.p.tid=12d1270d99cc5e03", + }, + ) + create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) + self.mock_send_segment.assert_called_with( + XraySubsegment.TRACE_KEY, + expected_context, + ) class TestXRayContextConversion(unittest.TestCase): diff --git a/tests/test_trigger.py b/tests/test_trigger.py index c1e7f5d73..be028a232 100644 --- a/tests/test_trigger.py +++ b/tests/test_trigger.py @@ -230,6 +230,20 @@ def test_event_source_sqs(self): "arn:aws:sqs:eu-west-1:601427279990:InferredSpansQueueNode", ) + def test_event_source_stepfunctions(self): + event_sample_source = "states" + test_file = event_samples + event_sample_source + ".json" + with open(test_file, "r") as event: + event = json.load(event) + ctx = get_mock_context() + event_source = parse_event_source(event) + event_source_arn = get_event_source_arn(event_source, event, ctx) + self.assertEqual(event_source.to_string(), event_sample_source) + self.assertEqual( + event_source_arn, + "arn:aws:states:ca-central-1:425362996713:stateMachine:MyStateMachine-wsx8chv4d", + ) + def test_event_source_unsupported(self): event_sample_source = "custom" test_file = event_samples + event_sample_source + ".json" @@ -485,6 +499,21 @@ def test_extract_trigger_tags_sqs(self): }, ) + def test_extract_trigger_tags_stepfunctions(self): + event_sample_source = "states" + test_file = event_samples + event_sample_source + ".json" + ctx = get_mock_context() + with open(test_file, "r") as event: + event = json.load(event) + tags = extract_trigger_tags(event, ctx) + self.assertEqual( + tags, + { + "function_trigger.event_source": "states", + "function_trigger.event_source_arn": "arn:aws:states:ca-central-1:425362996713:stateMachine:MyStateMachine-wsx8chv4d", + }, + ) + def test_extract_trigger_tags_unsupported(self): event_sample_source = "custom" test_file = event_samples + event_sample_source + ".json" From 834c4e49b9b14244ca9fb373a3bf0404fca36c93 Mon Sep 17 00:00:00 2001 From: Abhinav Vedmala Date: Thu, 21 Nov 2024 10:09:58 -0500 Subject: [PATCH 211/403] v6.103.0 (#540) --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index f8489c6d5..c185df04e 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "6.102.0" +__version__ = "6.103.0" diff --git a/pyproject.toml b/pyproject.toml index 4acdb8420..e89b094b0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "6.102.0" +version = "6.103.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 67dda589362273ad2fa1c9c6abb49d571b05e317 Mon Sep 17 00:00:00 2001 From: Aleksandr Pasechnik Date: Thu, 21 Nov 2024 14:54:04 -0500 Subject: [PATCH 212/403] chore: upgrade dd-trace-py to 2.17.0 (#542) --- poetry.lock | 200 +++++++++++++++++++++++++------------------------ pyproject.toml | 2 +- 2 files changed, 103 insertions(+), 99 deletions(-) diff --git a/poetry.lock b/poetry.lock index a0ba70c8a..85013e459 100644 --- a/poetry.lock +++ b/poetry.lock @@ -2,17 +2,17 @@ [[package]] name = "boto3" -version = "1.35.54" +version = "1.35.66" description = "The AWS SDK for Python" optional = true python-versions = ">=3.8" files = [ - {file = "boto3-1.35.54-py3-none-any.whl", hash = "sha256:2d5e160b614db55fbee7981001c54476cb827c441cef65b2fcb2c52a62019909"}, - {file = "boto3-1.35.54.tar.gz", hash = "sha256:7d9c359bbbc858a60b51c86328db813353c8bd1940212cdbd0a7da835291c2e1"}, + {file = "boto3-1.35.66-py3-none-any.whl", hash = "sha256:09a610f8cf4d3c22d4ca69c1f89079e3a1c82805ce94fa0eb4ecdd4d2ba6c4bc"}, + {file = "boto3-1.35.66.tar.gz", hash = "sha256:c392b9168b65e9c23483eaccb5b68d1f960232d7f967a1e00a045ba065ce050d"}, ] [package.dependencies] -botocore = ">=1.35.54,<1.36.0" +botocore = ">=1.35.66,<1.36.0" jmespath = ">=0.7.1,<2.0.0" s3transfer = ">=0.10.0,<0.11.0" @@ -21,21 +21,21 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.35.54" +version = "1.35.66" description = "Low-level, data-driven core of boto 3." optional = true python-versions = ">=3.8" files = [ - {file = "botocore-1.35.54-py3-none-any.whl", hash = "sha256:9cca1811094b6cdc144c2c063a3ec2db6d7c88194b04d4277cd34fc8e3473aff"}, - {file = "botocore-1.35.54.tar.gz", hash = "sha256:131bb59ce59c8a939b31e8e647242d70cf11d32d4529fa4dca01feea1e891a76"}, + {file = "botocore-1.35.66-py3-none-any.whl", hash = "sha256:d0683e9c18bb6852f768da268086c3749d925332a664db0dd1459cfa7e96e475"}, + {file = "botocore-1.35.66.tar.gz", hash = "sha256:51f43220315f384959f02ea3266740db4d421592dd87576c18824e424b349fdb"}, ] [package.dependencies] jmespath = ">=0.7.1,<2.0.0" python-dateutil = ">=2.1,<3.0.0" urllib3 = [ - {version = ">=1.25.4,<1.27", markers = "python_version < \"3.10\""}, {version = ">=1.25.4,<2.2.0 || >2.2.0,<3", markers = "python_version >= \"3.10\""}, + {version = ">=1.25.4,<1.27", markers = "python_version < \"3.10\""}, ] [package.extras] @@ -193,13 +193,13 @@ files = [ [[package]] name = "datadog" -version = "0.50.1" +version = "0.50.2" description = "The Datadog Python library" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ - {file = "datadog-0.50.1-py2.py3-none-any.whl", hash = "sha256:eb101abee34fe6c1121558fd5ea48f592eb661604abb7914c4f693d8ad25a515"}, - {file = "datadog-0.50.1.tar.gz", hash = "sha256:579d4db54bd6ef918c5250217edb15b80b7b11582b8e24fce43702768c3f2e2d"}, + {file = "datadog-0.50.2-py2.py3-none-any.whl", hash = "sha256:f3297858564b624efbd9ce43e4ea1c2c21e1f0477ab6d446060b536a1d9e431e"}, + {file = "datadog-0.50.2.tar.gz", hash = "sha256:17725774bf2bb0a48f1d096d92707492c187f24ae08960af0b0c2fa97958fd51"}, ] [package.dependencies] @@ -207,83 +207,83 @@ requests = ">=2.6.0" [[package]] name = "ddtrace" -version = "2.16.0" +version = "2.17.0" description = "Datadog APM client library" optional = false python-versions = ">=3.7" files = [ - {file = "ddtrace-2.16.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:f76359344de807ade173fcb723c6a25d65949c81412848ace248eb9d0be9b101"}, - {file = "ddtrace-2.16.0-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:d0d011263ba88ccde6d74d2f32cc97e639c43f0ebafcb0c2efe3a4f94c0f1488"}, - {file = "ddtrace-2.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3b518566e35dcd30b2ccf84736d431d31c0b16a0c26d435df3992223ca0fc1c7"}, - {file = "ddtrace-2.16.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82f0d2c418edc6bf8d258a58b678a9f655447fdfd5088a1bd0e1ba296fd422a1"}, - {file = "ddtrace-2.16.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dfa7f9ff5d897a2b4634b3aac2247fabd1fcb4efc0ccfa6123f77be7779c635a"}, - {file = "ddtrace-2.16.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:36e595b201efeeddfb627ecd4f1ecf8668aafcd5a5421808c0b2c70d5ca9ee06"}, - {file = "ddtrace-2.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:faf0b4e0fdad003aeb4b389dafb3bc1703f66f25f0ee14c1683a565011211f7a"}, - {file = "ddtrace-2.16.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:957e2c14e017365bd418d5db09cb0560fd82d63bc93dce2bc150438b9d88db81"}, - {file = "ddtrace-2.16.0-cp310-cp310-win32.whl", hash = "sha256:500528809f5e199e3802326da461c8a889194083e5e76329e98adeb0107c6485"}, - {file = "ddtrace-2.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:91f358e6812d277ad184d5bcaf22417e81460edb558fc842ba2a6c388e78c74d"}, - {file = "ddtrace-2.16.0-cp311-cp311-macosx_12_0_universal2.whl", hash = "sha256:5579532c8d2e73ae0be659cfd0df3d967b9916b7ffb90adc46d3de2089acff03"}, - {file = "ddtrace-2.16.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:3eef49a87a258aa43511ee053bf14a73e35553614643b63d07aaf2c0a11a1a4e"}, - {file = "ddtrace-2.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4859e823953f9703b71c2053ec36e1816252a820acd5947997bbca14bd0a07b"}, - {file = "ddtrace-2.16.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c756ec08525fc7cdda0db7f99bb5bdf663d7c3c222635090433ce50dcb0fc1d0"}, - {file = "ddtrace-2.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ab7d7c9019ad2a3d705f365c8e0f63a2fc2598d6ba98b6794031e7059f295e7d"}, - {file = "ddtrace-2.16.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:20fa331f1cab3b21dcaf2404506811e3a5a5466eb483d79c1953be5d791fddc8"}, - {file = "ddtrace-2.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f8bd2527db9ec6715ff25c2a84bda7caab392f9b978c6fe2c959cbfe6a179bda"}, - {file = "ddtrace-2.16.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:11790b2b8456eaf5d4a0ee4dbfa41ad19d9e2c81f2858bc9661e9e740c8958a2"}, - {file = "ddtrace-2.16.0-cp311-cp311-win32.whl", hash = "sha256:4cce50aa408f5d853396c861685ab007626604b1f279d05d1b0ecc09ef97eb2d"}, - {file = "ddtrace-2.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:f690984c2b17000542166b0cf0faad453c03074001fe750d234adcd8e7560ff4"}, - {file = "ddtrace-2.16.0-cp312-cp312-macosx_12_0_universal2.whl", hash = "sha256:175d85e73634e834eb3de41fa5699996cb7a110958fb21ffdf6c6aa87df9cf49"}, - {file = "ddtrace-2.16.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:7ec8022fc23f00d138967cdb10a7573717c084dcd51f217039fb3d83a7ec1c0f"}, - {file = "ddtrace-2.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e05d8347a98f0cfb2cbfed1eace1fd21d9102ab0f4b7029e4ab96b8683b06bae"}, - {file = "ddtrace-2.16.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cb50fc77b1b395238c954c7c315c1d5fb59ab7cd1b8a14c0cb546b09d087da3f"}, - {file = "ddtrace-2.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e0f11f32748fdf3418bf1fab965b0a2a4c0c7ea5a2ea00005f238ae3d291881"}, - {file = "ddtrace-2.16.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:99bf4e6bdb1809ed72fedbad1f43879a2008db7305f970645e8a9f66e9cdcf60"}, - {file = "ddtrace-2.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:7c28131dc38f188b52549aee1814a60db40e3348e3d967dd55697efee2c3f634"}, - {file = "ddtrace-2.16.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:4ba587036c5783f556fd853f09b3b54c4d4384d68b995bdd7b639f6ab1a325ad"}, - {file = "ddtrace-2.16.0-cp312-cp312-win32.whl", hash = "sha256:7fc50c6ec59ee9482a8672e361b7c703800893d05785053e8145fb9d6a0c97e3"}, - {file = "ddtrace-2.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:79a6213c718685429c6d9a581dc00fad9cf7ba2ce9557c36ec5977a7060ba559"}, - {file = "ddtrace-2.16.0-cp37-cp37m-macosx_12_0_x86_64.whl", hash = "sha256:9468e5c9821c40720ffe30ad2f0b02b8abd7724227fa371721f71196e941e000"}, - {file = "ddtrace-2.16.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f5976f8a437619730f47880f0fdd1d5203bb3b17178400ec73f16c0287e62208"}, - {file = "ddtrace-2.16.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:feecbc0aae5496e4301e54a1120af6ed7d73f42f83d6b7da7588a61a78865c39"}, - {file = "ddtrace-2.16.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c2c6c81d1fd19a217a6c00ef42b37e2642a6047c6061498496971091ee6eed36"}, - {file = "ddtrace-2.16.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d37ddbd1c88bd42fc8674b3c07c86125cc6098d3062011f68c6cc8ed3cfc137a"}, - {file = "ddtrace-2.16.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:f25837b6f071e1075dc1e7fd859215d4ca6f5e5c3edd000498650f8a47ca4864"}, - {file = "ddtrace-2.16.0-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:5615e8cce828beb4709bea15e2a0035f7f5eba51d1df45df3c22ce21a4fa81ad"}, - {file = "ddtrace-2.16.0-cp37-cp37m-win32.whl", hash = "sha256:f73e2356c9215a7b88ef4a6f968ce283203c8755b9191961b8881eec6f603d69"}, - {file = "ddtrace-2.16.0-cp37-cp37m-win_amd64.whl", hash = "sha256:506643ed434c855816a4076e8c8e3541726277388a41ce950c4946f27d9b8c2d"}, - {file = "ddtrace-2.16.0-cp38-cp38-macosx_12_0_universal2.whl", hash = "sha256:79045c263264a918e53ea5c39d6b47a5fd3eea1c663debec315bc45a2ab42adb"}, - {file = "ddtrace-2.16.0-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:747edbf2cd082ce55910d40f1e08db700be46b168504fb16f5f33652bdb2bd81"}, - {file = "ddtrace-2.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac30ea20ed4b1e4803ea07eade8335f0b1f66314d5a41a55ba9fe9b1221640c4"}, - {file = "ddtrace-2.16.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a37c007c091af3b8fba685d10908aa663a7dc0142a5ca871cc29c1213a5ba25b"}, - {file = "ddtrace-2.16.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4c7402cbad004b07e7a2b77ea75661f924ba8191a9ec92ca34ccb5198b5dbfd"}, - {file = "ddtrace-2.16.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:71b78f8f90b5311c0afef5923b550de1c31a72cfac9d591e40b5a579aff7c3b3"}, - {file = "ddtrace-2.16.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:9f07c40d62de9e989991a080b679c41dd5fa79913f3d09445afc6667fbb1b614"}, - {file = "ddtrace-2.16.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:754860334379be99722ce569e95e21ddda40790145c7bb432868c924a81fe83d"}, - {file = "ddtrace-2.16.0-cp38-cp38-win32.whl", hash = "sha256:191de226a97ddf94ca1a76043abfb76c8bfa538dec5916aaaeea1f28b5031ce2"}, - {file = "ddtrace-2.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:f9e791ecdba03f7865b92c90416022c47656df5c6f1819da25f866ae85361107"}, - {file = "ddtrace-2.16.0-cp39-cp39-macosx_12_0_universal2.whl", hash = "sha256:ca81449cbb010716895fe5d00078c3674a56373a428eda047c1be60222cd2a2e"}, - {file = "ddtrace-2.16.0-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:8d2e43841919c8bea8585dcb04a6cd3bdac0ac2e3f71d8abdd8faabd0650abd9"}, - {file = "ddtrace-2.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0c63a9fdbfe07af6be60bbecf0b38deba5a48b45ac1daebbd089d84c6abf49ff"}, - {file = "ddtrace-2.16.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:962fe84eeb24ef4f137b8f446d5096f18735c529523817712042231f6f8a3963"}, - {file = "ddtrace-2.16.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c92d461652ffa766dacf63087d3a971f315df540f4c52c2f4cf31b048fd3de0b"}, - {file = "ddtrace-2.16.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:da4c787622133e4360c5934f09ff68e618b2f7fa4eee87a93f89068a873bc633"}, - {file = "ddtrace-2.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a4d882555af0422a81daf61a019daf52dd200c1082cc8631899920d75b81e520"}, - {file = "ddtrace-2.16.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:c56227201b999ddddfba0e7966bd6665f45cb47599cfc620491b65a55cb4481f"}, - {file = "ddtrace-2.16.0-cp39-cp39-win32.whl", hash = "sha256:69f44a92255a287dc25c5ea4a95a84adf388cbc87249c5523f051066d9af0e6b"}, - {file = "ddtrace-2.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:1b9b72679f73d82735f3fdec80d9da54fb3093c7904230a76569830e28a43d3b"}, - {file = "ddtrace-2.16.0.tar.gz", hash = "sha256:6870fbfd848d87b82bfa3ab4e5909ea7a9de00df30fb928385bfa5b9667ae4cc"}, + {file = "ddtrace-2.17.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:ae5f809923e1155a897146b233c7e4f426e369cfea36e51d2a34c24ee243cddd"}, + {file = "ddtrace-2.17.0-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:378ee9d7bce50ce7d641f6a2c3f970239726e1bba10ad1ddfd30ead28021bf58"}, + {file = "ddtrace-2.17.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c812167071a7ece0ac033526318a688c71de5861706a8b66e8edb6b8552366f8"}, + {file = "ddtrace-2.17.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca41b40c0ca1071ad63f086a54932944f379039d9858ad90c394f5f926a1fbae"}, + {file = "ddtrace-2.17.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ca8068b0f93ab28bc01cd3230e8f7615a80ce913ae64c197fe9b82e6de9bb14"}, + {file = "ddtrace-2.17.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:71af44f381f56d74fab09f5538a44804bc1372ee1e4923ccaba76628dea3355d"}, + {file = "ddtrace-2.17.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:63bdc9d4ffab38804e7c5fcd7d1878ed01e5e651f5a98879bd5b6011915a0905"}, + {file = "ddtrace-2.17.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:d38ef95fb968f5b06e436ba9443879aa056d4d19851bea53b63b9e280f19684f"}, + {file = "ddtrace-2.17.0-cp310-cp310-win32.whl", hash = "sha256:feeaab6f86fdea1244c3e62c4d089f8bd62d4a4fb3b08e9b3793c4d43f3bdd40"}, + {file = "ddtrace-2.17.0-cp310-cp310-win_amd64.whl", hash = "sha256:9ddfdd125799aaf898c76c3086e642e9e4b9afdd31f9c82ca8bce746598e8ecc"}, + {file = "ddtrace-2.17.0-cp311-cp311-macosx_12_0_universal2.whl", hash = "sha256:6e328ca2af3dc42fad6972d35d6a8a96537f3c3a3b57184776dd74953a3ea92c"}, + {file = "ddtrace-2.17.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:1f03ffe8759caef237e1c1df7a81224cc8d9d3cfed49f6dc8cd581fa1d9c97e5"}, + {file = "ddtrace-2.17.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52b317b593ecb88d84de53ddc550ea812a47b0498c96068f35e922bbcefb792b"}, + {file = "ddtrace-2.17.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6c5008e2b79f066072ae918224c9b8e2096b98484e979549993b39452cb2db3a"}, + {file = "ddtrace-2.17.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:16d62a7b0d5f751012ccc750b580a4b94f35fa0331eb9895dd8196341b82c5c1"}, + {file = "ddtrace-2.17.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:18e18b122dc46e0885302989727dd96725bf870308273d21224b64546707b404"}, + {file = "ddtrace-2.17.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fce47e8c19d3d68ab1d68fe9f36cf3050ddb456a2baf842868d3d8f6142b9a2a"}, + {file = "ddtrace-2.17.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e158201f3cd3f29bbcb9656bc71517c646a97a8ecdfa55fac7c716a15b51e2da"}, + {file = "ddtrace-2.17.0-cp311-cp311-win32.whl", hash = "sha256:49c8782b50d50053663d7eeea4ed6cc9e8957dca36ca1ee3c3d47bbb6bc8fdc2"}, + {file = "ddtrace-2.17.0-cp311-cp311-win_amd64.whl", hash = "sha256:2b4d9a057ce3c67d97a211593d4938808fe0f1540989e9b65b4e1ca181a153fe"}, + {file = "ddtrace-2.17.0-cp312-cp312-macosx_12_0_universal2.whl", hash = "sha256:4efdf9b1cc2df28217633fe15f7bfac2f1368f3b55486e5eb746a0de5ecc14fb"}, + {file = "ddtrace-2.17.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:5cc69b201cf95ad7fad55631267e49650de74669fcb7395af72ef239ba8db3c5"}, + {file = "ddtrace-2.17.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:049891021a34cdefe11be422d5d068ea7f08cda5dbccbeafcd6065c574ad0de8"}, + {file = "ddtrace-2.17.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:56efa7c84b1846ad7cc6390d0ae8a2c75fdb9452252c37f22292cf24ac7b2922"}, + {file = "ddtrace-2.17.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ebef1c3415f2fb42cd4db570b9315195fbcb6b97a89980eb636ee63911233b1"}, + {file = "ddtrace-2.17.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:9bca7341d2d6f804a03243987210873bf317c945e0a017c45903a7e06e3ab5af"}, + {file = "ddtrace-2.17.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:197e4433dd80bc7e4b21d944e0f780c3ae5323967b54af9d6cc6b9ccdf823a1f"}, + {file = "ddtrace-2.17.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:1c313c11d5c9b1efb2a0c5f5a937377d4086cb04c7b3ffd0f708c0a0ee69642a"}, + {file = "ddtrace-2.17.0-cp312-cp312-win32.whl", hash = "sha256:16ac67305d4d8da6b98630aad0d9b0ad482ffba9249d4084eeb1869fd774781b"}, + {file = "ddtrace-2.17.0-cp312-cp312-win_amd64.whl", hash = "sha256:5a1d3779934625bffc082f20035838d40b9dc4aae2145a9077651a9474975d92"}, + {file = "ddtrace-2.17.0-cp37-cp37m-macosx_12_0_x86_64.whl", hash = "sha256:367ec7ab529c52d8dad61bc0eeff121bb032b2ecd70c7c3e47c90ba18527a032"}, + {file = "ddtrace-2.17.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58e078adcf6ad33cf556b8e392a9f2cba104791a3588e458bf27ad696d7061d2"}, + {file = "ddtrace-2.17.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b57996d03badace1581edef7f6007d5b9fcbef01a06ab0fae287dd75def451ad"}, + {file = "ddtrace-2.17.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:725d22381877af3d497a865a3362c46f1edc395f6aece601c16e9ef9d19bb1b5"}, + {file = "ddtrace-2.17.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:2f9da9267ad81e6cc89aaff14f7367f9c9e42c4933d2b842f5e5ca9c4f19ae30"}, + {file = "ddtrace-2.17.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:3d4035b641b96b211998c52d85518c8a4abd59e3e68a584be4c1ff037514d238"}, + {file = "ddtrace-2.17.0-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:87a39f70dc7e41eff7b552a44d023fd28c29a67825bc77ad92e49d4a93a178cc"}, + {file = "ddtrace-2.17.0-cp37-cp37m-win32.whl", hash = "sha256:07bb7aab2dd5598783e6ac1dfed375c1076408a9cd31fe984b38f058ed508a8a"}, + {file = "ddtrace-2.17.0-cp37-cp37m-win_amd64.whl", hash = "sha256:bdccbb8cd7ecabbd989ef8773acbfbcf5e4308447f84381208c5e0716b517dd3"}, + {file = "ddtrace-2.17.0-cp38-cp38-macosx_12_0_universal2.whl", hash = "sha256:f1d874a82300c90efa916c9adfa51754126b338b953ee415bda28766e81c210b"}, + {file = "ddtrace-2.17.0-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:0f4a9180623a9168e6dce9305fd0b2974f11520bade267ab33d3fec396c899b4"}, + {file = "ddtrace-2.17.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:04358661d6a3e548761834afc0ff2c50ad2cb05a2c61cc70eaa025f58e52658d"}, + {file = "ddtrace-2.17.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2d801ad2e6e1ba911904d10a35972d901d206a3a3cb7fcd46c44fd46cd85e7c4"}, + {file = "ddtrace-2.17.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:567b5f5f04bf1a3e77ae49f397899a394e202ce1e78102a0f0033eebfe7c8799"}, + {file = "ddtrace-2.17.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:abc565cc8850aa2244873ce2dc950b59b3e496bd0ecbd2b80602f6f15f3e4608"}, + {file = "ddtrace-2.17.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:7cc8ee99f3333bf24943a5b898d2a6554fad59a760055d7b683809740caa8fea"}, + {file = "ddtrace-2.17.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:dbeb928b71ca9405b2b2accc68071e97f4ad4bb9eba4920c5d5a78937b72c76a"}, + {file = "ddtrace-2.17.0-cp38-cp38-win32.whl", hash = "sha256:3f88c6b892083f65a15ad11ae5b60762cfa96deb73d35cd76c17ae2d45b016c1"}, + {file = "ddtrace-2.17.0-cp38-cp38-win_amd64.whl", hash = "sha256:aebce48a57c3570f30e2e2979ec0b2d334673c9b9a55b3f245c1bc85f012d33a"}, + {file = "ddtrace-2.17.0-cp39-cp39-macosx_12_0_universal2.whl", hash = "sha256:6dd27b037c7a7d68a731b0fb4c4a8cf71f736125caf96e5a6fe5fad5c6ec1938"}, + {file = "ddtrace-2.17.0-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:b689fba18e3af350adf8c2f7dfd41a8c9b3eb06af8c6e9d85291f418082cb6bc"}, + {file = "ddtrace-2.17.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:64b796ab81a1bc243043b64ac62a18c74cf3b375a61cb75584e8851759d658a8"}, + {file = "ddtrace-2.17.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ba0f163d8dc6d4b1a07ded35bdd4475213542433211afcffbf94222a0096e7e"}, + {file = "ddtrace-2.17.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d975cfc86678d408bbe1d6a4432963140931c37e3e343bdf35abd2a1d6712594"}, + {file = "ddtrace-2.17.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:488ac9801ed615aa8b6dee9c8bd08046e853fc725e6cb2585230dfae1a28d034"}, + {file = "ddtrace-2.17.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a3f15ca519f5c14cc439fd915be1ac4951fc56b7143dc53b20eec5ca317558fa"}, + {file = "ddtrace-2.17.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:1e11f59155efd640031f40b3c23666f795e90795053e0f8b036388b108dfec95"}, + {file = "ddtrace-2.17.0-cp39-cp39-win32.whl", hash = "sha256:fa1928ea0a8c5160df51e97d562a4ed8891ae0db749b148b3aaa43c64b291c00"}, + {file = "ddtrace-2.17.0-cp39-cp39-win_amd64.whl", hash = "sha256:121c62710395bd71f7de8605716cac25e9cce3115f42c83729552ba0be35946a"}, + {file = "ddtrace-2.17.0.tar.gz", hash = "sha256:441fbf87025194f954c154b208ce979aa2ce5d03f9ef8da266c94ce09a56c2c5"}, ] [package.dependencies] bytecode = [ - {version = ">=0.13.0", markers = "python_version < \"3.11.0\""}, {version = ">=0.15.0", markers = "python_version >= \"3.12.0\""}, {version = ">=0.14.0", markers = "python_version ~= \"3.11.0\""}, + {version = ">=0.13.0", markers = "python_version < \"3.11.0\""}, ] envier = ">=0.5,<1.0" opentelemetry-api = ">=1" protobuf = ">=3" -typing-extensions = "*" +typing_extensions = "*" wrapt = ">=1" xmltodict = ">=0.12" @@ -293,20 +293,20 @@ opentracing = ["opentracing (>=2.0.0)"] [[package]] name = "deprecated" -version = "1.2.14" +version = "1.2.15" description = "Python @deprecated decorator to deprecate old python classes, functions or methods." optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7" files = [ - {file = "Deprecated-1.2.14-py2.py3-none-any.whl", hash = "sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c"}, - {file = "Deprecated-1.2.14.tar.gz", hash = "sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3"}, + {file = "Deprecated-1.2.15-py2.py3-none-any.whl", hash = "sha256:353bc4a8ac4bfc96800ddab349d89c25dec1079f65fd53acdcc1e0b975b21320"}, + {file = "deprecated-1.2.15.tar.gz", hash = "sha256:683e561a90de76239796e6b6feac66b99030d2dd3fcf61ef996330f14bbb9b0d"}, ] [package.dependencies] wrapt = ">=1.10,<2" [package.extras] -dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "sphinx (<2)", "tox"] +dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "jinja2 (>=3.0.3,<3.1.0)", "setuptools", "sphinx (<2)", "tox"] [[package]] name = "envier" @@ -368,22 +368,26 @@ all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2 [[package]] name = "importlib-metadata" -version = "8.4.0" +version = "8.5.0" description = "Read metadata from Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "importlib_metadata-8.4.0-py3-none-any.whl", hash = "sha256:66f342cc6ac9818fc6ff340576acd24d65ba0b3efabb2b4ac08b598965a4a2f1"}, - {file = "importlib_metadata-8.4.0.tar.gz", hash = "sha256:9a547d3bc3608b025f93d403fdd1aae741c24fbb8314df4b155675742ce303c5"}, + {file = "importlib_metadata-8.5.0-py3-none-any.whl", hash = "sha256:45e54197d28b7a7f1559e60b95e7c567032b602131fbd588f1497f47880aa68b"}, + {file = "importlib_metadata-8.5.0.tar.gz", hash = "sha256:71522656f0abace1d072b9e5481a48f07c138e00f079c38c8f883823f9c26bd7"}, ] [package.dependencies] -zipp = ">=0.5" +zipp = ">=3.20" [package.extras] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)"] +cover = ["pytest-cov"] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +enabler = ["pytest-enabler (>=2.2)"] perf = ["ipython"] -test = ["flufl.flake8", "importlib-resources (>=1.3)", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-perf (>=0.9.2)", "pytest-ruff (>=0.2.1)"] +test = ["flufl.flake8", "importlib-resources (>=1.3)", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6,!=8.1.*)", "pytest-perf (>=0.9.2)"] +type = ["pytest-mypy"] [[package]] name = "iniconfig" @@ -420,28 +424,28 @@ files = [ [[package]] name = "opentelemetry-api" -version = "1.27.0" +version = "1.28.2" description = "OpenTelemetry Python API" optional = false python-versions = ">=3.8" files = [ - {file = "opentelemetry_api-1.27.0-py3-none-any.whl", hash = "sha256:953d5871815e7c30c81b56d910c707588000fff7a3ca1c73e6531911d53065e7"}, - {file = "opentelemetry_api-1.27.0.tar.gz", hash = "sha256:ed673583eaa5f81b5ce5e86ef7cdaf622f88ef65f0b9aab40b843dcae5bef342"}, + {file = "opentelemetry_api-1.28.2-py3-none-any.whl", hash = "sha256:6fcec89e265beb258fe6b1acaaa3c8c705a934bd977b9f534a2b7c0d2d4275a6"}, + {file = "opentelemetry_api-1.28.2.tar.gz", hash = "sha256:ecdc70c7139f17f9b0cf3742d57d7020e3e8315d6cffcdf1a12a905d45b19cc0"}, ] [package.dependencies] deprecated = ">=1.2.6" -importlib-metadata = ">=6.0,<=8.4.0" +importlib-metadata = ">=6.0,<=8.5.0" [[package]] name = "packaging" -version = "24.1" +version = "24.2" description = "Core utilities for Python packages" optional = true python-versions = ">=3.8" files = [ - {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"}, - {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"}, + {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"}, + {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"}, ] [[package]] @@ -591,13 +595,13 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "s3transfer" -version = "0.10.3" +version = "0.10.4" description = "An Amazon S3 Transfer Manager" optional = true python-versions = ">=3.8" files = [ - {file = "s3transfer-0.10.3-py3-none-any.whl", hash = "sha256:263ed587a5803c6c708d3ce44dc4dfedaab4c1a32e8329bab818933d79ddcf5d"}, - {file = "s3transfer-0.10.3.tar.gz", hash = "sha256:4f50ed74ab84d474ce614475e0b8d5047ff080810aac5d01ea25231cfc944b0c"}, + {file = "s3transfer-0.10.4-py3-none-any.whl", hash = "sha256:244a76a24355363a68164241438de1b72f8781664920260c48465896b712a41e"}, + {file = "s3transfer-0.10.4.tar.gz", hash = "sha256:29edc09801743c21eb5ecbc617a152df41d3c287f67b615f73e5f750583666a7"}, ] [package.dependencies] @@ -619,13 +623,13 @@ files = [ [[package]] name = "tomli" -version = "2.0.2" +version = "2.1.0" description = "A lil' TOML parser" optional = true python-versions = ">=3.8" files = [ - {file = "tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38"}, - {file = "tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"}, + {file = "tomli-2.1.0-py3-none-any.whl", hash = "sha256:a5c57c3d1c56f5ccdf89f6523458f60ef716e210fc47c4cfb188c5ba473e0391"}, + {file = "tomli-2.1.0.tar.gz", hash = "sha256:3f646cae2aec94e17d04973e4249548320197cfabdf130015d023de4b74d8ab8"}, ] [[package]] @@ -874,4 +878,4 @@ dev = ["boto3", "flake8", "pytest", "pytest-benchmark", "requests"] [metadata] lock-version = "2.0" python-versions = ">=3.8.0,<4" -content-hash = "421bc65995c100a53cc158e89b2ac74fbf62b45d6d509115e56aa1f25ea880e1" +content-hash = "1f665788ea027990707277c94f1f4746e4aab84e4bc1857bb18ccaa314965518" diff --git a/pyproject.toml b/pyproject.toml index e89b094b0..d75ea5cb4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,7 +27,7 @@ classifiers = [ python = ">=3.8.0,<4" datadog = ">=0.41.0,<1.0.0" wrapt = "^1.11.2" -ddtrace = ">=2.16.0" +ddtrace = ">=2.17.0" ujson = ">=5.9.0" boto3 = { version = "^1.34.0", optional = true } requests = { version ="^2.22.0", optional = true } From 6b67412e6af3c0c71481785fa6bdd4f2fccbb49e Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Thu, 21 Nov 2024 21:06:12 +0100 Subject: [PATCH 213/403] Prevent error when attempting to use None context. (#541) --- datadog_lambda/tracing.py | 2 ++ tests/test_tracing.py | 7 +++++++ 2 files changed, 9 insertions(+) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 5ed306a34..347e2fb73 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -699,6 +699,8 @@ def inject_correlation_ids(): def set_dd_trace_py_root(trace_context_source, merge_xray_traces): + if not _is_context_complete(dd_trace_context): + return if trace_context_source == TraceContextSource.EVENT or merge_xray_traces: context = Context( trace_id=dd_trace_context.trace_id, diff --git a/tests/test_tracing.py b/tests/test_tracing.py index d0db05cd4..4c530ad07 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -934,6 +934,9 @@ def setUp(self): self.mock_activate = patcher.start() self.mock_activate.return_value = True self.addCleanup(patcher.stop) + patcher = patch("datadog_lambda.tracing.dd_trace_context", None) + self.mock_dd_trace_context = patcher.start() + self.addCleanup(patcher.stop) def tearDown(self): global dd_tracing_enabled @@ -991,6 +994,10 @@ def test_set_dd_trace_py_root_no_span_id(self): self.mock_activate.assert_called() self.mock_activate.assert_has_calls([call(expected_context)]) + def test_set_dd_trace_py_root_none_context(self): + set_dd_trace_py_root(TraceContextSource.EVENT, True) + self.mock_activate.assert_not_called() + class TestServiceMapping(unittest.TestCase): def setUp(self): From ed8c462e00618d3193baa408143333dc01d01ad9 Mon Sep 17 00:00:00 2001 From: Aleksandr Pasechnik Date: Fri, 22 Nov 2024 10:43:46 -0500 Subject: [PATCH 214/403] chore: v6.104.0 release candidate (#543) --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index c185df04e..d2ea6a95f 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "6.103.0" +__version__ = "6.104.0" diff --git a/pyproject.toml b/pyproject.toml index d75ea5cb4..6f1b57612 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "6.103.0" +version = "6.104.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From b6edd91f2bc971e0a380565019381fa197b17801 Mon Sep 17 00:00:00 2001 From: Abhinav Vedmala Date: Thu, 2 Jan 2025 15:47:11 -0500 Subject: [PATCH 215/403] Redriven Step Functions Trace Merging (#545) Adds support for Step Functions trace merging in Redrive cases We previously used `hash(ExecutionId # StateName # StateEnteredTime)` for spanID calculation but these values are identical across redrives for a Lambda task state. The new approach also adds a `RedriveCount` to the end of the hash but omits this value when it is 0 to have easy backwards compatability. --- datadog_lambda/tracing.py | 13 ++++++- tests/test_tracing.py | 73 ++++++++++++++++++++++++++++++++++----- 2 files changed, 76 insertions(+), 10 deletions(-) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 347e2fb73..c90baff1f 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -384,12 +384,23 @@ def _parse_high_64_bits(trace_tags: str) -> str: def _generate_sfn_parent_id(context: dict) -> int: + """ + The upstream Step Function can propagate its execution context to downstream Lambdas. The + Lambda can use these details to share the same traceID and infer its parent's spanID. + + Excluding redriveCount when its 0 to account for cases where customers are using an old + version of the Lambda layer that doesn't use this value for its parentID generation. + """ execution_id = context.get("Execution").get("Id") + redrive_count = context.get("Execution").get("RedriveCount", 0) state_name = context.get("State").get("Name") state_entered_time = context.get("State").get("EnteredTime") + redrive_postfix = "" if redrive_count == 0 else f"#{redrive_count}" + return _deterministic_sha256_hash( - f"{execution_id}#{state_name}#{state_entered_time}", HIGHER_64_BITS + f"{execution_id}#{state_name}#{state_entered_time}{redrive_postfix}", + HIGHER_64_BITS, ) diff --git a/tests/test_tracing.py b/tests/test_tracing.py index 4c530ad07..f7d545429 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -619,30 +619,83 @@ def test_step_function_trace_data(self): lambda_ctx = get_mock_context() sfn_event = { "Execution": { - "Id": "665c417c-1237-4742-aaca-8b3becbb9e75", + "Id": "arn:aws:states:sa-east-1:425362996713:execution:abhinav-activity-state-machine:72a7ca3e-901c-41bb-b5a3-5f279b92a316", + "Name": "72a7ca3e-901c-41bb-b5a3-5f279b92a316", + "RoleArn": "arn:aws:iam::425362996713:role/service-role/StepFunctions-abhinav-activity-state-machine-role-22jpbgl6j", + "StartTime": "2024-12-04T19:38:04.069Z", }, - "StateMachine": {}, "State": { - "Name": "my-awesome-state", - "EnteredTime": "Mon Nov 13 12:43:33 PST 2023", + "Name": "Lambda Invoke", + "EnteredTime": "2024-12-04T19:38:04.118Z", + "RetryCount": 0, + }, + "StateMachine": { + "Id": "arn:aws:states:sa-east-1:425362996713:stateMachine:abhinav-activity-state-machine", + "Name": "abhinav-activity-state-machine", }, } ctx, source, event_source = extract_dd_trace_context(sfn_event, lambda_ctx) self.assertEqual(source, "event") expected_context = Context( - trace_id=3675572987363469717, - span_id=6880978411788117524, + trace_id=435175499815315247, + span_id=3929055471293792800, + sampling_priority=1, + meta={"_dd.p.tid": "3e7a89d1b7310603"}, + ) + self.assertEqual(ctx, expected_context) + self.assertEqual( + get_dd_trace_context(), + { + TraceHeader.TRACE_ID: "435175499815315247", + TraceHeader.PARENT_ID: "10713633173203262661", + TraceHeader.SAMPLING_PRIORITY: "1", + TraceHeader.TAGS: "_dd.p.tid=3e7a89d1b7310603", + }, + ) + create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) + self.mock_send_segment.assert_called_with( + XraySubsegment.TRACE_KEY, + expected_context, + ) + + # https://github.com/DataDog/logs-backend/blob/c17618cb552fc369ca40282bae0a65803f82f694/domains/serverless/apps/logs-to-traces-reducer/src/test/resources/test-json-files/stepfunctions/RedriveTest/snapshots/RedriveLambdaSuccessTraceMerging.json#L46 + @with_trace_propagation_style("datadog") + def test_step_function_trace_data_redrive(self): + lambda_ctx = get_mock_context() + sfn_event = { + "Execution": { + "Id": "arn:aws:states:sa-east-1:425362996713:execution:abhinav-activity-state-machine:72a7ca3e-901c-41bb-b5a3-5f279b92a316", + "Name": "72a7ca3e-901c-41bb-b5a3-5f279b92a316", + "RoleArn": "arn:aws:iam::425362996713:role/service-role/StepFunctions-abhinav-activity-state-machine-role-22jpbgl6j", + "StartTime": "2024-12-04T19:38:04.069Z", + "RedriveCount": 1, + }, + "State": { + "Name": "Lambda Invoke", + "EnteredTime": "2024-12-04T19:38:04.118Z", + "RetryCount": 0, + }, + "StateMachine": { + "Id": "arn:aws:states:sa-east-1:425362996713:stateMachine:abhinav-activity-state-machine", + "Name": "abhinav-activity-state-machine", + }, + } + ctx, source, event_source = extract_dd_trace_context(sfn_event, lambda_ctx) + self.assertEqual(source, "event") + expected_context = Context( + trace_id=435175499815315247, + span_id=5063839446130725204, sampling_priority=1, - meta={"_dd.p.tid": "e987c84b36b11ab"}, + meta={"_dd.p.tid": "3e7a89d1b7310603"}, ) self.assertEqual(ctx, expected_context) self.assertEqual( get_dd_trace_context(), { - TraceHeader.TRACE_ID: "3675572987363469717", + TraceHeader.TRACE_ID: "435175499815315247", TraceHeader.PARENT_ID: "10713633173203262661", TraceHeader.SAMPLING_PRIORITY: "1", - TraceHeader.TAGS: "_dd.p.tid=e987c84b36b11ab", + TraceHeader.TAGS: "_dd.p.tid=3e7a89d1b7310603", }, ) create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) @@ -658,6 +711,7 @@ def test_step_function_trace_data_lambda_root(self): "_datadog": { "Execution": { "Id": "665c417c-1237-4742-aaca-8b3becbb9e75", + "RedriveCount": 0, }, "StateMachine": {}, "State": { @@ -700,6 +754,7 @@ def test_step_function_trace_data_sfn_root(self): "_datadog": { "Execution": { "Id": "665c417c-1237-4742-aaca-8b3becbb9e75", + "RedriveCount": 0, }, "StateMachine": {}, "State": { From e40f4a8120dc2d0089a3e8ec1d8c7ca9e88f5ddb Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Tue, 7 Jan 2025 17:26:09 +0100 Subject: [PATCH 216/403] Remove *.dist-info directories except entry_points.txt files. (#549) --- Dockerfile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 610fef385..ff0e62175 100644 --- a/Dockerfile +++ b/Dockerfile @@ -28,7 +28,9 @@ RUN rm ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_stacktrace*.so RUN rm ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/libdd_wrapper*.so RUN rm ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/ddup/_ddup.*.so RUN rm ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/stack_v2/_stack_v2.*.so -RUN find . -name "*.dist-info" -type d | xargs rm -rf +# remove *.dist-info directories except any entry_points.txt files +RUN find ./python/lib/$runtime/site-packages/*.dist-info -not -name "entry_points.txt" -type f -delete +RUN find ./python/lib/$runtime/site-packages -type d -empty -delete # Precompile all .pyc files and remove .py files. This speeds up load time. # Compile with optimization level 2 (-OO) and PYTHONNODEBUGRANGES=1 to redtce From fa21836697991057ffd53b382ae0310861deeeac Mon Sep 17 00:00:00 2001 From: Nicholas Hulston Date: Mon, 27 Jan 2025 15:34:54 -0500 Subject: [PATCH 217/403] update `DD_COLD_START_TRACING` env var description (#554) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index dc5b87576..821518cac 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ Besides the environment variables supported by dd-trace-py, the datadog-lambda-p | -------------------- | ------------ | ------------- | | DD_ENCODE_AUTHORIZER_CONTEXT | When set to `true` for Lambda authorizers, the tracing context will be encoded into the response for propagation. Supported for NodeJS and Python. | `true` | | DD_DECODE_AUTHORIZER_CONTEXT | When set to `true` for Lambdas that are authorized via Lambda authorizers, it will parse and use the encoded tracing context (if found). Supported for NodeJS and Python. | `true` | -| DD_COLD_START_TRACING | Set to `false` to disable Cold Start Tracing. Used in NodeJS and Python. | `true` | +| DD_COLD_START_TRACING | When true (default), tracing occurs during cold start which creates many child spans. When false, only one cold start span is created. Used in NodeJS and Python. | `true` | | DD_MIN_COLD_START_DURATION | Sets the minimum duration (in milliseconds) for a module load event to be traced via Cold Start Tracing. Number. | `3` | | DD_COLD_START_TRACE_SKIP_LIB | optionally skip creating Cold Start Spans for a comma-separated list of libraries. Useful to limit depth or skip known libraries. | `ddtrace.internal.compat,ddtrace.filters` | | DD_CAPTURE_LAMBDA_PAYLOAD | [Captures incoming and outgoing AWS Lambda payloads][1] in the Datadog APM spans for Lambda invocations. | `false` | From 7fd33d48e27aa1c6d7008dc473c6d0b464effba3 Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Tue, 28 Jan 2025 22:41:28 +0100 Subject: [PATCH 218/403] feat: Remove requests and all its dependencies. (#547) --- Dockerfile | 12 +- ci/input_files/build.yaml.tpl | 1 + poetry.lock | 8 +- pyproject.toml | 2 +- tests/integration/package.json | 3 +- tests/integration/requirements.txt | 4 + tests/integration/serverless.yml | 19 +- tests/integration/yarn.lock | 981 ++++++++++++++++++++++++++++- 8 files changed, 1017 insertions(+), 13 deletions(-) create mode 100644 tests/integration/requirements.txt diff --git a/Dockerfile b/Dockerfile index ff0e62175..d15d39f3b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -22,8 +22,8 @@ RUN rm -rf ./python/lib/$runtime/site-packages/botocore* RUN rm -rf ./python/lib/$runtime/site-packages/setuptools RUN rm -rf ./python/lib/$runtime/site-packages/jsonschema/tests RUN find . -name 'libddwaf.so' -delete -RUN rm -rf ./python/lib/$runtime/site-packages/urllib3* -RUN rm ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_taint_tracking/*.so +# Comment this line out for now since ddtrace now tries to import it +#RUN rm ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_taint_tracking/*.so RUN rm ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_stacktrace*.so RUN rm ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/libdd_wrapper*.so RUN rm ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/ddup/_ddup.*.so @@ -32,6 +32,14 @@ RUN rm ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/st RUN find ./python/lib/$runtime/site-packages/*.dist-info -not -name "entry_points.txt" -type f -delete RUN find ./python/lib/$runtime/site-packages -type d -empty -delete +# Remove requests and dependencies +RUN rm -rf \ + ./python/lib/$runtime/site-packages/requests* \ + ./python/lib/$runtime/site-packages/urllib3* \ + ./python/lib/$runtime/site-packages/certifi* \ + ./python/lib/$runtime/site-packages/idna* \ + ./python/lib/$runtime/site-packages/charset_normalizer* + # Precompile all .pyc files and remove .py files. This speeds up load time. # Compile with optimization level 2 (-OO) and PYTHONNODEBUGRANGES=1 to redtce # size of .pyc files. diff --git a/ci/input_files/build.yaml.tpl b/ci/input_files/build.yaml.tpl index 97e5987f1..eae6b0d19 100644 --- a/ci/input_files/build.yaml.tpl +++ b/ci/input_files/build.yaml.tpl @@ -98,6 +98,7 @@ integration-test ({{ $runtime.name }}-{{ $runtime.arch }}): - *install-node - EXTERNAL_ID_NAME=integration-test-externalid ROLE_TO_ASSUME=sandbox-integration-test-deployer AWS_ACCOUNT=425362996713 source ./ci/get_secrets.sh - yarn global add serverless@^3.38.0 --prefix /usr/local + - yarn global add serverless-python-requirements@^6.1.1 --prefix /usr/local - cd integration_tests && yarn install && cd .. script: - RUNTIME_PARAM={{ $runtime.python_version }} ARCH={{ $runtime.arch }} ./scripts/run_integration_tests.sh diff --git a/poetry.lock b/poetry.lock index 85013e459..a2fc59f92 100644 --- a/poetry.lock +++ b/poetry.lock @@ -193,13 +193,13 @@ files = [ [[package]] name = "datadog" -version = "0.50.2" +version = "0.51.0" description = "The Datadog Python library" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ - {file = "datadog-0.50.2-py2.py3-none-any.whl", hash = "sha256:f3297858564b624efbd9ce43e4ea1c2c21e1f0477ab6d446060b536a1d9e431e"}, - {file = "datadog-0.50.2.tar.gz", hash = "sha256:17725774bf2bb0a48f1d096d92707492c187f24ae08960af0b0c2fa97958fd51"}, + {file = "datadog-0.51.0-py2.py3-none-any.whl", hash = "sha256:a9764f091c96af4e0996d4400b168fc5fba380f911d6d672c9dcd4773e29ea3f"}, + {file = "datadog-0.51.0.tar.gz", hash = "sha256:3279534f831ae0b4ae2d8ce42ef038b4ab38e667d7ed6ff7437982d7a0cf5250"}, ] [package.dependencies] @@ -878,4 +878,4 @@ dev = ["boto3", "flake8", "pytest", "pytest-benchmark", "requests"] [metadata] lock-version = "2.0" python-versions = ">=3.8.0,<4" -content-hash = "1f665788ea027990707277c94f1f4746e4aab84e4bc1857bb18ccaa314965518" +content-hash = "04aacf2bfd2b88de8559d11d8773aea6016bad1e2670462bd301cefb54e996f5" diff --git a/pyproject.toml b/pyproject.toml index 6f1b57612..3d97e0e09 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -25,7 +25,7 @@ classifiers = [ [tool.poetry.dependencies] python = ">=3.8.0,<4" -datadog = ">=0.41.0,<1.0.0" +datadog = ">=0.51.0,<1.0.0" wrapt = "^1.11.2" ddtrace = ">=2.17.0" ujson = ">=5.9.0" diff --git a/tests/integration/package.json b/tests/integration/package.json index 9dcad1b4c..1a1784620 100644 --- a/tests/integration/package.json +++ b/tests/integration/package.json @@ -1,5 +1,6 @@ { "devDependencies": { - "serverless-plugin-datadog": "^2.18.0" + "serverless-plugin-datadog": "^2.18.0", + "serverless-python-requirements": "^6.1.1" } } diff --git a/tests/integration/requirements.txt b/tests/integration/requirements.txt new file mode 100644 index 000000000..5678a66cd --- /dev/null +++ b/tests/integration/requirements.txt @@ -0,0 +1,4 @@ +certifi==2024.12.14 +charset-normalizer==3.4.1 +idna==3.10 +requests==2.32.3 diff --git a/tests/integration/serverless.yml b/tests/integration/serverless.yml index fd174c5f1..8c7e62f08 100644 --- a/tests/integration/serverless.yml +++ b/tests/integration/serverless.yml @@ -20,6 +20,21 @@ provider: iam: # IAM permissions require that all functions are deployed with this role role: "arn:aws:iam::425362996713:role/serverless-integration-test-lambda-role" + layers: + - { Ref: PythonLambdaLayer } + - { Ref: PythonRequirementsLambdaLayer } + +plugins: + - serverless-python-requirements + +custom: + pythonRequirements: + pythonBin: python3 + pipCmdExtraArgs: + - --no-deps # install just requests + layer: + compatibleRuntimes: + - ${env:SERVERLESS_RUNTIME} layers: python: @@ -32,8 +47,6 @@ functions: name: integration-tests-python-${sls:stage}-async-metrics_${env:RUNTIME} handler: handle.handle runtime: ${env:SERVERLESS_RUNTIME} - layers: - - { Ref: PythonLambdaLayer } environment: DD_FLUSH_TO_LOG: true @@ -42,5 +55,3 @@ functions: name: integration-tests-python-${sls:stage}-sync-metrics_${env:RUNTIME} handler: handle.handle runtime: ${env:SERVERLESS_RUNTIME} - layers: - - { Ref: PythonLambdaLayer } diff --git a/tests/integration/yarn.lock b/tests/integration/yarn.lock index 867a90abe..f96feb522 100644 --- a/tests/integration/yarn.lock +++ b/tests/integration/yarn.lock @@ -2,7 +2,986 @@ # yarn lockfile v1 +"@iarna/toml@^2.2.5": + version "2.2.5" + resolved "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz" + integrity sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg== + +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + dependencies: + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" + +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + +"2-thenable@^1.0.0": + version "1.0.0" + resolved "https://registry.npmjs.org/2-thenable/-/2-thenable-1.0.0.tgz" + integrity sha512-HqiDzaLDFCXkcCO/SwoyhRwqYtINFHF7t9BDRq4x90TOKNAJpiqUt9X5lQ08bwxYzc067HUywDjGySpebHcUpw== + dependencies: + d "1" + es5-ext "^0.10.47" + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-regex@^6.0.1: + version "6.1.0" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz" + integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA== + +ansi-styles@^4.0.0: + version "4.3.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^6.1.0: + version "6.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + +appdirectory@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/appdirectory/-/appdirectory-0.1.0.tgz" + integrity sha512-DJ5DV8vZXBbusyiyPlH28xppwS8eAMRuuyMo88xeEcf4bV64lbLtbxRxqixZuJBXsZzLtXFmA13GwVjJc7vdQw== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +axios-proxy-builder@^0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/axios-proxy-builder/-/axios-proxy-builder-0.1.2.tgz" + integrity sha512-6uBVsBZzkB3tCC8iyx59mCjQckhB8+GQrI9Cop8eC7ybIsvs/KtnNgEBfRMSEa7GqK2VBGUzgjNYMdPIfotyPA== + dependencies: + tunnel "^0.0.6" + +axios@^1.7.4: + version "1.7.9" + resolved "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz" + integrity sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw== + dependencies: + follow-redirects "^1.15.6" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +bluebird@^3.7.2: + version "3.7.2" + resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +camelcase@^5.0.0: + version "5.3.1" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +child-process-ext@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/child-process-ext/-/child-process-ext-2.1.1.tgz" + integrity sha512-0UQ55f51JBkOFa+fvR76ywRzxiPwQS3Xe8oe5bZRphpv+dIMeerW5Zn5e4cUy4COJwVtJyU0R79RMnw+aCqmGA== + dependencies: + cross-spawn "^6.0.5" + es5-ext "^0.10.53" + log "^6.0.0" + split2 "^3.1.1" + stream-promise "^3.2.0" + +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cross-spawn@^6.0.5: + version "6.0.6" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz" + integrity sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +cross-spawn@^7.0.0: + version "7.0.6" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz" + integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +d@^1.0.1, d@^1.0.2, d@1: + version "1.0.2" + resolved "https://registry.npmjs.org/d/-/d-1.0.2.tgz" + integrity sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw== + dependencies: + es5-ext "^0.10.64" + type "^2.7.2" + +decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" + integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +duration@^0.2.2: + version "0.2.2" + resolved "https://registry.npmjs.org/duration/-/duration-0.2.2.tgz" + integrity sha512-06kgtea+bGreF5eKYgI/36A6pLXggY7oR4p1pq4SmdFBn1ReOL5D8RhG64VrqfTTKNucqqtBAwEj8aB88mcqrg== + dependencies: + d "1" + es5-ext "~0.10.46" + +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + +es5-ext@^0.10.35, es5-ext@^0.10.47, es5-ext@^0.10.49, es5-ext@^0.10.53, es5-ext@^0.10.62, es5-ext@^0.10.64, es5-ext@~0.10.14, es5-ext@~0.10.46: + version "0.10.64" + resolved "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz" + integrity sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg== + dependencies: + es6-iterator "^2.0.3" + es6-symbol "^3.1.3" + esniff "^2.0.1" + next-tick "^1.1.0" + +es6-iterator@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz" + integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g== + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + +es6-symbol@^3.1.1, es6-symbol@^3.1.3: + version "3.1.4" + resolved "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz" + integrity sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg== + dependencies: + d "^1.0.2" + ext "^1.7.0" + +esniff@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz" + integrity sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg== + dependencies: + d "^1.0.1" + es5-ext "^0.10.62" + event-emitter "^0.3.5" + type "^2.7.2" + +event-emitter@^0.3.5: + version "0.3.5" + resolved "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz" + integrity sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA== + dependencies: + d "1" + es5-ext "~0.10.14" + +ext@^1.7.0: + version "1.7.0" + resolved "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz" + integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw== + dependencies: + type "^2.7.2" + +find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +follow-redirects@^1.15.6: + version "1.15.9" + resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz" + integrity sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ== + +foreground-child@^3.1.0: + version "3.3.0" + resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz" + integrity sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg== + dependencies: + cross-spawn "^7.0.0" + signal-exit "^4.0.1" + +form-data@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz" + integrity sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +fs-extra@^10.1.0: + version "10.1.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz" + integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +glob-all@^3.3.1: + version "3.3.1" + resolved "https://registry.npmjs.org/glob-all/-/glob-all-3.3.1.tgz" + integrity sha512-Y+ESjdI7ZgMwfzanHZYQ87C59jOO0i+Hd+QYtVt9PhLi6d8wlOpzQnfBxWUlaTuAoR3TkybLqqbIoWveU4Ji7Q== + dependencies: + glob "^7.2.3" + yargs "^15.3.1" + +glob@^10.3.7: + version "10.4.5" + resolved "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz" + integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== + dependencies: + foreground-child "^3.1.0" + jackspeak "^3.1.2" + minimatch "^9.0.4" + minipass "^7.1.2" + package-json-from-dist "^1.0.0" + path-scurry "^1.11.1" + +glob@^7.1.3: + version "7.2.3" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.2.3: + version "7.2.3" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +graceful-fs@^4.1.6, graceful-fs@^4.2.0: + version "4.2.11" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +immediate@~3.0.5: + version "3.0.6" + resolved "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz" + integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@^2.0.3, inherits@~2.0.3, inherits@2: + version "2.0.4" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +is-docker@^2.0.0: + version "2.2.1" + resolved "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-primitive@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/is-primitive/-/is-primitive-3.0.1.tgz" + integrity sha512-GljRxhWvlCNRfZyORiH77FwdFwGcMO620o37EOYC0ORWdq+WYNVqW0w2Juzew4M+L81l6/QS3t5gkkihyRqv9w== + +is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz" + integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== + +is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== + +jackspeak@^3.1.2: + version "3.4.3" + resolved "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz" + integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +jszip@^3.10.1: + version "3.10.1" + resolved "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz" + integrity sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g== + dependencies: + lie "~3.3.0" + pako "~1.0.2" + readable-stream "~2.3.6" + setimmediate "^1.0.5" + +lie@~3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz" + integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ== + dependencies: + immediate "~3.0.5" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +lodash.get@^4.4.2: + version "4.4.2" + resolved "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz" + integrity sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ== + +lodash.uniqby@^4.7.0: + version "4.7.0" + resolved "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz" + integrity sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww== + +lodash.values@^4.3.0: + version "4.3.0" + resolved "https://registry.npmjs.org/lodash.values/-/lodash.values-4.3.0.tgz" + integrity sha512-r0RwvdCv8id9TUblb/O7rYPwVy6lerCbcawrfdo9iC/1t1wsNMJknO79WNBgwkH0hIeJ08jmvvESbFpNb4jH0Q== + +log@^6.0.0: + version "6.3.2" + resolved "https://registry.npmjs.org/log/-/log-6.3.2.tgz" + integrity sha512-ek8NRg/OPvS9ISOJNWNAz5vZcpYacWNFDWNJjj5OXsc6YuKacfey6wF04cXz/tOJIVrZ2nGSkHpAY5qKtF6ISg== + dependencies: + d "^1.0.2" + duration "^0.2.2" + es5-ext "^0.10.64" + event-emitter "^0.3.5" + sprintf-kit "^2.0.2" + type "^2.7.3" + uni-global "^1.0.0" + +lru-cache@^10.2.0: + version "10.4.3" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz" + integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12: + version "2.1.35" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +minimatch@^3.1.1: + version "3.1.2" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^9.0.4: + version "9.0.5" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz" + integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== + dependencies: + brace-expansion "^2.0.1" + +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: + version "7.1.2" + resolved "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz" + integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== + +next-tick@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz" + integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +package-json-from-dist@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz" + integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== + +pako@~1.0.2: + version "1.0.11" + resolved "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz" + integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-scurry@^1.11.1: + version "1.11.1" + resolved "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz" + integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== + dependencies: + lru-cache "^10.2.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + +readable-stream@^3.0.0: + version "3.6.2" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readable-stream@~2.3.6: + version "2.3.8" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +rimraf@^5.0.5: + version "5.0.10" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz" + integrity sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ== + dependencies: + glob "^10.3.7" + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +sax@>=0.6.0: + version "1.4.1" + resolved "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz" + integrity sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg== + +semver@^5.5.0: + version "5.7.2" + resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== + +semver@^7.6.0: + version "7.6.3" + resolved "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz" + integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== + serverless-plugin-datadog@^2.18.0: version "2.18.0" - resolved "https://registry.yarnpkg.com/serverless-plugin-datadog/-/serverless-plugin-datadog-2.18.0.tgz#8af9903f0867eaac4789c3908e100f4c0e11c578" + resolved "https://registry.npmjs.org/serverless-plugin-datadog/-/serverless-plugin-datadog-2.18.0.tgz" integrity sha512-RUdCNjUk+uUKQYgQBjK0WNeYJ7lM2/RScqg/LjVSfv5EACeJ3iIUPz1c4bS2jtiH05al8qXudNb6QDkv9zxG7w== + +serverless-python-requirements@^6.1.1: + version "6.1.1" + resolved "https://registry.npmjs.org/serverless-python-requirements/-/serverless-python-requirements-6.1.1.tgz" + integrity sha512-SQsDKjoZXWvRJNsKL7NvHiMM+B6kG0a4RkVexhPCxId/rVMLVyz0UHg7v34kzaklfsXTQIkez+9x7HP3FwdRVQ== + dependencies: + "@iarna/toml" "^2.2.5" + appdirectory "^0.1.0" + bluebird "^3.7.2" + child-process-ext "^2.1.1" + fs-extra "^10.1.0" + glob-all "^3.3.1" + is-wsl "^2.2.0" + jszip "^3.10.1" + lodash.get "^4.4.2" + lodash.uniqby "^4.7.0" + lodash.values "^4.3.0" + rimraf "^3.0.2" + semver "^7.6.0" + set-value "^4.1.0" + sha256-file "1.0.0" + shell-quote "^1.8.1" + +serverless@>=2.32: + version "4.5.0" + resolved "https://registry.npmjs.org/serverless/-/serverless-4.5.0.tgz" + integrity sha512-msbs5I/fuPiW0ZfBuFA7lpKazCTFtF0AhOCA0HsrJBGVaOrNbwzlC/krZKXn1YgDR2+cw/izKRNupZJXtpyxJQ== + dependencies: + axios "^1.7.4" + axios-proxy-builder "^0.1.2" + rimraf "^5.0.5" + xml2js "0.6.2" + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== + +set-value@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/set-value/-/set-value-4.1.0.tgz" + integrity sha512-zTEg4HL0RwVrqcWs3ztF+x1vkxfm0lP+MQQFPiMJTKVceBwEV0A569Ou8l9IYQG8jOZdMVI1hGsc0tmeD2o/Lw== + dependencies: + is-plain-object "^2.0.4" + is-primitive "^3.0.1" + +setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz" + integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== + +sha256-file@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/sha256-file/-/sha256-file-1.0.0.tgz" + integrity sha512-nqf+g0veqgQAkDx0U2y2Tn2KWyADuuludZTw9A7J3D+61rKlIIl9V5TS4mfnwKuXZOH9B7fQyjYJ9pKRHIsAyg== + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz" + integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== + dependencies: + shebang-regex "^1.0.0" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz" + integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shell-quote@^1.8.1: + version "1.8.2" + resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.2.tgz" + integrity sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA== + +signal-exit@^4.0.1: + version "4.1.0" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + +split2@^3.1.1: + version "3.2.2" + resolved "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz" + integrity sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg== + dependencies: + readable-stream "^3.0.0" + +sprintf-kit@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/sprintf-kit/-/sprintf-kit-2.0.2.tgz" + integrity sha512-lnapdj6W4LflHZGKvl9eVkz5YF0xaTrqpRWVA4cNVOTedwqifIP8ooGImldzT/4IAN5KXFQAyXTdLidYVQdyag== + dependencies: + es5-ext "^0.10.64" + +stream-promise@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/stream-promise/-/stream-promise-3.2.0.tgz" + integrity sha512-P+7muTGs2C8yRcgJw/PPt61q7O517tDHiwYEzMWo1GSBCcZedUMT/clz7vUNsSxFphIlJ6QUL4GexQKlfJoVtA== + dependencies: + "2-thenable" "^1.0.0" + es5-ext "^0.10.49" + is-stream "^1.1.0" + +string_decoder@^1.1.1, string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^4.1.0, string-width@^4.2.0: + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": + version "6.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^7.0.1: + version "7.1.0" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== + dependencies: + ansi-regex "^6.0.1" + +tunnel@^0.0.6: + version "0.0.6" + resolved "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz" + integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg== + +type@^2.5.0, type@^2.7.2, type@^2.7.3: + version "2.7.3" + resolved "https://registry.npmjs.org/type/-/type-2.7.3.tgz" + integrity sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ== + +uni-global@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/uni-global/-/uni-global-1.0.0.tgz" + integrity sha512-WWM3HP+siTxzIWPNUg7hZ4XO8clKi6NoCAJJWnuRL+BAqyFXF8gC03WNyTefGoUXYc47uYgXxpKLIEvo65PEHw== + dependencies: + type "^2.5.0" + +universalify@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz" + integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== + +util-deprecate@^1.0.1, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +which-module@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz" + integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== + +which@^1.2.9: + version "1.3.1" + resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version "7.0.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +xml2js@0.6.2: + version "0.6.2" + resolved "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz" + integrity sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA== + dependencies: + sax ">=0.6.0" + xmlbuilder "~11.0.0" + +xmlbuilder@~11.0.0: + version "11.0.1" + resolved "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz" + integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== + +y18n@^4.0.0: + version "4.0.3" + resolved "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz" + integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== + +yargs-parser@^18.1.2: + version "18.1.3" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs@^15.3.1: + version "15.4.1" + resolved "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz" + integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.2" From 6117772e514db32a3fa3e7a24c806432b4274219 Mon Sep 17 00:00:00 2001 From: Aleksandr Pasechnik Date: Thu, 30 Jan 2025 08:56:12 -0500 Subject: [PATCH 219/403] chore: support python 3.13 (#544) --- .github/workflows/build.yml | 2 +- CONTRIBUTING.md | 2 +- Dockerfile | 6 +- README.md | 2 +- ci/datasources/runtimes.yaml | 8 + ci/publish_layers.sh | 8 +- poetry.lock | 641 +++--- pyproject.toml | 3 +- scripts/add_new_region.sh | 4 + scripts/build_layers.sh | 4 +- scripts/list_layers.sh | 2 + scripts/publish_layers.sh | 6 + scripts/run_integration_tests.sh | 3 +- scripts/run_tests.sh | 2 +- scripts/sign_layers.sh | 2 + tests/Dockerfile | 2 +- .../logs/async-metrics_python313.log | 1544 +++++++++++++++ .../snapshots/logs/sync-metrics_python313.log | 1715 +++++++++++++++++ 18 files changed, 3646 insertions(+), 310 deletions(-) create mode 100644 tests/integration/snapshots/logs/async-metrics_python313.log create mode 100644 tests/integration/snapshots/logs/sync-metrics_python313.log diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index eeb77064b..d218bdefd 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -41,7 +41,7 @@ jobs: strategy: max-parallel: 4 matrix: - python-version: ['3.8', '3.9', '3.10', '3.11', '3.12'] + python-version: ['3.8', '3.9', '3.10', '3.11', '3.12', '3.13'] steps: - name: Checkout diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3b57858ca..d632d1513 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -24,7 +24,7 @@ We love pull requests. For new features, consider opening an issue to discuss th ./scripts/build_layers.sh # Publish the a testing layer to your own AWS account, and the ARN will be returned - # Example: VERSION=1 REGIONS=us-east-1 LAYERS=Datadog-Python312 ./scripts/publish_layers.sh + # Example: VERSION=1 REGIONS=us-east-1 LAYERS=Datadog-Python313 ./scripts/publish_layers.sh VERSION= REGIONS= LAYERS= ./scripts/publish_layers.sh ``` diff --git a/Dockerfile b/Dockerfile index d15d39f3b..554766df2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -23,11 +23,11 @@ RUN rm -rf ./python/lib/$runtime/site-packages/setuptools RUN rm -rf ./python/lib/$runtime/site-packages/jsonschema/tests RUN find . -name 'libddwaf.so' -delete # Comment this line out for now since ddtrace now tries to import it -#RUN rm ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_taint_tracking/*.so -RUN rm ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_stacktrace*.so +# RUN rm ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_stacktrace*.so RUN rm ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/libdd_wrapper*.so RUN rm ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/ddup/_ddup.*.so -RUN rm ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/stack_v2/_stack_v2.*.so +# _stack_v2 may not exist for some versions of ddtrace (e.g. under python 3.13) +RUN rm -f ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/stack_v2/_stack_v2.*.so # remove *.dist-info directories except any entry_points.txt files RUN find ./python/lib/$runtime/site-packages/*.dist-info -not -name "entry_points.txt" -type f -delete RUN find ./python/lib/$runtime/site-packages -type d -empty -delete diff --git a/README.md b/README.md index 821518cac..03cd846a6 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ [![Slack](https://chat.datadoghq.com/badge.svg?bg=632CA6)](https://chat.datadoghq.com/) [![License](https://img.shields.io/badge/license-Apache--2.0-blue)](https://github.com/DataDog/datadog-lambda-python/blob/main/LICENSE) -Datadog Lambda Library for Python (3.8, 3.9, 3.10, 3.11, and 3.12) enables [enhanced Lambda metrics](https://docs.datadoghq.com/serverless/enhanced_lambda_metrics), [distributed tracing](https://docs.datadoghq.com/serverless/distributed_tracing), and [custom metric submission](https://docs.datadoghq.com/serverless/custom_metrics) from AWS Lambda functions. +Datadog Lambda Library for Python (3.8, 3.9, 3.10, 3.11, 3.12, and 3.13) enables [enhanced Lambda metrics](https://docs.datadoghq.com/serverless/enhanced_lambda_metrics), [distributed tracing](https://docs.datadoghq.com/serverless/distributed_tracing), and [custom metric submission](https://docs.datadoghq.com/serverless/custom_metrics) from AWS Lambda functions. ## Installation diff --git a/ci/datasources/runtimes.yaml b/ci/datasources/runtimes.yaml index 62fd02791..f9456d396 100644 --- a/ci/datasources/runtimes.yaml +++ b/ci/datasources/runtimes.yaml @@ -39,3 +39,11 @@ runtimes: python_version: "3.12" arch: "arm64" image: "3.12.0" + - name: "python313" + python_version: "3.13" + arch: "amd64" + image: "3.13.0" + - name: "python313" + python_version: "3.13" + arch: "arm64" + image: "3.13.0" diff --git a/ci/publish_layers.sh b/ci/publish_layers.sh index f94a0bc3b..85317ddd8 100755 --- a/ci/publish_layers.sh +++ b/ci/publish_layers.sh @@ -21,8 +21,10 @@ AWS_CLI_PYTHON_VERSIONS=( "python3.11" "python3.12" "python3.12" + "python3.13" + "python3.13" ) -PYTHON_VERSIONS=("3.8-amd64" "3.8-arm64" "3.9-amd64" "3.9-arm64" "3.10-amd64" "3.10-arm64" "3.11-amd64" "3.11-arm64" "3.12-amd64" "3.12-arm64") +PYTHON_VERSIONS=("3.8-amd64" "3.8-arm64" "3.9-amd64" "3.9-arm64" "3.10-amd64" "3.10-arm64" "3.11-amd64" "3.11-arm64" "3.12-amd64" "3.12-arm64" "3.13-amd64" "3.13-arm64") LAYER_PATHS=( ".layers/datadog_lambda_py-amd64-3.8.zip" ".layers/datadog_lambda_py-arm64-3.8.zip" @@ -34,6 +36,8 @@ LAYER_PATHS=( ".layers/datadog_lambda_py-arm64-3.11.zip" ".layers/datadog_lambda_py-amd64-3.12.zip" ".layers/datadog_lambda_py-arm64-3.12.zip" + ".layers/datadog_lambda_py-amd64-3.13.zip" + ".layers/datadog_lambda_py-arm64-3.13.zip" ) LAYERS=( "Datadog-Python38" @@ -46,6 +50,8 @@ LAYERS=( "Datadog-Python311-ARM" "Datadog-Python312" "Datadog-Python312-ARM" + "Datadog-Python313" + "Datadog-Python313-ARM" ) STAGES=('prod', 'sandbox', 'staging') diff --git a/poetry.lock b/poetry.lock index a2fc59f92..3953f9539 100644 --- a/poetry.lock +++ b/poetry.lock @@ -2,32 +2,32 @@ [[package]] name = "boto3" -version = "1.35.66" +version = "1.36.8" description = "The AWS SDK for Python" optional = true python-versions = ">=3.8" files = [ - {file = "boto3-1.35.66-py3-none-any.whl", hash = "sha256:09a610f8cf4d3c22d4ca69c1f89079e3a1c82805ce94fa0eb4ecdd4d2ba6c4bc"}, - {file = "boto3-1.35.66.tar.gz", hash = "sha256:c392b9168b65e9c23483eaccb5b68d1f960232d7f967a1e00a045ba065ce050d"}, + {file = "boto3-1.36.8-py3-none-any.whl", hash = "sha256:7f61c9d0ea64f484a17c1e3115fdf90fd7b17ab6771e07cb4549f42b9fd28fb9"}, + {file = "boto3-1.36.8.tar.gz", hash = "sha256:ac47215d320b0c2534340db58d6d5284cb1860b7bff172b4dd6eee2dee1d5779"}, ] [package.dependencies] -botocore = ">=1.35.66,<1.36.0" +botocore = ">=1.36.8,<1.37.0" jmespath = ">=0.7.1,<2.0.0" -s3transfer = ">=0.10.0,<0.11.0" +s3transfer = ">=0.11.0,<0.12.0" [package.extras] crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.35.66" +version = "1.36.8" description = "Low-level, data-driven core of boto 3." optional = true python-versions = ">=3.8" files = [ - {file = "botocore-1.35.66-py3-none-any.whl", hash = "sha256:d0683e9c18bb6852f768da268086c3749d925332a664db0dd1459cfa7e96e475"}, - {file = "botocore-1.35.66.tar.gz", hash = "sha256:51f43220315f384959f02ea3266740db4d421592dd87576c18824e424b349fdb"}, + {file = "botocore-1.36.8-py3-none-any.whl", hash = "sha256:59d3fdfbae6d916b046e973bebcbeb70a102f9e570ca86d5ba512f1854b78fc2"}, + {file = "botocore-1.36.8.tar.gz", hash = "sha256:81c88e5566cf018e1411a68304dc1fb9e4156ca2b50a3a0f0befc274299e67fa"}, ] [package.dependencies] @@ -39,145 +39,132 @@ urllib3 = [ ] [package.extras] -crt = ["awscrt (==0.22.0)"] +crt = ["awscrt (==0.23.4)"] [[package]] name = "bytecode" -version = "0.16.0" +version = "0.16.1" description = "Python module to generate and modify bytecode" optional = false python-versions = ">=3.8" files = [ - {file = "bytecode-0.16.0-py3-none-any.whl", hash = "sha256:76080b7c0eb9e7e17f961d61fd06e933aa47f3b753770a3249537439d8203a25"}, - {file = "bytecode-0.16.0.tar.gz", hash = "sha256:06676a3c3bccc9d3dc73ee625650ea57df2bc117358826f4f290f0e1faa42292"}, + {file = "bytecode-0.16.1-py3-none-any.whl", hash = "sha256:1d4b61ed6bade4bff44127c8283bef8131a664ce4dbe09d64a88caf329939f35"}, + {file = "bytecode-0.16.1.tar.gz", hash = "sha256:8fbbb637c880f339e564858bc6c7984ede67ae97bc71343379a535a9a4baf398"}, ] [package.dependencies] -typing-extensions = {version = "*", markers = "python_version < \"3.10\""} +typing_extensions = {version = "*", markers = "python_version < \"3.10\""} [[package]] name = "certifi" -version = "2024.8.30" +version = "2024.12.14" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"}, - {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"}, + {file = "certifi-2024.12.14-py3-none-any.whl", hash = "sha256:1275f7a45be9464efc1173084eaa30f866fe2e47d389406136d332ed4967ec56"}, + {file = "certifi-2024.12.14.tar.gz", hash = "sha256:b650d30f370c2b724812bee08008be0c4163b163ddaec3f2546c1caf65f191db"}, ] [[package]] name = "charset-normalizer" -version = "3.4.0" +version = "3.4.1" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false -python-versions = ">=3.7.0" -files = [ - {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:4f9fc98dad6c2eaa32fc3af1417d95b5e3d08aff968df0cd320066def971f9a6"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0de7b687289d3c1b3e8660d0741874abe7888100efe14bd0f9fd7141bcbda92b"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5ed2e36c3e9b4f21dd9422f6893dec0abf2cca553af509b10cd630f878d3eb99"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d3ff7fc90b98c637bda91c89d51264a3dcf210cade3a2c6f838c7268d7a4ca"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1110e22af8ca26b90bd6364fe4c763329b0ebf1ee213ba32b68c73de5752323d"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:86f4e8cca779080f66ff4f191a685ced73d2f72d50216f7112185dc02b90b9b7"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f683ddc7eedd742e2889d2bfb96d69573fde1d92fcb811979cdb7165bb9c7d3"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:27623ba66c183eca01bf9ff833875b459cad267aeeb044477fedac35e19ba907"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f606a1881d2663630ea5b8ce2efe2111740df4b687bd78b34a8131baa007f79b"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:0b309d1747110feb25d7ed6b01afdec269c647d382c857ef4663bbe6ad95a912"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:136815f06a3ae311fae551c3df1f998a1ebd01ddd424aa5603a4336997629e95"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:14215b71a762336254351b00ec720a8e85cada43b987da5a042e4ce3e82bd68e"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:79983512b108e4a164b9c8d34de3992f76d48cadc9554c9e60b43f308988aabe"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-win32.whl", hash = "sha256:c94057af19bc953643a33581844649a7fdab902624d2eb739738a30e2b3e60fc"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:55f56e2ebd4e3bc50442fbc0888c9d8c94e4e06a933804e2af3e89e2f9c1c749"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0d99dd8ff461990f12d6e42c7347fd9ab2532fb70e9621ba520f9e8637161d7c"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c57516e58fd17d03ebe67e181a4e4e2ccab1168f8c2976c6a334d4f819fe5944"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6dba5d19c4dfab08e58d5b36304b3f92f3bd5d42c1a3fa37b5ba5cdf6dfcbcee"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf4475b82be41b07cc5e5ff94810e6a01f276e37c2d55571e3fe175e467a1a1c"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce031db0408e487fd2775d745ce30a7cd2923667cf3b69d48d219f1d8f5ddeb6"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8ff4e7cdfdb1ab5698e675ca622e72d58a6fa2a8aa58195de0c0061288e6e3ea"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3710a9751938947e6327ea9f3ea6332a09bf0ba0c09cae9cb1f250bd1f1549bc"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82357d85de703176b5587dbe6ade8ff67f9f69a41c0733cf2425378b49954de5"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:47334db71978b23ebcf3c0f9f5ee98b8d65992b65c9c4f2d34c2eaf5bcaf0594"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8ce7fd6767a1cc5a92a639b391891bf1c268b03ec7e021c7d6d902285259685c"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f1a2f519ae173b5b6a2c9d5fa3116ce16e48b3462c8b96dfdded11055e3d6365"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:63bc5c4ae26e4bc6be6469943b8253c0fd4e4186c43ad46e713ea61a0ba49129"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bcb4f8ea87d03bc51ad04add8ceaf9b0f085ac045ab4d74e73bbc2dc033f0236"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-win32.whl", hash = "sha256:9ae4ef0b3f6b41bad6366fb0ea4fc1d7ed051528e113a60fa2a65a9abb5b1d99"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cee4373f4d3ad28f1ab6290684d8e2ebdb9e7a1b74fdc39e4c211995f77bec27"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0713f3adb9d03d49d365b70b84775d0a0d18e4ab08d12bc46baa6132ba78aaf6"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:de7376c29d95d6719048c194a9cf1a1b0393fbe8488a22008610b0361d834ecf"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4a51b48f42d9358460b78725283f04bddaf44a9358197b889657deba38f329db"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b295729485b06c1a0683af02a9e42d2caa9db04a373dc38a6a58cdd1e8abddf1"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ee803480535c44e7f5ad00788526da7d85525cfefaf8acf8ab9a310000be4b03"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d59d125ffbd6d552765510e3f31ed75ebac2c7470c7274195b9161a32350284"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8cda06946eac330cbe6598f77bb54e690b4ca93f593dee1568ad22b04f347c15"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07afec21bbbbf8a5cc3651aa96b980afe2526e7f048fdfb7f1014d84acc8b6d8"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6b40e8d38afe634559e398cc32b1472f376a4099c75fe6299ae607e404c033b2"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b8dcd239c743aa2f9c22ce674a145e0a25cb1566c495928440a181ca1ccf6719"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:84450ba661fb96e9fd67629b93d2941c871ca86fc38d835d19d4225ff946a631"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:44aeb140295a2f0659e113b31cfe92c9061622cadbc9e2a2f7b8ef6b1e29ef4b"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1db4e7fefefd0f548d73e2e2e041f9df5c59e178b4c72fbac4cc6f535cfb1565"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-win32.whl", hash = "sha256:5726cf76c982532c1863fb64d8c6dd0e4c90b6ece9feb06c9f202417a31f7dd7"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:b197e7094f232959f8f20541ead1d9862ac5ebea1d58e9849c1bf979255dfac9"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:dd4eda173a9fcccb5f2e2bd2a9f423d180194b1bf17cf59e3269899235b2a114"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e9e3c4c9e1ed40ea53acf11e2a386383c3304212c965773704e4603d589343ed"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:92a7e36b000bf022ef3dbb9c46bfe2d52c047d5e3f3343f43204263c5addc250"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54b6a92d009cbe2fb11054ba694bc9e284dad30a26757b1e372a1fdddaf21920"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ffd9493de4c922f2a38c2bf62b831dcec90ac673ed1ca182fe11b4d8e9f2a64"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:35c404d74c2926d0287fbd63ed5d27eb911eb9e4a3bb2c6d294f3cfd4a9e0c23"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4796efc4faf6b53a18e3d46343535caed491776a22af773f366534056c4e1fbc"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e7fdd52961feb4c96507aa649550ec2a0d527c086d284749b2f582f2d40a2e0d"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:92db3c28b5b2a273346bebb24857fda45601aef6ae1c011c0a997106581e8a88"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ab973df98fc99ab39080bfb0eb3a925181454d7c3ac8a1e695fddfae696d9e90"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:4b67fdab07fdd3c10bb21edab3cbfe8cf5696f453afce75d815d9d7223fbe88b"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:aa41e526a5d4a9dfcfbab0716c7e8a1b215abd3f3df5a45cf18a12721d31cb5d"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ffc519621dce0c767e96b9c53f09c5d215578e10b02c285809f76509a3931482"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-win32.whl", hash = "sha256:f19c1585933c82098c2a520f8ec1227f20e339e33aca8fa6f956f6691b784e67"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:707b82d19e65c9bd28b81dde95249b07bf9f5b90ebe1ef17d9b57473f8a64b7b"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:dbe03226baf438ac4fda9e2d0715022fd579cb641c4cf639fa40d53b2fe6f3e2"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd9a8bd8900e65504a305bf8ae6fa9fbc66de94178c420791d0293702fce2df7"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8831399554b92b72af5932cdbbd4ddc55c55f631bb13ff8fe4e6536a06c5c51"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a14969b8691f7998e74663b77b4c36c0337cb1df552da83d5c9004a93afdb574"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dcaf7c1524c0542ee2fc82cc8ec337f7a9f7edee2532421ab200d2b920fc97cf"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:425c5f215d0eecee9a56cdb703203dda90423247421bf0d67125add85d0c4455"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:d5b054862739d276e09928de37c79ddeec42a6e1bfc55863be96a36ba22926f6"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:f3e73a4255342d4eb26ef6df01e3962e73aa29baa3124a8e824c5d3364a65748"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:2f6c34da58ea9c1a9515621f4d9ac379871a8f21168ba1b5e09d74250de5ad62"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:f09cb5a7bbe1ecae6e87901a2eb23e0256bb524a79ccc53eb0b7629fbe7677c4"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:0099d79bdfcf5c1f0c2c72f91516702ebf8b0b8ddd8905f97a8aecf49712c621"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-win32.whl", hash = "sha256:9c98230f5042f4945f957d006edccc2af1e03ed5e37ce7c373f00a5a4daa6149"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:62f60aebecfc7f4b82e3f639a7d1433a20ec32824db2199a11ad4f5e146ef5ee"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:af73657b7a68211996527dbfeffbb0864e043d270580c5aef06dc4b659a4b578"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cab5d0b79d987c67f3b9e9c53f54a61360422a5a0bc075f43cab5621d530c3b6"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9289fd5dddcf57bab41d044f1756550f9e7cf0c8e373b8cdf0ce8773dc4bd417"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b493a043635eb376e50eedf7818f2f322eabbaa974e948bd8bdd29eb7ef2a51"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9fa2566ca27d67c86569e8c85297aaf413ffab85a8960500f12ea34ff98e4c41"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8e538f46104c815be19c975572d74afb53f29650ea2025bbfaef359d2de2f7f"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fd30dc99682dc2c603c2b315bded2799019cea829f8bf57dc6b61efde6611c8"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2006769bd1640bdf4d5641c69a3d63b71b81445473cac5ded39740a226fa88ab"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:dc15e99b2d8a656f8e666854404f1ba54765871104e50c8e9813af8a7db07f12"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:ab2e5bef076f5a235c3774b4f4028a680432cded7cad37bba0fd90d64b187d19"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:4ec9dd88a5b71abfc74e9df5ebe7921c35cbb3b641181a531ca65cdb5e8e4dea"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:43193c5cda5d612f247172016c4bb71251c784d7a4d9314677186a838ad34858"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:aa693779a8b50cd97570e5a0f343538a8dbd3e496fa5dcb87e29406ad0299654"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-win32.whl", hash = "sha256:7706f5850360ac01d80c89bcef1640683cc12ed87f42579dab6c5d3ed6888613"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:c3e446d253bd88f6377260d07c895816ebf33ffffd56c1c792b13bff9c3e1ade"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:980b4f289d1d90ca5efcf07958d3eb38ed9c0b7676bf2831a54d4f66f9c27dfa"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f28f891ccd15c514a0981f3b9db9aa23d62fe1a99997512b0491d2ed323d229a"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8aacce6e2e1edcb6ac625fb0f8c3a9570ccc7bfba1f63419b3769ccf6a00ed0"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd7af3717683bea4c87acd8c0d3d5b44d56120b26fd3f8a692bdd2d5260c620a"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5ff2ed8194587faf56555927b3aa10e6fb69d931e33953943bc4f837dfee2242"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e91f541a85298cf35433bf66f3fab2a4a2cff05c127eeca4af174f6d497f0d4b"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:309a7de0a0ff3040acaebb35ec45d18db4b28232f21998851cfa709eeff49d62"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:285e96d9d53422efc0d7a17c60e59f37fbf3dfa942073f666db4ac71e8d726d0"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:5d447056e2ca60382d460a604b6302d8db69476fd2015c81e7c35417cfabe4cd"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:20587d20f557fe189b7947d8e7ec5afa110ccf72a3128d61a2a387c3313f46be"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:130272c698667a982a5d0e626851ceff662565379baf0ff2cc58067b81d4f11d"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:ab22fbd9765e6954bc0bcff24c25ff71dcbfdb185fcdaca49e81bac68fe724d3"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7782afc9b6b42200f7362858f9e73b1f8316afb276d316336c0ec3bd73312742"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-win32.whl", hash = "sha256:2de62e8801ddfff069cd5c504ce3bc9672b23266597d4e4f50eda28846c322f2"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:95c3c157765b031331dd4db3c775e58deaee050a3042fcad72cbc4189d7c8dca"}, - {file = "charset_normalizer-3.4.0-py3-none-any.whl", hash = "sha256:fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079"}, - {file = "charset_normalizer-3.4.0.tar.gz", hash = "sha256:223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e"}, +python-versions = ">=3.7" +files = [ + {file = "charset_normalizer-3.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:91b36a978b5ae0ee86c394f5a54d6ef44db1de0815eb43de826d41d21e4af3de"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7461baadb4dc00fd9e0acbe254e3d7d2112e7f92ced2adc96e54ef6501c5f176"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e218488cd232553829be0664c2292d3af2eeeb94b32bea483cf79ac6a694e037"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:80ed5e856eb7f30115aaf94e4a08114ccc8813e6ed1b5efa74f9f82e8509858f"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b010a7a4fd316c3c484d482922d13044979e78d1861f0e0650423144c616a46a"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4532bff1b8421fd0a320463030c7520f56a79c9024a4e88f01c537316019005a"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d973f03c0cb71c5ed99037b870f2be986c3c05e63622c017ea9816881d2dd247"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:3a3bd0dcd373514dcec91c411ddb9632c0d7d92aed7093b8c3bbb6d69ca74408"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:d9c3cdf5390dcd29aa8056d13e8e99526cda0305acc038b96b30352aff5ff2bb"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:2bdfe3ac2e1bbe5b59a1a63721eb3b95fc9b6817ae4a46debbb4e11f6232428d"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:eab677309cdb30d047996b36d34caeda1dc91149e4fdca0b1a039b3f79d9a807"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-win32.whl", hash = "sha256:c0429126cf75e16c4f0ad00ee0eae4242dc652290f940152ca8c75c3a4b6ee8f"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:9f0b8b1c6d84c8034a44893aba5e767bf9c7a211e313a9605d9c617d7083829f"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8bfa33f4f2672964266e940dd22a195989ba31669bd84629f05fab3ef4e2d125"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28bf57629c75e810b6ae989f03c0828d64d6b26a5e205535585f96093e405ed1"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f08ff5e948271dc7e18a35641d2f11a4cd8dfd5634f55228b691e62b37125eb3"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:234ac59ea147c59ee4da87a0c0f098e9c8d169f4dc2a159ef720f1a61bbe27cd"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd4ec41f914fa74ad1b8304bbc634b3de73d2a0889bd32076342a573e0779e00"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eea6ee1db730b3483adf394ea72f808b6e18cf3cb6454b4d86e04fa8c4327a12"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c96836c97b1238e9c9e3fe90844c947d5afbf4f4c92762679acfe19927d81d77"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4d86f7aff21ee58f26dcf5ae81a9addbd914115cdebcbb2217e4f0ed8982e146"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:09b5e6733cbd160dcc09589227187e242a30a49ca5cefa5a7edd3f9d19ed53fd"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:5777ee0881f9499ed0f71cc82cf873d9a0ca8af166dfa0af8ec4e675b7df48e6"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:237bdbe6159cff53b4f24f397d43c6336c6b0b42affbe857970cefbb620911c8"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-win32.whl", hash = "sha256:8417cb1f36cc0bc7eaba8ccb0e04d55f0ee52df06df3ad55259b9a323555fc8b"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:d7f50a1f8c450f3925cb367d011448c39239bb3eb4117c36a6d354794de4ce76"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:73d94b58ec7fecbc7366247d3b0b10a21681004153238750bb67bd9012414545"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dad3e487649f498dd991eeb901125411559b22e8d7ab25d3aeb1af367df5efd7"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c30197aa96e8eed02200a83fba2657b4c3acd0f0aa4bdc9f6c1af8e8962e0757"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2369eea1ee4a7610a860d88f268eb39b95cb588acd7235e02fd5a5601773d4fa"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc2722592d8998c870fa4e290c2eec2c1569b87fe58618e67d38b4665dfa680d"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffc9202a29ab3920fa812879e95a9e78b2465fd10be7fcbd042899695d75e616"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:804a4d582ba6e5b747c625bf1255e6b1507465494a40a2130978bda7b932c90b"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0f55e69f030f7163dffe9fd0752b32f070566451afe180f99dbeeb81f511ad8d"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c4c3e6da02df6fa1410a7680bd3f63d4f710232d3139089536310d027950696a"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:5df196eb874dae23dcfb968c83d4f8fdccb333330fe1fc278ac5ceeb101003a9"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e358e64305fe12299a08e08978f51fc21fac060dcfcddd95453eabe5b93ed0e1"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-win32.whl", hash = "sha256:9b23ca7ef998bc739bf6ffc077c2116917eabcc901f88da1b9856b210ef63f35"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:6ff8a4a60c227ad87030d76e99cd1698345d4491638dfa6673027c48b3cd395f"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:aabfa34badd18f1da5ec1bc2715cadc8dca465868a4e73a0173466b688f29dda"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22e14b5d70560b8dd51ec22863f370d1e595ac3d024cb8ad7d308b4cd95f8313"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8436c508b408b82d87dc5f62496973a1805cd46727c34440b0d29d8a2f50a6c9"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d074908e1aecee37a7635990b2c6d504cd4766c7bc9fc86d63f9c09af3fa11b"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:955f8851919303c92343d2f66165294848d57e9bba6cf6e3625485a70a038d11"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:44ecbf16649486d4aebafeaa7ec4c9fed8b88101f4dd612dcaf65d5e815f837f"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0924e81d3d5e70f8126529951dac65c1010cdf117bb75eb02dd12339b57749dd"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2967f74ad52c3b98de4c3b32e1a44e32975e008a9cd2a8cc8966d6a5218c5cb2"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c75cb2a3e389853835e84a2d8fb2b81a10645b503eca9bcb98df6b5a43eb8886"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:09b26ae6b1abf0d27570633b2b078a2a20419c99d66fb2823173d73f188ce601"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fa88b843d6e211393a37219e6a1c1df99d35e8fd90446f1118f4216e307e48cd"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-win32.whl", hash = "sha256:eb8178fe3dba6450a3e024e95ac49ed3400e506fd4e9e5c32d30adda88cbd407"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:b1ac5992a838106edb89654e0aebfc24f5848ae2547d22c2c3f66454daa11971"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f30bf9fd9be89ecb2360c7d94a711f00c09b976258846efe40db3d05828e8089"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:97f68b8d6831127e4787ad15e6757232e14e12060bec17091b85eb1486b91d8d"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7974a0b5ecd505609e3b19742b60cee7aa2aa2fb3151bc917e6e2646d7667dcf"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc54db6c8593ef7d4b2a331b58653356cf04f67c960f584edb7c3d8c97e8f39e"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:311f30128d7d333eebd7896965bfcfbd0065f1716ec92bd5638d7748eb6f936a"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:7d053096f67cd1241601111b698f5cad775f97ab25d81567d3f59219b5f1adbd"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:807f52c1f798eef6cf26beb819eeb8819b1622ddfeef9d0977a8502d4db6d534"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:dccbe65bd2f7f7ec22c4ff99ed56faa1e9f785482b9bbd7c717e26fd723a1d1e"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:2fb9bd477fdea8684f78791a6de97a953c51831ee2981f8e4f583ff3b9d9687e"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:01732659ba9b5b873fc117534143e4feefecf3b2078b0a6a2e925271bb6f4cfa"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-win32.whl", hash = "sha256:7a4f97a081603d2050bfaffdefa5b02a9ec823f8348a572e39032caa8404a487"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:7b1bef6280950ee6c177b326508f86cad7ad4dff12454483b51d8b7d673a2c5d"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ecddf25bee22fe4fe3737a399d0d177d72bc22be6913acfab364b40bce1ba83c"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c60ca7339acd497a55b0ea5d506b2a2612afb2826560416f6894e8b5770d4a9"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b7b2d86dd06bfc2ade3312a83a5c364c7ec2e3498f8734282c6c3d4b07b346b8"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dd78cfcda14a1ef52584dbb008f7ac81c1328c0f58184bf9a84c49c605002da6"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e27f48bcd0957c6d4cb9d6fa6b61d192d0b13d5ef563e5f2ae35feafc0d179c"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:01ad647cdd609225c5350561d084b42ddf732f4eeefe6e678765636791e78b9a"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:619a609aa74ae43d90ed2e89bdd784765de0a25ca761b93e196d938b8fd1dbbd"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:89149166622f4db9b4b6a449256291dc87a99ee53151c74cbd82a53c8c2f6ccd"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:7709f51f5f7c853f0fb938bcd3bc59cdfdc5203635ffd18bf354f6967ea0f824"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:345b0426edd4e18138d6528aed636de7a9ed169b4aaf9d61a8c19e39d26838ca"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:0907f11d019260cdc3f94fbdb23ff9125f6b5d1039b76003b5b0ac9d6a6c9d5b"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-win32.whl", hash = "sha256:ea0d8d539afa5eb2728aa1932a988a9a7af94f18582ffae4bc10b3fbdad0626e"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:329ce159e82018d646c7ac45b01a430369d526569ec08516081727a20e9e4af4"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:b97e690a2118911e39b4042088092771b4ae3fc3aa86518f84b8cf6888dbdb41"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78baa6d91634dfb69ec52a463534bc0df05dbd546209b79a3880a34487f4b84f"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a2bc9f351a75ef49d664206d51f8e5ede9da246602dc2d2726837620ea034b2"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75832c08354f595c760a804588b9357d34ec00ba1c940c15e31e96d902093770"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0af291f4fe114be0280cdd29d533696a77b5b49cfde5467176ecab32353395c4"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0167ddc8ab6508fe81860a57dd472b2ef4060e8d378f0cc555707126830f2537"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2a75d49014d118e4198bcee5ee0a6f25856b29b12dbf7cd012791f8a6cc5c496"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:363e2f92b0f0174b2f8238240a1a30142e3db7b957a5dd5689b0e75fb717cc78"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ab36c8eb7e454e34e60eb55ca5d241a5d18b2c6244f6827a30e451c42410b5f7"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:4c0907b1928a36d5a998d72d64d8eaa7244989f7aaaf947500d3a800c83a3fd6"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:04432ad9479fa40ec0f387795ddad4437a2b50417c69fa275e212933519ff294"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-win32.whl", hash = "sha256:3bed14e9c89dcb10e8f3a29f9ccac4955aebe93c71ae803af79265c9ca5644c5"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:49402233c892a461407c512a19435d1ce275543138294f7ef013f0b63d5d3765"}, + {file = "charset_normalizer-3.4.1-py3-none-any.whl", hash = "sha256:d98b1668f06378c6dbefec3b92299716b931cd4e6061f3c875a71ced1780ab85"}, + {file = "charset_normalizer-3.4.1.tar.gz", hash = "sha256:44251f18cd68a75b56585dd00dae26183e102cd5e0f9f1466e6df5da2ed64ea3"}, ] [[package]] @@ -207,80 +194,90 @@ requests = ">=2.6.0" [[package]] name = "ddtrace" -version = "2.17.0" +version = "2.20.0" description = "Datadog APM client library" optional = false python-versions = ">=3.7" files = [ - {file = "ddtrace-2.17.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:ae5f809923e1155a897146b233c7e4f426e369cfea36e51d2a34c24ee243cddd"}, - {file = "ddtrace-2.17.0-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:378ee9d7bce50ce7d641f6a2c3f970239726e1bba10ad1ddfd30ead28021bf58"}, - {file = "ddtrace-2.17.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c812167071a7ece0ac033526318a688c71de5861706a8b66e8edb6b8552366f8"}, - {file = "ddtrace-2.17.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca41b40c0ca1071ad63f086a54932944f379039d9858ad90c394f5f926a1fbae"}, - {file = "ddtrace-2.17.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ca8068b0f93ab28bc01cd3230e8f7615a80ce913ae64c197fe9b82e6de9bb14"}, - {file = "ddtrace-2.17.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:71af44f381f56d74fab09f5538a44804bc1372ee1e4923ccaba76628dea3355d"}, - {file = "ddtrace-2.17.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:63bdc9d4ffab38804e7c5fcd7d1878ed01e5e651f5a98879bd5b6011915a0905"}, - {file = "ddtrace-2.17.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:d38ef95fb968f5b06e436ba9443879aa056d4d19851bea53b63b9e280f19684f"}, - {file = "ddtrace-2.17.0-cp310-cp310-win32.whl", hash = "sha256:feeaab6f86fdea1244c3e62c4d089f8bd62d4a4fb3b08e9b3793c4d43f3bdd40"}, - {file = "ddtrace-2.17.0-cp310-cp310-win_amd64.whl", hash = "sha256:9ddfdd125799aaf898c76c3086e642e9e4b9afdd31f9c82ca8bce746598e8ecc"}, - {file = "ddtrace-2.17.0-cp311-cp311-macosx_12_0_universal2.whl", hash = "sha256:6e328ca2af3dc42fad6972d35d6a8a96537f3c3a3b57184776dd74953a3ea92c"}, - {file = "ddtrace-2.17.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:1f03ffe8759caef237e1c1df7a81224cc8d9d3cfed49f6dc8cd581fa1d9c97e5"}, - {file = "ddtrace-2.17.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52b317b593ecb88d84de53ddc550ea812a47b0498c96068f35e922bbcefb792b"}, - {file = "ddtrace-2.17.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6c5008e2b79f066072ae918224c9b8e2096b98484e979549993b39452cb2db3a"}, - {file = "ddtrace-2.17.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:16d62a7b0d5f751012ccc750b580a4b94f35fa0331eb9895dd8196341b82c5c1"}, - {file = "ddtrace-2.17.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:18e18b122dc46e0885302989727dd96725bf870308273d21224b64546707b404"}, - {file = "ddtrace-2.17.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fce47e8c19d3d68ab1d68fe9f36cf3050ddb456a2baf842868d3d8f6142b9a2a"}, - {file = "ddtrace-2.17.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e158201f3cd3f29bbcb9656bc71517c646a97a8ecdfa55fac7c716a15b51e2da"}, - {file = "ddtrace-2.17.0-cp311-cp311-win32.whl", hash = "sha256:49c8782b50d50053663d7eeea4ed6cc9e8957dca36ca1ee3c3d47bbb6bc8fdc2"}, - {file = "ddtrace-2.17.0-cp311-cp311-win_amd64.whl", hash = "sha256:2b4d9a057ce3c67d97a211593d4938808fe0f1540989e9b65b4e1ca181a153fe"}, - {file = "ddtrace-2.17.0-cp312-cp312-macosx_12_0_universal2.whl", hash = "sha256:4efdf9b1cc2df28217633fe15f7bfac2f1368f3b55486e5eb746a0de5ecc14fb"}, - {file = "ddtrace-2.17.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:5cc69b201cf95ad7fad55631267e49650de74669fcb7395af72ef239ba8db3c5"}, - {file = "ddtrace-2.17.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:049891021a34cdefe11be422d5d068ea7f08cda5dbccbeafcd6065c574ad0de8"}, - {file = "ddtrace-2.17.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:56efa7c84b1846ad7cc6390d0ae8a2c75fdb9452252c37f22292cf24ac7b2922"}, - {file = "ddtrace-2.17.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ebef1c3415f2fb42cd4db570b9315195fbcb6b97a89980eb636ee63911233b1"}, - {file = "ddtrace-2.17.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:9bca7341d2d6f804a03243987210873bf317c945e0a017c45903a7e06e3ab5af"}, - {file = "ddtrace-2.17.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:197e4433dd80bc7e4b21d944e0f780c3ae5323967b54af9d6cc6b9ccdf823a1f"}, - {file = "ddtrace-2.17.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:1c313c11d5c9b1efb2a0c5f5a937377d4086cb04c7b3ffd0f708c0a0ee69642a"}, - {file = "ddtrace-2.17.0-cp312-cp312-win32.whl", hash = "sha256:16ac67305d4d8da6b98630aad0d9b0ad482ffba9249d4084eeb1869fd774781b"}, - {file = "ddtrace-2.17.0-cp312-cp312-win_amd64.whl", hash = "sha256:5a1d3779934625bffc082f20035838d40b9dc4aae2145a9077651a9474975d92"}, - {file = "ddtrace-2.17.0-cp37-cp37m-macosx_12_0_x86_64.whl", hash = "sha256:367ec7ab529c52d8dad61bc0eeff121bb032b2ecd70c7c3e47c90ba18527a032"}, - {file = "ddtrace-2.17.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58e078adcf6ad33cf556b8e392a9f2cba104791a3588e458bf27ad696d7061d2"}, - {file = "ddtrace-2.17.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b57996d03badace1581edef7f6007d5b9fcbef01a06ab0fae287dd75def451ad"}, - {file = "ddtrace-2.17.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:725d22381877af3d497a865a3362c46f1edc395f6aece601c16e9ef9d19bb1b5"}, - {file = "ddtrace-2.17.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:2f9da9267ad81e6cc89aaff14f7367f9c9e42c4933d2b842f5e5ca9c4f19ae30"}, - {file = "ddtrace-2.17.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:3d4035b641b96b211998c52d85518c8a4abd59e3e68a584be4c1ff037514d238"}, - {file = "ddtrace-2.17.0-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:87a39f70dc7e41eff7b552a44d023fd28c29a67825bc77ad92e49d4a93a178cc"}, - {file = "ddtrace-2.17.0-cp37-cp37m-win32.whl", hash = "sha256:07bb7aab2dd5598783e6ac1dfed375c1076408a9cd31fe984b38f058ed508a8a"}, - {file = "ddtrace-2.17.0-cp37-cp37m-win_amd64.whl", hash = "sha256:bdccbb8cd7ecabbd989ef8773acbfbcf5e4308447f84381208c5e0716b517dd3"}, - {file = "ddtrace-2.17.0-cp38-cp38-macosx_12_0_universal2.whl", hash = "sha256:f1d874a82300c90efa916c9adfa51754126b338b953ee415bda28766e81c210b"}, - {file = "ddtrace-2.17.0-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:0f4a9180623a9168e6dce9305fd0b2974f11520bade267ab33d3fec396c899b4"}, - {file = "ddtrace-2.17.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:04358661d6a3e548761834afc0ff2c50ad2cb05a2c61cc70eaa025f58e52658d"}, - {file = "ddtrace-2.17.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2d801ad2e6e1ba911904d10a35972d901d206a3a3cb7fcd46c44fd46cd85e7c4"}, - {file = "ddtrace-2.17.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:567b5f5f04bf1a3e77ae49f397899a394e202ce1e78102a0f0033eebfe7c8799"}, - {file = "ddtrace-2.17.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:abc565cc8850aa2244873ce2dc950b59b3e496bd0ecbd2b80602f6f15f3e4608"}, - {file = "ddtrace-2.17.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:7cc8ee99f3333bf24943a5b898d2a6554fad59a760055d7b683809740caa8fea"}, - {file = "ddtrace-2.17.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:dbeb928b71ca9405b2b2accc68071e97f4ad4bb9eba4920c5d5a78937b72c76a"}, - {file = "ddtrace-2.17.0-cp38-cp38-win32.whl", hash = "sha256:3f88c6b892083f65a15ad11ae5b60762cfa96deb73d35cd76c17ae2d45b016c1"}, - {file = "ddtrace-2.17.0-cp38-cp38-win_amd64.whl", hash = "sha256:aebce48a57c3570f30e2e2979ec0b2d334673c9b9a55b3f245c1bc85f012d33a"}, - {file = "ddtrace-2.17.0-cp39-cp39-macosx_12_0_universal2.whl", hash = "sha256:6dd27b037c7a7d68a731b0fb4c4a8cf71f736125caf96e5a6fe5fad5c6ec1938"}, - {file = "ddtrace-2.17.0-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:b689fba18e3af350adf8c2f7dfd41a8c9b3eb06af8c6e9d85291f418082cb6bc"}, - {file = "ddtrace-2.17.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:64b796ab81a1bc243043b64ac62a18c74cf3b375a61cb75584e8851759d658a8"}, - {file = "ddtrace-2.17.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ba0f163d8dc6d4b1a07ded35bdd4475213542433211afcffbf94222a0096e7e"}, - {file = "ddtrace-2.17.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d975cfc86678d408bbe1d6a4432963140931c37e3e343bdf35abd2a1d6712594"}, - {file = "ddtrace-2.17.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:488ac9801ed615aa8b6dee9c8bd08046e853fc725e6cb2585230dfae1a28d034"}, - {file = "ddtrace-2.17.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a3f15ca519f5c14cc439fd915be1ac4951fc56b7143dc53b20eec5ca317558fa"}, - {file = "ddtrace-2.17.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:1e11f59155efd640031f40b3c23666f795e90795053e0f8b036388b108dfec95"}, - {file = "ddtrace-2.17.0-cp39-cp39-win32.whl", hash = "sha256:fa1928ea0a8c5160df51e97d562a4ed8891ae0db749b148b3aaa43c64b291c00"}, - {file = "ddtrace-2.17.0-cp39-cp39-win_amd64.whl", hash = "sha256:121c62710395bd71f7de8605716cac25e9cce3115f42c83729552ba0be35946a"}, - {file = "ddtrace-2.17.0.tar.gz", hash = "sha256:441fbf87025194f954c154b208ce979aa2ce5d03f9ef8da266c94ce09a56c2c5"}, + {file = "ddtrace-2.20.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:e1dee099099b95acf7d0e552179925cfec58a52315cc914d153506367b195bc4"}, + {file = "ddtrace-2.20.0-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:9d209bef14caafcd53be8c14e04741d86c08f76496c1bf755e2eaa38605ce3e0"}, + {file = "ddtrace-2.20.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f37966012078151713d61382de2a7ed710a8f375820e0db41930436b813b651"}, + {file = "ddtrace-2.20.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:879b963baf0b97d5ddd26185ab496b79efd25bbfdc2c25dbb1113ec19dc5abf9"}, + {file = "ddtrace-2.20.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13e9b9a87c9df8a029fd3583ac660538dfa9d53207fee82b7f04749148bf8a3b"}, + {file = "ddtrace-2.20.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:eb76547a4bbf285d03ffc6e065bbad61761954741da2df0e4683d68d46ef2159"}, + {file = "ddtrace-2.20.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:194973afa1e357c68b6a6eceaabbddcef01130d167775126c2a15b3c1827f683"}, + {file = "ddtrace-2.20.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:a71d2fc753b8fa2c3435b6f4d5f820d8deb51f49df59a4886b4da68b67f923d3"}, + {file = "ddtrace-2.20.0-cp310-cp310-win32.whl", hash = "sha256:567054d0c01dc552a8a24c4c9eeb98d778be720d2c4c9536acf1b86d6969a5e4"}, + {file = "ddtrace-2.20.0-cp310-cp310-win_amd64.whl", hash = "sha256:d39f96e2fdfdf7ab43ee89a20d914f5ab12f8f361c390663eacb0e5da6e6e7fb"}, + {file = "ddtrace-2.20.0-cp311-cp311-macosx_12_0_universal2.whl", hash = "sha256:0a1d7eaf6c9a5e0eabb8396f7d19faffc8f76a1ae37f34814c3432a9ca6f31da"}, + {file = "ddtrace-2.20.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:301a7787a34113b56cc9067a593c4717f6e158f2393883c30b59d0a37ebc06fa"}, + {file = "ddtrace-2.20.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d76ce49eb42588766db6756240d746441a66f03932547bfca9c62a8aecdbb38"}, + {file = "ddtrace-2.20.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a84d2e2411496c1b4ca3ce0cfb407d186cb3d13f1769c321fec30e677d815cd8"}, + {file = "ddtrace-2.20.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da47746a24242d805a800bca0a10b1354353e18b0bc4b6caf9c9c1724ba286b0"}, + {file = "ddtrace-2.20.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6f89e6003a738800beeb9948c847366976c73de2e24cc469b644a125f418c0a8"}, + {file = "ddtrace-2.20.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4fca20220bf668ebcac7051d28648b62aa95d2afeb5036ecad167cb454c7dcf1"}, + {file = "ddtrace-2.20.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1197e89fcaaca4ce419e3c812d04c73b8d16973202472cf3f674b4698b967697"}, + {file = "ddtrace-2.20.0-cp311-cp311-win32.whl", hash = "sha256:44bcd604a1d9095f4eb6813db6a677a208bd47884aff9ddc5aa46f596765f38e"}, + {file = "ddtrace-2.20.0-cp311-cp311-win_amd64.whl", hash = "sha256:0a5f092df1ee4d0afe96502866ff0fb446a07c6a23d445ed616f1302c883e1d3"}, + {file = "ddtrace-2.20.0-cp312-cp312-macosx_12_0_universal2.whl", hash = "sha256:f77103d36e6ab52cb45781766620d3874d0a728565afa7fd57f8ce2d5087e8e7"}, + {file = "ddtrace-2.20.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:d1cec952ce2ca9efbb34c8a9ee522e1cc588fe454b9115120b30fd5d0f821512"}, + {file = "ddtrace-2.20.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a4a1da150e92b6d43047f2a91a7d3b7133207f94b82613625abf82662359b30e"}, + {file = "ddtrace-2.20.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:91ab68c1facc6cf04085fdeea53210ed9928e95116809fd9bfe2dea54e83375d"}, + {file = "ddtrace-2.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4fd7ec6410225e64ca875d1bc9bd6bd8489f52dd8558462fbb52447fb8f66ad3"}, + {file = "ddtrace-2.20.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:57864590ddb84da4eb99332fe4b521e6fd747992178e3eabcf4f87406e908bb1"}, + {file = "ddtrace-2.20.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:37693555704a0cbd4a925e4ffe9c6df696146c85557c5f66ce3a7a88406772d9"}, + {file = "ddtrace-2.20.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ae5e802aaefc0cd3b63e3fd46e051a39e9f960a02e89f44a5bb820f445b736f9"}, + {file = "ddtrace-2.20.0-cp312-cp312-win32.whl", hash = "sha256:14fe4f583bec105c40e233c74fcbaea185658651c626ce1609750d83d93a00ae"}, + {file = "ddtrace-2.20.0-cp312-cp312-win_amd64.whl", hash = "sha256:cfbc926ddfeece0312e82f9e00a68001647666d11ceb050a5bbe66ca8931e3d2"}, + {file = "ddtrace-2.20.0-cp313-cp313-macosx_12_0_universal2.whl", hash = "sha256:eeca6b6bd48794d48de438981dccbc96a06366edde798c12b2b3348ca5e03717"}, + {file = "ddtrace-2.20.0-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:3f526e75d1b61019db2cd715e8c7298325e21c3584f8677a7decf37aa81e7284"}, + {file = "ddtrace-2.20.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:96441189ccc772ef4871e23a35cec58a748c16ebfb2293eccaaa719dcbc368fd"}, + {file = "ddtrace-2.20.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4d31d769f222c9a5bde1d4a594da1341014bf02db1a7194f5a41ed7e5c4c9fa8"}, + {file = "ddtrace-2.20.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:54068dbf034e1f607ef5d58a9fa1b26bd78b4f3db0618ce0a3e9c4b04fff7209"}, + {file = "ddtrace-2.20.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:62e86d9b00277fe2b9bdfbc51ca1bc34aa5c1200aa6bc5084c7eaaab28b022de"}, + {file = "ddtrace-2.20.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:c83c2458de1cf1bbac48689c6541a85d54ad94ae6608961e1089cc2959a8c77a"}, + {file = "ddtrace-2.20.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:569d7a92a88ba9b2a203addea688b0585901534c92c2d148ef9f971b6d7b3805"}, + {file = "ddtrace-2.20.0-cp37-cp37m-macosx_12_0_x86_64.whl", hash = "sha256:df413d646fc14b4be51a15ed8e484bcdf3b21e370e2644a586283bcc7e0b2355"}, + {file = "ddtrace-2.20.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:33e4406a436278722df193c93d49e662a8891e8a440fddb273dca9a56fa27947"}, + {file = "ddtrace-2.20.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b9d358bc7b4b1daa2d6e6bc697244b39db653ddd5ae139045941d3db28950bfe"}, + {file = "ddtrace-2.20.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a523924382d2f8f87731e4ad86bbf4721fba9eb807ed3b0c862db6d768e1e81c"}, + {file = "ddtrace-2.20.0-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:0af78a424e9d87250a8648a35b7de5653f27b3f6f6803c1b33780816a07e6d26"}, + {file = "ddtrace-2.20.0-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:2723378e670d27927f7d1ab878c8668fc392a5656a66453b9808e7c4025431fd"}, + {file = "ddtrace-2.20.0-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:01f76fc9bf1413a188ddd59851eb3b668d3de936afed73a5914a817f36e11005"}, + {file = "ddtrace-2.20.0-cp37-cp37m-win32.whl", hash = "sha256:3a615ae95ef8f889304b2958655ac8cda23cf2f2c8faf5d8ff88bd14bdcf3fb4"}, + {file = "ddtrace-2.20.0-cp37-cp37m-win_amd64.whl", hash = "sha256:b90333661ffd3460bae6dbbd7a5f35d8467cff36bd7a689a47b014edb19c0fe6"}, + {file = "ddtrace-2.20.0-cp38-cp38-macosx_12_0_universal2.whl", hash = "sha256:ab27596e82bdfe9c0c5580f6886ec943ae2fe615a446c22470f6a1f9742dec62"}, + {file = "ddtrace-2.20.0-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:e2de7371291283cba1afdd7e919a577637099da0d6872d33b4008e1cad6e1b8b"}, + {file = "ddtrace-2.20.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fa4f90f472768aef8ce023a924505c9d1d09428fc9d6ab81bc0e3ab183e3ff48"}, + {file = "ddtrace-2.20.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:05b68ba6fe4da5317396100669edf91b3d54b95ae979a2a22ca880cfcc6c249d"}, + {file = "ddtrace-2.20.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1512d07e6c7cde13ae251906d57d31613fe5ee99fab2894e90679053b4256953"}, + {file = "ddtrace-2.20.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:dcadc60aa60e11f2db56065a834aaa5e52a9be02e8edc8d14aa7015fb54092ce"}, + {file = "ddtrace-2.20.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:698207d88941ea3e4e5f3add6071e6651caa12fcffe079359507391382251759"}, + {file = "ddtrace-2.20.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:9f95a251f84725df055202d933b4a8fb39cefd51341e10cad17d2a8b4d64700e"}, + {file = "ddtrace-2.20.0-cp38-cp38-win32.whl", hash = "sha256:0b121285459693ae9f3c9ce54cc4be981a2e73d4c52b8a5eb038cf41df9974dd"}, + {file = "ddtrace-2.20.0-cp38-cp38-win_amd64.whl", hash = "sha256:4c840dc91c622138a4a6abdbcbee56897d4c55d9e7bf16b1902ee676f20b22f2"}, + {file = "ddtrace-2.20.0-cp39-cp39-macosx_12_0_universal2.whl", hash = "sha256:c74d69e6a4cbd91f6fe411519d753f34893d6d40a68829b43485690df8a7f30f"}, + {file = "ddtrace-2.20.0-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:4902b64ba89a8e4008228e7a5007e20b2bb8071c6c7689abd47dddc159e2baf1"}, + {file = "ddtrace-2.20.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:758ba828eddd144a4804af692869e7278376efa740932a7453e8fdc0ed6ef6a7"}, + {file = "ddtrace-2.20.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:37995326df811236c9d92d1b5713378a7f11270bf1e21c64914653a3e12d7d01"}, + {file = "ddtrace-2.20.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ab7f1babd7a8e73edf70c957a5b3bbeb4c615b232a078a0fe4da566e1663d1aa"}, + {file = "ddtrace-2.20.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:1cd1b240f465c98e226ab896b1b1c3696752d5eb1051a0aafb8a3db701d2ddc1"}, + {file = "ddtrace-2.20.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3a300515c3327af4fd5c6c83e6ca63cd0a20e4243381d4b712e3f406d9ddf201"}, + {file = "ddtrace-2.20.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:f1ce886b112e0e8aa66ba8cf3593f00f7f6ae6b48dd09bd8ce90c59adad59d66"}, + {file = "ddtrace-2.20.0-cp39-cp39-win32.whl", hash = "sha256:bb77464849b092f93839d5c257df9eaeb018521ddea2deef97dfc6e3501a2516"}, + {file = "ddtrace-2.20.0-cp39-cp39-win_amd64.whl", hash = "sha256:b95f14f0634fe3f02dcebb7b8a124207b3d44168fd0dfc6bfff1e4db93978089"}, + {file = "ddtrace-2.20.0.tar.gz", hash = "sha256:f185c6dd88cd04884f0ad27b37f14d837274e8fc4dc43407781334d92d41c3bc"}, ] [package.dependencies] bytecode = [ - {version = ">=0.15.0", markers = "python_version >= \"3.12.0\""}, + {version = ">=0.16.0", markers = "python_version >= \"3.13.0\""}, + {version = ">=0.15.0", markers = "python_version ~= \"3.12.0\""}, {version = ">=0.14.0", markers = "python_version ~= \"3.11.0\""}, {version = ">=0.13.0", markers = "python_version < \"3.11.0\""}, ] envier = ">=0.5,<1.0" +legacy-cgi = {version = ">=2.0.0", markers = "python_version >= \"3.13.0\""} opentelemetry-api = ">=1" protobuf = ">=3" typing_extensions = "*" @@ -293,20 +290,20 @@ opentracing = ["opentracing (>=2.0.0)"] [[package]] name = "deprecated" -version = "1.2.15" +version = "1.2.18" description = "Python @deprecated decorator to deprecate old python classes, functions or methods." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7" files = [ - {file = "Deprecated-1.2.15-py2.py3-none-any.whl", hash = "sha256:353bc4a8ac4bfc96800ddab349d89c25dec1079f65fd53acdcc1e0b975b21320"}, - {file = "deprecated-1.2.15.tar.gz", hash = "sha256:683e561a90de76239796e6b6feac66b99030d2dd3fcf61ef996330f14bbb9b0d"}, + {file = "Deprecated-1.2.18-py2.py3-none-any.whl", hash = "sha256:bd5011788200372a32418f888e326a09ff80d0214bd961147cfed01b5c018eec"}, + {file = "deprecated-1.2.18.tar.gz", hash = "sha256:422b6f6d859da6f2ef57857761bfb392480502a64c3028ca9bbe86085d72115d"}, ] [package.dependencies] wrapt = ">=1.10,<2" [package.extras] -dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "jinja2 (>=3.0.3,<3.1.0)", "setuptools", "sphinx (<2)", "tox"] +dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "setuptools", "tox"] [[package]] name = "envier" @@ -411,6 +408,17 @@ files = [ {file = "jmespath-1.0.1.tar.gz", hash = "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe"}, ] +[[package]] +name = "legacy-cgi" +version = "2.6.2" +description = "Fork of the standard library cgi and cgitb modules, being deprecated in PEP-594" +optional = false +python-versions = ">=3.10" +files = [ + {file = "legacy_cgi-2.6.2-py3-none-any.whl", hash = "sha256:a7b83afb1baf6ebeb56522537c5943ef9813cf933f6715e88a803f7edbce0bff"}, + {file = "legacy_cgi-2.6.2.tar.gz", hash = "sha256:9952471ceb304043b104c22d00b4f333cac27a6abe446d8a528fc437cf13c85f"}, +] + [[package]] name = "mccabe" version = "0.7.0" @@ -424,13 +432,13 @@ files = [ [[package]] name = "opentelemetry-api" -version = "1.28.2" +version = "1.29.0" description = "OpenTelemetry Python API" optional = false python-versions = ">=3.8" files = [ - {file = "opentelemetry_api-1.28.2-py3-none-any.whl", hash = "sha256:6fcec89e265beb258fe6b1acaaa3c8c705a934bd977b9f534a2b7c0d2d4275a6"}, - {file = "opentelemetry_api-1.28.2.tar.gz", hash = "sha256:ecdc70c7139f17f9b0cf3742d57d7020e3e8315d6cffcdf1a12a905d45b19cc0"}, + {file = "opentelemetry_api-1.29.0-py3-none-any.whl", hash = "sha256:5fcd94c4141cc49c736271f3e1efb777bebe9cc535759c54c936cca4f1b312b8"}, + {file = "opentelemetry_api-1.29.0.tar.gz", hash = "sha256:d04a6cf78aad09614f52964ecb38021e248f5714dc32c2e0d8fd99517b4d69cf"}, ] [package.dependencies] @@ -465,22 +473,22 @@ testing = ["pytest", "pytest-benchmark"] [[package]] name = "protobuf" -version = "5.28.3" +version = "5.29.3" description = "" optional = false python-versions = ">=3.8" files = [ - {file = "protobuf-5.28.3-cp310-abi3-win32.whl", hash = "sha256:0c4eec6f987338617072592b97943fdbe30d019c56126493111cf24344c1cc24"}, - {file = "protobuf-5.28.3-cp310-abi3-win_amd64.whl", hash = "sha256:91fba8f445723fcf400fdbe9ca796b19d3b1242cd873907979b9ed71e4afe868"}, - {file = "protobuf-5.28.3-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:a3f6857551e53ce35e60b403b8a27b0295f7d6eb63d10484f12bc6879c715687"}, - {file = "protobuf-5.28.3-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:3fa2de6b8b29d12c61911505d893afe7320ce7ccba4df913e2971461fa36d584"}, - {file = "protobuf-5.28.3-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:712319fbdddb46f21abb66cd33cb9e491a5763b2febd8f228251add221981135"}, - {file = "protobuf-5.28.3-cp38-cp38-win32.whl", hash = "sha256:3e6101d095dfd119513cde7259aa703d16c6bbdfae2554dfe5cfdbe94e32d548"}, - {file = "protobuf-5.28.3-cp38-cp38-win_amd64.whl", hash = "sha256:27b246b3723692bf1068d5734ddaf2fccc2cdd6e0c9b47fe099244d80200593b"}, - {file = "protobuf-5.28.3-cp39-cp39-win32.whl", hash = "sha256:135658402f71bbd49500322c0f736145731b16fc79dc8f367ab544a17eab4535"}, - {file = "protobuf-5.28.3-cp39-cp39-win_amd64.whl", hash = "sha256:70585a70fc2dd4818c51287ceef5bdba6387f88a578c86d47bb34669b5552c36"}, - {file = "protobuf-5.28.3-py3-none-any.whl", hash = "sha256:cee1757663fa32a1ee673434fcf3bf24dd54763c79690201208bafec62f19eed"}, - {file = "protobuf-5.28.3.tar.gz", hash = "sha256:64badbc49180a5e401f373f9ce7ab1d18b63f7dd4a9cdc43c92b9f0b481cef7b"}, + {file = "protobuf-5.29.3-cp310-abi3-win32.whl", hash = "sha256:3ea51771449e1035f26069c4c7fd51fba990d07bc55ba80701c78f886bf9c888"}, + {file = "protobuf-5.29.3-cp310-abi3-win_amd64.whl", hash = "sha256:a4fa6f80816a9a0678429e84973f2f98cbc218cca434abe8db2ad0bffc98503a"}, + {file = "protobuf-5.29.3-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:a8434404bbf139aa9e1300dbf989667a83d42ddda9153d8ab76e0d5dcaca484e"}, + {file = "protobuf-5.29.3-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:daaf63f70f25e8689c072cfad4334ca0ac1d1e05a92fc15c54eb9cf23c3efd84"}, + {file = "protobuf-5.29.3-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:c027e08a08be10b67c06bf2370b99c811c466398c357e615ca88c91c07f0910f"}, + {file = "protobuf-5.29.3-cp38-cp38-win32.whl", hash = "sha256:84a57163a0ccef3f96e4b6a20516cedcf5bb3a95a657131c5c3ac62200d23252"}, + {file = "protobuf-5.29.3-cp38-cp38-win_amd64.whl", hash = "sha256:b89c115d877892a512f79a8114564fb435943b59067615894c3b13cd3e1fa107"}, + {file = "protobuf-5.29.3-cp39-cp39-win32.whl", hash = "sha256:0eb32bfa5219fc8d4111803e9a690658aa2e6366384fd0851064b963b6d1f2a7"}, + {file = "protobuf-5.29.3-cp39-cp39-win_amd64.whl", hash = "sha256:6ce8cc3389a20693bfde6c6562e03474c40851b44975c9b2bf6df7d8c4f864da"}, + {file = "protobuf-5.29.3-py3-none-any.whl", hash = "sha256:0a18ed4a24198528f2333802eb075e59dea9d679ab7a6c5efb017a59004d849f"}, + {file = "protobuf-5.29.3.tar.gz", hash = "sha256:5da0f41edaf117bde316404bad1a486cb4ededf8e4a54891296f648e8e076620"}, ] [[package]] @@ -518,13 +526,13 @@ files = [ [[package]] name = "pytest" -version = "8.3.3" +version = "8.3.4" description = "pytest: simple powerful testing with Python" optional = true python-versions = ">=3.8" files = [ - {file = "pytest-8.3.3-py3-none-any.whl", hash = "sha256:a6853c7375b2663155079443d2e45de913a911a11d669df02a50814944db57b2"}, - {file = "pytest-8.3.3.tar.gz", hash = "sha256:70b98107bd648308a7952b06e6ca9a50bc660be218d53c257cc1fc94fda10181"}, + {file = "pytest-8.3.4-py3-none-any.whl", hash = "sha256:50e16d954148559c9a74109af1eaf0c945ba2d8f30f0a3d3335edde19788b6f6"}, + {file = "pytest-8.3.4.tar.gz", hash = "sha256:965370d062bce11e73868e0335abac31b4d3de0e82f4007408d242b4f8610761"}, ] [package.dependencies] @@ -595,41 +603,71 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "s3transfer" -version = "0.10.4" +version = "0.11.2" description = "An Amazon S3 Transfer Manager" optional = true python-versions = ">=3.8" files = [ - {file = "s3transfer-0.10.4-py3-none-any.whl", hash = "sha256:244a76a24355363a68164241438de1b72f8781664920260c48465896b712a41e"}, - {file = "s3transfer-0.10.4.tar.gz", hash = "sha256:29edc09801743c21eb5ecbc617a152df41d3c287f67b615f73e5f750583666a7"}, + {file = "s3transfer-0.11.2-py3-none-any.whl", hash = "sha256:be6ecb39fadd986ef1701097771f87e4d2f821f27f6071c872143884d2950fbc"}, + {file = "s3transfer-0.11.2.tar.gz", hash = "sha256:3b39185cb72f5acc77db1a58b6e25b977f28d20496b6e58d6813d75f464d632f"}, ] [package.dependencies] -botocore = ">=1.33.2,<2.0a.0" +botocore = ">=1.36.0,<2.0a.0" [package.extras] -crt = ["botocore[crt] (>=1.33.2,<2.0a.0)"] +crt = ["botocore[crt] (>=1.36.0,<2.0a.0)"] [[package]] name = "six" -version = "1.16.0" +version = "1.17.0" description = "Python 2 and 3 compatibility utilities" optional = true -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ - {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, - {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, + {file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"}, + {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"}, ] [[package]] name = "tomli" -version = "2.1.0" +version = "2.2.1" description = "A lil' TOML parser" optional = true python-versions = ">=3.8" files = [ - {file = "tomli-2.1.0-py3-none-any.whl", hash = "sha256:a5c57c3d1c56f5ccdf89f6523458f60ef716e210fc47c4cfb188c5ba473e0391"}, - {file = "tomli-2.1.0.tar.gz", hash = "sha256:3f646cae2aec94e17d04973e4249548320197cfabdf130015d023de4b74d8ab8"}, + {file = "tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249"}, + {file = "tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6"}, + {file = "tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a"}, + {file = "tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee"}, + {file = "tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e"}, + {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4"}, + {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106"}, + {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8"}, + {file = "tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff"}, + {file = "tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b"}, + {file = "tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea"}, + {file = "tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8"}, + {file = "tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192"}, + {file = "tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222"}, + {file = "tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77"}, + {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6"}, + {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd"}, + {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e"}, + {file = "tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98"}, + {file = "tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4"}, + {file = "tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7"}, + {file = "tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c"}, + {file = "tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13"}, + {file = "tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281"}, + {file = "tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272"}, + {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140"}, + {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2"}, + {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744"}, + {file = "tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec"}, + {file = "tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69"}, + {file = "tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc"}, + {file = "tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff"}, ] [[package]] @@ -748,13 +786,13 @@ socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] [[package]] name = "urllib3" -version = "2.2.3" +version = "2.3.0" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"}, - {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"}, + {file = "urllib3-2.3.0-py3-none-any.whl", hash = "sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df"}, + {file = "urllib3-2.3.0.tar.gz", hash = "sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d"}, ] [package.extras] @@ -765,81 +803,90 @@ zstd = ["zstandard (>=0.18.0)"] [[package]] name = "wrapt" -version = "1.16.0" +version = "1.17.2" description = "Module for decorators, wrappers and monkey patching." optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "wrapt-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4"}, - {file = "wrapt-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb2dee3874a500de01c93d5c71415fcaef1d858370d405824783e7a8ef5db440"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a88e6010048489cda82b1326889ec075a8c856c2e6a256072b28eaee3ccf487"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac83a914ebaf589b69f7d0a1277602ff494e21f4c2f743313414378f8f50a4cf"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:73aa7d98215d39b8455f103de64391cb79dfcad601701a3aa0dddacf74911d72"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:807cc8543a477ab7422f1120a217054f958a66ef7314f76dd9e77d3f02cdccd0"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bf5703fdeb350e36885f2875d853ce13172ae281c56e509f4e6eca049bdfb136"}, - {file = "wrapt-1.16.0-cp310-cp310-win32.whl", hash = "sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d"}, - {file = "wrapt-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:decbfa2f618fa8ed81c95ee18a387ff973143c656ef800c9f24fb7e9c16054e2"}, - {file = "wrapt-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09"}, - {file = "wrapt-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43aa59eadec7890d9958748db829df269f0368521ba6dc68cc172d5d03ed8060"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72554a23c78a8e7aa02abbd699d129eead8b147a23c56e08d08dfc29cfdddca1"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d2efee35b4b0a347e0d99d28e884dfd82797852d62fcd7ebdeee26f3ceb72cf3"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6dcfcffe73710be01d90cae08c3e548d90932d37b39ef83969ae135d36ef3956"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:eb6e651000a19c96f452c85132811d25e9264d836951022d6e81df2fff38337d"}, - {file = "wrapt-1.16.0-cp311-cp311-win32.whl", hash = "sha256:66027d667efe95cc4fa945af59f92c5a02c6f5bb6012bff9e60542c74c75c362"}, - {file = "wrapt-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89"}, - {file = "wrapt-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b"}, - {file = "wrapt-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c"}, - {file = "wrapt-1.16.0-cp312-cp312-win32.whl", hash = "sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc"}, - {file = "wrapt-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8"}, - {file = "wrapt-1.16.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d462f28826f4657968ae51d2181a074dfe03c200d6131690b7d65d55b0f360f8"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a33a747400b94b6d6b8a165e4480264a64a78c8a4c734b62136062e9a248dd39"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3646eefa23daeba62643a58aac816945cadc0afaf21800a1421eeba5f6cfb9c"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ebf019be5c09d400cf7b024aa52b1f3aeebeff51550d007e92c3c1c4afc2a40"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:1acd723ee2a8826f3d53910255643e33673e1d11db84ce5880675954183ec47e"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:bc57efac2da352a51cc4658878a68d2b1b67dbe9d33c36cb826ca449d80a8465"}, - {file = "wrapt-1.16.0-cp36-cp36m-win32.whl", hash = "sha256:da4813f751142436b075ed7aa012a8778aa43a99f7b36afe9b742d3ed8bdc95e"}, - {file = "wrapt-1.16.0-cp36-cp36m-win_amd64.whl", hash = "sha256:6f6eac2360f2d543cc875a0e5efd413b6cbd483cb3ad7ebf888884a6e0d2e966"}, - {file = "wrapt-1.16.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a0ea261ce52b5952bf669684a251a66df239ec6d441ccb59ec7afa882265d593"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bd2d7ff69a2cac767fbf7a2b206add2e9a210e57947dd7ce03e25d03d2de292"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9159485323798c8dc530a224bd3ffcf76659319ccc7bbd52e01e73bd0241a0c5"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a86373cf37cd7764f2201b76496aba58a52e76dedfaa698ef9e9688bfd9e41cf"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:73870c364c11f03ed072dda68ff7aea6d2a3a5c3fe250d917a429c7432e15228"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b935ae30c6e7400022b50f8d359c03ed233d45b725cfdd299462f41ee5ffba6f"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:db98ad84a55eb09b3c32a96c576476777e87c520a34e2519d3e59c44710c002c"}, - {file = "wrapt-1.16.0-cp37-cp37m-win32.whl", hash = "sha256:9153ed35fc5e4fa3b2fe97bddaa7cbec0ed22412b85bcdaf54aeba92ea37428c"}, - {file = "wrapt-1.16.0-cp37-cp37m-win_amd64.whl", hash = "sha256:66dfbaa7cfa3eb707bbfcd46dab2bc6207b005cbc9caa2199bcbc81d95071a00"}, - {file = "wrapt-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1dd50a2696ff89f57bd8847647a1c363b687d3d796dc30d4dd4a9d1689a706f0"}, - {file = "wrapt-1.16.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:44a2754372e32ab315734c6c73b24351d06e77ffff6ae27d2ecf14cf3d229202"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e9723528b9f787dc59168369e42ae1c3b0d3fadb2f1a71de14531d321ee05b0"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbed418ba5c3dce92619656802cc5355cb679e58d0d89b50f116e4a9d5a9603e"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:941988b89b4fd6b41c3f0bfb20e92bd23746579736b7343283297c4c8cbae68f"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6a42cd0cfa8ffc1915aef79cb4284f6383d8a3e9dcca70c445dcfdd639d51267"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1ca9b6085e4f866bd584fb135a041bfc32cab916e69f714a7d1d397f8c4891ca"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5e49454f19ef621089e204f862388d29e6e8d8b162efce05208913dde5b9ad6"}, - {file = "wrapt-1.16.0-cp38-cp38-win32.whl", hash = "sha256:c31f72b1b6624c9d863fc095da460802f43a7c6868c5dda140f51da24fd47d7b"}, - {file = "wrapt-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:490b0ee15c1a55be9c1bd8609b8cecd60e325f0575fc98f50058eae366e01f41"}, - {file = "wrapt-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9b201ae332c3637a42f02d1045e1d0cccfdc41f1f2f801dafbaa7e9b4797bfc2"}, - {file = "wrapt-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2076fad65c6736184e77d7d4729b63a6d1ae0b70da4868adeec40989858eb3fb"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5cd603b575ebceca7da5a3a251e69561bec509e0b46e4993e1cac402b7247b8"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b47cfad9e9bbbed2339081f4e346c93ecd7ab504299403320bf85f7f85c7d46c"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5f15814a33e42b04e3de432e573aa557f9f0f56458745c2074952f564c50e664"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db2e408d983b0e61e238cf579c09ef7020560441906ca990fe8412153e3b291f"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:edfad1d29c73f9b863ebe7082ae9321374ccb10879eeabc84ba3b69f2579d537"}, - {file = "wrapt-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed867c42c268f876097248e05b6117a65bcd1e63b779e916fe2e33cd6fd0d3c3"}, - {file = "wrapt-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:eb1b046be06b0fce7249f1d025cd359b4b80fc1c3e24ad9eca33e0dcdb2e4a35"}, - {file = "wrapt-1.16.0-py3-none-any.whl", hash = "sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1"}, - {file = "wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d"}, + {file = "wrapt-1.17.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3d57c572081fed831ad2d26fd430d565b76aa277ed1d30ff4d40670b1c0dd984"}, + {file = "wrapt-1.17.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b5e251054542ae57ac7f3fba5d10bfff615b6c2fb09abeb37d2f1463f841ae22"}, + {file = "wrapt-1.17.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:80dd7db6a7cb57ffbc279c4394246414ec99537ae81ffd702443335a61dbf3a7"}, + {file = "wrapt-1.17.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a6e821770cf99cc586d33833b2ff32faebdbe886bd6322395606cf55153246c"}, + {file = "wrapt-1.17.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b60fb58b90c6d63779cb0c0c54eeb38941bae3ecf7a73c764c52c88c2dcb9d72"}, + {file = "wrapt-1.17.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b870b5df5b71d8c3359d21be8f0d6c485fa0ebdb6477dda51a1ea54a9b558061"}, + {file = "wrapt-1.17.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:4011d137b9955791f9084749cba9a367c68d50ab8d11d64c50ba1688c9b457f2"}, + {file = "wrapt-1.17.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:1473400e5b2733e58b396a04eb7f35f541e1fb976d0c0724d0223dd607e0f74c"}, + {file = "wrapt-1.17.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3cedbfa9c940fdad3e6e941db7138e26ce8aad38ab5fe9dcfadfed9db7a54e62"}, + {file = "wrapt-1.17.2-cp310-cp310-win32.whl", hash = "sha256:582530701bff1dec6779efa00c516496968edd851fba224fbd86e46cc6b73563"}, + {file = "wrapt-1.17.2-cp310-cp310-win_amd64.whl", hash = "sha256:58705da316756681ad3c9c73fd15499aa4d8c69f9fd38dc8a35e06c12468582f"}, + {file = "wrapt-1.17.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ff04ef6eec3eee8a5efef2401495967a916feaa353643defcc03fc74fe213b58"}, + {file = "wrapt-1.17.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4db983e7bca53819efdbd64590ee96c9213894272c776966ca6306b73e4affda"}, + {file = "wrapt-1.17.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9abc77a4ce4c6f2a3168ff34b1da9b0f311a8f1cfd694ec96b0603dff1c79438"}, + {file = "wrapt-1.17.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b929ac182f5ace000d459c59c2c9c33047e20e935f8e39371fa6e3b85d56f4a"}, + {file = "wrapt-1.17.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f09b286faeff3c750a879d336fb6d8713206fc97af3adc14def0cdd349df6000"}, + {file = "wrapt-1.17.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a7ed2d9d039bd41e889f6fb9364554052ca21ce823580f6a07c4ec245c1f5d6"}, + {file = "wrapt-1.17.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:129a150f5c445165ff941fc02ee27df65940fcb8a22a61828b1853c98763a64b"}, + {file = "wrapt-1.17.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1fb5699e4464afe5c7e65fa51d4f99e0b2eadcc176e4aa33600a3df7801d6662"}, + {file = "wrapt-1.17.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9a2bce789a5ea90e51a02dfcc39e31b7f1e662bc3317979aa7e5538e3a034f72"}, + {file = "wrapt-1.17.2-cp311-cp311-win32.whl", hash = "sha256:4afd5814270fdf6380616b321fd31435a462019d834f83c8611a0ce7484c7317"}, + {file = "wrapt-1.17.2-cp311-cp311-win_amd64.whl", hash = "sha256:acc130bc0375999da18e3d19e5a86403667ac0c4042a094fefb7eec8ebac7cf3"}, + {file = "wrapt-1.17.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d5e2439eecc762cd85e7bd37161d4714aa03a33c5ba884e26c81559817ca0925"}, + {file = "wrapt-1.17.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3fc7cb4c1c744f8c05cd5f9438a3caa6ab94ce8344e952d7c45a8ed59dd88392"}, + {file = "wrapt-1.17.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8fdbdb757d5390f7c675e558fd3186d590973244fab0c5fe63d373ade3e99d40"}, + {file = "wrapt-1.17.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bb1d0dbf99411f3d871deb6faa9aabb9d4e744d67dcaaa05399af89d847a91d"}, + {file = "wrapt-1.17.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d18a4865f46b8579d44e4fe1e2bcbc6472ad83d98e22a26c963d46e4c125ef0b"}, + {file = "wrapt-1.17.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc570b5f14a79734437cb7b0500376b6b791153314986074486e0b0fa8d71d98"}, + {file = "wrapt-1.17.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6d9187b01bebc3875bac9b087948a2bccefe464a7d8f627cf6e48b1bbae30f82"}, + {file = "wrapt-1.17.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:9e8659775f1adf02eb1e6f109751268e493c73716ca5761f8acb695e52a756ae"}, + {file = "wrapt-1.17.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e8b2816ebef96d83657b56306152a93909a83f23994f4b30ad4573b00bd11bb9"}, + {file = "wrapt-1.17.2-cp312-cp312-win32.whl", hash = "sha256:468090021f391fe0056ad3e807e3d9034e0fd01adcd3bdfba977b6fdf4213ea9"}, + {file = "wrapt-1.17.2-cp312-cp312-win_amd64.whl", hash = "sha256:ec89ed91f2fa8e3f52ae53cd3cf640d6feff92ba90d62236a81e4e563ac0e991"}, + {file = "wrapt-1.17.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:6ed6ffac43aecfe6d86ec5b74b06a5be33d5bb9243d055141e8cabb12aa08125"}, + {file = "wrapt-1.17.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:35621ae4c00e056adb0009f8e86e28eb4a41a4bfa8f9bfa9fca7d343fe94f998"}, + {file = "wrapt-1.17.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a604bf7a053f8362d27eb9fefd2097f82600b856d5abe996d623babd067b1ab5"}, + {file = "wrapt-1.17.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5cbabee4f083b6b4cd282f5b817a867cf0b1028c54d445b7ec7cfe6505057cf8"}, + {file = "wrapt-1.17.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49703ce2ddc220df165bd2962f8e03b84c89fee2d65e1c24a7defff6f988f4d6"}, + {file = "wrapt-1.17.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8112e52c5822fc4253f3901b676c55ddf288614dc7011634e2719718eaa187dc"}, + {file = "wrapt-1.17.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9fee687dce376205d9a494e9c121e27183b2a3df18037f89d69bd7b35bcf59e2"}, + {file = "wrapt-1.17.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:18983c537e04d11cf027fbb60a1e8dfd5190e2b60cc27bc0808e653e7b218d1b"}, + {file = "wrapt-1.17.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:703919b1633412ab54bcf920ab388735832fdcb9f9a00ae49387f0fe67dad504"}, + {file = "wrapt-1.17.2-cp313-cp313-win32.whl", hash = "sha256:abbb9e76177c35d4e8568e58650aa6926040d6a9f6f03435b7a522bf1c487f9a"}, + {file = "wrapt-1.17.2-cp313-cp313-win_amd64.whl", hash = "sha256:69606d7bb691b50a4240ce6b22ebb319c1cfb164e5f6569835058196e0f3a845"}, + {file = "wrapt-1.17.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:4a721d3c943dae44f8e243b380cb645a709ba5bd35d3ad27bc2ed947e9c68192"}, + {file = "wrapt-1.17.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:766d8bbefcb9e00c3ac3b000d9acc51f1b399513f44d77dfe0eb026ad7c9a19b"}, + {file = "wrapt-1.17.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e496a8ce2c256da1eb98bd15803a79bee00fc351f5dfb9ea82594a3f058309e0"}, + {file = "wrapt-1.17.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d615e4fe22f4ad3528448c193b218e077656ca9ccb22ce2cb20db730f8d306"}, + {file = "wrapt-1.17.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a5aaeff38654462bc4b09023918b7f21790efb807f54c000a39d41d69cf552cb"}, + {file = "wrapt-1.17.2-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a7d15bbd2bc99e92e39f49a04653062ee6085c0e18b3b7512a4f2fe91f2d681"}, + {file = "wrapt-1.17.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:e3890b508a23299083e065f435a492b5435eba6e304a7114d2f919d400888cc6"}, + {file = "wrapt-1.17.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:8c8b293cd65ad716d13d8dd3624e42e5a19cc2a2f1acc74b30c2c13f15cb61a6"}, + {file = "wrapt-1.17.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4c82b8785d98cdd9fed4cac84d765d234ed3251bd6afe34cb7ac523cb93e8b4f"}, + {file = "wrapt-1.17.2-cp313-cp313t-win32.whl", hash = "sha256:13e6afb7fe71fe7485a4550a8844cc9ffbe263c0f1a1eea569bc7091d4898555"}, + {file = "wrapt-1.17.2-cp313-cp313t-win_amd64.whl", hash = "sha256:eaf675418ed6b3b31c7a989fd007fa7c3be66ce14e5c3b27336383604c9da85c"}, + {file = "wrapt-1.17.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5c803c401ea1c1c18de70a06a6f79fcc9c5acfc79133e9869e730ad7f8ad8ef9"}, + {file = "wrapt-1.17.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f917c1180fdb8623c2b75a99192f4025e412597c50b2ac870f156de8fb101119"}, + {file = "wrapt-1.17.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ecc840861360ba9d176d413a5489b9a0aff6d6303d7e733e2c4623cfa26904a6"}, + {file = "wrapt-1.17.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb87745b2e6dc56361bfde481d5a378dc314b252a98d7dd19a651a3fa58f24a9"}, + {file = "wrapt-1.17.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58455b79ec2661c3600e65c0a716955adc2410f7383755d537584b0de41b1d8a"}, + {file = "wrapt-1.17.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4e42a40a5e164cbfdb7b386c966a588b1047558a990981ace551ed7e12ca9c2"}, + {file = "wrapt-1.17.2-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:91bd7d1773e64019f9288b7a5101f3ae50d3d8e6b1de7edee9c2ccc1d32f0c0a"}, + {file = "wrapt-1.17.2-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:bb90fb8bda722a1b9d48ac1e6c38f923ea757b3baf8ebd0c82e09c5c1a0e7a04"}, + {file = "wrapt-1.17.2-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:08e7ce672e35efa54c5024936e559469436f8b8096253404faeb54d2a878416f"}, + {file = "wrapt-1.17.2-cp38-cp38-win32.whl", hash = "sha256:410a92fefd2e0e10d26210e1dfb4a876ddaf8439ef60d6434f21ef8d87efc5b7"}, + {file = "wrapt-1.17.2-cp38-cp38-win_amd64.whl", hash = "sha256:95c658736ec15602da0ed73f312d410117723914a5c91a14ee4cdd72f1d790b3"}, + {file = "wrapt-1.17.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:99039fa9e6306880572915728d7f6c24a86ec57b0a83f6b2491e1d8ab0235b9a"}, + {file = "wrapt-1.17.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2696993ee1eebd20b8e4ee4356483c4cb696066ddc24bd70bcbb80fa56ff9061"}, + {file = "wrapt-1.17.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:612dff5db80beef9e649c6d803a8d50c409082f1fedc9dbcdfde2983b2025b82"}, + {file = "wrapt-1.17.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:62c2caa1585c82b3f7a7ab56afef7b3602021d6da34fbc1cf234ff139fed3cd9"}, + {file = "wrapt-1.17.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c958bcfd59bacc2d0249dcfe575e71da54f9dcf4a8bdf89c4cb9a68a1170d73f"}, + {file = "wrapt-1.17.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc78a84e2dfbc27afe4b2bd7c80c8db9bca75cc5b85df52bfe634596a1da846b"}, + {file = "wrapt-1.17.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:ba0f0eb61ef00ea10e00eb53a9129501f52385c44853dbd6c4ad3f403603083f"}, + {file = "wrapt-1.17.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:1e1fe0e6ab7775fd842bc39e86f6dcfc4507ab0ffe206093e76d61cde37225c8"}, + {file = "wrapt-1.17.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:c86563182421896d73858e08e1db93afdd2b947a70064b813d515d66549e15f9"}, + {file = "wrapt-1.17.2-cp39-cp39-win32.whl", hash = "sha256:f393cda562f79828f38a819f4788641ac7c4085f30f1ce1a68672baa686482bb"}, + {file = "wrapt-1.17.2-cp39-cp39-win_amd64.whl", hash = "sha256:36ccae62f64235cf8ddb682073a60519426fdd4725524ae38874adf72b5f2aeb"}, + {file = "wrapt-1.17.2-py3-none-any.whl", hash = "sha256:b18f2d1533a71f069c7f82d524a52599053d4c7166e9dd374ae2136b7f40f7c8"}, + {file = "wrapt-1.17.2.tar.gz", hash = "sha256:41388e9d4d1522446fe79d3213196bd9e3b301a336965b9e27ca2788ebd122f3"}, ] [[package]] @@ -878,4 +925,4 @@ dev = ["boto3", "flake8", "pytest", "pytest-benchmark", "requests"] [metadata] lock-version = "2.0" python-versions = ">=3.8.0,<4" -content-hash = "04aacf2bfd2b88de8559d11d8773aea6016bad1e2670462bd301cefb54e996f5" +content-hash = "9128af5437fd535ec458c64280d8390574c632e704cace5ea783de3c5d453c8c" diff --git a/pyproject.toml b/pyproject.toml index 3d97e0e09..94d900767 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -21,13 +21,14 @@ classifiers = [ "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", ] [tool.poetry.dependencies] python = ">=3.8.0,<4" datadog = ">=0.51.0,<1.0.0" wrapt = "^1.11.2" -ddtrace = ">=2.17.0" +ddtrace = ">=2.20.0" ujson = ">=5.9.0" boto3 = { version = "^1.34.0", optional = true } requests = { version ="^2.22.0", optional = true } diff --git a/scripts/add_new_region.sh b/scripts/add_new_region.sh index 434632d94..576d13e7f 100755 --- a/scripts/add_new_region.sh +++ b/scripts/add_new_region.sh @@ -23,6 +23,8 @@ LAYER_NAMES=( "Datadog-Python311-ARM" "Datadog-Python312" "Datadog-Python312-ARM" + "Datadog-Python313" + "Datadog-Python313-ARM" ) PYTHON_VERSIONS_FOR_AWS_CLI=( "python3.8" @@ -35,6 +37,8 @@ PYTHON_VERSIONS_FOR_AWS_CLI=( "python3.11" "python3.12" "python3.12" + "python3.13" + "python3.13" ) NEW_REGION=$1 diff --git a/scripts/build_layers.sh b/scripts/build_layers.sh index d4f3076c3..a0d6ee39d 100755 --- a/scripts/build_layers.sh +++ b/scripts/build_layers.sh @@ -14,7 +14,7 @@ set -e LAYER_DIR=".layers" LAYER_FILES_PREFIX="datadog_lambda_py" -AVAILABLE_PYTHON_VERSIONS=("3.8" "3.9" "3.10" "3.11" "3.12") +AVAILABLE_PYTHON_VERSIONS=("3.8" "3.9" "3.10" "3.11" "3.12" "3.13") AVAILABLE_ARCHS=("arm64" "amd64") if [ -z "$ARCH" ]; then @@ -61,7 +61,7 @@ function docker_build_zip { # between different python runtimes. temp_dir=$(mktemp -d) docker buildx build -t datadog-lambda-python-${arch}:$1 . --no-cache \ - --build-arg image=python:$1 \ + --build-arg image=public.ecr.aws/docker/library/python:$1 \ --build-arg runtime=python$1 \ --platform linux/${arch} \ --progress=plain \ diff --git a/scripts/list_layers.sh b/scripts/list_layers.sh index 8a49cde4f..6449e5115 100755 --- a/scripts/list_layers.sh +++ b/scripts/list_layers.sh @@ -21,6 +21,8 @@ LAYER_NAMES=( "Datadog-Python311-ARM" "Datadog-Python312" "Datadog-Python312-ARM" + "Datadog-Python313" + "Datadog-Python313-ARM" ) AVAILABLE_REGIONS=$(aws ec2 describe-regions | jq -r '.[] | .[] | .RegionName') LAYERS_MISSING_REGIONS=() diff --git a/scripts/publish_layers.sh b/scripts/publish_layers.sh index 3deec0b48..8c78093f8 100755 --- a/scripts/publish_layers.sh +++ b/scripts/publish_layers.sh @@ -24,6 +24,8 @@ PYTHON_VERSIONS_FOR_AWS_CLI=( "python3.11" "python3.12" "python3.12" + "python3.13" + "python3.13" ) LAYER_PATHS=( ".layers/datadog_lambda_py-amd64-3.8.zip" @@ -36,6 +38,8 @@ LAYER_PATHS=( ".layers/datadog_lambda_py-arm64-3.11.zip" ".layers/datadog_lambda_py-amd64-3.12.zip" ".layers/datadog_lambda_py-arm64-3.12.zip" + ".layers/datadog_lambda_py-amd64-3.13.zip" + ".layers/datadog_lambda_py-arm64-3.13.zip" ) AVAILABLE_LAYERS=( "Datadog-Python38" @@ -48,6 +52,8 @@ AVAILABLE_LAYERS=( "Datadog-Python311-ARM" "Datadog-Python312" "Datadog-Python312-ARM" + "Datadog-Python313" + "Datadog-Python313-ARM" ) AVAILABLE_REGIONS=$(aws ec2 describe-regions | jq -r '.[] | .[] | .RegionName') diff --git a/scripts/run_integration_tests.sh b/scripts/run_integration_tests.sh index 5e8c5f671..9ea2f0130 100755 --- a/scripts/run_integration_tests.sh +++ b/scripts/run_integration_tests.sh @@ -32,8 +32,9 @@ python39=("python3.9" "3.9" $(xxd -l 4 -c 4 -p < /dev/random)) python310=("python3.10" "3.10" $(xxd -l 4 -c 4 -p < /dev/random)) python311=("python3.11" "3.11" $(xxd -l 4 -c 4 -p < /dev/random)) python312=("python3.12" "3.12" $(xxd -l 4 -c 4 -p < /dev/random)) +python313=("python3.13" "3.13" $(xxd -l 4 -c 4 -p < /dev/random)) -PARAMETERS_SETS=("python38" "python39" "python310" "python311" "python312") +PARAMETERS_SETS=("python38" "python39" "python310" "python311" "python312" "python313") if [ -z "$RUNTIME_PARAM" ]; then echo "Python version not specified, running for all python versions." diff --git a/scripts/run_tests.sh b/scripts/run_tests.sh index 540ac8981..26f4e2156 100755 --- a/scripts/run_tests.sh +++ b/scripts/run_tests.sh @@ -8,7 +8,7 @@ # Run unit tests in Docker set -e -PYTHON_VERSIONS=("3.8" "3.9" "3.10" "3.11" "3.12") +PYTHON_VERSIONS=("3.8" "3.9" "3.10" "3.11" "3.12" "3.13") for python_version in "${PYTHON_VERSIONS[@]}" do diff --git a/scripts/sign_layers.sh b/scripts/sign_layers.sh index 700bd55af..eb40062f0 100755 --- a/scripts/sign_layers.sh +++ b/scripts/sign_layers.sh @@ -19,6 +19,8 @@ LAYER_FILES=( "datadog_lambda_py-arm64-3.11.zip" "datadog_lambda_py-amd64-3.12.zip" "datadog_lambda_py-arm64-3.12.zip" + "datadog_lambda_py-amd64-3.13.zip" + "datadog_lambda_py-arm64-3.13.zip" ) SIGNING_PROFILE_NAME="DatadogLambdaSigningProfile" diff --git a/tests/Dockerfile b/tests/Dockerfile index 7b96ab89a..585c0fbe0 100644 --- a/tests/Dockerfile +++ b/tests/Dockerfile @@ -1,5 +1,5 @@ ARG python_version -FROM python:$python_version +FROM public.ecr.aws/docker/library/python:$python_version ENV PYTHONDONTWRITEBYTECODE True diff --git a/tests/integration/snapshots/logs/async-metrics_python313.log b/tests/integration/snapshots/logs/async-metrics_python313.log new file mode 100644 index 000000000..45ca3b144 --- /dev/null +++ b/tests/integration/snapshots/logs/async-metrics_python313.log @@ -0,0 +1,1544 @@ +INIT_START Runtime Version: python:3.13.vX Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python313", + "resource:integration-tests-python-XXXX-async-metrics_python313", + "memorysize:1024", + "cold_start:true", + "runtime:python3.13", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "XXXX.execute-api.us-east-2.amazonaws.com", + "resource": "GET /", + "name": "aws.apigateway", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.apigateway.rest", + "http.url": "XXXX.execute-api.us-east-2.amazonaws.com/", + "endpoint": "/", + "http.method": "GET", + "resource_names": "GET /", + "apiid": "XXXX", + "apiname": "XXXX", + "stage": "Prod", + "request_id": "XXXX", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "http.status_code": "200", + "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python313", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "true", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python313", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python313", + "functionname": "integration-tests-python-XXXX-async-metrics_python313", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "api-gateway", + "function_trigger.event_source_arn": "XXXX", + "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", + "http.url_details.path": "/Prod/", + "http.method": "GET", + "http.route": "/", + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python313", + "resource:integration-tests-python-XXXX-async-metrics_python313", + "memorysize:1024", + "cold_start:false", + "runtime:python3.13", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "dynamodb", + "resource": "ExampleTableWithStream", + "name": "aws.dynamodb", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.dynamodb", + "resource_names": "ExampleTableWithStream", + "tablename": "ExampleTableWithStream", + "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", + "event_id": "XXXX", + "event_name": "INSERT", + "event_version": "1.1", + "stream_view_type": "NEW_AND_OLD_IMAGES", + "size_bytes": "26", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python313", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python313", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python313", + "functionname": "integration-tests-python-XXXX-async-metrics_python313", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "dynamodb", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + }, + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + }, + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + } + ] + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python313", + "resource:integration-tests-python-XXXX-async-metrics_python313", + "memorysize:1024", + "cold_start:false", + "runtime:python3.13", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "eventbridge", + "resource": "eventbridge.custom.event.sender", + "name": "aws.eventbridge", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.eventbridge", + "resource_names": "eventbridge.custom.event.sender", + "detail_type": "testdetail", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python313", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python313", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python313", + "functionname": "integration-tests-python-XXXX-async-metrics_python313", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "eventbridge", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python313", + "resource:integration-tests-python-XXXX-async-metrics_python313", + "memorysize:1024", + "cold_start:false", + "runtime:python3.13", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", + "resource": "GET /httpapi/get", + "name": "aws.httpapi", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.httpapi", + "endpoint": "/httpapi/get", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.method": "GET", + "http.protocol": "HTTP/1.1", + "http.source_ip": "XXXX", + "http.user_agent": "XXXX/7.64.1", + "resource_names": "GET /httpapi/get", + "request_id": "XXXX", + "apiid": "XXXX", + "apiname": "XXXX", + "stage": "$default", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "http.status_code": "200", + "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python313", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python313", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python313", + "functionname": "integration-tests-python-XXXX-async-metrics_python313", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "api-gateway", + "function_trigger.event_source_arn": "XXXX$default", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url_details.path": "/httpapi/get", + "http.method": "GET", + "http.route": "/httpapi/get", + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python313", + "resource:integration-tests-python-XXXX-async-metrics_python313", + "memorysize:1024", + "cold_start:false", + "runtime:python3.13", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "kinesis", + "resource": "EXAMPLE", + "name": "aws.kinesis", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.kinesis", + "resource_names": "EXAMPLE", + "streamname": "EXAMPLE", + "shardid": "shardId-XXXX", + "event_source_arn": "arn:aws:kinesis:EXAMPLE", + "event_id": "XXXX", + "event_name": "aws:kinesis:record", + "event_version": "1.0", + "partition_key": "XXXX", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python313", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python313", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python313", + "functionname": "integration-tests-python-XXXX-async-metrics_python313", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "kinesis", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python313", + "resource:integration-tests-python-XXXX-async-metrics_python313", + "memorysize:1024", + "cold_start:false", + "runtime:python3.13", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "s3", + "resource": "example-bucket", + "name": "aws.s3", + "error": 0, + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.s3", + "resource_names": "example-bucket", + "event_name": "ObjectCreated:Put", + "bucketname": "example-bucket", + "bucket_arn": "arn:aws:s3:::example-bucket", + "object_key": "test/key", + "object_size": "1024", + "object_etag": "XXXX", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python313", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python313", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python313", + "functionname": "integration-tests-python-XXXX-async-metrics_python313", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "s3", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.s3.object", + "ptr.dir": "u", + "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", + "link.kind": "span-pointer" + } + } + ] + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python313", + "resource:integration-tests-python-XXXX-async-metrics_python313", + "memorysize:1024", + "cold_start:false", + "runtime:python3.13", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "sns", + "resource": "sns-lambda", + "name": "aws.sns", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.sns", + "resource_names": "sns-lambda", + "topicname": "sns-lambda", + "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", + "message_id": "XXXX", + "type": "Notification", + "subject": "TestInvoke", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python313", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python313", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python313", + "functionname": "integration-tests-python-XXXX-async-metrics_python313", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "sns", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python313", + "resource:integration-tests-python-XXXX-async-metrics_python313", + "memorysize:1024", + "cold_start:false", + "runtime:python3.13", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "sqs", + "resource": "my-queue", + "name": "aws.sqs", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.sqs", + "resource_names": "my-queue", + "queuename": "my-queue", + "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", + "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", + "sender_id": "AIDAIENQZJOLO23YVJ4VO", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python313", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python313", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python313", + "functionname": "integration-tests-python-XXXX-async-metrics_python313", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "sqs", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python313", + "resource:integration-tests-python-XXXX-async-metrics_python313", + "memorysize:1024", + "cold_start:false", + "runtime:python3.13", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", + "resource": "$default", + "name": "aws.apigateway.websocket", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.apigateway.websocket", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com$default", + "endpoint": "$default", + "resource_names": "$default", + "apiid": "XXXX", + "apiname": "XXXX", + "stage": "dev", + "request_id": "XXXX", + "connection_id": "XXXX=", + "event_type": "MESSAGE", + "message_direction": "IN", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "http.status_code": "200", + "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python313", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python313", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python313", + "functionname": "integration-tests-python-XXXX-async-metrics_python313", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "api-gateway", + "function_trigger.event_source_arn": "XXXX", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB diff --git a/tests/integration/snapshots/logs/sync-metrics_python313.log b/tests/integration/snapshots/logs/sync-metrics_python313.log new file mode 100644 index 000000000..094021649 --- /dev/null +++ b/tests/integration/snapshots/logs/sync-metrics_python313.log @@ -0,0 +1,1715 @@ +INIT_START Runtime Version: python:3.13.vX Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python313", + "resource:integration-tests-python-XXXX-sync-metrics_python313", + "memorysize:1024", + "cold_start:true", + "runtime:python3.13", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "XXXX.execute-api.us-east-2.amazonaws.com", + "resource": "GET /", + "name": "aws.apigateway", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.apigateway.rest", + "http.url": "XXXX.execute-api.us-east-2.amazonaws.com/", + "endpoint": "/", + "http.method": "GET", + "resource_names": "GET /", + "apiid": "XXXX", + "apiname": "XXXX", + "stage": "Prod", + "request_id": "XXXX", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "http.status_code": "200", + "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python313", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "true", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python313", + "functionname": "integration-tests-python-XXXX-sync-metrics_python313", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "api-gateway", + "function_trigger.event_source_arn": "XXXX", + "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", + "http.url_details.path": "/Prod/", + "http.method": "GET", + "http.route": "/", + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "POST /api/v1/distribution_points", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python313", + "resource:integration-tests-python-XXXX-sync-metrics_python313", + "memorysize:1024", + "cold_start:false", + "runtime:python3.13", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "dynamodb", + "resource": "ExampleTableWithStream", + "name": "aws.dynamodb", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.dynamodb", + "resource_names": "ExampleTableWithStream", + "tablename": "ExampleTableWithStream", + "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", + "event_id": "XXXX", + "event_name": "INSERT", + "event_version": "1.1", + "stream_view_type": "NEW_AND_OLD_IMAGES", + "size_bytes": "26", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python313", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python313", + "functionname": "integration-tests-python-XXXX-sync-metrics_python313", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "dynamodb", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + }, + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + }, + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + } + ] + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "POST /api/v1/distribution_points", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python313", + "resource:integration-tests-python-XXXX-sync-metrics_python313", + "memorysize:1024", + "cold_start:false", + "runtime:python3.13", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "eventbridge", + "resource": "eventbridge.custom.event.sender", + "name": "aws.eventbridge", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.eventbridge", + "resource_names": "eventbridge.custom.event.sender", + "detail_type": "testdetail", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python313", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python313", + "functionname": "integration-tests-python-XXXX-sync-metrics_python313", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "eventbridge", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "POST /api/v1/distribution_points", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python313", + "resource:integration-tests-python-XXXX-sync-metrics_python313", + "memorysize:1024", + "cold_start:false", + "runtime:python3.13", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", + "resource": "GET /httpapi/get", + "name": "aws.httpapi", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.httpapi", + "endpoint": "/httpapi/get", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.method": "GET", + "http.protocol": "HTTP/1.1", + "http.source_ip": "XXXX", + "http.user_agent": "XXXX/7.64.1", + "resource_names": "GET /httpapi/get", + "request_id": "XXXX", + "apiid": "XXXX", + "apiname": "XXXX", + "stage": "$default", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "http.status_code": "200", + "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python313", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python313", + "functionname": "integration-tests-python-XXXX-sync-metrics_python313", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "api-gateway", + "function_trigger.event_source_arn": "XXXX$default", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url_details.path": "/httpapi/get", + "http.method": "GET", + "http.route": "/httpapi/get", + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "POST /api/v1/distribution_points", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python313", + "resource:integration-tests-python-XXXX-sync-metrics_python313", + "memorysize:1024", + "cold_start:false", + "runtime:python3.13", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "kinesis", + "resource": "EXAMPLE", + "name": "aws.kinesis", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.kinesis", + "resource_names": "EXAMPLE", + "streamname": "EXAMPLE", + "shardid": "shardId-XXXX", + "event_source_arn": "arn:aws:kinesis:EXAMPLE", + "event_id": "XXXX", + "event_name": "aws:kinesis:record", + "event_version": "1.0", + "partition_key": "XXXX", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python313", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python313", + "functionname": "integration-tests-python-XXXX-sync-metrics_python313", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "kinesis", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "POST /api/v1/distribution_points", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python313", + "resource:integration-tests-python-XXXX-sync-metrics_python313", + "memorysize:1024", + "cold_start:false", + "runtime:python3.13", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "s3", + "resource": "example-bucket", + "name": "aws.s3", + "error": 0, + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.s3", + "resource_names": "example-bucket", + "event_name": "ObjectCreated:Put", + "bucketname": "example-bucket", + "bucket_arn": "arn:aws:s3:::example-bucket", + "object_key": "test/key", + "object_size": "1024", + "object_etag": "XXXX", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python313", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python313", + "functionname": "integration-tests-python-XXXX-sync-metrics_python313", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "s3", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.s3.object", + "ptr.dir": "u", + "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", + "link.kind": "span-pointer" + } + } + ] + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "POST /api/v1/distribution_points", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python313", + "resource:integration-tests-python-XXXX-sync-metrics_python313", + "memorysize:1024", + "cold_start:false", + "runtime:python3.13", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "sns", + "resource": "sns-lambda", + "name": "aws.sns", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.sns", + "resource_names": "sns-lambda", + "topicname": "sns-lambda", + "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", + "message_id": "XXXX", + "type": "Notification", + "subject": "TestInvoke", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python313", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python313", + "functionname": "integration-tests-python-XXXX-sync-metrics_python313", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "sns", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "POST /api/v1/distribution_points", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python313", + "resource:integration-tests-python-XXXX-sync-metrics_python313", + "memorysize:1024", + "cold_start:false", + "runtime:python3.13", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "sqs", + "resource": "my-queue", + "name": "aws.sqs", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.sqs", + "resource_names": "my-queue", + "queuename": "my-queue", + "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", + "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", + "sender_id": "AIDAIENQZJOLO23YVJ4VO", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python313", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python313", + "functionname": "integration-tests-python-XXXX-sync-metrics_python313", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "sqs", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "POST /api/v1/distribution_points", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python313", + "resource:integration-tests-python-XXXX-sync-metrics_python313", + "memorysize:1024", + "cold_start:false", + "runtime:python3.13", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", + "resource": "$default", + "name": "aws.apigateway.websocket", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.apigateway.websocket", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com$default", + "endpoint": "$default", + "resource_names": "$default", + "apiid": "XXXX", + "apiname": "XXXX", + "stage": "dev", + "request_id": "XXXX", + "connection_id": "XXXX=", + "event_type": "MESSAGE", + "message_direction": "IN", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "http.status_code": "200", + "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.base_service": "integration-tests-python", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python313", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python313", + "functionname": "integration-tests-python-XXXX-sync-metrics_python313", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "api-gateway", + "function_trigger.event_source_arn": "XXXX", + "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.status_code": "200", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "POST /api/v1/distribution_points", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB From 0a62ed17d0adeed1c4985df2dd2f23db306344c4 Mon Sep 17 00:00:00 2001 From: Munir Abdinur Date: Thu, 30 Jan 2025 11:30:21 -0500 Subject: [PATCH 220/403] upgrade(deps): bump minimum ddtrace version to v2.20.0 (#555) * feat(ddtrace): upgrade ddtrace version * merge import * update more references --- datadog_lambda/cold_start.py | 2 +- datadog_lambda/tracing.py | 4 ++-- tests/test_benchmarks.py | 2 +- tests/test_tracing.py | 7 +++---- tests/test_wrapper.py | 2 +- 5 files changed, 8 insertions(+), 9 deletions(-) diff --git a/datadog_lambda/cold_start.py b/datadog_lambda/cold_start.py index 8c21420da..ea10ea206 100644 --- a/datadog_lambda/cold_start.py +++ b/datadog_lambda/cold_start.py @@ -31,7 +31,7 @@ def set_cold_start(init_timestamp_ns): _cold_start = False _proactive_initialization = False _lambda_container_initialized = True - from ddtrace import tracer as _tracer + from ddtrace.trace import tracer as _tracer def is_cold_start(): diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index c90baff1f..973cb562a 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -30,10 +30,10 @@ parse_xray_header, ) -from ddtrace import tracer, patch, Span +from ddtrace import patch from ddtrace import __version__ as ddtrace_version from ddtrace.propagation.http import HTTPPropagator -from ddtrace.context import Context +from ddtrace.trace import Context, Span, tracer from datadog_lambda import __version__ as datadog_lambda_version from datadog_lambda.trigger import ( _EventSource, diff --git a/tests/test_benchmarks.py b/tests/test_benchmarks.py index 899e3d7f1..48598cb37 100644 --- a/tests/test_benchmarks.py +++ b/tests/test_benchmarks.py @@ -38,7 +38,7 @@ def test_metric_write_metric_point_to_stdout(benchmark, monkeypatch): def test_tag_object_tag_object(event, benchmark): with open(f"{event_samples_dir}/{event}.json") as f: event = json.load(f) - span = ddtrace.tracer.start_span("test") + span = ddtrace.trace.tracer.start_span("test") benchmark(tag_object.tag_object, span, "function.request", event) diff --git a/tests/test_tracing.py b/tests/test_tracing.py index f7d545429..89a7712c8 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -10,8 +10,7 @@ import ddtrace -from ddtrace import tracer -from ddtrace.context import Context +from ddtrace.trace import Context, tracer from ddtrace._trace._span_pointer import _SpanPointer from ddtrace._trace._span_pointer import _SpanPointerDirection from ddtrace._trace._span_pointer import _SpanPointerDescription @@ -2158,7 +2157,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): @pytest.mark.parametrize("source,expect", _test_create_inferred_span) -@patch("ddtrace.Span.finish", autospec=True) +@patch("ddtrace.trace.Span.finish", autospec=True) def test_create_inferred_span(mock_span_finish, source, expect): with open(f"{event_samples}{source}.json") as f: event = json.load(f) @@ -2197,7 +2196,7 @@ def test_mark_trace_as_error_for_5xx_responses_getting_400_response_code( def test_mark_trace_as_error_for_5xx_responses_sends_error_metric_and_set_error_tags( self, mock_submit_errors_metric ): - mock_span = Mock(ddtrace.Span) + mock_span = Mock(ddtrace.trace.Span) status_code = "500" mark_trace_as_error_for_5xx_responses( context="fake_context", status_code=status_code, span=mock_span diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index db9f0f9e3..f47285e68 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -10,7 +10,7 @@ import datadog_lambda.xray as xray from datadog_lambda.metric import lambda_metric from datadog_lambda.thread_stats_writer import ThreadStatsWriter -from ddtrace import Span, tracer +from ddtrace.trace import Span, tracer from ddtrace.internal.constants import MAX_UINT_64BITS from tests.utils import get_mock_context, reset_xray_connection From 02c2086f95f0d21dad903fa803878f5a36dc0e0b Mon Sep 17 00:00:00 2001 From: Aleksandr Pasechnik Date: Thu, 30 Jan 2025 16:02:56 -0500 Subject: [PATCH 221/403] chore: 6.105.0 release candidate (#557) --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index d2ea6a95f..0942ef405 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "6.104.0" +__version__ = "6.105.0" diff --git a/pyproject.toml b/pyproject.toml index 94d900767..341814598 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "6.104.0" +version = "6.105.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 7893e9b7b9ad041f81b9a9351820b8c04be09229 Mon Sep 17 00:00:00 2001 From: Nicholas Hulston Date: Thu, 30 Jan 2025 17:30:36 -0500 Subject: [PATCH 222/403] Move span pointer to inferred (root) span (#552) --- datadog_lambda/tracing.py | 3 +- .../logs/async-metrics_python310.log | 90 +++++++++--------- .../logs/async-metrics_python311.log | 90 +++++++++--------- .../logs/async-metrics_python312.log | 90 +++++++++--------- .../logs/async-metrics_python313.log | 90 +++++++++--------- .../snapshots/logs/async-metrics_python38.log | 90 +++++++++--------- .../snapshots/logs/async-metrics_python39.log | 90 +++++++++--------- .../snapshots/logs/sync-metrics_python310.log | 90 +++++++++--------- .../snapshots/logs/sync-metrics_python311.log | 90 +++++++++--------- .../snapshots/logs/sync-metrics_python312.log | 92 +++++++++---------- .../snapshots/logs/sync-metrics_python313.log | 92 +++++++++---------- .../snapshots/logs/sync-metrics_python38.log | 90 +++++++++--------- .../snapshots/logs/sync-metrics_python39.log | 90 +++++++++--------- 13 files changed, 544 insertions(+), 543 deletions(-) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 973cb562a..9189eb3be 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -1368,8 +1368,9 @@ def create_function_execution_span( if parent_span: span.parent_id = parent_span.span_id if span_pointers: + root_span = parent_span if parent_span else span for span_pointer_description in span_pointers: - span._add_span_pointer( + root_span._add_span_pointer( pointer_kind=span_pointer_description.pointer_kind, pointer_direction=span_pointer_description.pointer_direction, pointer_hash=span_pointer_description.pointer_hash, diff --git a/tests/integration/snapshots/logs/async-metrics_python310.log b/tests/integration/snapshots/logs/async-metrics_python310.log index b3b94ca43..ed0d3b43f 100644 --- a/tests/integration/snapshots/logs/async-metrics_python310.log +++ b/tests/integration/snapshots/logs/async-metrics_python310.log @@ -249,37 +249,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-async-metrics_python310", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python310", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python310", - "functionname": "integration-tests-python-XXXX-async-metrics_python310", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless", + "type": "web", "span_links": [ { "trace_id": "XXXX", @@ -313,6 +283,36 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A } ] }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python310", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python310", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python310", + "functionname": "integration-tests-python-XXXX-async-metrics_python310", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "dynamodb", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, { "trace_id": "XXXX", "parent_id": "XXXX", @@ -944,7 +944,19 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "web" + "type": "web", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.s3.object", + "ptr.dir": "u", + "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", @@ -974,19 +986,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless", - "span_links": [ - { - "trace_id": "XXXX", - "span_id": "XXXX", - "attributes": { - "ptr.kind": "aws.s3.object", - "ptr.dir": "u", - "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", - "link.kind": "span-pointer" - } - } - ] + "type": "serverless" }, { "trace_id": "XXXX", diff --git a/tests/integration/snapshots/logs/async-metrics_python311.log b/tests/integration/snapshots/logs/async-metrics_python311.log index 5ea440b38..b57a1b5a5 100644 --- a/tests/integration/snapshots/logs/async-metrics_python311.log +++ b/tests/integration/snapshots/logs/async-metrics_python311.log @@ -249,37 +249,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-async-metrics_python311", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python311", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python311", - "functionname": "integration-tests-python-XXXX-async-metrics_python311", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless", + "type": "web", "span_links": [ { "trace_id": "XXXX", @@ -313,6 +283,36 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A } ] }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python311", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python311", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python311", + "functionname": "integration-tests-python-XXXX-async-metrics_python311", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "dynamodb", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, { "trace_id": "XXXX", "parent_id": "XXXX", @@ -944,7 +944,19 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "web" + "type": "web", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.s3.object", + "ptr.dir": "u", + "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", @@ -974,19 +986,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless", - "span_links": [ - { - "trace_id": "XXXX", - "span_id": "XXXX", - "attributes": { - "ptr.kind": "aws.s3.object", - "ptr.dir": "u", - "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", - "link.kind": "span-pointer" - } - } - ] + "type": "serverless" }, { "trace_id": "XXXX", diff --git a/tests/integration/snapshots/logs/async-metrics_python312.log b/tests/integration/snapshots/logs/async-metrics_python312.log index ceaaa7595..1b7e4b082 100644 --- a/tests/integration/snapshots/logs/async-metrics_python312.log +++ b/tests/integration/snapshots/logs/async-metrics_python312.log @@ -249,37 +249,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-async-metrics_python312", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python312", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python312", - "functionname": "integration-tests-python-XXXX-async-metrics_python312", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless", + "type": "web", "span_links": [ { "trace_id": "XXXX", @@ -313,6 +283,36 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A } ] }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python312", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python312", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python312", + "functionname": "integration-tests-python-XXXX-async-metrics_python312", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "dynamodb", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, { "trace_id": "XXXX", "parent_id": "XXXX", @@ -944,7 +944,19 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "web" + "type": "web", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.s3.object", + "ptr.dir": "u", + "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", @@ -974,19 +986,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless", - "span_links": [ - { - "trace_id": "XXXX", - "span_id": "XXXX", - "attributes": { - "ptr.kind": "aws.s3.object", - "ptr.dir": "u", - "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", - "link.kind": "span-pointer" - } - } - ] + "type": "serverless" }, { "trace_id": "XXXX", diff --git a/tests/integration/snapshots/logs/async-metrics_python313.log b/tests/integration/snapshots/logs/async-metrics_python313.log index 45ca3b144..32342559d 100644 --- a/tests/integration/snapshots/logs/async-metrics_python313.log +++ b/tests/integration/snapshots/logs/async-metrics_python313.log @@ -249,37 +249,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-async-metrics_python313", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python313", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python313", - "functionname": "integration-tests-python-XXXX-async-metrics_python313", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless", + "type": "web", "span_links": [ { "trace_id": "XXXX", @@ -313,6 +283,36 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A } ] }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python313", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python313", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python313", + "functionname": "integration-tests-python-XXXX-async-metrics_python313", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "dynamodb", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, { "trace_id": "XXXX", "parent_id": "XXXX", @@ -944,7 +944,19 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "web" + "type": "web", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.s3.object", + "ptr.dir": "u", + "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", @@ -974,19 +986,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless", - "span_links": [ - { - "trace_id": "XXXX", - "span_id": "XXXX", - "attributes": { - "ptr.kind": "aws.s3.object", - "ptr.dir": "u", - "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", - "link.kind": "span-pointer" - } - } - ] + "type": "serverless" }, { "trace_id": "XXXX", diff --git a/tests/integration/snapshots/logs/async-metrics_python38.log b/tests/integration/snapshots/logs/async-metrics_python38.log index 3ce5c99d8..9dc9edf61 100644 --- a/tests/integration/snapshots/logs/async-metrics_python38.log +++ b/tests/integration/snapshots/logs/async-metrics_python38.log @@ -249,37 +249,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-async-metrics_python38", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python38", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python38", - "functionname": "integration-tests-python-XXXX-async-metrics_python38", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless", + "type": "web", "span_links": [ { "trace_id": "XXXX", @@ -313,6 +283,36 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A } ] }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python38", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python38", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python38", + "functionname": "integration-tests-python-XXXX-async-metrics_python38", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "dynamodb", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, { "trace_id": "XXXX", "parent_id": "XXXX", @@ -944,7 +944,19 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "web" + "type": "web", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.s3.object", + "ptr.dir": "u", + "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", @@ -974,19 +986,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless", - "span_links": [ - { - "trace_id": "XXXX", - "span_id": "XXXX", - "attributes": { - "ptr.kind": "aws.s3.object", - "ptr.dir": "u", - "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", - "link.kind": "span-pointer" - } - } - ] + "type": "serverless" }, { "trace_id": "XXXX", diff --git a/tests/integration/snapshots/logs/async-metrics_python39.log b/tests/integration/snapshots/logs/async-metrics_python39.log index ede453ff2..89e5d227b 100644 --- a/tests/integration/snapshots/logs/async-metrics_python39.log +++ b/tests/integration/snapshots/logs/async-metrics_python39.log @@ -249,37 +249,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-async-metrics_python39", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python39", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python39", - "functionname": "integration-tests-python-XXXX-async-metrics_python39", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless", + "type": "web", "span_links": [ { "trace_id": "XXXX", @@ -313,6 +283,36 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A } ] }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-async-metrics_python39", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python39", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python39", + "functionname": "integration-tests-python-XXXX-async-metrics_python39", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "dynamodb", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, { "trace_id": "XXXX", "parent_id": "XXXX", @@ -944,7 +944,19 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "web" + "type": "web", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.s3.object", + "ptr.dir": "u", + "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", @@ -974,19 +986,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless", - "span_links": [ - { - "trace_id": "XXXX", - "span_id": "XXXX", - "attributes": { - "ptr.kind": "aws.s3.object", - "ptr.dir": "u", - "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", - "link.kind": "span-pointer" - } - } - ] + "type": "serverless" }, { "trace_id": "XXXX", diff --git a/tests/integration/snapshots/logs/sync-metrics_python310.log b/tests/integration/snapshots/logs/sync-metrics_python310.log index 540ce0818..6eab44c28 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python310.log +++ b/tests/integration/snapshots/logs/sync-metrics_python310.log @@ -248,37 +248,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-sync-metrics_python310", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python310", - "functionname": "integration-tests-python-XXXX-sync-metrics_python310", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless", + "type": "web", "span_links": [ { "trace_id": "XXXX", @@ -312,6 +282,36 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A } ] }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python310", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python310", + "functionname": "integration-tests-python-XXXX-sync-metrics_python310", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "dynamodb", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, { "trace_id": "XXXX", "parent_id": "XXXX", @@ -1019,7 +1019,19 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "web" + "type": "web", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.s3.object", + "ptr.dir": "u", + "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", @@ -1049,19 +1061,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless", - "span_links": [ - { - "trace_id": "XXXX", - "span_id": "XXXX", - "attributes": { - "ptr.kind": "aws.s3.object", - "ptr.dir": "u", - "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", - "link.kind": "span-pointer" - } - } - ] + "type": "serverless" }, { "trace_id": "XXXX", diff --git a/tests/integration/snapshots/logs/sync-metrics_python311.log b/tests/integration/snapshots/logs/sync-metrics_python311.log index 68b930db7..87cd6a6af 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python311.log +++ b/tests/integration/snapshots/logs/sync-metrics_python311.log @@ -248,37 +248,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-sync-metrics_python311", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python311", - "functionname": "integration-tests-python-XXXX-sync-metrics_python311", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless", + "type": "web", "span_links": [ { "trace_id": "XXXX", @@ -312,6 +282,36 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A } ] }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python311", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python311", + "functionname": "integration-tests-python-XXXX-sync-metrics_python311", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "dynamodb", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, { "trace_id": "XXXX", "parent_id": "XXXX", @@ -1019,7 +1019,19 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "web" + "type": "web", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.s3.object", + "ptr.dir": "u", + "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", @@ -1049,19 +1061,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless", - "span_links": [ - { - "trace_id": "XXXX", - "span_id": "XXXX", - "attributes": { - "ptr.kind": "aws.s3.object", - "ptr.dir": "u", - "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", - "link.kind": "span-pointer" - } - } - ] + "type": "serverless" }, { "trace_id": "XXXX", diff --git a/tests/integration/snapshots/logs/sync-metrics_python312.log b/tests/integration/snapshots/logs/sync-metrics_python312.log index 9e4d916ed..41b5a71ca 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python312.log +++ b/tests/integration/snapshots/logs/sync-metrics_python312.log @@ -248,37 +248,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-sync-metrics_python312", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python312", - "functionname": "integration-tests-python-XXXX-sync-metrics_python312", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless", + "type": "web", "span_links": [ { "trace_id": "XXXX", @@ -312,6 +282,36 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A } ] }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python312", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python312", + "functionname": "integration-tests-python-XXXX-sync-metrics_python312", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "dynamodb", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, { "trace_id": "XXXX", "parent_id": "XXXX", @@ -546,6 +546,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A ] } HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX +END Duration: XXXX ms Memory Used: XXXX MB { "traces": [ [ @@ -584,7 +585,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept ] ] } -END Duration: XXXX ms Memory Used: XXXX MB START { "m": "aws.lambda.enhanced.invocations", @@ -1019,7 +1019,19 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "web" + "type": "web", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.s3.object", + "ptr.dir": "u", + "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", @@ -1049,19 +1061,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless", - "span_links": [ - { - "trace_id": "XXXX", - "span_id": "XXXX", - "attributes": { - "ptr.kind": "aws.s3.object", - "ptr.dir": "u", - "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", - "link.kind": "span-pointer" - } - } - ] + "type": "serverless" }, { "trace_id": "XXXX", diff --git a/tests/integration/snapshots/logs/sync-metrics_python313.log b/tests/integration/snapshots/logs/sync-metrics_python313.log index 094021649..439e44d6c 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python313.log +++ b/tests/integration/snapshots/logs/sync-metrics_python313.log @@ -248,37 +248,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-sync-metrics_python313", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python313", - "functionname": "integration-tests-python-XXXX-sync-metrics_python313", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless", + "type": "web", "span_links": [ { "trace_id": "XXXX", @@ -312,6 +282,36 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A } ] }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python313", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python313", + "functionname": "integration-tests-python-XXXX-sync-metrics_python313", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "dynamodb", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, { "trace_id": "XXXX", "parent_id": "XXXX", @@ -1019,7 +1019,19 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "web" + "type": "web", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.s3.object", + "ptr.dir": "u", + "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", @@ -1049,19 +1061,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless", - "span_links": [ - { - "trace_id": "XXXX", - "span_id": "XXXX", - "attributes": { - "ptr.kind": "aws.s3.object", - "ptr.dir": "u", - "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", - "link.kind": "span-pointer" - } - } - ] + "type": "serverless" }, { "trace_id": "XXXX", @@ -1302,6 +1302,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A ] } HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX +END Duration: XXXX ms Memory Used: XXXX MB { "traces": [ [ @@ -1340,7 +1341,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept ] ] } -END Duration: XXXX ms Memory Used: XXXX MB START { "m": "aws.lambda.enhanced.invocations", diff --git a/tests/integration/snapshots/logs/sync-metrics_python38.log b/tests/integration/snapshots/logs/sync-metrics_python38.log index 6c7b3c50d..b30289ca8 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python38.log +++ b/tests/integration/snapshots/logs/sync-metrics_python38.log @@ -248,37 +248,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-sync-metrics_python38", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python38", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python38", - "functionname": "integration-tests-python-XXXX-sync-metrics_python38", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless", + "type": "web", "span_links": [ { "trace_id": "XXXX", @@ -312,6 +282,36 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A } ] }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python38", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python38", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python38", + "functionname": "integration-tests-python-XXXX-sync-metrics_python38", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "dynamodb", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, { "trace_id": "XXXX", "parent_id": "XXXX", @@ -1019,7 +1019,19 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "web" + "type": "web", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.s3.object", + "ptr.dir": "u", + "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", @@ -1049,19 +1061,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless", - "span_links": [ - { - "trace_id": "XXXX", - "span_id": "XXXX", - "attributes": { - "ptr.kind": "aws.s3.object", - "ptr.dir": "u", - "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", - "link.kind": "span-pointer" - } - } - ] + "type": "serverless" }, { "trace_id": "XXXX", diff --git a/tests/integration/snapshots/logs/sync-metrics_python39.log b/tests/integration/snapshots/logs/sync-metrics_python39.log index 26db0d4bf..772ea5d19 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -248,37 +248,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "web" - }, - { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "aws.lambda", - "resource": "integration-tests-python-XXXX-sync-metrics_python39", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", - "duration": "XXXX", - "meta": { - "_dd.origin": "lambda", - "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python39", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python39", - "functionname": "integration-tests-python-XXXX-sync-metrics_python39", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" - }, - "metrics": { - "_dd.top_level": 1 - }, - "type": "serverless", + "type": "web", "span_links": [ { "trace_id": "XXXX", @@ -312,6 +282,36 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A } ] }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "aws.lambda", + "resource": "integration-tests-python-XXXX-sync-metrics_python39", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python39", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python39", + "functionname": "integration-tests-python-XXXX-sync-metrics_python39", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "dynamodb", + "function_trigger.event_source_arn": "XXXX", + "_dd.base_service": "integration-tests-python" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, { "trace_id": "XXXX", "parent_id": "XXXX", @@ -1019,7 +1019,19 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "web" + "type": "web", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.s3.object", + "ptr.dir": "u", + "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", + "link.kind": "span-pointer" + } + } + ] }, { "trace_id": "XXXX", @@ -1049,19 +1061,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "metrics": { "_dd.top_level": 1 }, - "type": "serverless", - "span_links": [ - { - "trace_id": "XXXX", - "span_id": "XXXX", - "attributes": { - "ptr.kind": "aws.s3.object", - "ptr.dir": "u", - "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", - "link.kind": "span-pointer" - } - } - ] + "type": "serverless" }, { "trace_id": "XXXX", From b64be3b098faf2743af1a1009f0c414f7fae8f33 Mon Sep 17 00:00:00 2001 From: Nicholas Hulston Date: Thu, 30 Jan 2025 17:30:48 -0500 Subject: [PATCH 223/403] Skip and log warning when `lambda_metric` called with invalid name or value (#553) --- datadog_lambda/metric.py | 16 ++++++++++++++++ tests/test_metric.py | 26 ++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/datadog_lambda/metric.py b/datadog_lambda/metric.py index d312e3bba..6389c2687 100644 --- a/datadog_lambda/metric.py +++ b/datadog_lambda/metric.py @@ -55,6 +55,22 @@ def lambda_metric(metric_name, value, timestamp=None, tags=None, force_async=Fal Note that if the extension is present, it will override the DD_FLUSH_TO_LOG value and always use the layer to send metrics to the extension """ + if not metric_name or not isinstance(metric_name, str): + logger.warning( + "Ignoring metric submission. Invalid metric name: %s", metric_name + ) + return + + try: + float(value) + except (ValueError, TypeError): + logger.warning( + "Ignoring metric submission for metric '%s' because the value is not numeric: %r", + metric_name, + value, + ) + return + flush_to_logs = os.environ.get("DD_FLUSH_TO_LOG", "").lower() == "true" tags = [] if tags is None else list(tags) tags.append(dd_lambda_layer_tag) diff --git a/tests/test_metric.py b/tests/test_metric.py index 345740a45..d10a0f0d1 100644 --- a/tests/test_metric.py +++ b/tests/test_metric.py @@ -92,6 +92,32 @@ def test_lambda_metric_flush_to_log(self): del os.environ["DD_FLUSH_TO_LOG"] + @patch("datadog_lambda.metric.logger.warning") + def test_lambda_metric_invalid_metric_name_none(self, mock_logger_warning): + lambda_metric(None, 1) + self.mock_metric_lambda_stats.distribution.assert_not_called() + mock_logger_warning.assert_called_once_with( + "Ignoring metric submission. Invalid metric name: %s", None + ) + + @patch("datadog_lambda.metric.logger.warning") + def test_lambda_metric_invalid_metric_name_not_string(self, mock_logger_warning): + lambda_metric(123, 1) + self.mock_metric_lambda_stats.distribution.assert_not_called() + mock_logger_warning.assert_called_once_with( + "Ignoring metric submission. Invalid metric name: %s", 123 + ) + + @patch("datadog_lambda.metric.logger.warning") + def test_lambda_metric_non_numeric_value(self, mock_logger_warning): + lambda_metric("test.non_numeric", "oops") + self.mock_metric_lambda_stats.distribution.assert_not_called() + mock_logger_warning.assert_called_once_with( + "Ignoring metric submission for metric '%s' because the value is not numeric: %r", + "test.non_numeric", + "oops", + ) + class TestFlushThreadStats(unittest.TestCase): def setUp(self): From d580d5fd8539809f1ed24edb826f9474d57abd90 Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Fri, 28 Feb 2025 12:39:33 -0800 Subject: [PATCH 224/403] Ddtrace now requires patch.py rather than __init__.py files. (#566) --- Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 554766df2..a1b24bf38 100644 --- a/Dockerfile +++ b/Dockerfile @@ -47,10 +47,10 @@ RUN rm -rf \ # https://docs.python.org/3.11/using/cmdline.html#cmdoption-O # https://docs.python.org/3/using/cmdline.html#envvar-PYTHONNODEBUGRANGES RUN PYTHONNODEBUGRANGES=1 python -OO -m compileall -b ./python/lib/$runtime/site-packages -# remove all .py files except ddtrace/contrib/*/__init__.py which are necessary +# remove all .py files except ddtrace/contrib/*/patch.py which are necessary # for ddtrace.patch to discover instrumationation packages. RUN find ./python/lib/$runtime/site-packages -name \*.py | grep -v ddtrace/contrib | xargs rm -rf -RUN find ./python/lib/$runtime/site-packages/ddtrace/contrib -name \*.py | grep -v __init__ | xargs rm -rf +RUN find ./python/lib/$runtime/site-packages/ddtrace/contrib -name \*.py | grep -v patch.py | xargs rm -rf RUN find ./python/lib/$runtime/site-packages -name __pycache__ -type d -exec rm -r {} \+ # When building ddtrace from branch, remove extra source files. These are From 189f49e74c1b0ff3fd25c984abc048762bcf25ca Mon Sep 17 00:00:00 2001 From: Abhinav Vedmala Date: Fri, 28 Feb 2025 16:38:57 -0500 Subject: [PATCH 225/403] Update Step Functions Parent ID Generation (#559) Co-authored-by: purple4reina --- datadog_lambda/tracing.py | 15 +++++++----- tests/test_tracing.py | 50 ++++++++++++++++++++++++++++++++++++++- 2 files changed, 58 insertions(+), 7 deletions(-) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 9189eb3be..a73423e17 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -385,21 +385,24 @@ def _parse_high_64_bits(trace_tags: str) -> str: def _generate_sfn_parent_id(context: dict) -> int: """ - The upstream Step Function can propagate its execution context to downstream Lambdas. The - Lambda can use these details to share the same traceID and infer its parent's spanID. + Generates a stable parent span ID for a downstream Lambda invoked by a Step Function. The + upstream Step Function execution context is used to infer the parent's span ID, ensuring trace + continuity. - Excluding redriveCount when its 0 to account for cases where customers are using an old - version of the Lambda layer that doesn't use this value for its parentID generation. + `RetryCount` and `RedriveCount` are appended only when both are nonzero to maintain + compatibility with older Lambda layers that did not include these fields. """ execution_id = context.get("Execution").get("Id") redrive_count = context.get("Execution").get("RedriveCount", 0) state_name = context.get("State").get("Name") state_entered_time = context.get("State").get("EnteredTime") + retry_count = context.get("State").get("RetryCount", 0) - redrive_postfix = "" if redrive_count == 0 else f"#{redrive_count}" + include_counts = not (retry_count == 0 and redrive_count == 0) + counts_suffix = f"#{retry_count}#{redrive_count}" if include_counts else "" return _deterministic_sha256_hash( - f"{execution_id}#{state_name}#{state_entered_time}{redrive_postfix}", + f"{execution_id}#{state_name}#{state_entered_time}{counts_suffix}", HIGHER_64_BITS, ) diff --git a/tests/test_tracing.py b/tests/test_tracing.py index 89a7712c8..5480a92c7 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -622,6 +622,7 @@ def test_step_function_trace_data(self): "Name": "72a7ca3e-901c-41bb-b5a3-5f279b92a316", "RoleArn": "arn:aws:iam::425362996713:role/service-role/StepFunctions-abhinav-activity-state-machine-role-22jpbgl6j", "StartTime": "2024-12-04T19:38:04.069Z", + "RedriveCount": 0, }, "State": { "Name": "Lambda Invoke", @@ -657,6 +658,51 @@ def test_step_function_trace_data(self): expected_context, ) + @with_trace_propagation_style("datadog") + def test_step_function_trace_data_retry(self): + lambda_ctx = get_mock_context() + sfn_event = { + "Execution": { + "Id": "arn:aws:states:sa-east-1:425362996713:execution:abhinav-activity-state-machine:72a7ca3e-901c-41bb-b5a3-5f279b92a316", + "Name": "72a7ca3e-901c-41bb-b5a3-5f279b92a316", + "RoleArn": "arn:aws:iam::425362996713:role/service-role/StepFunctions-abhinav-activity-state-machine-role-22jpbgl6j", + "StartTime": "2024-12-04T19:38:04.069Z", + "RedriveCount": 0, + }, + "State": { + "Name": "Lambda Invoke", + "EnteredTime": "2024-12-04T19:38:04.118Z", + "RetryCount": 1, + }, + "StateMachine": { + "Id": "arn:aws:states:sa-east-1:425362996713:stateMachine:abhinav-activity-state-machine", + "Name": "abhinav-activity-state-machine", + }, + } + ctx, source, event_source = extract_dd_trace_context(sfn_event, lambda_ctx) + self.assertEqual(source, "event") + expected_context = Context( + trace_id=435175499815315247, + span_id=5063839446130725204, + sampling_priority=1, + meta={"_dd.p.tid": "3e7a89d1b7310603"}, + ) + self.assertEqual(ctx, expected_context) + self.assertEqual( + get_dd_trace_context(), + { + TraceHeader.TRACE_ID: "435175499815315247", + TraceHeader.PARENT_ID: "10713633173203262661", + TraceHeader.SAMPLING_PRIORITY: "1", + TraceHeader.TAGS: "_dd.p.tid=3e7a89d1b7310603", + }, + ) + create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) + self.mock_send_segment.assert_called_with( + XraySubsegment.TRACE_KEY, + expected_context, + ) + # https://github.com/DataDog/logs-backend/blob/c17618cb552fc369ca40282bae0a65803f82f694/domains/serverless/apps/logs-to-traces-reducer/src/test/resources/test-json-files/stepfunctions/RedriveTest/snapshots/RedriveLambdaSuccessTraceMerging.json#L46 @with_trace_propagation_style("datadog") def test_step_function_trace_data_redrive(self): @@ -683,7 +729,7 @@ def test_step_function_trace_data_redrive(self): self.assertEqual(source, "event") expected_context = Context( trace_id=435175499815315247, - span_id=5063839446130725204, + span_id=8782364156266188026, sampling_priority=1, meta={"_dd.p.tid": "3e7a89d1b7310603"}, ) @@ -716,6 +762,7 @@ def test_step_function_trace_data_lambda_root(self): "State": { "Name": "my-awesome-state", "EnteredTime": "Mon Nov 13 12:43:33 PST 2023", + "RetryCount": 0, }, "x-datadog-trace-id": "5821803790426892636", "x-datadog-tags": "_dd.p.dm=-0,_dd.p.tid=672a7cb100000000", @@ -759,6 +806,7 @@ def test_step_function_trace_data_sfn_root(self): "State": { "Name": "my-awesome-state", "EnteredTime": "Mon Nov 13 12:43:33 PST 2023", + "RetryCount": 0, }, "RootExecutionId": "4875aba4-ae31-4a4c-bf8a-63e9eee31dad", "serverless-version": "v1", From fe3385fc1910796697f3eaf2f4e7a68a55af0e62 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Tue, 4 Mar 2025 13:47:33 -0500 Subject: [PATCH 226/403] Release with ddtrace@2.21.3 (#565) * release with ddtrace@2.21.3 * v6.106.0 * version * move the version pining logic to dockerfile --- Dockerfile | 2 +- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index a1b24bf38..757d671ab 100644 --- a/Dockerfile +++ b/Dockerfile @@ -14,7 +14,7 @@ ENV PATH=/root/.cargo/bin:$PATH # Install datadog_lambda and dependencies from local COPY . . -RUN pip install . -t ./python/lib/$runtime/site-packages +RUN pip install . ddtrace==2.21.3 -t ./python/lib/$runtime/site-packages # Remove botocore (40MB) to reduce package size. aws-xray-sdk # installs it, while it's already provided by the Lambda Runtime. diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index 0942ef405..0c8d879b4 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "6.105.0" +__version__ = "6.106.0" diff --git a/pyproject.toml b/pyproject.toml index 341814598..869b3a868 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "6.105.0" +version = "6.106.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From d9cf9fa9059401ebc46f0619e2d991e8e9271540 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Tue, 4 Mar 2025 15:56:32 -0500 Subject: [PATCH 227/403] chore: remove the hardcoded 2.21.3 version in dockerfile (#568) * remove the hardcoded 2.21.3 version in dockerfile * Apply suggestions from code review Co-authored-by: datadog-datadog-prod-us1[bot] <88084959+datadog-datadog-prod-us1[bot]@users.noreply.github.com> --------- Co-authored-by: Munir Abdinur Co-authored-by: datadog-datadog-prod-us1[bot] <88084959+datadog-datadog-prod-us1[bot]@users.noreply.github.com> --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 757d671ab..7f522e5ab 100644 --- a/Dockerfile +++ b/Dockerfile @@ -14,7 +14,7 @@ ENV PATH=/root/.cargo/bin:$PATH # Install datadog_lambda and dependencies from local COPY . . -RUN pip install . ddtrace==2.21.3 -t ./python/lib/$runtime/site-packages +RUN pip install --no-cache-dir . -t ./python/lib/$runtime/site-packages # Remove botocore (40MB) to reduce package size. aws-xray-sdk # installs it, while it's already provided by the Lambda Runtime. From aec49103a8a68362bea6bf1509b7bc51df7a3088 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?jordan=20gonz=C3=A1lez?= <30836115+duncanista@users.noreply.github.com> Date: Tue, 4 Mar 2025 15:58:02 -0500 Subject: [PATCH 228/403] add `CODEOWNERS` (#569) --- .github/CODEOWNERS | 1 + 1 file changed, 1 insertion(+) create mode 100644 .github/CODEOWNERS diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 000000000..e53b26464 --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1 @@ +* @DataDog/serverless-aws From 53306e38df8514525649789495baa7cad91eecd6 Mon Sep 17 00:00:00 2001 From: Aleksandr Pasechnik Date: Tue, 4 Mar 2025 16:45:00 -0500 Subject: [PATCH 229/403] chore: new govcloud release script (#567) also refactoring the environments template datasource and adding layer bundling jobs. --- ci/datasources/environments.yaml | 4 +- ci/input_files/build.yaml.tpl | 66 +++++++++++--- ci/publish_layers.sh | 36 ++++++-- scripts/publish_govcloud.sh | 105 ++++++++++++++++++++++ scripts/publish_prod.sh | 144 +++++++++++++------------------ 5 files changed, 255 insertions(+), 100 deletions(-) create mode 100755 scripts/publish_govcloud.sh diff --git a/ci/datasources/environments.yaml b/ci/datasources/environments.yaml index 90056ab00..1ae2b4d71 100644 --- a/ci/datasources/environments.yaml +++ b/ci/datasources/environments.yaml @@ -1,9 +1,9 @@ environments: - - name: sandbox + sandbox: external_id: sandbox-publish-externalid role_to_assume: sandbox-layer-deployer account: 425362996713 - - name: prod + prod: external_id: prod-publish-externalid role_to_assume: dd-serverless-layer-deployer-role account: 464622532012 diff --git a/ci/input_files/build.yaml.tpl b/ci/input_files/build.yaml.tpl index eae6b0d19..769f87f5c 100644 --- a/ci/input_files/build.yaml.tpl +++ b/ci/input_files/build.yaml.tpl @@ -103,9 +103,6 @@ integration-test ({{ $runtime.name }}-{{ $runtime.arch }}): script: - RUNTIME_PARAM={{ $runtime.python_version }} ARCH={{ $runtime.arch }} ./scripts/run_integration_tests.sh -{{ range $environment := (ds "environments").environments }} - -{{ if or (eq $environment.name "prod") }} sign-layer ({{ $runtime.name }}-{{ $runtime.arch }}): stage: sign tags: ["arch:amd64"] @@ -128,22 +125,25 @@ sign-layer ({{ $runtime.name }}-{{ $runtime.arch }}): before_script: - apt-get update - apt-get install -y uuid-runtime + {{ with $environment := (ds "environments").environments.prod }} - EXTERNAL_ID_NAME={{ $environment.external_id }} ROLE_TO_ASSUME={{ $environment.role_to_assume }} AWS_ACCOUNT={{ $environment.account }} source ./ci/get_secrets.sh + {{ end }} script: - - LAYER_FILE=datadog_lambda_py-{{ $runtime.arch}}-{{ $runtime.python_version }}.zip ./scripts/sign_layers.sh {{ $environment.name }} -{{ end }} + - LAYER_FILE=datadog_lambda_py-{{ $runtime.arch}}-{{ $runtime.python_version }}.zip ./scripts/sign_layers.sh prod + +{{ range $environment_name, $environment := (ds "environments").environments }} -publish-layer-{{ $environment.name }} ({{ $runtime.name }}-{{ $runtime.arch }}): +publish-layer-{{ $environment_name }} ({{ $runtime.name }}-{{ $runtime.arch }}): stage: publish tags: ["arch:amd64"] image: registry.ddbuild.io/images/docker:20.10-py3 rules: - - if: '"{{ $environment.name }}" =~ /^(sandbox|staging)/' + - if: '"{{ $environment_name }}" == "sandbox"' when: manual allow_failure: true - if: '$CI_COMMIT_TAG =~ /^v.*/' needs: -{{ if or (eq $environment.name "prod") }} +{{ if or (eq $environment_name "prod") }} - sign-layer ({{ $runtime.name }}-{{ $runtime.arch}}) {{ else }} - build-layer ({{ $runtime.name }}-{{ $runtime.arch }}) @@ -153,7 +153,7 @@ publish-layer-{{ $environment.name }} ({{ $runtime.name }}-{{ $runtime.arch }}): - integration-test ({{ $runtime.name }}-{{ $runtime.arch }}) {{ end }} dependencies: -{{ if or (eq $environment.name "prod") }} +{{ if or (eq $environment_name "prod") }} - sign-layer ({{ $runtime.name }}-{{ $runtime.arch}}) {{ else }} - build-layer ({{ $runtime.name }}-{{ $runtime.arch }}) @@ -166,7 +166,7 @@ publish-layer-{{ $environment.name }} ({{ $runtime.name }}-{{ $runtime.arch }}): before_script: - EXTERNAL_ID_NAME={{ $environment.external_id }} ROLE_TO_ASSUME={{ $environment.role_to_assume }} AWS_ACCOUNT={{ $environment.account }} source ./ci/get_secrets.sh script: - - STAGE={{ $environment.name }} PYTHON_VERSION={{ $runtime.python_version }} ARCH={{ $runtime.arch }} ./ci/publish_layers.sh + - STAGE={{ $environment_name }} PYTHON_VERSION={{ $runtime.python_version }} ARCH={{ $runtime.arch }} ./ci/publish_layers.sh {{- end }} @@ -186,3 +186,49 @@ publish-pypi-package: {{- end }} script: - ./ci/publish_pypi.sh + +layer bundle: + stage: build + tags: ["arch:amd64"] + image: registry.ddbuild.io/images/docker:20.10 + needs: + {{ range (ds "runtimes").runtimes }} + - build-layer ({{ .name }}-{{ .arch }}) + {{ end }} + dependencies: + {{ range (ds "runtimes").runtimes }} + - build-layer ({{ .name }}-{{ .arch }}) + {{ end }} + artifacts: + expire_in: 1 hr + paths: + - datadog_lambda_py-bundle-${CI_JOB_ID}/ + name: datadog_lambda_py-bundle-${CI_JOB_ID} + script: + - rm -rf datadog_lambda_py-bundle-${CI_JOB_ID} + - mkdir -p datadog_lambda_py-bundle-${CI_JOB_ID} + - cp .layers/datadog_lambda_py-*.zip datadog_lambda_py-bundle-${CI_JOB_ID} + +signed layer bundle: + stage: sign + image: registry.ddbuild.io/images/docker:20.10-py3 + tags: ["arch:amd64"] + rules: + - if: '$CI_COMMIT_TAG =~ /^v.*/' + needs: + {{ range (ds "runtimes").runtimes }} + - sign-layer ({{ .name }}-{{ .arch }}) + {{ end }} + dependencies: + {{ range (ds "runtimes").runtimes }} + - sign-layer ({{ .name }}-{{ .arch }}) + {{ end }} + artifacts: + expire_in: 1 day + paths: + - datadog_lambda_py-signed-bundle-${CI_JOB_ID}/ + name: datadog_lambda_py-signed-bundle-${CI_JOB_ID} + script: + - rm -rf datadog_lambda_py-signed-bundle-${CI_JOB_ID} + - mkdir -p datadog_lambda_py-signed-bundle-${CI_JOB_ID} + - cp .layers/datadog_lambda_py-*.zip datadog_lambda_py-signed-bundle-${CI_JOB_ID} diff --git a/ci/publish_layers.sh b/ci/publish_layers.sh index 85317ddd8..58257bf11 100755 --- a/ci/publish_layers.sh +++ b/ci/publish_layers.sh @@ -24,7 +24,20 @@ AWS_CLI_PYTHON_VERSIONS=( "python3.13" "python3.13" ) -PYTHON_VERSIONS=("3.8-amd64" "3.8-arm64" "3.9-amd64" "3.9-arm64" "3.10-amd64" "3.10-arm64" "3.11-amd64" "3.11-arm64" "3.12-amd64" "3.12-arm64" "3.13-amd64" "3.13-arm64") +PYTHON_VERSIONS=( + "3.8-amd64" + "3.8-arm64" + "3.9-amd64" + "3.9-arm64" + "3.10-amd64" + "3.10-arm64" + "3.11-amd64" + "3.11-arm64" + "3.12-amd64" + "3.12-arm64" + "3.13-amd64" + "3.13-arm64" +) LAYER_PATHS=( ".layers/datadog_lambda_py-amd64-3.8.zip" ".layers/datadog_lambda_py-arm64-3.8.zip" @@ -53,11 +66,16 @@ LAYERS=( "Datadog-Python313" "Datadog-Python313-ARM" ) -STAGES=('prod', 'sandbox', 'staging') +STAGES=('prod', 'sandbox', 'staging', 'gov-staging', 'gov-prod') printf "Starting script...\n\n" -printf "Installing dependencies\n" -pip install awscli + +if [ -z "$SKIP_PIP_INSTALL" ]; then + echo "Installing dependencies" + pip install awscli +else + echo "Skipping pip install" +fi publish_layer() { region=$1 @@ -89,7 +107,7 @@ fi printf "Python version specified: $PYTHON_VERSION\n" if [[ ! ${PYTHON_VERSIONS[@]} =~ $PYTHON_VERSION ]]; then - printf "[Error] Unsupported PYTHON_VERSION found.\n" + printf "[Error] Unsupported PYTHON_VERSION found: $PYTHON_VERSION.\n" exit 1 fi @@ -133,8 +151,14 @@ if [[ ! ${STAGES[@]} =~ $STAGE ]]; then fi layer="${LAYERS[$index]}" +if [ -z "$LAYER_NAME_SUFFIX" ]; then + echo "No layer name suffix" +else + layer="${layer}-${LAYER_NAME_SUFFIX}" +fi +echo "layer name: $layer" -if [[ "$STAGE" =~ ^(staging|sandbox)$ ]]; then +if [[ "$STAGE" =~ ^(staging|sandbox|gov-staging)$ ]]; then # Deploy latest version latest_version=$(aws lambda list-layer-versions --region $REGION --layer-name $layer --query 'LayerVersions[0].Version || `0`') VERSION=$(($latest_version + 1)) diff --git a/scripts/publish_govcloud.sh b/scripts/publish_govcloud.sh new file mode 100755 index 000000000..5fd107b0e --- /dev/null +++ b/scripts/publish_govcloud.sh @@ -0,0 +1,105 @@ +#! /usr/bin/env bash + +# Unless explicitly stated otherwise all files in this repository are licensed +# under the Apache License Version 2.0. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2025 Datadog, Inc. +# +# USAGE: download the layer bundle from the build pipeline in gitlab. Use the +# Download button on the `layer bundle` job. This will be a zip file containing +# all of the required layers. Run this script as follows: +# +# ENVIRONMENT=[us1-staging-fed or us1-fed] [LAYER_NAME_SUFFIX=optional-layer-suffix] [REGIONS=us-gov-west-1] ./scripts/publish_govcloud.sh +# +# protip: you can drag the zip file from finder into your terminal to insert +# its path. + +set -e + +LAYER_PACKAGE=$1 + +if [ -z "$LAYER_PACKAGE" ]; then + printf "[ERROR]: layer package not provided\n" + exit 1 +fi + +PACKAGE_NAME=$(basename "$LAYER_PACKAGE" .zip) + +if [ -z "$ENVIRONMENT" ]; then + printf "[ERROR]: ENVIRONMENT not specified\n" + exit 1 +fi + +if [ "$ENVIRONMENT" = "us1-staging-fed" ]; then + AWS_VAULT_ROLE=sso-govcloud-us1-staging-fed-power-user + + export STAGE=gov-staging + + if [[ ! "$PACKAGE_NAME" =~ ^datadog_lambda_py-(signed-)?bundle-[0-9]+$ ]]; then + echo "[ERROR]: Unexpected package name: $PACKAGE_NAME" + exit 1 + fi + +elif [ $ENVIRONMENT = "us1-fed" ]; then + AWS_VAULT_ROLE=sso-govcloud-us1-fed-engineering + + export STAGE=gov-prod + + if [[ ! "$PACKAGE_NAME" =~ ^datadog_lambda_py-signed-bundle-[0-9]+$ ]]; then + echo "[ERROR]: Unexpected package name: $PACKAGE_NAME" + exit 1 + fi + +else + printf "[ERROR]: ENVIRONMENT not supported, must be us1-staging-fed or us1-fed.\n" + exit 1 +fi + +TEMP_DIR=$(mktemp -d) +unzip $LAYER_PACKAGE -d $TEMP_DIR +cp -v $TEMP_DIR/$PACKAGE_NAME/*.zip .layers/ + + +AWS_VAULT_PREFIX="aws-vault exec $AWS_VAULT_ROLE --" + +echo "Checking that you have access to the GovCloud AWS account" +$AWS_VAULT_PREFIX aws sts get-caller-identity + + +AVAILABLE_REGIONS=$($AWS_VAULT_PREFIX aws ec2 describe-regions | jq -r '.[] | .[] | .RegionName') + +# Determine the target regions +if [ -z "$REGIONS" ]; then + echo "Region not specified, running for all available regions." + REGIONS=$AVAILABLE_REGIONS +else + echo "Region specified: $REGIONS" + if [[ ! "$AVAILABLE_REGIONS" == *"$REGIONS"* ]]; then + echo "Could not find $REGIONS in available regions: $AVAILABLE_REGIONS" + echo "" + echo "EXITING SCRIPT." + exit 1 + fi +fi + +for region in $REGIONS +do + echo "Starting publishing layers for region $region..." + + export REGION=$region + + for python_version in "3.8" "3.9" "3.10" "3.11" "3.12" "3.13"; do + for arch in "amd64" "arm64"; do + export PYTHON_VERSION=$python_version + export ARCH=$arch + + export SKIP_PIP_INSTALL=true + + echo "Publishing layer for $PYTHON_VERSION and $ARCH" + + $AWS_VAULT_PREFIX ./ci/publish_layers.sh + done + done +done + +echo "Done !" diff --git a/scripts/publish_prod.sh b/scripts/publish_prod.sh index f3d13653c..d2918c544 100755 --- a/scripts/publish_prod.sh +++ b/scripts/publish_prod.sh @@ -6,6 +6,11 @@ set -e read -p "Are we only doing the simplified GovCloud release? ONLY IF THE NORMAL RELEASE IS DONE AND YOU HAVE DOWNLOADED THE LAYERS (y/n)? " GOVCLOUD_ONLY +if [ $GOVCLOUD_ONLY != "n" ]; then + echo "GovCloud publishing is now supported only in publich_govcloud.sh" + exit 1 +fi + # Ensure on main, and pull the latest BRANCH=$(git rev-parse --abbrev-ref HEAD) if [ $BRANCH != "main" ]; then @@ -34,107 +39,82 @@ else fi # Ensure pypi registry access -if [ $GOVCLOUD_ONLY == "y" ]; then - echo "Skipping PyPI check since this is a GovCloud-only release" - -else - read -p "Do you have access to PyPI (y/n)?" CONT - if [ "$CONT" != "y" ]; then - echo "Exiting" - exit 1 - fi +read -p "Do you have access to PyPI (y/n)?" CONT +if [ "$CONT" != "y" ]; then + echo "Exiting" + exit 1 fi CURRENT_VERSION=$(poetry version --short) LAYER_VERSION=$(echo $NEW_VERSION | cut -d '.' -f 2) -if [ $GOVCLOUD_ONLY == "y" ]; then - echo "Skipping Libary Updates, code changes, layer builds and signing for GovCloud-only release" +read -p "Ready to update the library version from $CURRENT_VERSION to $NEW_VERSION and publish layer version $LAYER_VERSION (y/n)?" CONT +if [ "$CONT" != "y" ]; then + echo "Exiting" + exit 1 +fi +echo "Answer 'n' if already done in a PR" +read -p "Update pyproject.toml version? (y/n)?" CONT +if [ "$CONT" != "y" ]; then + echo "Skipping updating package.json version" else - read -p "Ready to update the library version from $CURRENT_VERSION to $NEW_VERSION and publish layer version $LAYER_VERSION (y/n)?" CONT - if [ "$CONT" != "y" ]; then - echo "Exiting" - exit 1 - fi - - echo "Answer 'n' if already done in a PR" - read -p "Update pyproject.toml version? (y/n)?" CONT - if [ "$CONT" != "y" ]; then - echo "Skipping updating package.json version" - else - echo - echo "Replacing version in pyproject.toml and datadog_lambda/version.py" - echo - - poetry version ${NEW_VERSION} - echo "__version__ = \"${NEW_VERSION}\"" > datadog_lambda/version.py - fi - echo - echo "Building layers..." - ./scripts/build_layers.sh - + echo "Replacing version in pyproject.toml and datadog_lambda/version.py" echo - echo "Signing layers for commercial AWS regions" - aws-vault exec sso-prod-engineering -- ./scripts/sign_layers.sh prod - - echo "Answer 'n' if GitLab already did this" - read -p "Deploy layers to commercial AWS (y/n)?" CONT - if [ "$CONT" != "y" ]; then - echo "Skipping deployment to commercial AWS" - else - echo "Ensuring you have access to the production AWS account" - aws-vault exec sso-prod-engineering -- aws sts get-caller-identity - - echo - echo "Publishing layers to commercial AWS regions" - VERSION=$LAYER_VERSION aws-vault exec sso-prod-engineering --no-session -- ./scripts/publish_layers.sh - fi + + poetry version ${NEW_VERSION} + echo "__version__ = \"${NEW_VERSION}\"" > datadog_lambda/version.py fi -read -p "Deploy layers to GovCloud AWS (y/n)?" CONT +echo +echo "Building layers..." +./scripts/build_layers.sh + +echo +echo "Signing layers for commercial AWS regions" +aws-vault exec sso-prod-engineering -- ./scripts/sign_layers.sh prod + +echo "Answer 'n' if GitLab already did this" +read -p "Deploy layers to commercial AWS (y/n)?" CONT if [ "$CONT" != "y" ]; then - echo "Skipping deployment to GovCloud AWS" + echo "Skipping deployment to commercial AWS" else - echo "Ensuring you have access to the AWS GovCloud account" - aws-vault exec sso-govcloud-us1-fed-engineering -- aws sts get-caller-identity + echo "Ensuring you have access to the production AWS account" + aws-vault exec sso-prod-engineering -- aws sts get-caller-identity - echo "Publishing layers to GovCloud AWS regions" - VERSION=$LAYER_VERSION aws-vault exec sso-govcloud-us1-fed-engineering -- ./scripts/publish_layers.sh + echo + echo "Publishing layers to commercial AWS regions" + VERSION=$LAYER_VERSION aws-vault exec sso-prod-engineering --no-session -- ./scripts/publish_layers.sh fi -if [ $GOVCLOUD_ONLY == "y" ]; then - echo "Skipping PyPI check and Github Release since this is a GovCloud-only release" - +echo "Answer 'n' if GitLab already did this" +read -p "Ready to publish $NEW_VERSION to PyPI (y/n)?" CONT +if [ "$CONT" != "y" ]; then + echo "Skipping publishing to PyPI" else - echo "Answer 'n' if GitLab already did this" - read -p "Ready to publish $NEW_VERSION to PyPI (y/n)?" CONT - if [ "$CONT" != "y" ]; then - echo "Skipping publishing to PyPI" - else - echo - echo "Publishing to https://pypi.org/project/datadog-lambda/" - ./scripts/pypi.sh - fi - - - echo "Answer 'n' if you already released in GitHub" - read -p "Do you want to bump the version in GitHub? (y/n)" CONT - if [ "$CONT" != "y" ]; then - echo "Skipping publishing updates to GitHub" - else - echo - echo 'Publishing updates to github' - git commit pyproject.toml datadog_lambda/version.py -m "Bump version to ${NEW_VERSION}" - git push origin main - git tag "v$LAYER_VERSION" - git push origin "refs/tags/v$LAYER_VERSION" - fi + echo + echo "Publishing to https://pypi.org/project/datadog-lambda/" + ./scripts/pypi.sh +fi + +echo "Answer 'n' if you already released in GitHub" +read -p "Do you want to bump the version in GitHub? (y/n)" CONT +if [ "$CONT" != "y" ]; then + echo "Skipping publishing updates to GitHub" +else echo - echo "Now create a new release with the tag v${LAYER_VERSION} created unless you have done this already" - echo "https://github.com/DataDog/datadog-lambda-python/releases/new?tag=v$LAYER_VERSION&title=v$LAYER_VERSION" + echo 'Publishing updates to github' + git commit pyproject.toml datadog_lambda/version.py -m "Bump version to ${NEW_VERSION}" + git push origin main + git tag "v$LAYER_VERSION" + git push origin "refs/tags/v$LAYER_VERSION" fi + +echo +echo "Now create a new release with the tag v${LAYER_VERSION} created unless you have done this already" +echo "https://github.com/DataDog/datadog-lambda-python/releases/new?tag=v$LAYER_VERSION&title=v$LAYER_VERSION" + # Open a PR to the documentation repo to automatically bump layer version VERSION=$LAYER_VERSION LAYER=datadog-lambda-python ./scripts/create_documentation_pr.sh From dc1ccba4b81d80097341057bf786c25ec0efc52a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?jordan=20gonz=C3=A1lez?= <30836115+duncanista@users.noreply.github.com> Date: Tue, 4 Mar 2025 17:06:41 -0500 Subject: [PATCH 230/403] update `CODEOWNERS` (#570) --- .github/CODEOWNERS | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index e53b26464..26b4b78e4 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1 +1,6 @@ -* @DataDog/serverless-aws +* @DataDog/serverless-aws +datadog_lambda/tracing.py @DataDog/apm-serverless +datadog_lambda/patch.py @DataDog/apm-serverless +datadog_lambda/span_points.py @DataDog/apm-serverless +datadog_lambda/cold_start.py @DataDog/apm-serverless +datadog_lambda/wrapper.py @DataDog/apm-serverless From fc0beaae643d59a4745ae6d8da163ad39cdb5970 Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Fri, 7 Mar 2025 10:24:16 -0800 Subject: [PATCH 231/403] Pin ddtrace to Date: Mon, 10 Mar 2025 19:53:38 -0400 Subject: [PATCH 232/403] Enable LLM Observability with `agentless_enabled=True` by default with a parsed API key (#572) * enable llmobs agentless with parsed api_key * extract getting api key to its own function * lint --- datadog_lambda/api.py | 58 ++++++++++++++++++++++++--------------- datadog_lambda/wrapper.py | 9 +++++- 2 files changed, 44 insertions(+), 23 deletions(-) diff --git a/datadog_lambda/api.py b/datadog_lambda/api.py index b5414fd95..a114fe8fe 100644 --- a/datadog_lambda/api.py +++ b/datadog_lambda/api.py @@ -4,6 +4,7 @@ logger = logging.getLogger(__name__) KMS_ENCRYPTION_CONTEXT_KEY = "LambdaFunctionName" +api_key = None def decrypt_kms_api_key(kms_client, ciphertext): @@ -46,6 +47,40 @@ def decrypt_kms_api_key(kms_client, ciphertext): return plaintext +def get_api_key() -> str: + """ + Gets the Datadog API key from the environment variables or secrets manager. + Extracts the result to a global value to avoid repeated calls to the + secrets manager from different products. + """ + global api_key + if api_key: + return api_key + + import boto3 + + DD_API_KEY_SECRET_ARN = os.environ.get("DD_API_KEY_SECRET_ARN", "") + DD_API_KEY_SSM_NAME = os.environ.get("DD_API_KEY_SSM_NAME", "") + DD_KMS_API_KEY = os.environ.get("DD_KMS_API_KEY", "") + DD_API_KEY = os.environ.get("DD_API_KEY", os.environ.get("DATADOG_API_KEY", "")) + + if DD_API_KEY_SECRET_ARN: + api_key = boto3.client("secretsmanager").get_secret_value( + SecretId=DD_API_KEY_SECRET_ARN + )["SecretString"] + elif DD_API_KEY_SSM_NAME: + api_key = boto3.client("ssm").get_parameter( + Name=DD_API_KEY_SSM_NAME, WithDecryption=True + )["Parameter"]["Value"] + elif DD_KMS_API_KEY: + kms_client = boto3.client("kms") + api_key = decrypt_kms_api_key(kms_client, DD_KMS_API_KEY) + else: + api_key = DD_API_KEY + + return api_key + + def init_api(): if not os.environ.get("DD_FLUSH_TO_LOG", "").lower() == "true": # Make sure that this package would always be lazy-loaded/outside from the critical path @@ -54,28 +89,7 @@ def init_api(): from datadog import api if not api._api_key: - import boto3 - - DD_API_KEY_SECRET_ARN = os.environ.get("DD_API_KEY_SECRET_ARN", "") - DD_API_KEY_SSM_NAME = os.environ.get("DD_API_KEY_SSM_NAME", "") - DD_KMS_API_KEY = os.environ.get("DD_KMS_API_KEY", "") - DD_API_KEY = os.environ.get( - "DD_API_KEY", os.environ.get("DATADOG_API_KEY", "") - ) - - if DD_API_KEY_SECRET_ARN: - api._api_key = boto3.client("secretsmanager").get_secret_value( - SecretId=DD_API_KEY_SECRET_ARN - )["SecretString"] - elif DD_API_KEY_SSM_NAME: - api._api_key = boto3.client("ssm").get_parameter( - Name=DD_API_KEY_SSM_NAME, WithDecryption=True - )["Parameter"]["Value"] - elif DD_KMS_API_KEY: - kms_client = boto3.client("kms") - api._api_key = decrypt_kms_api_key(kms_client, DD_KMS_API_KEY) - else: - api._api_key = DD_API_KEY + api._api_key = get_api_key() logger.debug("Setting DATADOG_API_KEY of length %d", len(api._api_key)) diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 2632d22eb..6afa9a070 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -56,10 +56,14 @@ if profiling_env_var: from ddtrace.profiling import profiler +llmobs_api_key = None llmobs_env_var = os.environ.get("DD_LLMOBS_ENABLED", "false").lower() in ("true", "1") if llmobs_env_var: + from datadog_lambda.api import get_api_key from ddtrace.llmobs import LLMObs + llmobs_api_key = get_api_key() + logger = logging.getLogger(__name__) DD_FLUSH_TO_LOG = "DD_FLUSH_TO_LOG" @@ -229,7 +233,10 @@ def __init__(self, func): # Enable LLM Observability if llmobs_env_var: - LLMObs.enable() + LLMObs.enable( + agentless_enabled=True, + api_key=llmobs_api_key, + ) logger.debug("datadog_lambda_wrapper initialized") except Exception as e: From 71b64fa1de4c0e56bb49cc2201a87da0d10409c5 Mon Sep 17 00:00:00 2001 From: Nicholas Hulston Date: Wed, 12 Mar 2025 14:16:42 -0400 Subject: [PATCH 233/403] Use FIPs endpoints in Govcloud regions (#575) --- datadog_lambda/api.py | 31 +++++++++++++-- tests/test_api.py | 89 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 117 insertions(+), 3 deletions(-) create mode 100644 tests/test_api.py diff --git a/datadog_lambda/api.py b/datadog_lambda/api.py index a114fe8fe..031359122 100644 --- a/datadog_lambda/api.py +++ b/datadog_lambda/api.py @@ -64,16 +64,41 @@ def get_api_key() -> str: DD_KMS_API_KEY = os.environ.get("DD_KMS_API_KEY", "") DD_API_KEY = os.environ.get("DD_API_KEY", os.environ.get("DATADOG_API_KEY", "")) + REGION = os.environ.get("AWS_REGION", "") + is_gov_region = REGION.startswith("us-gov-") + if is_gov_region: + logger.debug( + "Govcloud region detected. Using FIPs endpoints for secrets management." + ) + if DD_API_KEY_SECRET_ARN: - api_key = boto3.client("secretsmanager").get_secret_value( + # Secrets manager endpoints: https://docs.aws.amazon.com/general/latest/gr/asm.html + fips_endpoint = ( + f"https://secretsmanager-fips.{REGION}.amazonaws.com" + if is_gov_region + else None + ) + secrets_manager_client = boto3.client( + "secretsmanager", endpoint_url=fips_endpoint + ) + api_key = secrets_manager_client.get_secret_value( SecretId=DD_API_KEY_SECRET_ARN )["SecretString"] elif DD_API_KEY_SSM_NAME: - api_key = boto3.client("ssm").get_parameter( + # SSM endpoints: https://docs.aws.amazon.com/general/latest/gr/ssm.html + fips_endpoint = ( + f"https://ssm-fips.{REGION}.amazonaws.com" if is_gov_region else None + ) + ssm_client = boto3.client("ssm", endpoint_url=fips_endpoint) + api_key = ssm_client.get_parameter( Name=DD_API_KEY_SSM_NAME, WithDecryption=True )["Parameter"]["Value"] elif DD_KMS_API_KEY: - kms_client = boto3.client("kms") + # KMS endpoints: https://docs.aws.amazon.com/general/latest/gr/kms.html + fips_endpoint = ( + f"https://kms-fips.{REGION}.amazonaws.com" if is_gov_region else None + ) + kms_client = boto3.client("kms", endpoint_url=fips_endpoint) api_key = decrypt_kms_api_key(kms_client, DD_KMS_API_KEY) else: api_key = DD_API_KEY diff --git a/tests/test_api.py b/tests/test_api.py new file mode 100644 index 000000000..a69f4382d --- /dev/null +++ b/tests/test_api.py @@ -0,0 +1,89 @@ +import os +import unittest +from unittest.mock import patch, MagicMock + +import datadog_lambda.api as api + + +class TestDatadogLambdaAPI(unittest.TestCase): + def setUp(self): + api.api_key = None + self.env_patcher = patch.dict( + os.environ, + { + "DD_API_KEY_SECRET_ARN": "", + "DD_API_KEY_SSM_NAME": "", + "DD_KMS_API_KEY": "", + "DD_API_KEY": "", + "DATADOG_API_KEY": "", + "AWS_REGION": "", + }, + clear=True, + ) + self.env_patcher.start() + + @patch("boto3.client") + def test_secrets_manager_fips_endpoint(self, mock_boto3_client): + mock_client = MagicMock() + mock_client.get_secret_value.return_value = {"SecretString": "test-api-key"} + mock_boto3_client.return_value = mock_client + + os.environ["AWS_REGION"] = "us-gov-east-1" + os.environ["DD_API_KEY_SECRET_ARN"] = "test-secrets-arn" + + api_key = api.get_api_key() + + mock_boto3_client.assert_called_with( + "secretsmanager", + endpoint_url="https://secretsmanager-fips.us-gov-east-1.amazonaws.com", + ) + self.assertEqual(api_key, "test-api-key") + + @patch("boto3.client") + def test_ssm_fips_endpoint(self, mock_boto3_client): + mock_client = MagicMock() + mock_client.get_parameter.return_value = { + "Parameter": {"Value": "test-api-key"} + } + mock_boto3_client.return_value = mock_client + + os.environ["AWS_REGION"] = "us-gov-west-1" + os.environ["DD_API_KEY_SSM_NAME"] = "test-ssm-param" + + api_key = api.get_api_key() + + mock_boto3_client.assert_called_with( + "ssm", endpoint_url="https://ssm-fips.us-gov-west-1.amazonaws.com" + ) + self.assertEqual(api_key, "test-api-key") + + @patch("boto3.client") + @patch("datadog_lambda.api.decrypt_kms_api_key") + def test_kms_fips_endpoint(self, mock_decrypt_kms, mock_boto3_client): + mock_client = MagicMock() + mock_boto3_client.return_value = mock_client + mock_decrypt_kms.return_value = "test-api-key" + + os.environ["AWS_REGION"] = "us-gov-west-1" + os.environ["DD_KMS_API_KEY"] = "encrypted-api-key" + + api_key = api.get_api_key() + + mock_boto3_client.assert_called_with( + "kms", endpoint_url="https://kms-fips.us-gov-west-1.amazonaws.com" + ) + self.assertEqual(api_key, "test-api-key") + + @patch("boto3.client") + def test_no_fips_for_standard_regions(self, mock_boto3_client): + mock_client = MagicMock() + mock_client.get_secret_value.return_value = {"SecretString": "test-api-key"} + mock_boto3_client.return_value = mock_client + + os.environ.clear() + os.environ["AWS_REGION"] = "us-west-2" + os.environ["DD_API_KEY_SECRET_ARN"] = "test-arn" + + api.get_api_key() + + mock_boto3_client.assert_called_with("secretsmanager", endpoint_url=None) From 7d7c15346f871d9a5d3333a8f95334b7fe3d2bf3 Mon Sep 17 00:00:00 2001 From: Nicholas Hulston Date: Fri, 14 Mar 2025 14:14:07 -0700 Subject: [PATCH 234/403] Use correct SecretsManager region (#576) --- datadog_lambda/api.py | 21 ++++++++++++++------- tests/test_api.py | 33 ++++++++++++++++++++++++++++++--- 2 files changed, 44 insertions(+), 10 deletions(-) diff --git a/datadog_lambda/api.py b/datadog_lambda/api.py index 031359122..ad8608731 100644 --- a/datadog_lambda/api.py +++ b/datadog_lambda/api.py @@ -64,8 +64,8 @@ def get_api_key() -> str: DD_KMS_API_KEY = os.environ.get("DD_KMS_API_KEY", "") DD_API_KEY = os.environ.get("DD_API_KEY", os.environ.get("DATADOG_API_KEY", "")) - REGION = os.environ.get("AWS_REGION", "") - is_gov_region = REGION.startswith("us-gov-") + LAMBDA_REGION = os.environ.get("AWS_REGION", "") + is_gov_region = LAMBDA_REGION.startswith("us-gov-") if is_gov_region: logger.debug( "Govcloud region detected. Using FIPs endpoints for secrets management." @@ -73,13 +73,20 @@ def get_api_key() -> str: if DD_API_KEY_SECRET_ARN: # Secrets manager endpoints: https://docs.aws.amazon.com/general/latest/gr/asm.html - fips_endpoint = ( - f"https://secretsmanager-fips.{REGION}.amazonaws.com" + try: + secrets_region = DD_API_KEY_SECRET_ARN.split(":")[3] + except Exception: + logger.debug( + "Invalid secret arn in DD_API_KEY_SECRET_ARN. Unable to get API key." + ) + return "" + endpoint_url = ( + f"https://secretsmanager-fips.{secrets_region}.amazonaws.com" if is_gov_region else None ) secrets_manager_client = boto3.client( - "secretsmanager", endpoint_url=fips_endpoint + "secretsmanager", endpoint_url=endpoint_url, region_name=secrets_region ) api_key = secrets_manager_client.get_secret_value( SecretId=DD_API_KEY_SECRET_ARN @@ -87,7 +94,7 @@ def get_api_key() -> str: elif DD_API_KEY_SSM_NAME: # SSM endpoints: https://docs.aws.amazon.com/general/latest/gr/ssm.html fips_endpoint = ( - f"https://ssm-fips.{REGION}.amazonaws.com" if is_gov_region else None + f"https://ssm-fips.{LAMBDA_REGION}.amazonaws.com" if is_gov_region else None ) ssm_client = boto3.client("ssm", endpoint_url=fips_endpoint) api_key = ssm_client.get_parameter( @@ -96,7 +103,7 @@ def get_api_key() -> str: elif DD_KMS_API_KEY: # KMS endpoints: https://docs.aws.amazon.com/general/latest/gr/kms.html fips_endpoint = ( - f"https://kms-fips.{REGION}.amazonaws.com" if is_gov_region else None + f"https://kms-fips.{LAMBDA_REGION}.amazonaws.com" if is_gov_region else None ) kms_client = boto3.client("kms", endpoint_url=fips_endpoint) api_key = decrypt_kms_api_key(kms_client, DD_KMS_API_KEY) diff --git a/tests/test_api.py b/tests/test_api.py index a69f4382d..c7facb43e 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -29,13 +29,36 @@ def test_secrets_manager_fips_endpoint(self, mock_boto3_client): mock_boto3_client.return_value = mock_client os.environ["AWS_REGION"] = "us-gov-east-1" - os.environ["DD_API_KEY_SECRET_ARN"] = "test-secrets-arn" + os.environ[ + "DD_API_KEY_SECRET_ARN" + ] = "arn:aws:secretsmanager:us-gov-east-1:1234567890:secret:key-name-123ABC" api_key = api.get_api_key() mock_boto3_client.assert_called_with( "secretsmanager", endpoint_url="https://secretsmanager-fips.us-gov-east-1.amazonaws.com", + region_name="us-gov-east-1", + ) + self.assertEqual(api_key, "test-api-key") + + @patch("boto3.client") + def test_secrets_manager_different_region(self, mock_boto3_client): + mock_client = MagicMock() + mock_client.get_secret_value.return_value = {"SecretString": "test-api-key"} + mock_boto3_client.return_value = mock_client + + os.environ["AWS_REGION"] = "us-east-1" + os.environ[ + "DD_API_KEY_SECRET_ARN" + ] = "arn:aws:secretsmanager:us-west-1:1234567890:secret:key-name-123ABC" + + api_key = api.get_api_key() + + mock_boto3_client.assert_called_with( + "secretsmanager", + endpoint_url=None, + region_name="us-west-1", ) self.assertEqual(api_key, "test-api-key") @@ -82,8 +105,12 @@ def test_no_fips_for_standard_regions(self, mock_boto3_client): os.environ.clear() os.environ["AWS_REGION"] = "us-west-2" - os.environ["DD_API_KEY_SECRET_ARN"] = "test-arn" + os.environ[ + "DD_API_KEY_SECRET_ARN" + ] = "arn:aws:secretsmanager:us-west-2:1234567890:secret:key-name-123ABC" api.get_api_key() - mock_boto3_client.assert_called_with("secretsmanager", endpoint_url=None) + mock_boto3_client.assert_called_with( + "secretsmanager", endpoint_url=None, region_name="us-west-2" + ) From 5a55fe45a49b8d7e6c8db0734f203bdff648f383 Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Mon, 17 Mar 2025 13:16:39 -0700 Subject: [PATCH 235/403] Use sam/build-python images for building layers. (#577) --- scripts/build_layers.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/build_layers.sh b/scripts/build_layers.sh index a0d6ee39d..23941b7a0 100755 --- a/scripts/build_layers.sh +++ b/scripts/build_layers.sh @@ -61,7 +61,7 @@ function docker_build_zip { # between different python runtimes. temp_dir=$(mktemp -d) docker buildx build -t datadog-lambda-python-${arch}:$1 . --no-cache \ - --build-arg image=public.ecr.aws/docker/library/python:$1 \ + --build-arg image=public.ecr.aws/sam/build-python$1:1 \ --build-arg runtime=python$1 \ --platform linux/${arch} \ --progress=plain \ From 8398da08d0c6a6de4459b9619969bbb97b8895ee Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Tue, 18 Mar 2025 13:11:15 -0700 Subject: [PATCH 236/403] Lazy load boto client when using datadogpy for metrics. (#558) * Lazy load boto client when using datadogpy for metrics. * Update test mocking. --- datadog_lambda/api.py | 14 +++++++++----- pyproject.toml | 4 ++-- tests/test_api.py | 10 +++++----- 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/datadog_lambda/api.py b/datadog_lambda/api.py index ad8608731..c539ea05a 100644 --- a/datadog_lambda/api.py +++ b/datadog_lambda/api.py @@ -57,8 +57,6 @@ def get_api_key() -> str: if api_key: return api_key - import boto3 - DD_API_KEY_SECRET_ARN = os.environ.get("DD_API_KEY_SECRET_ARN", "") DD_API_KEY_SSM_NAME = os.environ.get("DD_API_KEY_SSM_NAME", "") DD_KMS_API_KEY = os.environ.get("DD_KMS_API_KEY", "") @@ -85,7 +83,7 @@ def get_api_key() -> str: if is_gov_region else None ) - secrets_manager_client = boto3.client( + secrets_manager_client = _boto3_client( "secretsmanager", endpoint_url=endpoint_url, region_name=secrets_region ) api_key = secrets_manager_client.get_secret_value( @@ -96,7 +94,7 @@ def get_api_key() -> str: fips_endpoint = ( f"https://ssm-fips.{LAMBDA_REGION}.amazonaws.com" if is_gov_region else None ) - ssm_client = boto3.client("ssm", endpoint_url=fips_endpoint) + ssm_client = _boto3_client("ssm", endpoint_url=fips_endpoint) api_key = ssm_client.get_parameter( Name=DD_API_KEY_SSM_NAME, WithDecryption=True )["Parameter"]["Value"] @@ -105,7 +103,7 @@ def get_api_key() -> str: fips_endpoint = ( f"https://kms-fips.{LAMBDA_REGION}.amazonaws.com" if is_gov_region else None ) - kms_client = boto3.client("kms", endpoint_url=fips_endpoint) + kms_client = _boto3_client("kms", endpoint_url=fips_endpoint) api_key = decrypt_kms_api_key(kms_client, DD_KMS_API_KEY) else: api_key = DD_API_KEY @@ -133,3 +131,9 @@ def init_api(): # Unmute exceptions from datadog api client, so we can catch and handle them api._mute = False + + +def _boto3_client(*args, **kwargs): + import botocore.session + + return botocore.session.get_session().create_client(*args, **kwargs) diff --git a/pyproject.toml b/pyproject.toml index a38605674..8db5e3525 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -30,7 +30,7 @@ datadog = ">=0.51.0,<1.0.0" wrapt = "^1.11.2" ddtrace = ">=2.20.0,<4" ujson = ">=5.9.0" -boto3 = { version = "^1.34.0", optional = true } +botocore = { version = "^1.34.0", optional = true } requests = { version ="^2.22.0", optional = true } pytest = { version= "^8.0.0", optional = true } pytest-benchmark = { version = "^4.0", optional = true } @@ -38,7 +38,7 @@ flake8 = { version = "^5.0.4", optional = true } [tool.poetry.extras] dev = [ - "boto3", + "botocore", "flake8", "pytest", "pytest-benchmark", diff --git a/tests/test_api.py b/tests/test_api.py index c7facb43e..c98d91eb2 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -22,7 +22,7 @@ def setUp(self): ) self.env_patcher.start() - @patch("boto3.client") + @patch("botocore.session.Session.create_client") def test_secrets_manager_fips_endpoint(self, mock_boto3_client): mock_client = MagicMock() mock_client.get_secret_value.return_value = {"SecretString": "test-api-key"} @@ -42,7 +42,7 @@ def test_secrets_manager_fips_endpoint(self, mock_boto3_client): ) self.assertEqual(api_key, "test-api-key") - @patch("boto3.client") + @patch("botocore.session.Session.create_client") def test_secrets_manager_different_region(self, mock_boto3_client): mock_client = MagicMock() mock_client.get_secret_value.return_value = {"SecretString": "test-api-key"} @@ -62,7 +62,7 @@ def test_secrets_manager_different_region(self, mock_boto3_client): ) self.assertEqual(api_key, "test-api-key") - @patch("boto3.client") + @patch("botocore.session.Session.create_client") def test_ssm_fips_endpoint(self, mock_boto3_client): mock_client = MagicMock() mock_client.get_parameter.return_value = { @@ -80,7 +80,7 @@ def test_ssm_fips_endpoint(self, mock_boto3_client): ) self.assertEqual(api_key, "test-api-key") - @patch("boto3.client") + @patch("botocore.session.Session.create_client") @patch("datadog_lambda.api.decrypt_kms_api_key") def test_kms_fips_endpoint(self, mock_decrypt_kms, mock_boto3_client): mock_client = MagicMock() @@ -97,7 +97,7 @@ def test_kms_fips_endpoint(self, mock_decrypt_kms, mock_boto3_client): ) self.assertEqual(api_key, "test-api-key") - @patch("boto3.client") + @patch("botocore.session.Session.create_client") def test_no_fips_for_standard_regions(self, mock_boto3_client): mock_client = MagicMock() mock_client.get_secret_value.return_value = {"SecretString": "test-api-key"} From 58a55bb4e4ef6fabe85580a3914c1f4d060f9378 Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Tue, 18 Mar 2025 13:11:44 -0700 Subject: [PATCH 237/403] Re-remove iast .so file. (#560) * Re-remove iast .so file. Commit https://github.com/DataDog/dd-trace-py/commit/fa18def52e13f863bd8de48cb8ef88feba0caf92 was merged to address this. * Re-remove taint tracking. --- Dockerfile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index 7f522e5ab..0e79d884a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -22,10 +22,10 @@ RUN rm -rf ./python/lib/$runtime/site-packages/botocore* RUN rm -rf ./python/lib/$runtime/site-packages/setuptools RUN rm -rf ./python/lib/$runtime/site-packages/jsonschema/tests RUN find . -name 'libddwaf.so' -delete -# Comment this line out for now since ddtrace now tries to import it -# RUN rm ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_stacktrace*.so -RUN rm ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/libdd_wrapper*.so -RUN rm ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/ddup/_ddup.*.so +RUN rm -f ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_taint_tracking/*.so +RUN rm -f ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_stacktrace*.so +RUN rm -f ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/libdd_wrapper*.so +RUN rm -f ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/ddup/_ddup.*.so # _stack_v2 may not exist for some versions of ddtrace (e.g. under python 3.13) RUN rm -f ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/stack_v2/_stack_v2.*.so # remove *.dist-info directories except any entry_points.txt files From 96a6abd227a328d94d233d7baf951f2975f1b267 Mon Sep 17 00:00:00 2001 From: Abhinav Vedmala Date: Wed, 19 Mar 2025 09:50:53 -0400 Subject: [PATCH 238/403] Propagate Step Function Trace Context through Managed Services (#573) Allows us to extract Step Function trace context in the following cases 1. SFN -> EventBridge -> Lambda 2. SFN -> EventBridge -> SQS -> Lambda 3. SFN -> SQS -> Lambda 4. SFN -> SNS -> Lambda 5. SFN -> SNS -> SQS -> Lambda --- datadog_lambda/tracing.py | 81 ++++++--- datadog_lambda/trigger.py | 30 ++- datadog_lambda/wrapper.py | 3 - tests/test_tracing.py | 374 ++++++++++++++++++++++++-------------- tests/test_trigger.py | 66 +++++++ 5 files changed, 387 insertions(+), 167 deletions(-) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index a73423e17..0fae76dd5 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -39,6 +39,7 @@ _EventSource, parse_event_source, get_first_record, + is_step_function_event, EventTypes, EventSubtypes, ) @@ -271,6 +272,15 @@ def extract_context_from_sqs_or_sns_event_or_context(event, lambda_context): if dd_json_data: dd_data = json.loads(dd_json_data) + + if is_step_function_event(dd_data): + try: + return extract_context_from_step_functions(dd_data, None) + except Exception: + logger.debug( + "Failed to extract Step Functions context from SQS/SNS event." + ) + return propagator.extract(dd_data) else: # Handle case where trace context is injected into attributes.AWSTraceHeader @@ -313,6 +323,15 @@ def _extract_context_from_eventbridge_sqs_event(event): body = json.loads(body_str) detail = body.get("detail") dd_context = detail.get("_datadog") + + if is_step_function_event(dd_context): + try: + return extract_context_from_step_functions(dd_context, None) + except Exception: + logger.debug( + "Failed to extract Step Functions context from EventBridge to SQS event." + ) + return propagator.extract(dd_context) @@ -320,12 +339,23 @@ def extract_context_from_eventbridge_event(event, lambda_context): """ Extract datadog trace context from an EventBridge message's Details. This is only possible if Details is a JSON string. + + If we find a Step Function context, try to extract the trace context from + that header. """ try: detail = event.get("detail") dd_context = detail.get("_datadog") if not dd_context: return extract_context_from_lambda_context(lambda_context) + + try: + return extract_context_from_step_functions(dd_context, None) + except Exception: + logger.debug( + "Failed to extract Step Functions context from EventBridge event." + ) + return propagator.extract(dd_context) except Exception as e: logger.debug("The trace extractor returned with error %s", e) @@ -424,7 +454,7 @@ def _generate_sfn_trace_id(execution_id: str, part: str): def extract_context_from_step_functions(event, lambda_context): """ Only extract datadog trace context when Step Functions Context Object is injected - into lambda's event dict. + into lambda's event dict. Unwrap "Payload" if it exists to handle Legacy Lambda cases. If '_datadog' header is present, we have two cases: 1. Root is a Lambda and we use its traceID @@ -435,25 +465,25 @@ def extract_context_from_step_functions(event, lambda_context): object. """ try: + event = event.get("Payload", event) + event = event.get("_datadog", event) + meta = {} - dd_data = event.get("_datadog") - if dd_data and dd_data.get("serverless-version") == "v1": - if "x-datadog-trace-id" in dd_data: # lambda root - trace_id = int(dd_data.get("x-datadog-trace-id")) - high_64_bit_trace_id = _parse_high_64_bits( - dd_data.get("x-datadog-tags") - ) + if event.get("serverless-version") == "v1": + if "x-datadog-trace-id" in event: # lambda root + trace_id = int(event.get("x-datadog-trace-id")) + high_64_bit_trace_id = _parse_high_64_bits(event.get("x-datadog-tags")) if high_64_bit_trace_id: meta["_dd.p.tid"] = high_64_bit_trace_id else: # sfn root - root_execution_id = dd_data.get("RootExecutionId") + root_execution_id = event.get("RootExecutionId") trace_id = _generate_sfn_trace_id(root_execution_id, LOWER_64_BITS) meta["_dd.p.tid"] = _generate_sfn_trace_id( root_execution_id, HIGHER_64_BITS ) - parent_id = _generate_sfn_parent_id(dd_data) + parent_id = _generate_sfn_parent_id(event) else: execution_id = event.get("Execution").get("Id") trace_id = _generate_sfn_trace_id(execution_id, LOWER_64_BITS) @@ -472,20 +502,6 @@ def extract_context_from_step_functions(event, lambda_context): return extract_context_from_lambda_context(lambda_context) -def is_legacy_lambda_step_function(event): - """ - Check if the event is a step function that called a legacy lambda - """ - if not isinstance(event, dict) or "Payload" not in event: - return False - - event = event.get("Payload") - return isinstance(event, dict) and ( - "_datadog" in event - or ("Execution" in event and "StateMachine" in event and "State" in event) - ) - - def extract_context_custom_extractor(extractor, event, lambda_context): """ Extract Datadog trace context using a custom trace extractor function @@ -1309,8 +1325,18 @@ def create_inferred_span_from_eventbridge_event(event, context): synchronicity="async", tag_source="self", ) - dt_format = "%Y-%m-%dT%H:%M:%SZ" + timestamp = event.get("time") + dt_format = "%Y-%m-%dT%H:%M:%SZ" + + # Use more granular timestamp from upstream Step Function if possible + try: + if is_step_function_event(event.get("detail")): + timestamp = event["detail"]["_datadog"]["State"]["EnteredTime"] + dt_format = "%Y-%m-%dT%H:%M:%S.%fZ" + except (TypeError, KeyError, AttributeError): + logger.debug("Error parsing timestamp from Step Functions event") + dt = datetime.strptime(timestamp, dt_format) tracer.set_tags(_dd_origin) @@ -1320,6 +1346,11 @@ def create_inferred_span_from_eventbridge_event(event, context): if span: span.set_tags(tags) span.start = dt.replace(tzinfo=timezone.utc).timestamp() + + # Since inferred span will later parent Lambda, preserve Lambda's current parent + if dd_trace_context.span_id: + span.parent_id = dd_trace_context.span_id + return span diff --git a/datadog_lambda/trigger.py b/datadog_lambda/trigger.py index 11759a0a7..708138bf4 100644 --- a/datadog_lambda/trigger.py +++ b/datadog_lambda/trigger.py @@ -146,9 +146,7 @@ def parse_event_source(event: dict) -> _EventSource: if event.get("source") == "aws.events" or has_event_categories: event_source = _EventSource(EventTypes.CLOUDWATCH_EVENTS) - if ( - "_datadog" in event and event.get("_datadog").get("serverless-version") == "v1" - ) or ("Execution" in event and "StateMachine" in event and "State" in event): + if is_step_function_event(event): event_source = _EventSource(EventTypes.STEPFUNCTIONS) event_record = get_first_record(event) @@ -369,3 +367,29 @@ def extract_http_status_code_tag(trigger_tags, response): status_code = response.status_code return str(status_code) + + +def is_step_function_event(event): + """ + Check if the event is a step function that invoked the current lambda. + + The whole event can be wrapped in "Payload" in Legacy Lambda cases. There may also be a + "_datadog" for JSONata style context propagation. + + The actual event must contain "Execution", "StateMachine", and "State" fields. + """ + event = event.get("Payload", event) + + # JSONPath style + if "Execution" in event and "StateMachine" in event and "State" in event: + return True + + # JSONata style + dd_context = event.get("_datadog") + return ( + dd_context + and "Execution" in dd_context + and "StateMachine" in dd_context + and "State" in dd_context + and "serverless-version" in dd_context + ) diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 6afa9a070..5641bd159 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -45,7 +45,6 @@ is_authorizer_response, tracer, propagator, - is_legacy_lambda_step_function, ) from datadog_lambda.trigger import ( extract_trigger_tags, @@ -286,8 +285,6 @@ def _before(self, event, context): self.response = None set_cold_start(init_timestamp_ns) submit_invocations_metric(context) - if is_legacy_lambda_step_function(event): - event = event["Payload"] self.trigger_tags = extract_trigger_tags(event, context) # Extract Datadog trace context and source from incoming requests dd_context, trace_context_source, event_source = extract_dd_trace_context( diff --git a/tests/test_tracing.py b/tests/test_tracing.py index 5480a92c7..0a961a62a 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -36,15 +36,12 @@ _convert_xray_trace_id, _convert_xray_entity_id, _convert_xray_sampling, - InferredSpanInfo, create_service_mapping, determine_service_name, service_mapping as global_service_mapping, propagator, emit_telemetry_on_exception_outside_of_handler, - is_legacy_lambda_step_function, ) -from datadog_lambda.trigger import EventTypes from tests.utils import get_mock_context @@ -613,9 +610,39 @@ def test_with_complete_datadog_trace_headers_with_trigger_tags(self): ] ) + def _test_step_function_trace_data_common( + self, event, expected_trace_id, expected_span_id, expected_tid + ): + """Common test logic for step function trace data tests""" + lambda_ctx = get_mock_context() + expected_context = Context( + trace_id=expected_trace_id, + span_id=expected_span_id, + sampling_priority=1, + meta={"_dd.p.tid": expected_tid}, + ) + expected_headers = { + TraceHeader.TRACE_ID: str(expected_trace_id), + TraceHeader.PARENT_ID: "10713633173203262661", + TraceHeader.SAMPLING_PRIORITY: "1", + TraceHeader.TAGS: f"_dd.p.tid={expected_tid}", + } + + ctx, source, _ = extract_dd_trace_context(event, lambda_ctx) + + self.assertEqual(source, "event") + self.assertEqual(ctx, expected_context) + self.assertEqual(get_dd_trace_context(), expected_headers) + + create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) + self.mock_send_segment.assert_called_with( + XraySubsegment.TRACE_KEY, + expected_context, + ) + @with_trace_propagation_style("datadog") def test_step_function_trace_data(self): - lambda_ctx = get_mock_context() + """Test basic step function trace data extraction""" sfn_event = { "Execution": { "Id": "arn:aws:states:sa-east-1:425362996713:execution:abhinav-activity-state-machine:72a7ca3e-901c-41bb-b5a3-5f279b92a316", @@ -634,79 +661,39 @@ def test_step_function_trace_data(self): "Name": "abhinav-activity-state-machine", }, } - ctx, source, event_source = extract_dd_trace_context(sfn_event, lambda_ctx) - self.assertEqual(source, "event") - expected_context = Context( - trace_id=435175499815315247, - span_id=3929055471293792800, - sampling_priority=1, - meta={"_dd.p.tid": "3e7a89d1b7310603"}, + self._test_step_function_trace_data_common( + sfn_event, 435175499815315247, 3929055471293792800, "3e7a89d1b7310603" ) - self.assertEqual(ctx, expected_context) - self.assertEqual( - get_dd_trace_context(), - { - TraceHeader.TRACE_ID: "435175499815315247", - TraceHeader.PARENT_ID: "10713633173203262661", - TraceHeader.SAMPLING_PRIORITY: "1", - TraceHeader.TAGS: "_dd.p.tid=3e7a89d1b7310603", + + @with_trace_propagation_style("datadog") + def test_step_function_trace_data_retry(self): + """Test step function trace data extraction with non-zero retry count""" + sfn_event = { + "Execution": { + "Id": "arn:aws:states:sa-east-1:425362996713:execution:abhinav-activity-state-machine:72a7ca3e-901c-41bb-b5a3-5f279b92a316", + "Name": "72a7ca3e-901c-41bb-b5a3-5f279b92a316", + "RoleArn": "arn:aws:iam::425362996713:role/service-role/StepFunctions-abhinav-activity-state-machine-role-22jpbgl6j", + "StartTime": "2024-12-04T19:38:04.069Z", + "RedriveCount": 0, }, + "State": { + "Name": "Lambda Invoke", + "EnteredTime": "2024-12-04T19:38:04.118Z", + "RetryCount": 1, + }, + "StateMachine": { + "Id": "arn:aws:states:sa-east-1:425362996713:stateMachine:abhinav-activity-state-machine", + "Name": "abhinav-activity-state-machine", + }, + } + self._test_step_function_trace_data_common( + sfn_event, 435175499815315247, 5063839446130725204, "3e7a89d1b7310603" ) - create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) - self.mock_send_segment.assert_called_with( - XraySubsegment.TRACE_KEY, - expected_context, - ) - - @with_trace_propagation_style("datadog") - def test_step_function_trace_data_retry(self): - lambda_ctx = get_mock_context() - sfn_event = { - "Execution": { - "Id": "arn:aws:states:sa-east-1:425362996713:execution:abhinav-activity-state-machine:72a7ca3e-901c-41bb-b5a3-5f279b92a316", - "Name": "72a7ca3e-901c-41bb-b5a3-5f279b92a316", - "RoleArn": "arn:aws:iam::425362996713:role/service-role/StepFunctions-abhinav-activity-state-machine-role-22jpbgl6j", - "StartTime": "2024-12-04T19:38:04.069Z", - "RedriveCount": 0, - }, - "State": { - "Name": "Lambda Invoke", - "EnteredTime": "2024-12-04T19:38:04.118Z", - "RetryCount": 1, - }, - "StateMachine": { - "Id": "arn:aws:states:sa-east-1:425362996713:stateMachine:abhinav-activity-state-machine", - "Name": "abhinav-activity-state-machine", - }, - } - ctx, source, event_source = extract_dd_trace_context(sfn_event, lambda_ctx) - self.assertEqual(source, "event") - expected_context = Context( - trace_id=435175499815315247, - span_id=5063839446130725204, - sampling_priority=1, - meta={"_dd.p.tid": "3e7a89d1b7310603"}, - ) - self.assertEqual(ctx, expected_context) - self.assertEqual( - get_dd_trace_context(), - { - TraceHeader.TRACE_ID: "435175499815315247", - TraceHeader.PARENT_ID: "10713633173203262661", - TraceHeader.SAMPLING_PRIORITY: "1", - TraceHeader.TAGS: "_dd.p.tid=3e7a89d1b7310603", - }, - ) - create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) - self.mock_send_segment.assert_called_with( - XraySubsegment.TRACE_KEY, - expected_context, - ) - # https://github.com/DataDog/logs-backend/blob/c17618cb552fc369ca40282bae0a65803f82f694/domains/serverless/apps/logs-to-traces-reducer/src/test/resources/test-json-files/stepfunctions/RedriveTest/snapshots/RedriveLambdaSuccessTraceMerging.json#L46 + # https://github.com/DataDog/logs-backend/blob/65ea567150f24e5498008f3cf8cabef9ea995f5d/domains/serverless/apps/logs-to-traces-reducer/src/test/resources/test-json-files/stepfunctions/RedriveTest/snapshots/RedriveLambdaSuccessTraceMerging.json#L45-L46 @with_trace_propagation_style("datadog") def test_step_function_trace_data_redrive(self): - lambda_ctx = get_mock_context() + """Test step function trace data extraction with non-zero redrive count""" sfn_event = { "Execution": { "Id": "arn:aws:states:sa-east-1:425362996713:execution:abhinav-activity-state-machine:72a7ca3e-901c-41bb-b5a3-5f279b92a316", @@ -725,33 +712,13 @@ def test_step_function_trace_data_redrive(self): "Name": "abhinav-activity-state-machine", }, } - ctx, source, event_source = extract_dd_trace_context(sfn_event, lambda_ctx) - self.assertEqual(source, "event") - expected_context = Context( - trace_id=435175499815315247, - span_id=8782364156266188026, - sampling_priority=1, - meta={"_dd.p.tid": "3e7a89d1b7310603"}, - ) - self.assertEqual(ctx, expected_context) - self.assertEqual( - get_dd_trace_context(), - { - TraceHeader.TRACE_ID: "435175499815315247", - TraceHeader.PARENT_ID: "10713633173203262661", - TraceHeader.SAMPLING_PRIORITY: "1", - TraceHeader.TAGS: "_dd.p.tid=3e7a89d1b7310603", - }, - ) - create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) - self.mock_send_segment.assert_called_with( - XraySubsegment.TRACE_KEY, - expected_context, + self._test_step_function_trace_data_common( + sfn_event, 435175499815315247, 8782364156266188026, "3e7a89d1b7310603" ) @with_trace_propagation_style("datadog") def test_step_function_trace_data_lambda_root(self): - lambda_ctx = get_mock_context() + """Test JSONata style step function trace data extraction where there's an upstream Lambda""" sfn_event = { "_datadog": { "Execution": { @@ -769,33 +736,13 @@ def test_step_function_trace_data_lambda_root(self): "serverless-version": "v1", } } - ctx, source, event_source = extract_dd_trace_context(sfn_event, lambda_ctx) - self.assertEqual(source, "event") - expected_context = Context( - trace_id=5821803790426892636, - span_id=6880978411788117524, - sampling_priority=1, - meta={"_dd.p.tid": "672a7cb100000000"}, - ) - self.assertEqual(ctx, expected_context) - self.assertEqual( - get_dd_trace_context(), - { - TraceHeader.TRACE_ID: "5821803790426892636", - TraceHeader.PARENT_ID: "10713633173203262661", - TraceHeader.SAMPLING_PRIORITY: "1", - TraceHeader.TAGS: "_dd.p.tid=672a7cb100000000", - }, - ) - create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) - self.mock_send_segment.assert_called_with( - XraySubsegment.TRACE_KEY, - expected_context, + self._test_step_function_trace_data_common( + sfn_event, 5821803790426892636, 6880978411788117524, "672a7cb100000000" ) @with_trace_propagation_style("datadog") def test_step_function_trace_data_sfn_root(self): - lambda_ctx = get_mock_context() + """Test JSONata style step function trace data extraction where there's an upstream step function""" sfn_event = { "_datadog": { "Execution": { @@ -812,28 +759,183 @@ def test_step_function_trace_data_sfn_root(self): "serverless-version": "v1", } } - ctx, source, event_source = extract_dd_trace_context(sfn_event, lambda_ctx) - self.assertEqual(source, "event") - expected_context = Context( - trace_id=4521899030418994483, - span_id=6880978411788117524, - sampling_priority=1, - meta={"_dd.p.tid": "12d1270d99cc5e03"}, + self._test_step_function_trace_data_common( + sfn_event, 4521899030418994483, 6880978411788117524, "12d1270d99cc5e03" ) - self.assertEqual(ctx, expected_context) - self.assertEqual( - get_dd_trace_context(), - { - TraceHeader.TRACE_ID: "4521899030418994483", - TraceHeader.PARENT_ID: "10713633173203262661", - TraceHeader.SAMPLING_PRIORITY: "1", - TraceHeader.TAGS: "_dd.p.tid=12d1270d99cc5e03", + + @with_trace_propagation_style("datadog") + def test_step_function_trace_data_eventbridge(self): + """Test step function trace data extraction through EventBridge""" + eventbridge_event = { + "version": "0", + "id": "eaacd8db-02de-ab13-ed5a-8ffb84048294", + "detail-type": "StepFunctionTask", + "source": "my.eventbridge", + "account": "425362996713", + "time": "2025-03-13T15:17:34Z", + "region": "sa-east-1", + "resources": [ + "arn:aws:states:sa-east-1:425362996713:stateMachine:abhinav-inner-state-machine", + "arn:aws:states:sa-east-1:425362996713:execution:abhinav-inner-state-machine:912eaa4c-291a-488a-bda3-d06bcc21203d", + ], + "detail": { + "Message": "Hello from Step Functions!", + "TaskToken": "AQCEAAAAKgAAAAMAAAAAAAAAAeMHr6sb8Ll5IKntjIiLGaBkaNeweo84kKYKDTvDaSAP1vjuYRJEGqFdHsKMyZL8ZcgAdanKpkbhPEN5hpoCe+BH9KblWeDsJxkDCk/meN5SaPlC1qS7Q/7/KqBq+tmAOCSy+MjdqFsnihy5Yo6g6C9uuPn7ccSB/609d8pznFm9nigEos/82emwi18lm67/+/bn4RTX4S7qV4RoGWUWUPeHfr34xWOipCt4SVDkoQPZdRVpq3wyRJP2zcK0zup24/opJqKKSCI5Q9orALNB2jEjDyQ9LE4mSrafoe0tcm/bOAGfrcpR3AwtArUiF6JPYd7Nw0XWWyPXFBjiQTJDhZFlGfllJ1N91eiN8wlzUX1+I0vw/t2PoEmuQ2VCJYCbl1ybjX/tQ97GZ9ogjY9N7VYy5uD5xfZ6VAyetUR06HUtbUIXTVxULm7wmsHb979W/fIQXsrxbFzc0+ypKaqGXJBoq7xX//irjpuNhWg1Wgfn0hxuXl5oN/LkqI83T8f9SdnJMxRDpaHDpttqbjVESB/Pf9o7gakjJj12+r2uiJNc81k50uhuHdFOGsImFHKV8hb1LGcq0ZzUKT5SbEDV2k+ezOP+O9Sk4c0unbpNLM3PKLKxVLhu2gtiIIVCHUHGmumW", + "_datadog": { + "Execution": { + "Id": "arn:aws:states:sa-east-1:425362996713:execution:abhinav-inner-state-machine:912eaa4c-291a-488a-bda3-d06bcc21203d", + "StartTime": "2025-03-13T15:17:33.972Z", + "Name": "912eaa4c-291a-488a-bda3-d06bcc21203d", + "RoleArn": "arn:aws:iam::425362996713:role/service-role/StepFunctions-abhinav-activity-state-machine-role-22jpbgl6j", + "RedriveCount": 0, + }, + "StateMachine": { + "Id": "arn:aws:states:sa-east-1:425362996713:stateMachine:abhinav-inner-state-machine", + "Name": "abhinav-inner-state-machine", + }, + "State": { + "Name": "EventBridge PutEvents", + "EnteredTime": "2025-03-13T15:17:34.008Z", + "RetryCount": 0, + }, + "Task": { + "Token": "AQCEAAAAKgAAAAMAAAAAAAAAAeMHr6sb8Ll5IKntjIiLGaBkaNeweo84kKYKDTvDaSAP1vjuYRJEGqFdHsKMyZL8ZcgAdanKpkbhPEN5hpoCe+BH9KblWeDsJxkDCk/meN5SaPlC1qS7Q/7/KqBq+tmAOCSy+MjdqFsnihy5Yo6g6C9uuPn7ccSB/609d8pznFm9nigEos/82emwi18lm67/+/bn4RTX4S7qV4RoGWUWUPeHfr34xWOipCt4SVDkoQPZdRVpq3wyRJP2zcK0zup24/opJqKKSCI5Q9orALNB2jEjDyQ9LE4mSrafoe0tcm/bOAGfrcpR3AwtArUiF6JPYd7Nw0XWWyPXFBjiQTJDhZFlGfllJ1N91eiN8wlzUX1+I0vw/t2PoEmuQ2VCJYCbl1ybjX/tQ97GZ9ogjY9N7VYy5uD5xfZ6VAyetUR06HUtbUIXTVxULm7wmsHb979W/fIQXsrxbFzc0+ypKaqGXJBoq7xX//irjpuNhWg1Wgfn0hxuXl5oN/LkqI83T8f9SdnJMxRDpaHDpttqbjVESB/Pf9o7gakjJj12+r2uiJNc81k50uhuHdFOGsImFHKV8hb1LGcq0ZzUKT5SbEDV2k+ezOP+O9Sk4c0unbpNLM3PKLKxVLhu2gtiIIVCHUHGmumW" + }, + "RootExecutionId": "arn:aws:states:sa-east-1:425362996713:execution:abhinav-inner-state-machine:912eaa4c-291a-488a-bda3-d06bcc21203d", + "serverless-version": "v1", + }, }, + } + self._test_step_function_trace_data_common( + eventbridge_event, + 3401561763239692811, + 10430178702434539423, + "a49ff3b7fb47b0b", ) - create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) - self.mock_send_segment.assert_called_with( - XraySubsegment.TRACE_KEY, - expected_context, + + @with_trace_propagation_style("datadog") + def test_step_function_trace_data_sqs(self): + """Test step function trace data extraction through SQS""" + sqs_event = { + "Records": [ + { + "EventSource": "aws:sns", + "EventVersion": "1.0", + "EventSubscriptionArn": "arn:aws:sns:sa-east-1:425362996713:logs-to-traces-dev-topic:f1653ba3-2ff7-4c8e-9381-45a7a62f9708", + "Sns": { + "Type": "Notification", + "MessageId": "e39184ea-bfd8-5efa-96fe-e4a64a457ff7", + "TopicArn": "arn:aws:sns:sa-east-1:425362996713:logs-to-traces-dev-topic", + "Subject": None, + "Message": "{}", + "Timestamp": "2025-03-13T15:01:49.942Z", + "SignatureVersion": "1", + "Signature": "WJHKq+pNOLgxa7+dB1dud02RM/30Jvz+KiMZzjRl38/Pphz90H24eGyIbnq3BJXYEyawFCHC6sq/5HcwXouGc5gbah6he+JpqXahMEs6cyMs2tg9SXxooRHEGv5iiZXKhnDcJYOrQ+iFExO9w+WFWfJjO2m/EDVVSYvuDjDV7mmTwAgEOD0zUvWpT7wOeKGG5Uk916Ppy3iMV7sCoHV/RwVikdhCWDDmxbdqteGduAXPdGESE/aj6kUx9ibEOKXyhC+7H1/j0tlhUchl6LZsTf1Gaiq2yEqKXKvsupcG3hRZ6FtIWP0jGlFhpW5EHc2oiHIVOsQceCYPqXYMCZvFuA==", + "SigningCertUrl": "https://sns.sa-east-1.amazonaws.com/SimpleNotificationService-9c6465fa7f48f5cacd23014631ec1136.pem", + "UnsubscribeUrl": "https://sns.sa-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:sa-east-1:425362996713:logs-to-traces-dev-topic:f1653ba3-2ff7-4c8e-9381-45a7a62f9708", + "MessageAttributes": { + "_datadog": { + "Type": "String", + "Value": '{"Execution":{"Id":"arn:aws:states:sa-east-1:425362996713:execution:abhinav-inner-state-machine:79478846-0cff-44de-91f5-02c96ff65762","StartTime":"2025-03-13T15:01:49.738Z","Name":"79478846-0cff-44de-91f5-02c96ff65762","RoleArn":"arn:aws:iam::425362996713:role/service-role/StepFunctions-abhinav-activity-state-machine-role-22jpbgl6j","RedriveCount":0},"StateMachine":{"Id":"arn:aws:states:sa-east-1:425362996713:stateMachine:abhinav-inner-state-machine","Name":"abhinav-inner-state-machine"},"State":{"Name":"SNS Publish","EnteredTime":"2025-03-13T15:01:49.768Z","RetryCount":0},"RootExecutionId":"arn:aws:states:sa-east-1:425362996713:execution:abhinav-inner-state-machine:79478846-0cff-44de-91f5-02c96ff65762","serverless-version":"v1"}', + } + }, + }, + } + ] + } + self._test_step_function_trace_data_common( + sqs_event, 3818106616964044169, 15912108710769293902, "3a4fd1a254eb514a" + ) + + @with_trace_propagation_style("datadog") + def test_step_function_trace_data_eventbridge_sqs(self): + """Test step function trace data extraction through EventBridge and SQS""" + eventbridge_sqs_event = { + "Records": [ + { + "messageId": "9ed082ad-2f4d-4309-ab99-9553d2be5613", + "receiptHandle": "AQEB6z7FatNIXbWOTC4Bx+udD0flrnT7XMehruTohl8O2KI2t9hvo5oxGIOhwcb+QtS5aRXsFE35TgGE8kZHlHK7Sa8jQUen6XmsPG7qB6BPdXjr0eunM2SDAtLj0mDSKx907VIKRYQG+qpI9ZyNK7Bi786oQIz2UkZGZru9zlXxJtAQiXBqfJ+OfTzhIwkPu04czU6lYfAbxdyNaBNdBEsTNJKPjquvcq1ZBVCHkn9L6wo8jha6XreoeS2WJ5N26ZLKtAl3wlSUByB92OKZU2mEuNboyY7bgK+nkx4N8fVVrafVXnY9YHuq60eQcZ/nusWFeJlVyN7NFypYP2IOn25xylltEACKbgUdEsFU2h5k7yI2DVk5eAt9vB6qmAJlgfkGsXG0SZrCADoIKXl9jpwajw==", + "body": '{"version":"0","id":"ff6d828b-b35e-abdf-64b6-6ea2cf698c0b","detail-type":"StepFunctionTask","source":"my.eventbridge","account":"425362996713","time":"2025-03-13T15:14:21Z","region":"sa-east-1","resources":["arn:aws:states:sa-east-1:425362996713:stateMachine:abhinav-inner-state-machine","arn:aws:states:sa-east-1:425362996713:execution:abhinav-inner-state-machine:fe087266-fe48-4a31-a21b-691f4e7ea985"],"detail":{"Message":"Hello from Step Functions!","TaskToken":"AQCEAAAAKgAAAAMAAAAAAAAAAfi3HMLTw3u9h0vSmkjyHlK1tv5bQUyA7i+6LIvrBWu+3S+DMuQ79JpMtAuCaMN/AGSuGPO7OPeTNA/9v7/kzAsLoPzwPhbrDPXP4SVF1YIO663PvtX/tEWxnAfwLqwDyx8G8VEsVLcmiiOafFCKJwn0OP/DoAWc0sjhWwRxIoQ0ipBGhOqU8rO8SFZVvxUbkosNejnhT7B6314pC89JZLpXU7SxFe+XrgN+uRAvFxsH/+RwDf94xk5hhtukH7HzhJKWN2WCtUISd84pM/1V7ppDuJ3FHgJT22xQIbEGA9Q4o+pLLehzE2SHCdo7eWYQqN+7BanxBNMI6kBMaf5nuh9izAp38lsrmHJyO8NvXgWg+F9hoTZX4RpV9CCwvRFrCRcCeDq4/uJzbvB4AwwA2q2Llm0X8yH0pKvPZ2v7pl4nCWdnEgj920I8AmBCuozbKP7gJRnAqfx3MnOSkpZTeGnHkp0ly8EevwCT2zX/1GQnCAx02kBaDJgUMputFeruMBzwVtlEVBFUUgaWbJwHzz2htuAw282pdATrKfv4VV1N962uLBJ32wd9a92rX7VXXToitvZGIvf/Z7cu4xfAzxQH1rIQ3M4ojkR9r48qoYtnYDlEf+BkIL8L4+xpbRFSBk3p","_datadog":{"Execution":{"Id":"arn:aws:states:sa-east-1:425362996713:execution:abhinav-inner-state-machine:fe087266-fe48-4a31-a21b-691f4e7ea985","StartTime":"2025-03-13T15:14:21.730Z","Name":"fe087266-fe48-4a31-a21b-691f4e7ea985","RoleArn":"arn:aws:iam::425362996713:role/service-role/StepFunctions-abhinav-activity-state-machine-role-22jpbgl6j","RedriveCount":0},"StateMachine":{"Id":"arn:aws:states:sa-east-1:425362996713:stateMachine:abhinav-inner-state-machine","Name":"abhinav-inner-state-machine"},"State":{"Name":"EventBridge PutEvents","EnteredTime":"2025-03-13T15:14:21.765Z","RetryCount":0},"Task":{"Token":"AQCEAAAAKgAAAAMAAAAAAAAAAfi3HMLTw3u9h0vSmkjyHlK1tv5bQUyA7i+6LIvrBWu+3S+DMuQ79JpMtAuCaMN/AGSuGPO7OPeTNA/9v7/kzAsLoPzwPhbrDPXP4SVF1YIO663PvtX/tEWxnAfwLqwDyx8G8VEsVLcmiiOafFCKJwn0OP/DoAWc0sjhWwRxIoQ0ipBGhOqU8rO8SFZVvxUbkosNejnhT7B6314pC89JZLpXU7SxFe+XrgN+uRAvFxsH/+RwDf94xk5hhtukH7HzhJKWN2WCtUISd84pM/1V7ppDuJ3FHgJT22xQIbEGA9Q4o+pLLehzE2SHCdo7eWYQqN+7BanxBNMI6kBMaf5nuh9izAp38lsrmHJyO8NvXgWg+F9hoTZX4RpV9CCwvRFrCRcCeDq4/uJzbvB4AwwA2q2Llm0X8yH0pKvPZ2v7pl4nCWdnEgj920I8AmBCuozbKP7gJRnAqfx3MnOSkpZTeGnHkp0ly8EevwCT2zX/1GQnCAx02kBaDJgUMputFeruMBzwVtlEVBFUUgaWbJwHzz2htuAw282pdATrKfv4VV1N962uLBJ32wd9a92rX7VXXToitvZGIvf/Z7cu4xfAzxQH1rIQ3M4ojkR9r48qoYtnYDlEf+BkIL8L4+xpbRFSBk3p"},"RootExecutionId":"arn:aws:states:sa-east-1:425362996713:execution:abhinav-inner-state-machine:fe087266-fe48-4a31-a21b-691f4e7ea985","serverless-version":"v1"}}}', + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "1741878862068", + "SenderId": "AROAWGCM4HXUUNHLDXVER:6145b5ba998f311c8ac27f5cade2b915", + "ApproximateFirstReceiveTimestamp": "1741878862075", + }, + "messageAttributes": {}, + "md5OfBody": "e5cf8197b304a4dd4fd5db8e4842484b", + "eventSource": "aws:sqs", + "eventSourceARN": "arn:aws:sqs:sa-east-1:425362996713:abhinav-q", + "awsRegion": "sa-east-1", + } + ] + } + self._test_step_function_trace_data_common( + eventbridge_sqs_event, + 6527209323865742984, + 14276854885394865473, + "2ee7d9862d048173", + ) + + @with_trace_propagation_style("datadog") + def test_step_function_trace_data_sns(self): + """Test step function trace data extraction through SNS""" + sns_event = { + "Records": [ + { + "EventSource": "aws:sns", + "EventVersion": "1.0", + "EventSubscriptionArn": "arn:aws:sns:sa-east-1:425362996713:logs-to-traces-dev-topic:f1653ba3-2ff7-4c8e-9381-45a7a62f9708", + "Sns": { + "Type": "Notification", + "MessageId": "7bc0c17d-bf88-5ff4-af7f-a131463a0d90", + "TopicArn": "arn:aws:sns:sa-east-1:425362996713:logs-to-traces-dev-topic", + "Subject": None, + "Message": "{}", + "Timestamp": "2025-03-13T15:19:14.245Z", + "SignatureVersion": "1", + "Signature": "r8RoYzq4uNcq0yj7sxcp8sTbFiDk8zqtocG7mJuE2MPVuR8O5eNg2ohofokUnC84xADlCq5k6ElP55lbbY36tQO+qDGdV6+TGN4bAL9FiQrDE6tQYYJdlv/sYE7iOOgnRBC9ljEdCIDNtQNGCfND/8JzatPg8KAy7xMRcLrGWu4xIMEysqNTz7rETfhdZjLQPssAht44KcoUJCH4/VuB+B9W1RhwA+M8Q3tqxzahIXzcgDM8OlmfkBlXo4FDVF3WUzjXLf9AMOg+66GupjQFtUpmRMkA8KXSV1HCso7e6nIIWtOnUoWeDDUfQPFFq4TNSlb6h2NuebaHdnW5nhxnJQ==", + "SigningCertUrl": "https://sns.sa-east-1.amazonaws.com/SimpleNotificationService-9c6465fa7f48f5cacd23014631ec1136.pem", + "UnsubscribeUrl": "https://sns.sa-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:sa-east-1:425362996713:logs-to-traces-dev-topic:f1653ba3-2ff7-4c8e-9381-45a7a62f9708", + "MessageAttributes": { + "_datadog": { + "Type": "String", + "Value": '{"Execution":{"Id":"arn:aws:states:sa-east-1:425362996713:execution:abhinav-inner-state-machine:11623e4f-70ee-4330-8fbe-955152dea54c","StartTime":"2025-03-13T15:19:14.019Z","Name":"11623e4f-70ee-4330-8fbe-955152dea54c","RoleArn":"arn:aws:iam::425362996713:role/service-role/StepFunctions-abhinav-activity-state-machine-role-22jpbgl6j","RedriveCount":0},"StateMachine":{"Id":"arn:aws:states:sa-east-1:425362996713:stateMachine:abhinav-inner-state-machine","Name":"abhinav-inner-state-machine"},"State":{"Name":"SNS Publish","EnteredTime":"2025-03-13T15:19:14.061Z","RetryCount":0},"RootExecutionId":"arn:aws:states:sa-east-1:425362996713:execution:abhinav-inner-state-machine:11623e4f-70ee-4330-8fbe-955152dea54c","serverless-version":"v1"}', + } + }, + }, + } + ] + } + self._test_step_function_trace_data_common( + sns_event, 1459500239678510857, 13193042003602978730, "fafc98885fd4647" + ) + + @with_trace_propagation_style("datadog") + def test_step_function_trace_data_sns_sqs(self): + """Test step function trace data extraction through SNS and SQS""" + sns_sqs_event = { + "Records": [ + { + "messageId": "9ec3339f-cd1a-43ba-9681-3e9113b430d3", + "receiptHandle": "AQEBJ5gIvqEWQt39NHPMAoK57cGgKtrgTtckWeWdDRi2FeucYr6pBhNjzXuUrmoHZMozX1WaoABtfQ5+kX5ucDBpA2Ci3Q07Z4MYvA6X0Sw13HCkiBnLrHPmH/F3rUBjvdRkIIKqA2ACX58MdkaYGNpqsHTJHB613wa8z4zurK0u7eUIXrr+e+gtsuPD39hiWlJo7cpBVv7y178rzMX8gPQTnRJv1cjhCHENtjWTSmfFC5N+BIQNIcjFsTTDRSovZlNIfAEuS+uowgzk0DUyoTJD5nFTL8lQHeXGRCUQe58/UY9OwRXEFVPGZOQR4OI9Wa4Kf/keFypTk9YwC9DhSeKvzZ0wBvejyl1n0ztT45+XYoWfi0mxGWM5b7r9wT36RDmjnM6vszH/d3fhZSRPASxWBQ==", + "body": '{\n "Type" : "Notification",\n "MessageId" : "1f3078d0-c792-5cf3-a130-189c3b846a3f",\n "TopicArn" : "arn:aws:sns:sa-east-1:425362996713:logs-to-traces-dev-topic",\n "Message" : "{}",\n "Timestamp" : "2025-03-13T15:29:26.348Z",\n "SignatureVersion" : "1",\n "Signature" : "mxOqAQ5o/isJrMS0PezHKRaA3g8Z/8YDbkToqhJub6I66LGtl+NYhyfTyllbgxvRP2XD2meKPRSgPI3nLyq8UHsWgyYwe3Tsv8QpRunCVE9Pebh+V1LGPWfjOiL0e+bnaj956QJD99560LJ6bzWP9QO584/zfOdcw6E5XQZfAI+pvEsf28Dy0WJO/lWTATRZDf8wGhmc7uKI1ZMsrOaNoUD8PXVqsI4yrJHxhzMb3SrC7YjI/PnNIbcn6ezwprbUdbZvyNAfJiE0k5IlppA089tMXC/ItgC7AgQhG9huPdKi5KdWGACK7gEwqmFwL+5T33sUXDaH2g58WhCs76pKEw==",\n "SigningCertURL" : "https://sns.sa-east-1.amazonaws.com/SimpleNotificationService-9c6465fa7f48f5cacd23014631ec1136.pem",\n "UnsubscribeURL" : "https://sns.sa-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:sa-east-1:425362996713:logs-to-traces-dev-topic:5f64545d-ae9a-4a5f-a7ee-798a0bd8519e",\n "MessageAttributes" : {\n "_datadog" : {"Type":"String","Value":"{\\"Execution\\":{\\"Id\\":\\"arn:aws:states:sa-east-1:425362996713:execution:abhinav-inner-state-machine:37ff72b8-0ee0-49e2-93c0-8a1764206a03\\",\\"StartTime\\":\\"2025-03-13T15:29:26.144Z\\",\\"Name\\":\\"37ff72b8-0ee0-49e2-93c0-8a1764206a03\\",\\"RoleArn\\":\\"arn:aws:iam::425362996713:role/service-role/StepFunctions-abhinav-activity-state-machine-role-22jpbgl6j\\",\\"RedriveCount\\":0},\\"StateMachine\\":{\\"Id\\":\\"arn:aws:states:sa-east-1:425362996713:stateMachine:abhinav-inner-state-machine\\",\\"Name\\":\\"abhinav-inner-state-machine\\"},\\"State\\":{\\"Name\\":\\"SNS Publish\\",\\"EnteredTime\\":\\"2025-03-13T15:29:26.182Z\\",\\"RetryCount\\":0},\\"RootExecutionId\\":\\"arn:aws:states:sa-east-1:425362996713:execution:abhinav-inner-state-machine:37ff72b8-0ee0-49e2-93c0-8a1764206a03\\",\\"serverless-version\\":\\"v1\\"}"}\n }\n}', + "attributes": { + "ApproximateReceiveCount": "1", + "SentTimestamp": "1741879766424", + "SenderId": "AIDAIOA2GYWSHW4E2VXIO", + "ApproximateFirstReceiveTimestamp": "1741879766432", + }, + "messageAttributes": {}, + "md5OfBody": "52af59de28507d7e67324b46c95337d8", + "eventSource": "aws:sqs", + "eventSourceARN": "arn:aws:sqs:sa-east-1:425362996713:abhinav-q", + "awsRegion": "sa-east-1", + } + ] + } + self._test_step_function_trace_data_common( + sns_sqs_event, 5708348677301000120, 18223515719478572006, "45457f5f3fde3fa1" ) diff --git a/tests/test_trigger.py b/tests/test_trigger.py index be028a232..9cb088f1c 100644 --- a/tests/test_trigger.py +++ b/tests/test_trigger.py @@ -9,6 +9,7 @@ get_event_source_arn, extract_trigger_tags, extract_http_status_code_tag, + is_step_function_event, ) from tests.utils import get_mock_context @@ -543,3 +544,68 @@ def test_extract_http_status_code_tag_from_response_object(self): response.status_code = 403 status_code = extract_http_status_code_tag(trigger_tags, response) self.assertEqual(status_code, "403") + + +class IsStepFunctionEvent(unittest.TestCase): + def test_is_step_function_event_jsonata(self): + event = { + "_datadog": { + "Execution": { + "Id": "665c417c-1237-4742-aaca-8b3becbb9e75", + "RedriveCount": 0, + }, + "StateMachine": {}, + "State": { + "Name": "my-awesome-state", + "EnteredTime": "Mon Nov 13 12:43:33 PST 2023", + "RetryCount": 0, + }, + "x-datadog-trace-id": "5821803790426892636", + "x-datadog-tags": "_dd.p.dm=-0,_dd.p.tid=672a7cb100000000", + "serverless-version": "v1", + } + } + self.assertTrue(is_step_function_event(event)) + + def test_is_step_function_event_jsonpath(self): + event = { + "Execution": { + "Id": "665c417c-1237-4742-aaca-8b3becbb9e75", + "RedriveCount": 0, + }, + "StateMachine": {}, + "State": { + "Name": "my-awesome-state", + "EnteredTime": "Mon Nov 13 12:43:33 PST 2023", + "RetryCount": 0, + }, + } + self.assertTrue(is_step_function_event(event)) + + def test_is_step_function_event_legacy_lambda(self): + event = { + "Payload": { + "Execution": { + "Id": "665c417c-1237-4742-aaca-8b3becbb9e75", + "RedriveCount": 0, + }, + "StateMachine": {}, + "State": { + "Name": "my-awesome-state", + "EnteredTime": "Mon Nov 13 12:43:33 PST 2023", + "RetryCount": 0, + }, + } + } + self.assertTrue(is_step_function_event(event)) + + def test_is_step_function_event_dd_header(self): + event = { + "_datadog": { + "x-datadog-trace-id": "5821803790426892636", + "x-datadog-parent-id": "5821803790426892636", + "x-datadog-tags": "_dd.p.dm=-0,_dd.p.tid=672a7cb100000000", + "x-datadog-sampling-priority": "1", + } + } + self.assertFalse(is_step_function_event(event)) From 92ec3b8e36b688ae972b1fe23c9737a6488668fa Mon Sep 17 00:00:00 2001 From: Nicholas Hulston Date: Wed, 19 Mar 2025 07:43:20 -0700 Subject: [PATCH 239/403] Submit metric for DynamoDB Stream Type (#578) --- datadog_lambda/metric.py | 14 ++++++++++++++ datadog_lambda/span_pointers.py | 4 ++++ .../snapshots/logs/async-metrics_python310.log | 9 +++++++++ .../snapshots/logs/async-metrics_python311.log | 9 +++++++++ .../snapshots/logs/async-metrics_python312.log | 9 +++++++++ .../snapshots/logs/async-metrics_python313.log | 9 +++++++++ .../snapshots/logs/async-metrics_python38.log | 9 +++++++++ .../snapshots/logs/async-metrics_python39.log | 9 +++++++++ .../snapshots/logs/sync-metrics_python310.log | 9 +++++++++ .../snapshots/logs/sync-metrics_python311.log | 9 +++++++++ .../snapshots/logs/sync-metrics_python312.log | 11 ++++++++++- .../snapshots/logs/sync-metrics_python313.log | 11 ++++++++++- .../snapshots/logs/sync-metrics_python38.log | 9 +++++++++ .../snapshots/logs/sync-metrics_python39.log | 11 ++++++++++- 14 files changed, 129 insertions(+), 3 deletions(-) diff --git a/datadog_lambda/metric.py b/datadog_lambda/metric.py index 6389c2687..f9c67a26e 100644 --- a/datadog_lambda/metric.py +++ b/datadog_lambda/metric.py @@ -188,3 +188,17 @@ def submit_errors_metric(lambda_context): lambda_context (object): Lambda context dict passed to the function by AWS """ submit_enhanced_metric("errors", lambda_context) + + +def submit_dynamodb_stream_type_metric(event): + stream_view_type = ( + event.get("Records", [{}])[0].get("dynamodb", {}).get("StreamViewType") + ) + if stream_view_type: + lambda_metric( + "datadog.serverless.dynamodb.stream.type", + 1, + timestamp=None, + tags=[f"streamtype:{stream_view_type}"], + force_async=True, + ) diff --git a/datadog_lambda/span_pointers.py b/datadog_lambda/span_pointers.py index e111469e6..40d959e61 100644 --- a/datadog_lambda/span_pointers.py +++ b/datadog_lambda/span_pointers.py @@ -6,6 +6,8 @@ from ddtrace._trace._span_pointer import _SpanPointerDirection from ddtrace._trace._span_pointer import _SpanPointerDescription + +from datadog_lambda.metric import submit_dynamodb_stream_type_metric from datadog_lambda.trigger import EventTypes @@ -28,6 +30,8 @@ def calculate_span_pointers( return _calculate_s3_span_pointers_for_event(event) elif event_source.equals(EventTypes.DYNAMODB): + # Temporary metric. TODO eventually remove(@nhulston) + submit_dynamodb_stream_type_metric(event) return _calculate_dynamodb_span_pointers_for_event(event) except Exception as e: diff --git a/tests/integration/snapshots/logs/async-metrics_python310.log b/tests/integration/snapshots/logs/async-metrics_python310.log index ed0d3b43f..24d3fb5b0 100644 --- a/tests/integration/snapshots/logs/async-metrics_python310.log +++ b/tests/integration/snapshots/logs/async-metrics_python310.log @@ -188,6 +188,15 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } +{ + "m": "datadog.serverless.dynamodb.stream.type", + "v": 1, + "e": XXXX, + "t": [ + "streamtype:NEW_AND_OLD_IMAGES", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} { "m": "hello.dog", "v": 1, diff --git a/tests/integration/snapshots/logs/async-metrics_python311.log b/tests/integration/snapshots/logs/async-metrics_python311.log index b57a1b5a5..e4fa66bce 100644 --- a/tests/integration/snapshots/logs/async-metrics_python311.log +++ b/tests/integration/snapshots/logs/async-metrics_python311.log @@ -188,6 +188,15 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } +{ + "m": "datadog.serverless.dynamodb.stream.type", + "v": 1, + "e": XXXX, + "t": [ + "streamtype:NEW_AND_OLD_IMAGES", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} { "m": "hello.dog", "v": 1, diff --git a/tests/integration/snapshots/logs/async-metrics_python312.log b/tests/integration/snapshots/logs/async-metrics_python312.log index 1b7e4b082..0d632c6c9 100644 --- a/tests/integration/snapshots/logs/async-metrics_python312.log +++ b/tests/integration/snapshots/logs/async-metrics_python312.log @@ -188,6 +188,15 @@ START "dd_lambda_layer:datadog-python312_X.X.X" ] } +{ + "m": "datadog.serverless.dynamodb.stream.type", + "v": 1, + "e": XXXX, + "t": [ + "streamtype:NEW_AND_OLD_IMAGES", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} { "m": "hello.dog", "v": 1, diff --git a/tests/integration/snapshots/logs/async-metrics_python313.log b/tests/integration/snapshots/logs/async-metrics_python313.log index 32342559d..090707096 100644 --- a/tests/integration/snapshots/logs/async-metrics_python313.log +++ b/tests/integration/snapshots/logs/async-metrics_python313.log @@ -188,6 +188,15 @@ START "dd_lambda_layer:datadog-python313_X.X.X" ] } +{ + "m": "datadog.serverless.dynamodb.stream.type", + "v": 1, + "e": XXXX, + "t": [ + "streamtype:NEW_AND_OLD_IMAGES", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} { "m": "hello.dog", "v": 1, diff --git a/tests/integration/snapshots/logs/async-metrics_python38.log b/tests/integration/snapshots/logs/async-metrics_python38.log index 9dc9edf61..4a5069309 100644 --- a/tests/integration/snapshots/logs/async-metrics_python38.log +++ b/tests/integration/snapshots/logs/async-metrics_python38.log @@ -188,6 +188,15 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } +{ + "m": "datadog.serverless.dynamodb.stream.type", + "v": 1, + "e": XXXX, + "t": [ + "streamtype:NEW_AND_OLD_IMAGES", + "dd_lambda_layer:datadog-python38_X.X.X" + ] +} { "m": "hello.dog", "v": 1, diff --git a/tests/integration/snapshots/logs/async-metrics_python39.log b/tests/integration/snapshots/logs/async-metrics_python39.log index 89e5d227b..54081402d 100644 --- a/tests/integration/snapshots/logs/async-metrics_python39.log +++ b/tests/integration/snapshots/logs/async-metrics_python39.log @@ -188,6 +188,15 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } +{ + "m": "datadog.serverless.dynamodb.stream.type", + "v": 1, + "e": XXXX, + "t": [ + "streamtype:NEW_AND_OLD_IMAGES", + "dd_lambda_layer:datadog-python39_X.X.X" + ] +} { "m": "hello.dog", "v": 1, diff --git a/tests/integration/snapshots/logs/sync-metrics_python310.log b/tests/integration/snapshots/logs/sync-metrics_python310.log index 6eab44c28..e25697756 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python310.log +++ b/tests/integration/snapshots/logs/sync-metrics_python310.log @@ -207,6 +207,15 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } +{ + "m": "datadog.serverless.dynamodb.stream.type", + "v": 1, + "e": XXXX, + "t": [ + "streamtype:NEW_AND_OLD_IMAGES", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { diff --git a/tests/integration/snapshots/logs/sync-metrics_python311.log b/tests/integration/snapshots/logs/sync-metrics_python311.log index 87cd6a6af..69d4a6952 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python311.log +++ b/tests/integration/snapshots/logs/sync-metrics_python311.log @@ -207,6 +207,15 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } +{ + "m": "datadog.serverless.dynamodb.stream.type", + "v": 1, + "e": XXXX, + "t": [ + "streamtype:NEW_AND_OLD_IMAGES", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { diff --git a/tests/integration/snapshots/logs/sync-metrics_python312.log b/tests/integration/snapshots/logs/sync-metrics_python312.log index 41b5a71ca..49bae0a2a 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python312.log +++ b/tests/integration/snapshots/logs/sync-metrics_python312.log @@ -207,6 +207,15 @@ START "dd_lambda_layer:datadog-python312_X.X.X" ] } +{ + "m": "datadog.serverless.dynamodb.stream.type", + "v": 1, + "e": XXXX, + "t": [ + "streamtype:NEW_AND_OLD_IMAGES", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { @@ -546,7 +555,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A ] } HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX -END Duration: XXXX ms Memory Used: XXXX MB { "traces": [ [ @@ -585,6 +593,7 @@ END Duration: XXXX ms Memory Used: XXXX MB ] ] } +END Duration: XXXX ms Memory Used: XXXX MB START { "m": "aws.lambda.enhanced.invocations", diff --git a/tests/integration/snapshots/logs/sync-metrics_python313.log b/tests/integration/snapshots/logs/sync-metrics_python313.log index 439e44d6c..2f461f6fe 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python313.log +++ b/tests/integration/snapshots/logs/sync-metrics_python313.log @@ -207,6 +207,15 @@ START "dd_lambda_layer:datadog-python313_X.X.X" ] } +{ + "m": "datadog.serverless.dynamodb.stream.type", + "v": 1, + "e": XXXX, + "t": [ + "streamtype:NEW_AND_OLD_IMAGES", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { @@ -1302,7 +1311,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A ] } HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX -END Duration: XXXX ms Memory Used: XXXX MB { "traces": [ [ @@ -1341,6 +1349,7 @@ END Duration: XXXX ms Memory Used: XXXX MB ] ] } +END Duration: XXXX ms Memory Used: XXXX MB START { "m": "aws.lambda.enhanced.invocations", diff --git a/tests/integration/snapshots/logs/sync-metrics_python38.log b/tests/integration/snapshots/logs/sync-metrics_python38.log index b30289ca8..83e33d336 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python38.log +++ b/tests/integration/snapshots/logs/sync-metrics_python38.log @@ -207,6 +207,15 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } +{ + "m": "datadog.serverless.dynamodb.stream.type", + "v": 1, + "e": XXXX, + "t": [ + "streamtype:NEW_AND_OLD_IMAGES", + "dd_lambda_layer:datadog-python38_X.X.X" + ] +} HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { diff --git a/tests/integration/snapshots/logs/sync-metrics_python39.log b/tests/integration/snapshots/logs/sync-metrics_python39.log index 772ea5d19..0a433c346 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -207,6 +207,15 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } +{ + "m": "datadog.serverless.dynamodb.stream.type", + "v": 1, + "e": XXXX, + "t": [ + "streamtype:NEW_AND_OLD_IMAGES", + "dd_lambda_layer:datadog-python39_X.X.X" + ] +} HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { @@ -368,6 +377,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A ] } HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX +END Duration: XXXX ms Memory Used: XXXX MB { "traces": [ [ @@ -406,7 +416,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept ] ] } -END Duration: XXXX ms Memory Used: XXXX MB START { "m": "aws.lambda.enhanced.invocations", From 71c14e370e9f2a086ff676705a2d19b045b15f20 Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Mon, 24 Mar 2025 08:38:10 -0700 Subject: [PATCH 240/403] Remove __future__ import. (#579) --- datadog_lambda/handler.py | 1 - 1 file changed, 1 deletion(-) diff --git a/datadog_lambda/handler.py b/datadog_lambda/handler.py index 433d9b926..4f12b1ad8 100644 --- a/datadog_lambda/handler.py +++ b/datadog_lambda/handler.py @@ -3,7 +3,6 @@ # This product includes software developed at Datadog (https://www.datadoghq.com/). # Copyright 2020 Datadog, Inc. -from __future__ import absolute_import from importlib import import_module import os From 95f9aed2b884f6205eb3e346ef6498bc0ae6aa4e Mon Sep 17 00:00:00 2001 From: Brett Langdon Date: Thu, 27 Mar 2025 15:28:52 -0400 Subject: [PATCH 241/403] Revert "Use sam/build-python images for building layers. (#577)" (#580) This reverts commit 5a55fe45a49b8d7e6c8db0734f203bdff648f383. --- scripts/build_layers.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/build_layers.sh b/scripts/build_layers.sh index 23941b7a0..a0d6ee39d 100755 --- a/scripts/build_layers.sh +++ b/scripts/build_layers.sh @@ -61,7 +61,7 @@ function docker_build_zip { # between different python runtimes. temp_dir=$(mktemp -d) docker buildx build -t datadog-lambda-python-${arch}:$1 . --no-cache \ - --build-arg image=public.ecr.aws/sam/build-python$1:1 \ + --build-arg image=public.ecr.aws/docker/library/python:$1 \ --build-arg runtime=python$1 \ --platform linux/${arch} \ --progress=plain \ From 2320c0a909413c8b66ba501fc969c043fbd27ec9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?jordan=20gonz=C3=A1lez?= <30836115+duncanista@users.noreply.github.com> Date: Fri, 28 Mar 2025 16:28:25 -0400 Subject: [PATCH 242/403] chore: lazy load some imports (#581) * lazy load metrics also hashlib right away * black * update invocation metric to be error metric * lazyload `base64` * patch right call --- datadog_lambda/api.py | 2 +- datadog_lambda/tracing.py | 10 ++++++++-- datadog_lambda/trigger.py | 3 ++- datadog_lambda/wrapper.py | 24 ++++++++++++++++-------- tests/test_wrapper.py | 2 +- 5 files changed, 28 insertions(+), 13 deletions(-) diff --git a/datadog_lambda/api.py b/datadog_lambda/api.py index c539ea05a..fd3e2c177 100644 --- a/datadog_lambda/api.py +++ b/datadog_lambda/api.py @@ -1,6 +1,5 @@ import os import logging -import base64 logger = logging.getLogger(__name__) KMS_ENCRYPTION_CONTEXT_KEY = "LambdaFunctionName" @@ -9,6 +8,7 @@ def decrypt_kms_api_key(kms_client, ciphertext): from botocore.exceptions import ClientError + import base64 """ Decodes and deciphers the base64-encoded ciphertext given as a parameter using KMS. diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 0fae76dd5..9a27673c6 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -2,10 +2,8 @@ # under the Apache License Version 2.0. # This product includes software developed at Datadog (https://www.datadoghq.com/). # Copyright 2019 Datadog, Inc. -import hashlib import logging import os -import base64 import traceback import ujson as json from datetime import datetime, timezone @@ -259,6 +257,8 @@ def extract_context_from_sqs_or_sns_event_or_context(event, lambda_context): dd_json_data = None dd_json_data_type = dd_payload.get("Type") or dd_payload.get("dataType") if dd_json_data_type == "Binary": + import base64 + dd_json_data = dd_payload.get("binaryValue") or dd_payload.get("Value") if dd_json_data: dd_json_data = base64.b64decode(dd_json_data) @@ -373,6 +373,8 @@ def extract_context_from_kinesis_event(event, lambda_context): return extract_context_from_lambda_context(lambda_context) data = kinesis.get("data") if data: + import base64 + b64_bytes = data.encode("ascii") str_bytes = base64.b64decode(b64_bytes) data_str = str_bytes.decode("ascii") @@ -387,6 +389,8 @@ def extract_context_from_kinesis_event(event, lambda_context): def _deterministic_sha256_hash(s: str, part: str) -> int: + import hashlib + sha256_hash = hashlib.sha256(s.encode()).hexdigest() # First two chars is '0b'. zfill to ensure 256 bits, but we only care about the first 128 bits binary_hash = bin(int(sha256_hash, 16))[2:].zfill(256) @@ -551,6 +555,8 @@ def get_injected_authorizer_data(event, is_http_api) -> dict: if not dd_data_raw: return None + import base64 + injected_data = json.loads(base64.b64decode(dd_data_raw)) # Lambda authorizer's results can be cached. But the payload will still have the injected diff --git a/datadog_lambda/trigger.py b/datadog_lambda/trigger.py index 708138bf4..8090e36e6 100644 --- a/datadog_lambda/trigger.py +++ b/datadog_lambda/trigger.py @@ -3,7 +3,6 @@ # This product includes software developed at Datadog (https://www.datadoghq.com/). # Copyright 2019 Datadog, Inc. -import base64 import gzip import ujson as json from io import BytesIO, BufferedReader @@ -242,6 +241,8 @@ def parse_event_source_arn(source: _EventSource, event: dict, context: Any) -> s # e.g. arn:aws:logs:us-west-1:123456789012:log-group:/my-log-group-xyz if source.event_type == EventTypes.CLOUDWATCH_LOGS: + import base64 + with gzip.GzipFile( fileobj=BytesIO(base64.b64decode(event.get("awslogs", {}).get("data"))) ) as decompress_stream: diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 5641bd159..8c1914e32 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -2,7 +2,6 @@ # under the Apache License Version 2.0. # This product includes software developed at Datadog (https://www.datadoghq.com/). # Copyright 2019 Datadog, Inc. -import base64 import os import logging import traceback @@ -23,11 +22,6 @@ XraySubsegment, Headers, ) -from datadog_lambda.metric import ( - flush_stats, - submit_invocations_metric, - submit_errors_metric, -) from datadog_lambda.module_name import modify_module_name from datadog_lambda.patch import patch_all from datadog_lambda.span_pointers import calculate_span_pointers @@ -248,7 +242,11 @@ def __call__(self, event, context, **kwargs): self.response = self.func(event, context, **kwargs) return self.response except Exception: - submit_errors_metric(context) + if not should_use_extension: + from datadog_lambda.metric import submit_errors_metric + + submit_errors_metric(context) + if self.span: self.span.set_traceback() raise @@ -274,6 +272,9 @@ def _inject_authorizer_span_headers(self, request_id): injected_headers[Headers.Parent_Span_Finish_Time] = finish_time_ns if request_id is not None: injected_headers[Headers.Authorizing_Request_Id] = request_id + + import base64 + datadog_data = base64.b64encode( json.dumps(injected_headers, escape_forward_slashes=False).encode() ).decode() @@ -284,7 +285,12 @@ def _before(self, event, context): try: self.response = None set_cold_start(init_timestamp_ns) - submit_invocations_metric(context) + + if not should_use_extension: + from datadog_lambda.metric import submit_invocations_metric + + submit_invocations_metric(context) + self.trigger_tags = extract_trigger_tags(event, context) # Extract Datadog trace context and source from incoming requests dd_context, trace_context_source, event_source = extract_dd_trace_context( @@ -383,6 +389,8 @@ def _after(self, event, context): logger.debug("Failed to create cold start spans. %s", e) if not self.flush_to_log or should_use_extension: + from datadog_lambda.metric import flush_stats + flush_stats(context) if should_use_extension and self.local_testing_mode: # when testing locally, the extension does not know when an diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index f47285e68..4b2430362 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -470,7 +470,7 @@ def lambda_handler(event, context): self.mock_write_metric_point_to_stdout.assert_not_called() def test_only_one_wrapper_in_use(self): - patcher = patch("datadog_lambda.wrapper.submit_invocations_metric") + patcher = patch("datadog_lambda.metric.submit_invocations_metric") self.mock_submit_invocations_metric = patcher.start() self.addCleanup(patcher.stop) From 7cd2baf6361d0a02b8b48e084fbc828a7db66b00 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Fri, 4 Apr 2025 10:49:52 -0400 Subject: [PATCH 243/403] v6.107.0 (#583) --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index 0c8d879b4..702691d81 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "6.106.0" +__version__ = "6.107.0" diff --git a/pyproject.toml b/pyproject.toml index 8db5e3525..165a8cbe4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "6.106.0" +version = "6.107.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 8207aa224692c1f3eb72cc5cb8dc10251e5368d2 Mon Sep 17 00:00:00 2001 From: Sam Brenner <106700075+sabrenner@users.noreply.github.com> Date: Wed, 16 Apr 2025 13:59:37 -0400 Subject: [PATCH 244/403] revert llmobs api key and forced agentless (#585) --- datadog_lambda/wrapper.py | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 8c1914e32..e81b1baab 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -49,14 +49,10 @@ if profiling_env_var: from ddtrace.profiling import profiler -llmobs_api_key = None llmobs_env_var = os.environ.get("DD_LLMOBS_ENABLED", "false").lower() in ("true", "1") if llmobs_env_var: - from datadog_lambda.api import get_api_key from ddtrace.llmobs import LLMObs - llmobs_api_key = get_api_key() - logger = logging.getLogger(__name__) DD_FLUSH_TO_LOG = "DD_FLUSH_TO_LOG" @@ -226,10 +222,7 @@ def __init__(self, func): # Enable LLM Observability if llmobs_env_var: - LLMObs.enable( - agentless_enabled=True, - api_key=llmobs_api_key, - ) + LLMObs.enable() logger.debug("datadog_lambda_wrapper initialized") except Exception as e: From 33cd5bf9e05bd3e3a35450c42b522ce1280b9add Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Thu, 24 Apr 2025 11:30:38 -0700 Subject: [PATCH 245/403] Add new region ap-southeast-7. (#586) --- ci/datasources/regions.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/ci/datasources/regions.yaml b/ci/datasources/regions.yaml index 93816ce9c..f74c62b82 100644 --- a/ci/datasources/regions.yaml +++ b/ci/datasources/regions.yaml @@ -12,6 +12,7 @@ regions: - code: "ap-southeast-3" - code: "ap-southeast-4" - code: "ap-southeast-5" + - code: "ap-southeast-7" - code: "ap-northeast-1" - code: "ap-northeast-2" - code: "ap-northeast-3" From 72caf0ae5d29f82649b57fb6075dcf9a4f7a436b Mon Sep 17 00:00:00 2001 From: Nicholas Hulston Date: Tue, 29 Apr 2025 14:10:13 -0400 Subject: [PATCH 246/403] add mx-central-1 region (#587) --- ci/datasources/regions.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/ci/datasources/regions.yaml b/ci/datasources/regions.yaml index f74c62b82..d41bade3a 100644 --- a/ci/datasources/regions.yaml +++ b/ci/datasources/regions.yaml @@ -29,4 +29,5 @@ regions: - code: "il-central-1" - code: "me-south-1" - code: "me-central-1" + - code: "mx-central-1" - code: "sa-east-1" From 1f8d3fd96a7dce844a3ecaea4ec2f41be1e73f56 Mon Sep 17 00:00:00 2001 From: Aleksandr Pasechnik Date: Tue, 6 May 2025 11:45:18 -0400 Subject: [PATCH 247/403] feat: Correct FIPS-mode metrics (#588) - Our `dogstatsd` client now supports timestamps for the metrics that it will send. - This unblocks us to always send metrics to the extension, even if they have a timestamp. Confirmed that this actually works now with both bottlecap and the go agent. - Refactored the metrics workflow to have an explicit choice of metrics handlers (Extension, Forwarder, Datadog API, or, for some FIPS usecases, No Handler). - Added a `DD_LAMBDA_FIPS_MODE` flag which allows FIPS-mode logic to be enabled in commercial regions or disabled in govcloud regions. - The new FIPS mode is used for Datadog API Key secret lookup and for metrics handling decisions. ### Breaking Change Since the `DD_LAMBDA_FIPS_MODE` defaults to `true` in govcloud, direct metrics submission there (without an Extension or a Forwarder) will now be disabled. --- datadog_lambda/api.py | 22 ++-- datadog_lambda/dogstatsd.py | 27 +++-- datadog_lambda/fips.py | 19 ++++ datadog_lambda/metric.py | 149 +++++++++++++++----------- datadog_lambda/stats_writer.py | 2 +- datadog_lambda/statsd_writer.py | 6 +- datadog_lambda/thread_stats_writer.py | 3 +- tests/test_api.py | 26 ++++- tests/test_dogstatsd.py | 20 ++-- tests/test_metric.py | 123 +++++++++++++-------- 10 files changed, 254 insertions(+), 143 deletions(-) create mode 100644 datadog_lambda/fips.py diff --git a/datadog_lambda/api.py b/datadog_lambda/api.py index fd3e2c177..d1cee4e4d 100644 --- a/datadog_lambda/api.py +++ b/datadog_lambda/api.py @@ -1,5 +1,7 @@ -import os import logging +import os + +from datadog_lambda.fips import fips_mode_enabled logger = logging.getLogger(__name__) KMS_ENCRYPTION_CONTEXT_KEY = "LambdaFunctionName" @@ -7,9 +9,10 @@ def decrypt_kms_api_key(kms_client, ciphertext): - from botocore.exceptions import ClientError import base64 + from botocore.exceptions import ClientError + """ Decodes and deciphers the base64-encoded ciphertext given as a parameter using KMS. For this to work properly, the Lambda function must have the appropriate IAM permissions. @@ -63,10 +66,9 @@ def get_api_key() -> str: DD_API_KEY = os.environ.get("DD_API_KEY", os.environ.get("DATADOG_API_KEY", "")) LAMBDA_REGION = os.environ.get("AWS_REGION", "") - is_gov_region = LAMBDA_REGION.startswith("us-gov-") - if is_gov_region: + if fips_mode_enabled: logger.debug( - "Govcloud region detected. Using FIPs endpoints for secrets management." + "FIPS mode is enabled, using FIPS endpoints for secrets management." ) if DD_API_KEY_SECRET_ARN: @@ -80,7 +82,7 @@ def get_api_key() -> str: return "" endpoint_url = ( f"https://secretsmanager-fips.{secrets_region}.amazonaws.com" - if is_gov_region + if fips_mode_enabled else None ) secrets_manager_client = _boto3_client( @@ -92,7 +94,9 @@ def get_api_key() -> str: elif DD_API_KEY_SSM_NAME: # SSM endpoints: https://docs.aws.amazon.com/general/latest/gr/ssm.html fips_endpoint = ( - f"https://ssm-fips.{LAMBDA_REGION}.amazonaws.com" if is_gov_region else None + f"https://ssm-fips.{LAMBDA_REGION}.amazonaws.com" + if fips_mode_enabled + else None ) ssm_client = _boto3_client("ssm", endpoint_url=fips_endpoint) api_key = ssm_client.get_parameter( @@ -101,7 +105,9 @@ def get_api_key() -> str: elif DD_KMS_API_KEY: # KMS endpoints: https://docs.aws.amazon.com/general/latest/gr/kms.html fips_endpoint = ( - f"https://kms-fips.{LAMBDA_REGION}.amazonaws.com" if is_gov_region else None + f"https://kms-fips.{LAMBDA_REGION}.amazonaws.com" + if fips_mode_enabled + else None ) kms_client = _boto3_client("kms", endpoint_url=fips_endpoint) api_key = decrypt_kms_api_key(kms_client, DD_KMS_API_KEY) diff --git a/datadog_lambda/dogstatsd.py b/datadog_lambda/dogstatsd.py index a627492dc..f30a20399 100644 --- a/datadog_lambda/dogstatsd.py +++ b/datadog_lambda/dogstatsd.py @@ -1,11 +1,10 @@ +import errno import logging import os -import socket -import errno import re +import socket from threading import Lock - MIN_SEND_BUFFER_SIZE = 32 * 1024 log = logging.getLogger("datadog_lambda.dogstatsd") @@ -55,14 +54,21 @@ def _get_udp_socket(cls, host, port): return sock - def distribution(self, metric, value, tags=None): + def distribution(self, metric, value, tags=None, timestamp=None): """ - Send a global distribution value, optionally setting tags. + Send a global distribution value, optionally setting tags. The optional + timestamp should be an integer representing seconds since the epoch + (January 1, 1970, 00:00:00 UTC). >>> statsd.distribution("uploaded.file.size", 1445) >>> statsd.distribution("album.photo.count", 26, tags=["gender:female"]) + >>> statsd.distribution( + >>> "historic.file.count", + >>> 5, + >>> timestamp=int(datetime(2020, 2, 14, 12, 0, 0).timestamp()), + >>> ) """ - self._report(metric, "d", value, tags) + self._report(metric, "d", value, tags, timestamp) def close_socket(self): """ @@ -84,20 +90,21 @@ def normalize_tags(self, tag_list): for tag in tag_list ] - def _serialize_metric(self, metric, metric_type, value, tags): + def _serialize_metric(self, metric, metric_type, value, tags, timestamp): # Create/format the metric packet - return "%s:%s|%s%s" % ( + return "%s:%s|%s%s%s" % ( metric, value, metric_type, ("|#" + ",".join(self.normalize_tags(tags))) if tags else "", + ("|T" + str(timestamp)) if timestamp is not None else "", ) - def _report(self, metric, metric_type, value, tags): + def _report(self, metric, metric_type, value, tags, timestamp): if value is None: return - payload = self._serialize_metric(metric, metric_type, value, tags) + payload = self._serialize_metric(metric, metric_type, value, tags, timestamp) # Send it self._send_to_server(payload) diff --git a/datadog_lambda/fips.py b/datadog_lambda/fips.py new file mode 100644 index 000000000..8442ddd94 --- /dev/null +++ b/datadog_lambda/fips.py @@ -0,0 +1,19 @@ +import logging +import os + +is_gov_region = os.environ.get("AWS_REGION", "").startswith("us-gov-") + +fips_mode_enabled = ( + os.environ.get( + "DD_LAMBDA_FIPS_MODE", + "true" if is_gov_region else "false", + ).lower() + == "true" +) + +if is_gov_region or fips_mode_enabled: + logger = logging.getLogger(__name__) + logger.debug( + "Python Lambda Layer FIPS mode is %s.", + "enabled" if fips_mode_enabled else "not enabled", + ) diff --git a/datadog_lambda/metric.py b/datadog_lambda/metric.py index f9c67a26e..0c18b5178 100644 --- a/datadog_lambda/metric.py +++ b/datadog_lambda/metric.py @@ -3,37 +3,66 @@ # This product includes software developed at Datadog (https://www.datadoghq.com/). # Copyright 2019 Datadog, Inc. +import enum +import logging import os import time -import logging -import ujson as json from datetime import datetime, timedelta +import ujson as json + from datadog_lambda.extension import should_use_extension -from datadog_lambda.tags import get_enhanced_metrics_tags, dd_lambda_layer_tag +from datadog_lambda.fips import fips_mode_enabled +from datadog_lambda.tags import dd_lambda_layer_tag, get_enhanced_metrics_tags logger = logging.getLogger(__name__) -lambda_stats = None -extension_thread_stats = None -flush_in_thread = os.environ.get("DD_FLUSH_IN_THREAD", "").lower() == "true" +class MetricsHandler(enum.Enum): + EXTENSION = "extension" + FORWARDER = "forwarder" + DATADOG_API = "datadog_api" + NO_METRICS = "no_metrics" + -if should_use_extension: +def _select_metrics_handler(): + if should_use_extension: + return MetricsHandler.EXTENSION + if os.environ.get("DD_FLUSH_TO_LOG", "").lower() == "true": + return MetricsHandler.FORWARDER + + if fips_mode_enabled: + logger.debug( + "With FIPS mode enabled, the Datadog API metrics handler is unavailable." + ) + return MetricsHandler.NO_METRICS + + return MetricsHandler.DATADOG_API + + +metrics_handler = _select_metrics_handler() +logger.debug("identified primary metrics handler as %s", metrics_handler) + + +lambda_stats = None +if metrics_handler == MetricsHandler.EXTENSION: from datadog_lambda.statsd_writer import StatsDWriter lambda_stats = StatsDWriter() -else: + +elif metrics_handler == MetricsHandler.DATADOG_API: # Periodical flushing in a background thread is NOT guaranteed to succeed # and leads to data loss. When disabled, metrics are only flushed at the # end of invocation. To make metrics submitted from a long-running Lambda # function available sooner, consider using the Datadog Lambda extension. - from datadog_lambda.thread_stats_writer import ThreadStatsWriter from datadog_lambda.api import init_api + from datadog_lambda.thread_stats_writer import ThreadStatsWriter + flush_in_thread = os.environ.get("DD_FLUSH_IN_THREAD", "").lower() == "true" init_api() lambda_stats = ThreadStatsWriter(flush_in_thread) + enhanced_metrics_enabled = ( os.environ.get("DD_ENHANCED_METRICS", "true").lower() == "true" ) @@ -44,16 +73,19 @@ def lambda_metric(metric_name, value, timestamp=None, tags=None, force_async=Fal Submit a data point to Datadog distribution metrics. https://docs.datadoghq.com/graphing/metrics/distributions/ - When DD_FLUSH_TO_LOG is True, write metric to log, and - wait for the Datadog Log Forwarder Lambda function to submit - the metrics asynchronously. + If the Datadog Lambda Extension is present, metrics are submitted to its + dogstatsd endpoint. + + When DD_FLUSH_TO_LOG is True or force_async is True, write metric to log, + and wait for the Datadog Log Forwarder Lambda function to submit the + metrics asynchronously. Otherwise, the metrics will be submitted to the Datadog API periodically and at the end of the function execution in a background thread. - Note that if the extension is present, it will override the DD_FLUSH_TO_LOG value - and always use the layer to send metrics to the extension + Note that if the extension is present, it will override the DD_FLUSH_TO_LOG + value and always use the layer to send metrics to the extension """ if not metric_name or not isinstance(metric_name, str): logger.warning( @@ -71,56 +103,54 @@ def lambda_metric(metric_name, value, timestamp=None, tags=None, force_async=Fal ) return - flush_to_logs = os.environ.get("DD_FLUSH_TO_LOG", "").lower() == "true" tags = [] if tags is None else list(tags) tags.append(dd_lambda_layer_tag) - if should_use_extension and timestamp is not None: - # The extension does not support timestamps for distributions so we create a - # a thread stats writer to submit metrics with timestamps to the API - timestamp_ceiling = int( - (datetime.now() - timedelta(hours=4)).timestamp() - ) # 4 hours ago - if isinstance(timestamp, datetime): - timestamp = int(timestamp.timestamp()) - if timestamp_ceiling > timestamp: - logger.warning( - "Timestamp %s is older than 4 hours, not submitting metric %s", - timestamp, - metric_name, - ) - return - global extension_thread_stats - if extension_thread_stats is None: - from datadog_lambda.thread_stats_writer import ThreadStatsWriter - from datadog_lambda.api import init_api - - init_api() - extension_thread_stats = ThreadStatsWriter(flush_in_thread) - - extension_thread_stats.distribution( - metric_name, value, tags=tags, timestamp=timestamp - ) - return + if metrics_handler == MetricsHandler.EXTENSION: + if timestamp is not None: + if isinstance(timestamp, datetime): + timestamp = int(timestamp.timestamp()) + + timestamp_floor = int((datetime.now() - timedelta(hours=4)).timestamp()) + if timestamp < timestamp_floor: + logger.warning( + "Timestamp %s is older than 4 hours, not submitting metric %s", + timestamp, + metric_name, + ) + return - if should_use_extension: logger.debug( "Sending metric %s value %s to Datadog via extension", metric_name, value ) lambda_stats.distribution(metric_name, value, tags=tags, timestamp=timestamp) + + elif force_async or (metrics_handler == MetricsHandler.FORWARDER): + write_metric_point_to_stdout(metric_name, value, timestamp=timestamp, tags=tags) + + elif metrics_handler == MetricsHandler.DATADOG_API: + lambda_stats.distribution(metric_name, value, tags=tags, timestamp=timestamp) + + elif metrics_handler == MetricsHandler.NO_METRICS: + logger.debug( + "Metric %s cannot be submitted because the metrics handler is disabled", + metric_name, + ), + else: - if flush_to_logs or force_async: - write_metric_point_to_stdout( - metric_name, value, timestamp=timestamp, tags=tags - ) - else: - lambda_stats.distribution( - metric_name, value, tags=tags, timestamp=timestamp - ) + # This should be qutie impossible, but let's at least log a message if + # it somehow happens. + logger.debug( + "Metric %s cannot be submitted because the metrics handler is not configured: %s", + metric_name, + metrics_handler, + ) -def write_metric_point_to_stdout(metric_name, value, timestamp=None, tags=[]): +def write_metric_point_to_stdout(metric_name, value, timestamp=None, tags=None): """Writes the specified metric point to standard output""" + tags = tags or [] + logger.debug( "Sending metric %s value %s to Datadog via log forwarder", metric_name, value ) @@ -138,19 +168,8 @@ def write_metric_point_to_stdout(metric_name, value, timestamp=None, tags=[]): def flush_stats(lambda_context=None): - lambda_stats.flush() - - if extension_thread_stats is not None: - tags = None - if lambda_context is not None: - tags = get_enhanced_metrics_tags(lambda_context) - split_arn = lambda_context.invoked_function_arn.split(":") - if len(split_arn) > 7: - # Get rid of the alias - split_arn.pop() - arn = ":".join(split_arn) - tags.append("function_arn:" + arn) - extension_thread_stats.flush(tags) + if lambda_stats is not None: + lambda_stats.flush() def submit_enhanced_metric(metric_name, lambda_context): diff --git a/datadog_lambda/stats_writer.py b/datadog_lambda/stats_writer.py index d3919c30f..563b1ae98 100644 --- a/datadog_lambda/stats_writer.py +++ b/datadog_lambda/stats_writer.py @@ -1,5 +1,5 @@ class StatsWriter: - def distribution(self, metric_name, value, tags=[], timestamp=None): + def distribution(self, metric_name, value, tags=None, timestamp=None): raise NotImplementedError() def flush(self): diff --git a/datadog_lambda/statsd_writer.py b/datadog_lambda/statsd_writer.py index 33843dc6a..4aaab8d53 100644 --- a/datadog_lambda/statsd_writer.py +++ b/datadog_lambda/statsd_writer.py @@ -1,5 +1,5 @@ -from datadog_lambda.stats_writer import StatsWriter from datadog_lambda.dogstatsd import statsd +from datadog_lambda.stats_writer import StatsWriter class StatsDWriter(StatsWriter): @@ -7,8 +7,8 @@ class StatsDWriter(StatsWriter): Writes distribution metrics using StatsD protocol """ - def distribution(self, metric_name, value, tags=[], timestamp=None): - statsd.distribution(metric_name, value, tags=tags) + def distribution(self, metric_name, value, tags=None, timestamp=None): + statsd.distribution(metric_name, value, tags=tags, timestamp=timestamp) def flush(self): pass diff --git a/datadog_lambda/thread_stats_writer.py b/datadog_lambda/thread_stats_writer.py index 422a9a0a4..f21ee31f9 100644 --- a/datadog_lambda/thread_stats_writer.py +++ b/datadog_lambda/thread_stats_writer.py @@ -3,6 +3,7 @@ # Make sure that this package would always be lazy-loaded/outside from the critical path # since underlying packages are quite heavy to load and useless when the extension is present from datadog.threadstats import ThreadStats + from datadog_lambda.stats_writer import StatsWriter logger = logging.getLogger(__name__) @@ -17,7 +18,7 @@ def __init__(self, flush_in_thread): self.thread_stats = ThreadStats(compress_payload=True) self.thread_stats.start(flush_in_thread=flush_in_thread) - def distribution(self, metric_name, value, tags=[], timestamp=None): + def distribution(self, metric_name, value, tags=None, timestamp=None): self.thread_stats.distribution( metric_name, value, tags=tags, timestamp=timestamp ) diff --git a/tests/test_api.py b/tests/test_api.py index c98d91eb2..59ee4ee8d 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -1,6 +1,6 @@ import os import unittest -from unittest.mock import patch, MagicMock +from unittest.mock import MagicMock, patch import datadog_lambda.api as api @@ -22,6 +22,7 @@ def setUp(self): ) self.env_patcher.start() + @patch("datadog_lambda.api.fips_mode_enabled", True) @patch("botocore.session.Session.create_client") def test_secrets_manager_fips_endpoint(self, mock_boto3_client): mock_client = MagicMock() @@ -62,6 +63,28 @@ def test_secrets_manager_different_region(self, mock_boto3_client): ) self.assertEqual(api_key, "test-api-key") + @patch("datadog_lambda.api.fips_mode_enabled", True) + @patch("botocore.session.Session.create_client") + def test_secrets_manager_different_region_but_still_fips(self, mock_boto3_client): + mock_client = MagicMock() + mock_client.get_secret_value.return_value = {"SecretString": "test-api-key"} + mock_boto3_client.return_value = mock_client + + os.environ["AWS_REGION"] = "us-east-1" + os.environ[ + "DD_API_KEY_SECRET_ARN" + ] = "arn:aws:secretsmanager:us-west-1:1234567890:secret:key-name-123ABC" + + api_key = api.get_api_key() + + mock_boto3_client.assert_called_with( + "secretsmanager", + endpoint_url="https://secretsmanager-fips.us-west-1.amazonaws.com", + region_name="us-west-1", + ) + self.assertEqual(api_key, "test-api-key") + + @patch("datadog_lambda.api.fips_mode_enabled", True) @patch("botocore.session.Session.create_client") def test_ssm_fips_endpoint(self, mock_boto3_client): mock_client = MagicMock() @@ -80,6 +103,7 @@ def test_ssm_fips_endpoint(self, mock_boto3_client): ) self.assertEqual(api_key, "test-api-key") + @patch("datadog_lambda.api.fips_mode_enabled", True) @patch("botocore.session.Session.create_client") @patch("datadog_lambda.api.decrypt_kms_api_key") def test_kms_fips_endpoint(self, mock_decrypt_kms, mock_boto3_client): diff --git a/tests/test_dogstatsd.py b/tests/test_dogstatsd.py index 149e1a707..ea6afd488 100644 --- a/tests/test_dogstatsd.py +++ b/tests/test_dogstatsd.py @@ -1,5 +1,5 @@ -from collections import deque import unittest +from collections import deque from datadog_lambda.dogstatsd import statsd @@ -36,16 +36,20 @@ def test_init(self): self.assertEqual(statsd.port, 8125) self.assertEqual(statsd.encoding, "utf-8") - def test_distribution_no_tags(self): - statsd.distribution("my.test.metric", 3) + def _checkOnlyOneMetric(self, value): payload = self.recv() metrics = payload.split("\n") self.assertEqual(len(metrics), 1) - self.assertEqual("my.test.metric:3|d", metrics[0]) + self.assertEqual(value, metrics[0]) + + def test_distribution_no_tags(self): + statsd.distribution("my.test.metric", 3) + self._checkOnlyOneMetric("my.test.metric:3|d") def test_distribution_with_tags(self): statsd.distribution("my.test.tags.metric", 3, tags=["taga:valuea,tagb:valueb"]) - payload = self.recv() - metrics = payload.split("\n") - self.assertEqual(len(metrics), 1) - self.assertEqual("my.test.tags.metric:3|d|#taga:valuea_tagb:valueb", metrics[0]) + self._checkOnlyOneMetric("my.test.tags.metric:3|d|#taga:valuea_tagb:valueb") + + def test_distribution_with_timestamp(self): + statsd.distribution("my.test.timestamp.metric", 9, timestamp=123456789) + self._checkOnlyOneMetric("my.test.timestamp.metric:9|d|T123456789") diff --git a/tests/test_metric.py b/tests/test_metric.py index d10a0f0d1..a4b0be2c4 100644 --- a/tests/test_metric.py +++ b/tests/test_metric.py @@ -1,23 +1,33 @@ import os import unittest - -from unittest.mock import patch, call +from datetime import datetime, timedelta +from unittest.mock import call, patch from botocore.exceptions import ClientError as BotocoreClientError from datadog.api.exceptions import ClientError -from datetime import datetime, timedelta -from datadog_lambda.metric import lambda_metric, flush_stats -from datadog_lambda.api import decrypt_kms_api_key, KMS_ENCRYPTION_CONTEXT_KEY -from datadog_lambda.thread_stats_writer import ThreadStatsWriter +from datadog_lambda.api import KMS_ENCRYPTION_CONTEXT_KEY, decrypt_kms_api_key +from datadog_lambda.metric import ( + MetricsHandler, + _select_metrics_handler, + flush_stats, + lambda_metric, +) from datadog_lambda.tags import dd_lambda_layer_tag +from datadog_lambda.thread_stats_writer import ThreadStatsWriter class TestLambdaMetric(unittest.TestCase): def setUp(self): - patcher = patch("datadog_lambda.metric.lambda_stats") - self.mock_metric_lambda_stats = patcher.start() - self.addCleanup(patcher.stop) + lambda_stats_patcher = patch("datadog_lambda.metric.lambda_stats") + self.mock_metric_lambda_stats = lambda_stats_patcher.start() + self.addCleanup(lambda_stats_patcher.stop) + + stdout_metric_patcher = patch( + "datadog_lambda.metric.write_metric_point_to_stdout" + ) + self.mock_write_metric_point_to_stdout = stdout_metric_patcher.start() + self.addCleanup(stdout_metric_patcher.stop) def test_lambda_metric_tagged_with_dd_lambda_layer(self): lambda_metric("test", 1) @@ -35,67 +45,94 @@ def test_lambda_metric_tagged_with_dd_lambda_layer(self): # let's fake that the extension is present, this should override DD_FLUSH_TO_LOG @patch("datadog_lambda.metric.should_use_extension", True) - def test_lambda_metric_flush_to_log_with_extension(self): + def test_select_metrics_handler_extension_despite_flush_to_logs(self): + os.environ["DD_FLUSH_TO_LOG"] = "True" + self.assertEqual(MetricsHandler.EXTENSION, _select_metrics_handler()) + del os.environ["DD_FLUSH_TO_LOG"] + + @patch("datadog_lambda.metric.should_use_extension", False) + def test_select_metrics_handler_forwarder_when_flush_to_logs(self): os.environ["DD_FLUSH_TO_LOG"] = "True" + self.assertEqual(MetricsHandler.FORWARDER, _select_metrics_handler()) + del os.environ["DD_FLUSH_TO_LOG"] + + @patch("datadog_lambda.metric.should_use_extension", False) + def test_select_metrics_handler_dd_api_fallback(self): + os.environ["DD_FLUSH_TO_LOG"] = "False" + self.assertEqual(MetricsHandler.DATADOG_API, _select_metrics_handler()) + del os.environ["DD_FLUSH_TO_LOG"] + + @patch("datadog_lambda.metric.fips_mode_enabled", True) + @patch("datadog_lambda.metric.should_use_extension", False) + def test_select_metrics_handler_has_no_fallback_in_fips_mode(self): + os.environ["DD_FLUSH_TO_LOG"] = "False" + self.assertEqual(MetricsHandler.NO_METRICS, _select_metrics_handler()) + del os.environ["DD_FLUSH_TO_LOG"] + + @patch("datadog_lambda.metric.metrics_handler", MetricsHandler.EXTENSION) + def test_lambda_metric_goes_to_extension_with_extension_handler(self): lambda_metric("test", 1) self.mock_metric_lambda_stats.distribution.assert_has_calls( [call("test", 1, timestamp=None, tags=[dd_lambda_layer_tag])] ) - del os.environ["DD_FLUSH_TO_LOG"] - @patch("datadog_lambda.metric.should_use_extension", True) - def test_lambda_metric_timestamp_with_extension(self): - patcher = patch("datadog_lambda.metric.extension_thread_stats") - self.mock_metric_extension_thread_stats = patcher.start() - self.addCleanup(patcher.stop) + @patch("datadog_lambda.metric.metrics_handler", MetricsHandler.NO_METRICS) + def test_lambda_metric_has_nowhere_to_go_with_no_metrics_handler(self): + lambda_metric("test", 1) + self.mock_metric_lambda_stats.distribution.assert_not_called() + self.mock_write_metric_point_to_stdout.assert_not_called() + @patch("datadog_lambda.metric.metrics_handler", MetricsHandler.EXTENSION) + def test_lambda_metric_timestamp_with_extension(self): delta = timedelta(minutes=1) timestamp = int((datetime.now() - delta).timestamp()) lambda_metric("test_timestamp", 1, timestamp) - self.mock_metric_lambda_stats.distribution.assert_not_called() - self.mock_metric_extension_thread_stats.distribution.assert_called_with( - "test_timestamp", 1, timestamp=timestamp, tags=[dd_lambda_layer_tag] + self.mock_metric_lambda_stats.distribution.assert_has_calls( + [call("test_timestamp", 1, timestamp=timestamp, tags=[dd_lambda_layer_tag])] ) + self.mock_write_metric_point_to_stdout.assert_not_called() - @patch("datadog_lambda.metric.should_use_extension", True) + @patch("datadog_lambda.metric.metrics_handler", MetricsHandler.EXTENSION) def test_lambda_metric_datetime_with_extension(self): - patcher = patch("datadog_lambda.metric.extension_thread_stats") - self.mock_metric_extension_thread_stats = patcher.start() - self.addCleanup(patcher.stop) - - delta = timedelta(hours=5) + delta = timedelta(minutes=1) timestamp = datetime.now() - delta - lambda_metric("test_timestamp", 1, timestamp) - self.mock_metric_lambda_stats.distribution.assert_not_called() - self.mock_metric_extension_thread_stats.distribution.assert_not_called() + lambda_metric("test_datetime_timestamp", 0, timestamp) + self.mock_metric_lambda_stats.distribution.assert_has_calls( + [ + call( + "test_datetime_timestamp", + 0, + timestamp=int(timestamp.timestamp()), + tags=[dd_lambda_layer_tag], + ) + ] + ) + self.mock_write_metric_point_to_stdout.assert_not_called() - @patch("datadog_lambda.metric.should_use_extension", True) + @patch("datadog_lambda.metric.metrics_handler", MetricsHandler.EXTENSION) def test_lambda_metric_invalid_timestamp_with_extension(self): - patcher = patch("datadog_lambda.metric.extension_thread_stats") - self.mock_metric_extension_thread_stats = patcher.start() - self.addCleanup(patcher.stop) - delta = timedelta(hours=5) timestamp = int((datetime.now() - delta).timestamp()) lambda_metric("test_timestamp", 1, timestamp) self.mock_metric_lambda_stats.distribution.assert_not_called() - self.mock_metric_extension_thread_stats.distribution.assert_not_called() + self.mock_write_metric_point_to_stdout.assert_not_called() + @patch("datadog_lambda.metric.metrics_handler", MetricsHandler.FORWARDER) def test_lambda_metric_flush_to_log(self): - os.environ["DD_FLUSH_TO_LOG"] = "True" - lambda_metric("test", 1) self.mock_metric_lambda_stats.distribution.assert_not_called() - - del os.environ["DD_FLUSH_TO_LOG"] + self.mock_write_metric_point_to_stdout.assert_has_calls( + [call("test", 1, timestamp=None, tags=[dd_lambda_layer_tag])] + ) @patch("datadog_lambda.metric.logger.warning") def test_lambda_metric_invalid_metric_name_none(self, mock_logger_warning): lambda_metric(None, 1) self.mock_metric_lambda_stats.distribution.assert_not_called() + self.mock_write_metric_point_to_stdout.assert_not_called() mock_logger_warning.assert_called_once_with( "Ignoring metric submission. Invalid metric name: %s", None ) @@ -104,6 +141,7 @@ def test_lambda_metric_invalid_metric_name_none(self, mock_logger_warning): def test_lambda_metric_invalid_metric_name_not_string(self, mock_logger_warning): lambda_metric(123, 1) self.mock_metric_lambda_stats.distribution.assert_not_called() + self.mock_write_metric_point_to_stdout.assert_not_called() mock_logger_warning.assert_called_once_with( "Ignoring metric submission. Invalid metric name: %s", 123 ) @@ -112,6 +150,7 @@ def test_lambda_metric_invalid_metric_name_not_string(self, mock_logger_warning) def test_lambda_metric_non_numeric_value(self, mock_logger_warning): lambda_metric("test.non_numeric", "oops") self.mock_metric_lambda_stats.distribution.assert_not_called() + self.mock_write_metric_point_to_stdout.assert_not_called() mock_logger_warning.assert_called_once_with( "Ignoring metric submission for metric '%s' because the value is not numeric: %r", "test.non_numeric", @@ -127,10 +166,6 @@ def setUp(self): self.mock_threadstats_flush_distributions = patcher.start() self.addCleanup(patcher.stop) - patcher = patch("datadog_lambda.metric.extension_thread_stats") - self.mock_extension_thread_stats = patcher.start() - self.addCleanup(patcher.stop) - def test_retry_on_remote_disconnected(self): # Raise the RemoteDisconnected error lambda_stats = ThreadStatsWriter(True) @@ -209,10 +244,6 @@ def test_flush_temp_constant_tags(self): lambda_stats.thread_stats.constant_tags, original_constant_tags ) - def test_flush_stats_without_context(self): - flush_stats(lambda_context=None) - self.mock_extension_thread_stats.flush.assert_called_with(None) - MOCK_FUNCTION_NAME = "myFunction" From 8a01794b02244efab5814f52e442aacf71682aac Mon Sep 17 00:00:00 2001 From: Aleksandr Pasechnik Date: Wed, 7 May 2025 16:45:13 -0400 Subject: [PATCH 248/403] 6.108.0 Release Candidate (#589) --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index 702691d81..bcd37def9 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "6.107.0" +__version__ = "6.108.0" diff --git a/pyproject.toml b/pyproject.toml index 165a8cbe4..8f16b438c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "6.107.0" +version = "6.108.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 8ca58b40dcfa8ad4c2169a27ddca27b19c7fb348 Mon Sep 17 00:00:00 2001 From: Aleksandr Pasechnik Date: Thu, 8 May 2025 11:19:03 -0400 Subject: [PATCH 249/403] fix: timestamps we send to the extension should be integers (#590) Also added some defense in depth for our lower level statsd call. --- datadog_lambda/dogstatsd.py | 2 +- datadog_lambda/metric.py | 12 ++++++++++++ tests/test_dogstatsd.py | 4 ++++ tests/test_metric.py | 28 ++++++++++++++++++++++++++++ 4 files changed, 45 insertions(+), 1 deletion(-) diff --git a/datadog_lambda/dogstatsd.py b/datadog_lambda/dogstatsd.py index f30a20399..a08e25926 100644 --- a/datadog_lambda/dogstatsd.py +++ b/datadog_lambda/dogstatsd.py @@ -97,7 +97,7 @@ def _serialize_metric(self, metric, metric_type, value, tags, timestamp): value, metric_type, ("|#" + ",".join(self.normalize_tags(tags))) if tags else "", - ("|T" + str(timestamp)) if timestamp is not None else "", + ("|T" + str(int(timestamp))) if timestamp is not None else "", ) def _report(self, metric, metric_type, value, tags, timestamp): diff --git a/datadog_lambda/metric.py b/datadog_lambda/metric.py index 0c18b5178..c9b978d68 100644 --- a/datadog_lambda/metric.py +++ b/datadog_lambda/metric.py @@ -111,6 +111,18 @@ def lambda_metric(metric_name, value, timestamp=None, tags=None, force_async=Fal if isinstance(timestamp, datetime): timestamp = int(timestamp.timestamp()) + else: + try: + timestamp = int(timestamp) + except Exception: + logger.debug( + "Ignoring metric submission for metric '%s' because the timestamp cannot " + "be turned into an integer: %r", + metric_name, + timestamp, + ) + return + timestamp_floor = int((datetime.now() - timedelta(hours=4)).timestamp()) if timestamp < timestamp_floor: logger.warning( diff --git a/tests/test_dogstatsd.py b/tests/test_dogstatsd.py index ea6afd488..6fe79372d 100644 --- a/tests/test_dogstatsd.py +++ b/tests/test_dogstatsd.py @@ -53,3 +53,7 @@ def test_distribution_with_tags(self): def test_distribution_with_timestamp(self): statsd.distribution("my.test.timestamp.metric", 9, timestamp=123456789) self._checkOnlyOneMetric("my.test.timestamp.metric:9|d|T123456789") + + def test_distribution_with_float_timestamp(self): + statsd.distribution("my.test.timestamp.metric", 9, timestamp=123456789.123) + self._checkOnlyOneMetric("my.test.timestamp.metric:9|d|T123456789") diff --git a/tests/test_metric.py b/tests/test_metric.py index a4b0be2c4..e7dab2c3c 100644 --- a/tests/test_metric.py +++ b/tests/test_metric.py @@ -111,6 +111,34 @@ def test_lambda_metric_datetime_with_extension(self): ) self.mock_write_metric_point_to_stdout.assert_not_called() + @patch("datadog_lambda.metric.metrics_handler", MetricsHandler.EXTENSION) + def test_lambda_metric_float_with_extension(self): + delta = timedelta(minutes=1) + timestamp_float = (datetime.now() - delta).timestamp() + timestamp_int = int(timestamp_float) + + lambda_metric("test_timestamp", 1, timestamp_float) + self.mock_metric_lambda_stats.distribution.assert_has_calls( + [ + call( + "test_timestamp", + 1, + timestamp=timestamp_int, + tags=[dd_lambda_layer_tag], + ) + ] + ) + self.mock_write_metric_point_to_stdout.assert_not_called() + + @patch("datadog_lambda.metric.metrics_handler", MetricsHandler.EXTENSION) + def test_lambda_metric_timestamp_junk_with_extension(self): + delta = timedelta(minutes=1) + timestamp = (datetime.now() - delta).isoformat() + + lambda_metric("test_timestamp", 1, timestamp) + self.mock_metric_lambda_stats.distribution.assert_not_called() + self.mock_write_metric_point_to_stdout.assert_not_called() + @patch("datadog_lambda.metric.metrics_handler", MetricsHandler.EXTENSION) def test_lambda_metric_invalid_timestamp_with_extension(self): delta = timedelta(hours=5) From 1226b2de560afc6a8fe3e631ad84960b5dd03eef Mon Sep 17 00:00:00 2001 From: Aleksandr Pasechnik Date: Fri, 9 May 2025 12:46:04 -0400 Subject: [PATCH 250/403] v6.109.0 (#591) --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index bcd37def9..c3aaa6b70 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "6.108.0" +__version__ = "6.109.0" diff --git a/pyproject.toml b/pyproject.toml index 8f16b438c..cccef63ec 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "6.108.0" +version = "6.109.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 16774731b8050e3355d24ffe6d917c656cf0c09f Mon Sep 17 00:00:00 2001 From: Nicholas Hulston Date: Fri, 9 May 2025 13:21:33 -0400 Subject: [PATCH 251/403] (feat): Enable Exception Replay in Lambda (#592) * import exception replay from tracer and enable if `DD_EXCEPTION_REPLAY_ENABLED=true` * lint --- datadog_lambda/wrapper.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index e81b1baab..e54601188 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -53,6 +53,12 @@ if llmobs_env_var: from ddtrace.llmobs import LLMObs +exception_replay_env_var = os.environ.get( + "DD_EXCEPTION_REPLAY_ENABLED", "false" +).lower() in ("true", "1") +if exception_replay_env_var: + from ddtrace.debugging._exception.replay import SpanExceptionHandler + logger = logging.getLogger(__name__) DD_FLUSH_TO_LOG = "DD_FLUSH_TO_LOG" @@ -224,6 +230,11 @@ def __init__(self, func): if llmobs_env_var: LLMObs.enable() + # Enable Exception Replay + if exception_replay_env_var: + logger.debug("Enabling exception replay") + SpanExceptionHandler.enable() + logger.debug("datadog_lambda_wrapper initialized") except Exception as e: logger.error(format_err_with_traceback(e)) From 9b694f7e25c58e9cbffb97392145c6962747fa87 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Tue, 13 May 2025 12:47:49 -0400 Subject: [PATCH 252/403] fix: safely getting all the values for trigger tags (#593) * solution2: safely getting all the values * lint * add comment back --- datadog_lambda/trigger.py | 45 +++++++++++++++++++++------ tests/test_trigger.py | 65 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 100 insertions(+), 10 deletions(-) diff --git a/datadog_lambda/trigger.py b/datadog_lambda/trigger.py index 8090e36e6..52978d4bd 100644 --- a/datadog_lambda/trigger.py +++ b/datadog_lambda/trigger.py @@ -114,10 +114,14 @@ def parse_event_source(event: dict) -> _EventSource: event_source = None - request_context = event.get("requestContext") + # Get requestContext safely and ensure it's a dictionary + request_context = event.get("requestContext", {}) + if not isinstance(request_context, dict): + request_context = {} + if request_context and request_context.get("stage"): if "domainName" in request_context and detect_lambda_function_url_domain( - request_context.get("domainName") + request_context.get("domainName", "") ): return _EventSource(EventTypes.LAMBDA_FUNCTION_URL) event_source = _EventSource(EventTypes.API_GATEWAY) @@ -171,6 +175,8 @@ def parse_event_source(event: dict) -> _EventSource: def detect_lambda_function_url_domain(domain: str) -> bool: # e.g. "etsn5fibjr.lambda-url.eu-south-1.amazonaws.com" + if not isinstance(domain, str): + return False domain_parts = domain.split(".") if len(domain_parts) < 2: return False @@ -283,17 +289,28 @@ def extract_http_tags(event): Extracts HTTP facet tags from the triggering event """ http_tags = {} - request_context = event.get("requestContext") + + # Safely get request_context and ensure it's a dictionary + request_context = event.get("requestContext", {}) + if not isinstance(request_context, dict): + request_context = {} + path = event.get("path") method = event.get("httpMethod") + if request_context and request_context.get("stage"): - if request_context.get("domainName"): - http_tags["http.url"] = request_context.get("domainName") + domain_name = request_context.get("domainName") + if domain_name: + http_tags["http.url"] = domain_name path = request_context.get("path") method = request_context.get("httpMethod") + # Version 2.0 HTTP API Gateway - apigateway_v2_http = request_context.get("http") + apigateway_v2_http = request_context.get("http", {}) + if not isinstance(apigateway_v2_http, dict): + apigateway_v2_http = {} + if event.get("version") == "2.0" and apigateway_v2_http: path = apigateway_v2_http.get("path") method = apigateway_v2_http.get("method") @@ -303,15 +320,23 @@ def extract_http_tags(event): if method: http_tags["http.method"] = method - headers = event.get("headers") + # Safely get headers + headers = event.get("headers", {}) + if not isinstance(headers, dict): + headers = {} + if headers and headers.get("Referer"): http_tags["http.referer"] = headers.get("Referer") # Try to get `routeKey` from API GW v2; otherwise try to get `resource` from API GW v1 route = event.get("routeKey") or event.get("resource") - if route: - # "GET /my/endpoint" = > "/my/endpoint" - http_tags["http.route"] = route.split(" ")[-1] + if route and isinstance(route, str): + try: + # "GET /my/endpoint" = > "/my/endpoint" + http_tags["http.route"] = route.split(" ")[-1] + except Exception: + # If splitting fails, use the route as is + http_tags["http.route"] = route return http_tags diff --git a/tests/test_trigger.py b/tests/test_trigger.py index 9cb088f1c..b4da7ff0b 100644 --- a/tests/test_trigger.py +++ b/tests/test_trigger.py @@ -256,6 +256,30 @@ def test_event_source_unsupported(self): self.assertEqual(event_source.to_string(), "unknown") self.assertEqual(event_source_arn, None) + def test_event_source_with_non_dict_request_context(self): + # Test with requestContext as a string instead of a dict + event = {"requestContext": "not_a_dict"} + event_source = parse_event_source(event) + # Should still return a valid event source (unknown in this case) + self.assertEqual(event_source.to_string(), "unknown") + + def test_event_source_with_invalid_domain_name(self): + # Test with domainName that isn't a string + event = {"requestContext": {"stage": "prod", "domainName": 12345}} + event_source = parse_event_source(event) + # Should detect as API Gateway since stage is present + self.assertEqual(event_source.to_string(), "api-gateway") + + def test_detect_lambda_function_url_domain_with_invalid_input(self): + from datadog_lambda.trigger import detect_lambda_function_url_domain + + # Test with non-string input + self.assertFalse(detect_lambda_function_url_domain(None)) + self.assertFalse(detect_lambda_function_url_domain(12345)) + self.assertFalse(detect_lambda_function_url_domain({"not": "a-string"})) + # Test with string that would normally cause an exception when split + self.assertFalse(detect_lambda_function_url_domain("")) + class GetTriggerTags(unittest.TestCase): def test_extract_trigger_tags_api_gateway(self): @@ -530,6 +554,47 @@ def test_extract_trigger_tags_list_type_event(self): tags = extract_trigger_tags(event, ctx) self.assertEqual(tags, {}) + def test_extract_http_tags_with_invalid_request_context(self): + from datadog_lambda.trigger import extract_http_tags + + # Test with requestContext as a string instead of a dict + event = {"requestContext": "not_a_dict", "path": "/test", "httpMethod": "GET"} + http_tags = extract_http_tags(event) + # Should still extract valid tags from the event + self.assertEqual( + http_tags, {"http.url_details.path": "/test", "http.method": "GET"} + ) + + def test_extract_http_tags_with_invalid_apigateway_http(self): + from datadog_lambda.trigger import extract_http_tags + + # Test with http in requestContext that's not a dict + event = { + "requestContext": {"stage": "prod", "http": "not_a_dict"}, + "version": "2.0", + } + http_tags = extract_http_tags(event) + # Should not raise an exception + self.assertEqual(http_tags, {}) + + def test_extract_http_tags_with_invalid_headers(self): + from datadog_lambda.trigger import extract_http_tags + + # Test with headers that's not a dict + event = {"headers": "not_a_dict"} + http_tags = extract_http_tags(event) + # Should not raise an exception + self.assertEqual(http_tags, {}) + + def test_extract_http_tags_with_invalid_route(self): + from datadog_lambda.trigger import extract_http_tags + + # Test with routeKey that would cause a split error + event = {"routeKey": 12345} # Not a string + http_tags = extract_http_tags(event) + # Should not raise an exception + self.assertEqual(http_tags, {}) + class ExtractHTTPStatusCodeTag(unittest.TestCase): def test_extract_http_status_code_tag_from_response_dict(self): From b74068bbdb07be1e21b6ed34c73dd23c5a853f14 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Wed, 14 May 2025 22:27:42 -0400 Subject: [PATCH 253/403] perf: fewer memory allocation (#597) * fewer memory allocation * Update datadog_lambda/trigger.py * Update datadog_lambda/trigger.py --- datadog_lambda/trigger.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/datadog_lambda/trigger.py b/datadog_lambda/trigger.py index 52978d4bd..a2708a598 100644 --- a/datadog_lambda/trigger.py +++ b/datadog_lambda/trigger.py @@ -115,9 +115,9 @@ def parse_event_source(event: dict) -> _EventSource: event_source = None # Get requestContext safely and ensure it's a dictionary - request_context = event.get("requestContext", {}) + request_context = event.get("requestContext") if not isinstance(request_context, dict): - request_context = {} + request_context = None if request_context and request_context.get("stage"): if "domainName" in request_context and detect_lambda_function_url_domain( @@ -291,9 +291,9 @@ def extract_http_tags(event): http_tags = {} # Safely get request_context and ensure it's a dictionary - request_context = event.get("requestContext", {}) + request_context = event.get("requestContext") if not isinstance(request_context, dict): - request_context = {} + request_context = None path = event.get("path") method = event.get("httpMethod") From 1d6d28f318b403358689afa5de79d689a655eb4a Mon Sep 17 00:00:00 2001 From: Nicholas Hulston Date: Thu, 15 May 2025 08:57:26 -0400 Subject: [PATCH 254/403] Add Exception Replay env var to README (#599) * update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 03cd846a6..658babc28 100644 --- a/README.md +++ b/README.md @@ -29,6 +29,7 @@ Besides the environment variables supported by dd-trace-py, the datadog-lambda-p | DD_COLD_START_TRACE_SKIP_LIB | optionally skip creating Cold Start Spans for a comma-separated list of libraries. Useful to limit depth or skip known libraries. | `ddtrace.internal.compat,ddtrace.filters` | | DD_CAPTURE_LAMBDA_PAYLOAD | [Captures incoming and outgoing AWS Lambda payloads][1] in the Datadog APM spans for Lambda invocations. | `false` | | DD_CAPTURE_LAMBDA_PAYLOAD_MAX_DEPTH | Determines the level of detail captured from AWS Lambda payloads, which are then assigned as tags for the `aws.lambda` span. It specifies the nesting depth of the JSON payload structure to process. Once the specified maximum depth is reached, the tag's value is set to the stringified value of any nested elements beyond this level.
For example, given the input payload:
{
"lv1" : {
"lv2": {
"lv3": "val"
}
}
}
If the depth is set to `2`, the resulting tag's key is set to `function.request.lv1.lv2` and the value is `{\"lv3\": \"val\"}`.
If the depth is set to `0`, the resulting tag's key is set to `function.request` and value is `{\"lv1\":{\"lv2\":{\"lv3\": \"val\"}}}` | `10` | +| DD_EXCEPTION_REPLAY_ENABLED | When set to `true`, the Lambda will run with Error Tracking Exception Replay enabled, capturing local variables. | `false` | ## Opening Issues From 497aadc4dfb08f662559c18f8971da249be0dc62 Mon Sep 17 00:00:00 2001 From: Nicholas Hulston Date: Fri, 16 May 2025 14:22:28 -0400 Subject: [PATCH 255/403] fix flushing Exception Replay (#601) --- datadog_lambda/wrapper.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index e54601188..86bbf04d8 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -58,6 +58,7 @@ ).lower() in ("true", "1") if exception_replay_env_var: from ddtrace.debugging._exception.replay import SpanExceptionHandler + from ddtrace.debugging._uploader import LogsIntakeUploaderV1 logger = logging.getLogger(__name__) @@ -405,6 +406,10 @@ def _after(self, event, context): if llmobs_env_var: LLMObs.flush() + # Flush exception replay + if exception_replay_env_var: + LogsIntakeUploaderV1._instance.periodic() + if self.encode_authorizer_context and is_authorizer_response(self.response): self._inject_authorizer_span_headers( event.get("requestContext", {}).get("requestId") From 676446cf4998caeefcbac011ab23bde4af954b1e Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Fri, 23 May 2025 11:16:17 +0200 Subject: [PATCH 256/403] v6.110.0 (#602) --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index c3aaa6b70..9534f0c73 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "6.109.0" +__version__ = "6.110.0" diff --git a/pyproject.toml b/pyproject.toml index cccef63ec..ba5bcb176 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "6.109.0" +version = "6.110.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 64f81daa97d589f1047d00000c31d85e24e4314d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?jordan=20gonz=C3=A1lez?= <30836115+duncanista@users.noreply.github.com> Date: Fri, 23 May 2025 16:15:23 +0200 Subject: [PATCH 257/403] fix: `http.url` tag to include protocol (#603) * update `http.url` in inferred spans * update `http.url` in trigger tags * fix `resource_names` update * update integration test --- datadog_lambda/tracing.py | 14 +++++--- datadog_lambda/trigger.py | 2 +- .../logs/async-metrics_python310.log | 12 +++---- .../logs/async-metrics_python311.log | 12 +++---- .../logs/async-metrics_python312.log | 12 +++---- .../logs/async-metrics_python313.log | 12 +++---- .../snapshots/logs/async-metrics_python38.log | 12 +++---- .../snapshots/logs/async-metrics_python39.log | 12 +++---- .../snapshots/logs/sync-metrics_python310.log | 12 +++---- .../snapshots/logs/sync-metrics_python311.log | 12 +++---- .../snapshots/logs/sync-metrics_python312.log | 12 +++---- .../snapshots/logs/sync-metrics_python313.log | 12 +++---- .../snapshots/logs/sync-metrics_python38.log | 12 +++---- .../snapshots/logs/sync-metrics_python39.log | 14 ++++---- tests/test_tracing.py | 36 +++++++++---------- tests/test_trigger.py | 12 +++---- tests/test_wrapper.py | 2 +- 17 files changed, 108 insertions(+), 104 deletions(-) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 9a27673c6..4b6f300a8 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -850,13 +850,14 @@ def create_inferred_span_from_lambda_function_url_event(event, context): http = request_context.get("http") method = http.get("method") if http else None path = http.get("path") if http else None + http_url = f"https://{domain}{path}" resource = f"{method} {path}" tags = { "operation_name": "aws.lambda.url", - "http.url": domain + path, + "http.url": http_url, "endpoint": path, "http.method": method, - "resource_names": domain + path, + "resource_names": resource, "request_id": context.aws_request_id, } request_time_epoch = request_context.get("timeEpoch") @@ -948,6 +949,7 @@ def create_inferred_span_from_api_gateway_websocket_event( request_context = event.get("requestContext") domain = request_context.get("domainName") endpoint = request_context.get("routeKey") + http_url = f"https://{domain}{endpoint}" api_id = request_context.get("apiId") service_name = determine_service_name( @@ -955,7 +957,7 @@ def create_inferred_span_from_api_gateway_websocket_event( ) tags = { "operation_name": "aws.apigateway.websocket", - "http.url": domain + endpoint, + "http.url": http_url, "endpoint": endpoint, "resource_names": endpoint, "apiid": api_id, @@ -1007,11 +1009,12 @@ def create_inferred_span_from_api_gateway_event( ) method = event.get("httpMethod") path = event.get("path") + http_url = f"https://{domain}{path}" resource_path = _get_resource_path(event, request_context) resource = f"{method} {resource_path}" tags = { "operation_name": "aws.apigateway.rest", - "http.url": domain + path, + "http.url": http_url, "endpoint": path, "http.method": method, "resource_names": resource, @@ -1073,12 +1076,13 @@ def create_inferred_span_from_http_api_event( http = request_context.get("http") or {} method = http.get("method") path = event.get("rawPath") + http_url = f"https://{domain}{path}" resource_path = _get_resource_path(event, request_context) resource = f"{method} {resource_path}" tags = { "operation_name": "aws.httpapi", "endpoint": path, - "http.url": domain + path, + "http.url": http_url, "http.method": http.get("method"), "http.protocol": http.get("protocol"), "http.source_ip": http.get("sourceIp"), diff --git a/datadog_lambda/trigger.py b/datadog_lambda/trigger.py index a2708a598..14cb06ac2 100644 --- a/datadog_lambda/trigger.py +++ b/datadog_lambda/trigger.py @@ -301,7 +301,7 @@ def extract_http_tags(event): if request_context and request_context.get("stage"): domain_name = request_context.get("domainName") if domain_name: - http_tags["http.url"] = domain_name + http_tags["http.url"] = f"https://{domain_name}" path = request_context.get("path") method = request_context.get("httpMethod") diff --git a/tests/integration/snapshots/logs/async-metrics_python310.log b/tests/integration/snapshots/logs/async-metrics_python310.log index 24d3fb5b0..0bd7237c9 100644 --- a/tests/integration/snapshots/logs/async-metrics_python310.log +++ b/tests/integration/snapshots/logs/async-metrics_python310.log @@ -55,7 +55,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "runtime-id": "XXXX", "_dd.origin": "lambda", "operation_name": "aws.apigateway.rest", - "http.url": "XXXX.execute-api.us-east-2.amazonaws.com/", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/", "endpoint": "/", "http.method": "GET", "resource_names": "GET /", @@ -103,7 +103,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", "http.route": "/", @@ -594,7 +594,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.httpapi", "endpoint": "/httpapi/get", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.protocol": "HTTP/1.1", "http.source_ip": "XXXX", @@ -644,7 +644,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", @@ -1436,7 +1436,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "runtime-id": "XXXX", "_dd.origin": "lambda", "operation_name": "aws.apigateway.websocket", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com$default", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com$default", "endpoint": "$default", "resource_names": "$default", "apiid": "XXXX", @@ -1486,7 +1486,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python311.log b/tests/integration/snapshots/logs/async-metrics_python311.log index e4fa66bce..8550a0623 100644 --- a/tests/integration/snapshots/logs/async-metrics_python311.log +++ b/tests/integration/snapshots/logs/async-metrics_python311.log @@ -55,7 +55,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "runtime-id": "XXXX", "_dd.origin": "lambda", "operation_name": "aws.apigateway.rest", - "http.url": "XXXX.execute-api.us-east-2.amazonaws.com/", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/", "endpoint": "/", "http.method": "GET", "resource_names": "GET /", @@ -103,7 +103,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", "http.route": "/", @@ -594,7 +594,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.httpapi", "endpoint": "/httpapi/get", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.protocol": "HTTP/1.1", "http.source_ip": "XXXX", @@ -644,7 +644,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", @@ -1436,7 +1436,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "runtime-id": "XXXX", "_dd.origin": "lambda", "operation_name": "aws.apigateway.websocket", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com$default", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com$default", "endpoint": "$default", "resource_names": "$default", "apiid": "XXXX", @@ -1486,7 +1486,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python312.log b/tests/integration/snapshots/logs/async-metrics_python312.log index 0d632c6c9..57c318abf 100644 --- a/tests/integration/snapshots/logs/async-metrics_python312.log +++ b/tests/integration/snapshots/logs/async-metrics_python312.log @@ -55,7 +55,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "runtime-id": "XXXX", "_dd.origin": "lambda", "operation_name": "aws.apigateway.rest", - "http.url": "XXXX.execute-api.us-east-2.amazonaws.com/", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/", "endpoint": "/", "http.method": "GET", "resource_names": "GET /", @@ -103,7 +103,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", "http.route": "/", @@ -594,7 +594,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.httpapi", "endpoint": "/httpapi/get", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.protocol": "HTTP/1.1", "http.source_ip": "XXXX", @@ -644,7 +644,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", @@ -1436,7 +1436,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "runtime-id": "XXXX", "_dd.origin": "lambda", "operation_name": "aws.apigateway.websocket", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com$default", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com$default", "endpoint": "$default", "resource_names": "$default", "apiid": "XXXX", @@ -1486,7 +1486,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python313.log b/tests/integration/snapshots/logs/async-metrics_python313.log index 090707096..9204499bd 100644 --- a/tests/integration/snapshots/logs/async-metrics_python313.log +++ b/tests/integration/snapshots/logs/async-metrics_python313.log @@ -55,7 +55,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "runtime-id": "XXXX", "_dd.origin": "lambda", "operation_name": "aws.apigateway.rest", - "http.url": "XXXX.execute-api.us-east-2.amazonaws.com/", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/", "endpoint": "/", "http.method": "GET", "resource_names": "GET /", @@ -103,7 +103,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", "http.route": "/", @@ -594,7 +594,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.httpapi", "endpoint": "/httpapi/get", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.protocol": "HTTP/1.1", "http.source_ip": "XXXX", @@ -644,7 +644,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", @@ -1436,7 +1436,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "runtime-id": "XXXX", "_dd.origin": "lambda", "operation_name": "aws.apigateway.websocket", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com$default", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com$default", "endpoint": "$default", "resource_names": "$default", "apiid": "XXXX", @@ -1486,7 +1486,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python38.log b/tests/integration/snapshots/logs/async-metrics_python38.log index 4a5069309..e6df054c3 100644 --- a/tests/integration/snapshots/logs/async-metrics_python38.log +++ b/tests/integration/snapshots/logs/async-metrics_python38.log @@ -55,7 +55,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "runtime-id": "XXXX", "_dd.origin": "lambda", "operation_name": "aws.apigateway.rest", - "http.url": "XXXX.execute-api.us-east-2.amazonaws.com/", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/", "endpoint": "/", "http.method": "GET", "resource_names": "GET /", @@ -103,7 +103,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", "http.route": "/", @@ -594,7 +594,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.httpapi", "endpoint": "/httpapi/get", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.protocol": "HTTP/1.1", "http.source_ip": "XXXX", @@ -644,7 +644,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", @@ -1436,7 +1436,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "runtime-id": "XXXX", "_dd.origin": "lambda", "operation_name": "aws.apigateway.websocket", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com$default", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com$default", "endpoint": "$default", "resource_names": "$default", "apiid": "XXXX", @@ -1486,7 +1486,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python39.log b/tests/integration/snapshots/logs/async-metrics_python39.log index 54081402d..9bcb7a859 100644 --- a/tests/integration/snapshots/logs/async-metrics_python39.log +++ b/tests/integration/snapshots/logs/async-metrics_python39.log @@ -55,7 +55,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "runtime-id": "XXXX", "_dd.origin": "lambda", "operation_name": "aws.apigateway.rest", - "http.url": "XXXX.execute-api.us-east-2.amazonaws.com/", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/", "endpoint": "/", "http.method": "GET", "resource_names": "GET /", @@ -103,7 +103,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", "http.route": "/", @@ -594,7 +594,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.httpapi", "endpoint": "/httpapi/get", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.protocol": "HTTP/1.1", "http.source_ip": "XXXX", @@ -644,7 +644,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", @@ -1436,7 +1436,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "runtime-id": "XXXX", "_dd.origin": "lambda", "operation_name": "aws.apigateway.websocket", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com$default", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com$default", "endpoint": "$default", "resource_names": "$default", "apiid": "XXXX", @@ -1486,7 +1486,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python310.log b/tests/integration/snapshots/logs/sync-metrics_python310.log index e25697756..40562a6d0 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python310.log +++ b/tests/integration/snapshots/logs/sync-metrics_python310.log @@ -35,7 +35,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "runtime-id": "XXXX", "_dd.origin": "lambda", "operation_name": "aws.apigateway.rest", - "http.url": "XXXX.execute-api.us-east-2.amazonaws.com/", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/", "endpoint": "/", "http.method": "GET", "resource_names": "GET /", @@ -83,7 +83,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", "http.route": "/", @@ -631,7 +631,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.httpapi", "endpoint": "/httpapi/get", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.protocol": "HTTP/1.1", "http.source_ip": "XXXX", @@ -681,7 +681,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", @@ -1568,7 +1568,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "runtime-id": "XXXX", "_dd.origin": "lambda", "operation_name": "aws.apigateway.websocket", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com$default", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com$default", "endpoint": "$default", "resource_names": "$default", "apiid": "XXXX", @@ -1618,7 +1618,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python311.log b/tests/integration/snapshots/logs/sync-metrics_python311.log index 69d4a6952..52ec4c85a 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python311.log +++ b/tests/integration/snapshots/logs/sync-metrics_python311.log @@ -35,7 +35,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "runtime-id": "XXXX", "_dd.origin": "lambda", "operation_name": "aws.apigateway.rest", - "http.url": "XXXX.execute-api.us-east-2.amazonaws.com/", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/", "endpoint": "/", "http.method": "GET", "resource_names": "GET /", @@ -83,7 +83,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", "http.route": "/", @@ -631,7 +631,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.httpapi", "endpoint": "/httpapi/get", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.protocol": "HTTP/1.1", "http.source_ip": "XXXX", @@ -681,7 +681,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", @@ -1568,7 +1568,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "runtime-id": "XXXX", "_dd.origin": "lambda", "operation_name": "aws.apigateway.websocket", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com$default", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com$default", "endpoint": "$default", "resource_names": "$default", "apiid": "XXXX", @@ -1618,7 +1618,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python312.log b/tests/integration/snapshots/logs/sync-metrics_python312.log index 49bae0a2a..3ec0f01f7 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python312.log +++ b/tests/integration/snapshots/logs/sync-metrics_python312.log @@ -35,7 +35,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "runtime-id": "XXXX", "_dd.origin": "lambda", "operation_name": "aws.apigateway.rest", - "http.url": "XXXX.execute-api.us-east-2.amazonaws.com/", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/", "endpoint": "/", "http.method": "GET", "resource_names": "GET /", @@ -83,7 +83,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", "http.route": "/", @@ -631,7 +631,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.httpapi", "endpoint": "/httpapi/get", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.protocol": "HTTP/1.1", "http.source_ip": "XXXX", @@ -681,7 +681,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", @@ -1568,7 +1568,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "runtime-id": "XXXX", "_dd.origin": "lambda", "operation_name": "aws.apigateway.websocket", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com$default", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com$default", "endpoint": "$default", "resource_names": "$default", "apiid": "XXXX", @@ -1618,7 +1618,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python313.log b/tests/integration/snapshots/logs/sync-metrics_python313.log index 2f461f6fe..d2c20dc04 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python313.log +++ b/tests/integration/snapshots/logs/sync-metrics_python313.log @@ -35,7 +35,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "runtime-id": "XXXX", "_dd.origin": "lambda", "operation_name": "aws.apigateway.rest", - "http.url": "XXXX.execute-api.us-east-2.amazonaws.com/", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/", "endpoint": "/", "http.method": "GET", "resource_names": "GET /", @@ -83,7 +83,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", "http.route": "/", @@ -631,7 +631,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.httpapi", "endpoint": "/httpapi/get", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.protocol": "HTTP/1.1", "http.source_ip": "XXXX", @@ -681,7 +681,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", @@ -1568,7 +1568,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "runtime-id": "XXXX", "_dd.origin": "lambda", "operation_name": "aws.apigateway.websocket", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com$default", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com$default", "endpoint": "$default", "resource_names": "$default", "apiid": "XXXX", @@ -1618,7 +1618,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python38.log b/tests/integration/snapshots/logs/sync-metrics_python38.log index 83e33d336..57a354a6d 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python38.log +++ b/tests/integration/snapshots/logs/sync-metrics_python38.log @@ -35,7 +35,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "runtime-id": "XXXX", "_dd.origin": "lambda", "operation_name": "aws.apigateway.rest", - "http.url": "XXXX.execute-api.us-east-2.amazonaws.com/", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/", "endpoint": "/", "http.method": "GET", "resource_names": "GET /", @@ -83,7 +83,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", "http.route": "/", @@ -631,7 +631,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.httpapi", "endpoint": "/httpapi/get", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.protocol": "HTTP/1.1", "http.source_ip": "XXXX", @@ -681,7 +681,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", @@ -1568,7 +1568,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "runtime-id": "XXXX", "_dd.origin": "lambda", "operation_name": "aws.apigateway.websocket", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com$default", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com$default", "endpoint": "$default", "resource_names": "$default", "apiid": "XXXX", @@ -1618,7 +1618,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python39.log b/tests/integration/snapshots/logs/sync-metrics_python39.log index 0a433c346..8b7bb31b4 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -35,7 +35,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "runtime-id": "XXXX", "_dd.origin": "lambda", "operation_name": "aws.apigateway.rest", - "http.url": "XXXX.execute-api.us-east-2.amazonaws.com/", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/", "endpoint": "/", "http.method": "GET", "resource_names": "GET /", @@ -83,7 +83,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.us-east-2.amazonaws.com", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", "http.route": "/", @@ -377,7 +377,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A ] } HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX -END Duration: XXXX ms Memory Used: XXXX MB { "traces": [ [ @@ -416,6 +415,7 @@ END Duration: XXXX ms Memory Used: XXXX MB ] ] } +END Duration: XXXX ms Memory Used: XXXX MB START { "m": "aws.lambda.enhanced.invocations", @@ -631,7 +631,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.httpapi", "endpoint": "/httpapi/get", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.protocol": "HTTP/1.1", "http.source_ip": "XXXX", @@ -681,7 +681,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", @@ -1568,7 +1568,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "runtime-id": "XXXX", "_dd.origin": "lambda", "operation_name": "aws.apigateway.websocket", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com$default", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com$default", "endpoint": "$default", "resource_names": "$default", "apiid": "XXXX", @@ -1618,7 +1618,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "XXXX.execute-api.eu-west-1.amazonaws.com", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.status_code": "200", "_dd.base_service": "integration-tests-python" }, diff --git a/tests/test_tracing.py b/tests/test_tracing.py index 0a961a62a..e38e4ecd1 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -1730,7 +1730,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): "apiname": "1234567890", "endpoint": "/path/to/resource", "http.method": "POST", - "http.url": "70ixmpl4fl.execute-api.us-east-2.amazonaws.com/path/to/resource", + "http.url": "https://70ixmpl4fl.execute-api.us-east-2.amazonaws.com/path/to/resource", "operation_name": "aws.apigateway.rest", "request_id": "123", "resource_names": "POST /{proxy+}", @@ -1752,7 +1752,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): "apiname": "lgxbo6a518", "endpoint": "/http/get", "http.method": "GET", - "http.url": "lgxbo6a518.execute-api.eu-west-1.amazonaws.com/http/get", + "http.url": "https://lgxbo6a518.execute-api.eu-west-1.amazonaws.com/http/get", "operation_name": "aws.apigateway.rest", "request_id": "123", "resource_names": "GET /http/get", @@ -1774,7 +1774,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): "apiname": "lgxbo6a518", "endpoint": "/http/get", "http.method": "GET", - "http.url": "lgxbo6a518.execute-api.eu-west-1.amazonaws.com/http/get", + "http.url": "https://lgxbo6a518.execute-api.eu-west-1.amazonaws.com/http/get", "operation_name": "aws.apigateway.rest", "request_id": "123", "resource_names": "GET /http/get", @@ -1798,7 +1798,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): "http.method": "GET", "http.protocol": "HTTP/1.1", "http.source_ip": "38.122.226.210", - "http.url": "x02yirxc7a.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.url": "https://x02yirxc7a.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.user_agent": "curl/7.64.1", "operation_name": "aws.httpapi", "request_id": "123", @@ -1821,7 +1821,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): "apiname": "mcwkra0ya4", "endpoint": "/user/42", "http.method": "GET", - "http.url": "mcwkra0ya4.execute-api.sa-east-1.amazonaws.com/user/42", + "http.url": "https://mcwkra0ya4.execute-api.sa-east-1.amazonaws.com/user/42", "operation_name": "aws.apigateway.rest", "request_id": "123", "resource_names": "GET /user/{id}", @@ -1843,7 +1843,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): "apiname": "9vj54we5ih", "endpoint": "/user/42", "http.method": "GET", - "http.url": "9vj54we5ih.execute-api.sa-east-1.amazonaws.com/user/42", + "http.url": "https://9vj54we5ih.execute-api.sa-east-1.amazonaws.com/user/42", "operation_name": "aws.httpapi", "request_id": "123", "resource_names": "GET /user/{id}", @@ -1866,7 +1866,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): "connection_id": "Fc5SzcoYGjQCJlg=", "endpoint": "$default", "event_type": "MESSAGE", - "http.url": "p62c47itsb.execute-api.eu-west-1.amazonaws.com$default", + "http.url": "https://p62c47itsb.execute-api.eu-west-1.amazonaws.com$default", "message_direction": "IN", "operation_name": "aws.apigateway.websocket", "request_id": "123", @@ -1890,7 +1890,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): "connection_id": "Fc2tgfl3mjQCJfA=", "endpoint": "$connect", "event_type": "CONNECT", - "http.url": "p62c47itsb.execute-api.eu-west-1.amazonaws.com$connect", + "http.url": "https://p62c47itsb.execute-api.eu-west-1.amazonaws.com$connect", "message_direction": "IN", "operation_name": "aws.apigateway.websocket", "request_id": "123", @@ -1914,7 +1914,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): "connection_id": "Fc2tgfl3mjQCJfA=", "endpoint": "$disconnect", "event_type": "DISCONNECT", - "http.url": "p62c47itsb.execute-api.eu-west-1.amazonaws.com$disconnect", + "http.url": "https://p62c47itsb.execute-api.eu-west-1.amazonaws.com$disconnect", "message_direction": "IN", "operation_name": "aws.apigateway.websocket", "request_id": "123", @@ -2112,7 +2112,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): "apiname": "None", "endpoint": "/path/to/resource", "http.method": "POST", - "http.url": "70ixmpl4fl.execute-api.us-east-2.amazonaws.com/path/to/resource", + "http.url": "https://70ixmpl4fl.execute-api.us-east-2.amazonaws.com/path/to/resource", "operation_name": "aws.apigateway.rest", "request_id": "123", "resource_names": "POST /{proxy+}", @@ -2135,7 +2135,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): "apiname": "amddr1rix9", "endpoint": "/hello", "http.method": "GET", - "http.url": "amddr1rix9.execute-api.eu-west-1.amazonaws.com/hello", + "http.url": "https://amddr1rix9.execute-api.eu-west-1.amazonaws.com/hello", "operation_name": "aws.apigateway.rest", "request_id": "123", "resource_names": "GET /hello", @@ -2157,7 +2157,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): "apiname": "amddr1rix9", "endpoint": "/hello", "http.method": "GET", - "http.url": "amddr1rix9.execute-api.eu-west-1.amazonaws.com/hello", + "http.url": "https://amddr1rix9.execute-api.eu-west-1.amazonaws.com/hello", "operation_name": "aws.apigateway.rest", "request_id": "123", "resource_names": "GET /hello", @@ -2180,7 +2180,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): "apiname": "amddr1rix9", "endpoint": "/hello", "http.method": "GET", - "http.url": "amddr1rix9.execute-api.eu-west-1.amazonaws.com/hello", + "http.url": "https://amddr1rix9.execute-api.eu-west-1.amazonaws.com/hello", "operation_name": "aws.apigateway.rest", "request_id": "123", "resource_names": "GET /hello", @@ -2202,7 +2202,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): "apiname": "amddr1rix9", "endpoint": "/hello", "http.method": "GET", - "http.url": "amddr1rix9.execute-api.eu-west-1.amazonaws.com/hello", + "http.url": "https://amddr1rix9.execute-api.eu-west-1.amazonaws.com/hello", "operation_name": "aws.apigateway.rest", "request_id": "123", "resource_names": "GET /hello", @@ -2224,7 +2224,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): "apiname": "amddr1rix9", "endpoint": "/hello", "http.method": "GET", - "http.url": "amddr1rix9.execute-api.eu-west-1.amazonaws.com/hello", + "http.url": "https://amddr1rix9.execute-api.eu-west-1.amazonaws.com/hello", "operation_name": "aws.httpapi", "request_id": "123", "resource_names": "GET /hello", @@ -2246,7 +2246,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): "apiname": "amddr1rix9", "endpoint": "/hello", "http.method": "GET", - "http.url": "amddr1rix9.execute-api.eu-west-1.amazonaws.com/hello", + "http.url": "https://amddr1rix9.execute-api.eu-west-1.amazonaws.com/hello", "operation_name": "aws.httpapi", "request_id": "123", "resource_names": "GET /hello", @@ -2270,7 +2270,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): "connection_id": "ZLr9QeNLmjQCIZA=", "endpoint": "$connect", "event_type": "CONNECT", - "http.url": "amddr1rix9.execute-api.eu-west-1.amazonaws.com$connect", + "http.url": "https://amddr1rix9.execute-api.eu-west-1.amazonaws.com$connect", "message_direction": "IN", "operation_name": "aws.apigateway.websocket", "request_id": "123", @@ -2294,7 +2294,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): "connection_id": "ZLwtceO1mjQCI8Q=", "endpoint": "main", "event_type": "MESSAGE", - "http.url": "amddr1rix9.execute-api.eu-west-1.amazonaws.commain", + "http.url": "https://amddr1rix9.execute-api.eu-west-1.amazonaws.commain", "message_direction": "IN", "operation_name": "aws.apigateway.websocket", "request_id": "123", diff --git a/tests/test_trigger.py b/tests/test_trigger.py index b4da7ff0b..c12e8f5c4 100644 --- a/tests/test_trigger.py +++ b/tests/test_trigger.py @@ -294,7 +294,7 @@ def test_extract_trigger_tags_api_gateway(self): { "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "arn:aws:apigateway:us-west-1::/restapis/1234567890/stages/prod", - "http.url": "70ixmpl4fl.execute-api.us-east-2.amazonaws.com", + "http.url": "https://70ixmpl4fl.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/prod/path/to/resource", "http.method": "POST", "http.route": "/{proxy+}", @@ -313,7 +313,7 @@ def test_extract_trigger_tags_api_gateway_non_proxy(self): { "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "arn:aws:apigateway:us-west-1::/restapis/lgxbo6a518/stages/dev", - "http.url": "lgxbo6a518.execute-api.eu-west-1.amazonaws.com", + "http.url": "https://lgxbo6a518.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/dev/http/get", "http.method": "GET", "http.route": "/http/get", @@ -332,7 +332,7 @@ def test_extract_trigger_tags_api_gateway_websocket_connect(self): { "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "arn:aws:apigateway:us-west-1::/restapis/p62c47itsb/stages/dev", - "http.url": "p62c47itsb.execute-api.eu-west-1.amazonaws.com", + "http.url": "https://p62c47itsb.execute-api.eu-west-1.amazonaws.com", }, ) @@ -348,7 +348,7 @@ def test_extract_trigger_tags_api_gateway_websocket_default(self): { "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "arn:aws:apigateway:us-west-1::/restapis/p62c47itsb/stages/dev", - "http.url": "p62c47itsb.execute-api.eu-west-1.amazonaws.com", + "http.url": "https://p62c47itsb.execute-api.eu-west-1.amazonaws.com", }, ) @@ -364,7 +364,7 @@ def test_extract_trigger_tags_api_gateway_websocket_disconnect(self): { "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "arn:aws:apigateway:us-west-1::/restapis/p62c47itsb/stages/dev", - "http.url": "p62c47itsb.execute-api.eu-west-1.amazonaws.com", + "http.url": "https://p62c47itsb.execute-api.eu-west-1.amazonaws.com", }, ) @@ -380,7 +380,7 @@ def test_extract_trigger_tags_api_gateway_http_api(self): { "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "arn:aws:apigateway:us-west-1::/restapis/x02yirxc7a/stages/$default", - "http.url": "x02yirxc7a.execute-api.eu-west-1.amazonaws.com", + "http.url": "https://x02yirxc7a.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index 4b2430362..f46b365ee 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -283,7 +283,7 @@ def test_5xx_sends_errors_metric_and_set_tags(self, mock_extract_trigger_tags): mock_extract_trigger_tags.return_value = { "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "arn:aws:apigateway:us-west-1::/restapis/1234567890/stages/prod", - "http.url": "70ixmpl4fl.execute-api.us-east-2.amazonaws.com", + "http.url": "https://70ixmpl4fl.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/prod/path/to/resource", "http.method": "GET", } From 87f2314928fb839886aefe09cf6a1b7c7a0a7988 Mon Sep 17 00:00:00 2001 From: happynancee <120061598+happynancee@users.noreply.github.com> Date: Mon, 2 Jun 2025 07:50:36 -0700 Subject: [PATCH 258/403] update codeowners file and make apm serverless co-owners of repo (#596) --- .github/CODEOWNERS | 7 +------ CODEOWNERS | 1 - 2 files changed, 1 insertion(+), 7 deletions(-) delete mode 100644 CODEOWNERS diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 26b4b78e4..a7f48dfeb 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,6 +1 @@ -* @DataDog/serverless-aws -datadog_lambda/tracing.py @DataDog/apm-serverless -datadog_lambda/patch.py @DataDog/apm-serverless -datadog_lambda/span_points.py @DataDog/apm-serverless -datadog_lambda/cold_start.py @DataDog/apm-serverless -datadog_lambda/wrapper.py @DataDog/apm-serverless +* @DataDog/serverless-aws @DataDog/apm-serverless diff --git a/CODEOWNERS b/CODEOWNERS deleted file mode 100644 index e340f1ed6..000000000 --- a/CODEOWNERS +++ /dev/null @@ -1 +0,0 @@ -* @DataDog/serverless \ No newline at end of file From 254466cb2c6d749211e74201572ce5a937ec82da Mon Sep 17 00:00:00 2001 From: Yiming Luo Date: Wed, 4 Jun 2025 12:34:10 -0400 Subject: [PATCH 259/403] chore: Use GitHub App for update-deps workflow (#605) --- .github/workflows/update_deps.yml | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/.github/workflows/update_deps.yml b/.github/workflows/update_deps.yml index 31025402f..33a524b25 100644 --- a/.github/workflows/update_deps.yml +++ b/.github/workflows/update_deps.yml @@ -3,14 +3,24 @@ name: update-deps on: schedule: - cron: "0 10 * * *" # Run at 10 am every day + workflow_dispatch: jobs: check: runs-on: ubuntu-latest + environment: + name: protected-main-env steps: + - name: Generate token + id: generate_token + uses: actions/create-github-app-token@df432ceedc7162793a195dd1713ff69aefc7379e # v2.0.6 + with: + app-id: ${{ secrets.GH_APP_ID }} + private-key: ${{ secrets.GH_APP_PRIVATE_KEY }} + - uses: actions/checkout@v3 with: - ssh-key: ${{ secrets.SSH_PRIVATE_KEY }} + token: ${{ steps.generate_token.outputs.token }} - name: Set up Python uses: actions/setup-python@v4 From 6beb65d63c063ff6fc5e480e7bf076d29f2abf0c Mon Sep 17 00:00:00 2001 From: michael-zhao459 Date: Thu, 5 Jun 2025 15:24:42 -0400 Subject: [PATCH 260/403] feat: Enable sqs -> lambda support for DSM (#604) --------- Co-authored-by: Rey Abolofia --- datadog_lambda/dsm.py | 38 +++++++++++++ datadog_lambda/wrapper.py | 7 +++ tests/test_dsm.py | 112 ++++++++++++++++++++++++++++++++++++++ tests/test_wrapper.py | 60 ++++++++++++++++++++ 4 files changed, 217 insertions(+) create mode 100644 datadog_lambda/dsm.py create mode 100644 tests/test_dsm.py diff --git a/datadog_lambda/dsm.py b/datadog_lambda/dsm.py new file mode 100644 index 000000000..427f5e479 --- /dev/null +++ b/datadog_lambda/dsm.py @@ -0,0 +1,38 @@ +from datadog_lambda import logger +from datadog_lambda.trigger import EventTypes + + +def set_dsm_context(event, event_source): + + if event_source.equals(EventTypes.SQS): + _dsm_set_sqs_context(event) + + +def _dsm_set_sqs_context(event): + from datadog_lambda.wrapper import format_err_with_traceback + from ddtrace.internal.datastreams import data_streams_processor + from ddtrace.internal.datastreams.processor import DsmPathwayCodec + from ddtrace.internal.datastreams.botocore import ( + get_datastreams_context, + calculate_sqs_payload_size, + ) + + records = event.get("Records") + if records is None: + return + processor = data_streams_processor() + + for record in records: + try: + queue_arn = record.get("eventSourceARN", "") + + contextjson = get_datastreams_context(record) + payload_size = calculate_sqs_payload_size(record) + + ctx = DsmPathwayCodec.decode(contextjson, processor) + ctx.set_checkpoint( + ["direction:in", f"topic:{queue_arn}", "type:sqs"], + payload_size=payload_size, + ) + except Exception as e: + logger.error(format_err_with_traceback(e)) diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 86bbf04d8..0e23b7218 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -9,6 +9,7 @@ from importlib import import_module from time import time_ns +from datadog_lambda.dsm import set_dsm_context from datadog_lambda.extension import should_use_extension, flush_extension from datadog_lambda.cold_start import ( set_cold_start, @@ -79,6 +80,7 @@ DD_REQUESTS_SERVICE_NAME = "DD_REQUESTS_SERVICE_NAME" DD_SERVICE = "DD_SERVICE" DD_ENV = "DD_ENV" +DD_DATA_STREAMS_ENABLED = "DD_DATA_STREAMS_ENABLED" def get_env_as_int(env_key, default_value: int) -> int: @@ -190,6 +192,9 @@ def __init__(self, func): self.min_cold_start_trace_duration = get_env_as_int( DD_MIN_COLD_START_DURATION, 3 ) + self.data_streams_enabled = ( + os.environ.get(DD_DATA_STREAMS_ENABLED, "false").lower() == "true" + ) self.local_testing_mode = os.environ.get( DD_LOCAL_TEST, "false" ).lower() in ("true", "1") @@ -322,6 +327,8 @@ def _before(self, event, context): self.inferred_span = create_inferred_span( event, context, event_source, self.decode_authorizer_context ) + if self.data_streams_enabled: + set_dsm_context(event, event_source) self.span = create_function_execution_span( context=context, function_name=self.function_name, diff --git a/tests/test_dsm.py b/tests/test_dsm.py new file mode 100644 index 000000000..544212d88 --- /dev/null +++ b/tests/test_dsm.py @@ -0,0 +1,112 @@ +import unittest +from unittest.mock import patch, MagicMock + +from datadog_lambda.dsm import set_dsm_context, _dsm_set_sqs_context +from datadog_lambda.trigger import EventTypes, _EventSource + + +class TestDsmSQSContext(unittest.TestCase): + def setUp(self): + patcher = patch("datadog_lambda.dsm._dsm_set_sqs_context") + self.mock_dsm_set_sqs_context = patcher.start() + self.addCleanup(patcher.stop) + + patcher = patch("ddtrace.internal.datastreams.data_streams_processor") + self.mock_data_streams_processor = patcher.start() + self.addCleanup(patcher.stop) + + patcher = patch("ddtrace.internal.datastreams.botocore.get_datastreams_context") + self.mock_get_datastreams_context = patcher.start() + self.mock_get_datastreams_context.return_value = {} + self.addCleanup(patcher.stop) + + patcher = patch( + "ddtrace.internal.datastreams.botocore.calculate_sqs_payload_size" + ) + self.mock_calculate_sqs_payload_size = patcher.start() + self.mock_calculate_sqs_payload_size.return_value = 100 + self.addCleanup(patcher.stop) + + patcher = patch("ddtrace.internal.datastreams.processor.DsmPathwayCodec.decode") + self.mock_dsm_pathway_codec_decode = patcher.start() + self.addCleanup(patcher.stop) + + def test_non_sqs_event_source_does_nothing(self): + """Test that non-SQS event sources don't trigger DSM context setting""" + event = {} + # Use Unknown Event Source + event_source = _EventSource(EventTypes.UNKNOWN) + set_dsm_context(event, event_source) + + # DSM context should not be set for non-SQS events + self.mock_dsm_set_sqs_context.assert_not_called() + + def test_sqs_event_with_no_records_does_nothing(self): + """Test that events where Records is None don't trigger DSM processing""" + events_with_no_records = [ + {}, + {"Records": None}, + {"someOtherField": "value"}, + ] + + for event in events_with_no_records: + _dsm_set_sqs_context(event) + self.mock_data_streams_processor.assert_not_called() + + def test_sqs_event_triggers_dsm_sqs_context(self): + """Test that SQS event sources trigger the SQS-specific DSM context function""" + sqs_event = { + "Records": [ + { + "eventSource": "aws:sqs", + "eventSourceARN": "arn:aws:sqs:us-east-1:123456789012:my-queue", + "body": "Hello from SQS!", + } + ] + } + + event_source = _EventSource(EventTypes.SQS) + set_dsm_context(sqs_event, event_source) + + self.mock_dsm_set_sqs_context.assert_called_once_with(sqs_event) + + def test_sqs_multiple_records_process_each_record(self): + """Test that each record in an SQS event gets processed individually""" + multi_record_event = { + "Records": [ + { + "eventSourceARN": "arn:aws:sqs:us-east-1:123456789012:queue1", + "body": "Message 1", + }, + { + "eventSourceARN": "arn:aws:sqs:us-east-1:123456789012:queue2", + "body": "Message 2", + }, + { + "eventSourceARN": "arn:aws:sqs:us-east-1:123456789012:queue3", + "body": "Message 3", + }, + ] + } + + mock_context = MagicMock() + self.mock_dsm_pathway_codec_decode.return_value = mock_context + + _dsm_set_sqs_context(multi_record_event) + + self.assertEqual(mock_context.set_checkpoint.call_count, 3) + + calls = mock_context.set_checkpoint.call_args_list + expected_arns = [ + "arn:aws:sqs:us-east-1:123456789012:queue1", + "arn:aws:sqs:us-east-1:123456789012:queue2", + "arn:aws:sqs:us-east-1:123456789012:queue3", + ] + + for i, call in enumerate(calls): + args, kwargs = call + tags = args[0] + self.assertIn("direction:in", tags) + self.assertIn(f"topic:{expected_arns[i]}", tags) + self.assertIn("type:sqs", tags) + self.assertEqual(kwargs["payload_size"], 100) diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index f46b365ee..f482fa3de 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -76,6 +76,10 @@ def setUp(self): self.mock_dd_lambda_layer_tag = patcher.start() self.addCleanup(patcher.stop) + patcher = patch("datadog_lambda.wrapper.set_dsm_context") + self.mock_set_dsm_context = patcher.start() + self.addCleanup(patcher.stop) + def test_datadog_lambda_wrapper(self): wrapper.dd_tracing_enabled = False @@ -563,6 +567,62 @@ def return_type_test(event, context): self.assertEqual(result, test_result) self.assertFalse(MockPrintExc.called) + def test_set_dsm_context_called_when_DSM_and_tracing_enabled(self): + os.environ["DD_DATA_STREAMS_ENABLED"] = "true" + wrapper.dd_tracing_enabled = True + + @wrapper.datadog_lambda_wrapper + def lambda_handler(event, context): + return "ok" + + result = lambda_handler({}, get_mock_context()) + self.assertEqual(result, "ok") + self.mock_set_dsm_context.assert_called_once() + + del os.environ["DD_DATA_STREAMS_ENABLED"] + + def test_set_dsm_context_not_called_when_only_DSM_enabled(self): + os.environ["DD_DATA_STREAMS_ENABLED"] = "true" + wrapper.dd_tracing_enabled = False + + @wrapper.datadog_lambda_wrapper + def lambda_handler(event, context): + return "ok" + + result = lambda_handler({}, get_mock_context()) + self.assertEqual(result, "ok") + self.mock_set_dsm_context.assert_not_called() + + del os.environ["DD_DATA_STREAMS_ENABLED"] + + def test_set_dsm_context_not_called_when_only_tracing_enabled(self): + os.environ["DD_DATA_STREAMS_ENABLED"] = "false" + wrapper.dd_tracing_enabled = True + + @wrapper.datadog_lambda_wrapper + def lambda_handler(event, context): + return "ok" + + result = lambda_handler({}, get_mock_context()) + self.assertEqual(result, "ok") + self.mock_set_dsm_context.assert_not_called() + + del os.environ["DD_DATA_STREAMS_ENABLED"] + + def test_set_dsm_context_not_called_when_tracing_and_DSM_disabled(self): + os.environ["DD_DATA_STREAMS_ENABLED"] = "false" + wrapper.dd_tracing_enabled = False + + @wrapper.datadog_lambda_wrapper + def lambda_handler(event, context): + return "ok" + + result = lambda_handler({}, get_mock_context()) + self.assertEqual(result, "ok") + self.mock_set_dsm_context.assert_not_called() + + del os.environ["DD_DATA_STREAMS_ENABLED"] + class TestLambdaDecoratorSettings(unittest.TestCase): def test_some_envs_should_depend_on_dd_tracing_enabled(self): From b3cf1c2ee54db0c01470e8cdd858db85a1183c24 Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Wed, 11 Jun 2025 08:37:35 -0700 Subject: [PATCH 261/403] Consolidate env reading to single config object. (#600) --- datadog_lambda/api.py | 15 +- datadog_lambda/cold_start.py | 12 +- datadog_lambda/config.py | 145 +++++++++++++++++++ datadog_lambda/fips.py | 19 --- datadog_lambda/metric.py | 17 +-- datadog_lambda/patch.py | 12 +- datadog_lambda/span_pointers.py | 9 +- datadog_lambda/tag_object.py | 7 +- datadog_lambda/tracing.py | 32 ++--- datadog_lambda/wrapper.py | 163 ++++++---------------- tests/conftest.py | 8 ++ tests/test_api.py | 11 +- tests/test_cold_start.py | 9 +- tests/test_config.py | 240 ++++++++++++++++++++++++++++++++ tests/test_metric.py | 2 +- tests/test_patch.py | 8 ++ tests/test_tag_object.py | 8 +- tests/test_tracing.py | 22 ++- tests/test_wrapper.py | 86 +++++------- tests/utils.py | 1 + 20 files changed, 534 insertions(+), 292 deletions(-) create mode 100644 datadog_lambda/config.py delete mode 100644 datadog_lambda/fips.py create mode 100644 tests/conftest.py create mode 100644 tests/test_config.py diff --git a/datadog_lambda/api.py b/datadog_lambda/api.py index d1cee4e4d..4921dae90 100644 --- a/datadog_lambda/api.py +++ b/datadog_lambda/api.py @@ -1,7 +1,7 @@ import logging import os -from datadog_lambda.fips import fips_mode_enabled +from datadog_lambda.config import config logger = logging.getLogger(__name__) KMS_ENCRYPTION_CONTEXT_KEY = "LambdaFunctionName" @@ -29,7 +29,6 @@ def decrypt_kms_api_key(kms_client, ciphertext): is added. We need to try decrypting the API key both with and without the encryption context. """ # Try without encryption context, in case API key was encrypted using the AWS CLI - function_name = os.environ.get("AWS_LAMBDA_FUNCTION_NAME") try: plaintext = kms_client.decrypt(CiphertextBlob=decoded_bytes)[ "Plaintext" @@ -43,7 +42,7 @@ def decrypt_kms_api_key(kms_client, ciphertext): plaintext = kms_client.decrypt( CiphertextBlob=decoded_bytes, EncryptionContext={ - KMS_ENCRYPTION_CONTEXT_KEY: function_name, + KMS_ENCRYPTION_CONTEXT_KEY: config.function_name, }, )["Plaintext"].decode("utf-8") @@ -66,7 +65,7 @@ def get_api_key() -> str: DD_API_KEY = os.environ.get("DD_API_KEY", os.environ.get("DATADOG_API_KEY", "")) LAMBDA_REGION = os.environ.get("AWS_REGION", "") - if fips_mode_enabled: + if config.fips_mode_enabled: logger.debug( "FIPS mode is enabled, using FIPS endpoints for secrets management." ) @@ -82,7 +81,7 @@ def get_api_key() -> str: return "" endpoint_url = ( f"https://secretsmanager-fips.{secrets_region}.amazonaws.com" - if fips_mode_enabled + if config.fips_mode_enabled else None ) secrets_manager_client = _boto3_client( @@ -95,7 +94,7 @@ def get_api_key() -> str: # SSM endpoints: https://docs.aws.amazon.com/general/latest/gr/ssm.html fips_endpoint = ( f"https://ssm-fips.{LAMBDA_REGION}.amazonaws.com" - if fips_mode_enabled + if config.fips_mode_enabled else None ) ssm_client = _boto3_client("ssm", endpoint_url=fips_endpoint) @@ -106,7 +105,7 @@ def get_api_key() -> str: # KMS endpoints: https://docs.aws.amazon.com/general/latest/gr/kms.html fips_endpoint = ( f"https://kms-fips.{LAMBDA_REGION}.amazonaws.com" - if fips_mode_enabled + if config.fips_mode_enabled else None ) kms_client = _boto3_client("kms", endpoint_url=fips_endpoint) @@ -118,7 +117,7 @@ def get_api_key() -> str: def init_api(): - if not os.environ.get("DD_FLUSH_TO_LOG", "").lower() == "true": + if not config.flush_to_log: # Make sure that this package would always be lazy-loaded/outside from the critical path # since underlying packages are quite heavy to load # and useless with the extension unless sending metrics with timestamps diff --git a/datadog_lambda/cold_start.py b/datadog_lambda/cold_start.py index ea10ea206..a40e2fcb3 100644 --- a/datadog_lambda/cold_start.py +++ b/datadog_lambda/cold_start.py @@ -1,8 +1,9 @@ import time -import os from typing import List, Hashable import logging +from datadog_lambda.config import config + logger = logging.getLogger(__name__) _cold_start = True @@ -86,14 +87,12 @@ def reset_node_stacks(): def push_node(module_name, file_path): node = ImportNode(module_name, file_path, time.time_ns()) - global import_stack if import_stack: import_stack[-1].children.append(node) import_stack.append(node) def pop_node(module_name): - global import_stack if not import_stack: return node = import_stack.pop() @@ -102,7 +101,6 @@ def pop_node(module_name): end_time_ns = time.time_ns() node.end_time_ns = end_time_ns if not import_stack: # import_stack empty, a root node has been found - global root_nodes root_nodes.append(node) @@ -147,11 +145,7 @@ def wrapped_find_spec(*args, **kwargs): def initialize_cold_start_tracing(): - if ( - is_new_sandbox() - and os.environ.get("DD_TRACE_ENABLED", "true").lower() == "true" - and os.environ.get("DD_COLD_START_TRACING", "true").lower() == "true" - ): + if is_new_sandbox() and config.cold_start_tracing: from sys import meta_path for importer in meta_path: diff --git a/datadog_lambda/config.py b/datadog_lambda/config.py new file mode 100644 index 000000000..7a08d8a7f --- /dev/null +++ b/datadog_lambda/config.py @@ -0,0 +1,145 @@ +# Unless explicitly stated otherwise all files in this repository are licensed +# under the Apache License Version 2.0. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019 Datadog, Inc. + +import logging +import os + +logger = logging.getLogger(__name__) + + +def _get_env(key, default=None, cast=None, depends_on_tracing=False): + @property + def _getter(self): + if not hasattr(self, prop_key): + val = self._resolve_env(key, default, cast, depends_on_tracing) + setattr(self, prop_key, val) + return getattr(self, prop_key) + + prop_key = f"_config_{key}" + return _getter + + +def as_bool(val): + return val.lower() == "true" or val == "1" + + +def as_list(val): + return [val.strip() for val in val.split(",") if val.strip()] + + +class Config: + def _resolve_env(self, key, default=None, cast=None, depends_on_tracing=False): + if depends_on_tracing and not self.trace_enabled: + return False + val = os.environ.get(key, default) + if cast is not None: + try: + val = cast(val) + except (ValueError, TypeError): + msg = ( + "Failed to cast environment variable '%s' with " + "value '%s' to type %s. Using default value '%s'." + ) + logger.warning(msg, key, val, cast.__name__, default) + val = default + return val + + service = _get_env("DD_SERVICE") + env = _get_env("DD_ENV") + + cold_start_tracing = _get_env( + "DD_COLD_START_TRACING", "true", as_bool, depends_on_tracing=True + ) + min_cold_start_trace_duration = _get_env("DD_MIN_COLD_START_DURATION", 3, int) + cold_start_trace_skip_lib = _get_env( + "DD_COLD_START_TRACE_SKIP_LIB", + "ddtrace.internal.compat,ddtrace.filters", + as_list, + ) + + capture_payload_max_depth = _get_env("DD_CAPTURE_LAMBDA_PAYLOAD_MAX_DEPTH", 10, int) + capture_payload_enabled = _get_env("DD_CAPTURE_LAMBDA_PAYLOAD", "false", as_bool) + + trace_enabled = _get_env("DD_TRACE_ENABLED", "true", as_bool) + make_inferred_span = _get_env( + "DD_TRACE_MANAGED_SERVICES", "true", as_bool, depends_on_tracing=True + ) + encode_authorizer_context = _get_env( + "DD_ENCODE_AUTHORIZER_CONTEXT", "true", as_bool, depends_on_tracing=True + ) + decode_authorizer_context = _get_env( + "DD_DECODE_AUTHORIZER_CONTEXT", "true", as_bool, depends_on_tracing=True + ) + add_span_pointers = _get_env("DD_BOTOCORE_ADD_SPAN_POINTERS", "true", as_bool) + trace_extractor = _get_env("DD_TRACE_EXTRACTOR") + + enhanced_metrics_enabled = _get_env("DD_ENHANCED_METRICS", "true", as_bool) + + flush_in_thread = _get_env("DD_FLUSH_IN_THREAD", "false", as_bool) + flush_to_log = _get_env("DD_FLUSH_TO_LOG", "false", as_bool) + logs_injection = _get_env("DD_LOGS_INJECTION", "true", as_bool) + merge_xray_traces = _get_env("DD_MERGE_XRAY_TRACES", "false", as_bool) + + telemetry_enabled = _get_env( + "DD_INSTRUMENTATION_TELEMETRY_ENABLED", + "false", + as_bool, + depends_on_tracing=True, + ) + otel_enabled = _get_env("DD_TRACE_OTEL_ENABLED", "false", as_bool) + profiling_enabled = _get_env("DD_PROFILING_ENABLED", "false", as_bool) + llmobs_enabled = _get_env("DD_LLMOBS_ENABLED", "false", as_bool) + exception_replay_enabled = _get_env("DD_EXCEPTION_REPLAY_ENABLED", "false", as_bool) + data_streams_enabled = _get_env( + "DD_DATA_STREAMS_ENABLED", "false", as_bool, depends_on_tracing=True + ) + + is_gov_region = _get_env("AWS_REGION", "", lambda x: x.startswith("us-gov-")) + + local_test = _get_env("DD_LOCAL_TEST", "false", as_bool) + integration_test = _get_env("DD_INTEGRATION_TEST", "false", as_bool) + + aws_lambda_function_name = _get_env("AWS_LAMBDA_FUNCTION_NAME") + + @property + def function_name(self): + if not hasattr(self, "_config_function_name"): + if self.aws_lambda_function_name is None: + self._config_function_name = "function" + else: + self._config_function_name = self.aws_lambda_function_name + return self._config_function_name + + @property + def is_lambda_context(self): + if not hasattr(self, "_config_is_lambda_context"): + self._config_is_lambda_context = bool(self.aws_lambda_function_name) + return self._config_is_lambda_context + + @property + def fips_mode_enabled(self): + if not hasattr(self, "_config_fips_mode_enabled"): + self._config_fips_mode_enabled = ( + os.environ.get( + "DD_LAMBDA_FIPS_MODE", + "true" if self.is_gov_region else "false", + ).lower() + == "true" + ) + return self._config_fips_mode_enabled + + def _reset(self): + for attr in dir(self): + if attr.startswith("_config_"): + delattr(self, attr) + + +config = Config() + +if config.is_gov_region or config.fips_mode_enabled: + logger.debug( + "Python Lambda Layer FIPS mode is %s.", + "enabled" if config.fips_mode_enabled else "not enabled", + ) diff --git a/datadog_lambda/fips.py b/datadog_lambda/fips.py deleted file mode 100644 index 8442ddd94..000000000 --- a/datadog_lambda/fips.py +++ /dev/null @@ -1,19 +0,0 @@ -import logging -import os - -is_gov_region = os.environ.get("AWS_REGION", "").startswith("us-gov-") - -fips_mode_enabled = ( - os.environ.get( - "DD_LAMBDA_FIPS_MODE", - "true" if is_gov_region else "false", - ).lower() - == "true" -) - -if is_gov_region or fips_mode_enabled: - logger = logging.getLogger(__name__) - logger.debug( - "Python Lambda Layer FIPS mode is %s.", - "enabled" if fips_mode_enabled else "not enabled", - ) diff --git a/datadog_lambda/metric.py b/datadog_lambda/metric.py index c9b978d68..73bbeca3c 100644 --- a/datadog_lambda/metric.py +++ b/datadog_lambda/metric.py @@ -5,14 +5,13 @@ import enum import logging -import os import time from datetime import datetime, timedelta import ujson as json +from datadog_lambda.config import config from datadog_lambda.extension import should_use_extension -from datadog_lambda.fips import fips_mode_enabled from datadog_lambda.tags import dd_lambda_layer_tag, get_enhanced_metrics_tags logger = logging.getLogger(__name__) @@ -28,10 +27,10 @@ class MetricsHandler(enum.Enum): def _select_metrics_handler(): if should_use_extension: return MetricsHandler.EXTENSION - if os.environ.get("DD_FLUSH_TO_LOG", "").lower() == "true": + if config.flush_to_log: return MetricsHandler.FORWARDER - if fips_mode_enabled: + if config.fips_mode_enabled: logger.debug( "With FIPS mode enabled, the Datadog API metrics handler is unavailable." ) @@ -58,14 +57,8 @@ def _select_metrics_handler(): from datadog_lambda.api import init_api from datadog_lambda.thread_stats_writer import ThreadStatsWriter - flush_in_thread = os.environ.get("DD_FLUSH_IN_THREAD", "").lower() == "true" init_api() - lambda_stats = ThreadStatsWriter(flush_in_thread) - - -enhanced_metrics_enabled = ( - os.environ.get("DD_ENHANCED_METRICS", "true").lower() == "true" -) + lambda_stats = ThreadStatsWriter(config.flush_in_thread) def lambda_metric(metric_name, value, timestamp=None, tags=None, force_async=False): @@ -191,7 +184,7 @@ def submit_enhanced_metric(metric_name, lambda_context): metric_name (str): metric name w/o enhanced prefix i.e. "invocations" or "errors" lambda_context (object): Lambda context dict passed to the function by AWS """ - if not enhanced_metrics_enabled: + if not config.enhanced_metrics_enabled: logger.debug( "Not submitting enhanced metric %s because enhanced metrics are disabled", metric_name, diff --git a/datadog_lambda/patch.py b/datadog_lambda/patch.py index 5b8a92c53..6d2af0dcf 100644 --- a/datadog_lambda/patch.py +++ b/datadog_lambda/patch.py @@ -3,7 +3,6 @@ # This product includes software developed at Datadog (https://www.datadoghq.com/). # Copyright 2019 Datadog, Inc. -import os import sys import logging import zlib @@ -13,10 +12,8 @@ from wrapt.importer import when_imported from ddtrace import patch_all as patch_all_dd -from datadog_lambda.tracing import ( - get_dd_trace_context, - dd_tracing_enabled, -) +from datadog_lambda.config import config +from datadog_lambda.tracing import get_dd_trace_context from collections.abc import MutableMapping logger = logging.getLogger(__name__) @@ -32,7 +29,7 @@ def patch_all(): """ _patch_for_integration_tests() - if dd_tracing_enabled: + if config.trace_enabled: patch_all_dd() else: _patch_http() @@ -44,8 +41,7 @@ def _patch_for_integration_tests(): Patch `requests` to log the outgoing requests for integration tests. """ global _integration_tests_patched - is_in_tests = os.environ.get("DD_INTEGRATION_TEST", "false").lower() == "true" - if not _integration_tests_patched and is_in_tests: + if not _integration_tests_patched and config.integration_test: wrap("requests", "Session.send", _log_request) _integration_tests_patched = True diff --git a/datadog_lambda/span_pointers.py b/datadog_lambda/span_pointers.py index 40d959e61..45925d929 100644 --- a/datadog_lambda/span_pointers.py +++ b/datadog_lambda/span_pointers.py @@ -1,12 +1,12 @@ from itertools import chain import logging -import os from typing import List from typing import Optional from ddtrace._trace._span_pointer import _SpanPointerDirection from ddtrace._trace._span_pointer import _SpanPointerDescription +from datadog_lambda.config import config from datadog_lambda.metric import submit_dynamodb_stream_type_metric from datadog_lambda.trigger import EventTypes @@ -14,15 +14,10 @@ logger = logging.getLogger(__name__) -dd_botocore_add_span_pointers = os.environ.get( - "DD_BOTOCORE_ADD_SPAN_POINTERS", "true" -).lower() in ("true", "1") - - def calculate_span_pointers( event_source, event, - botocore_add_span_pointers=dd_botocore_add_span_pointers, + botocore_add_span_pointers=config.add_span_pointers, ) -> List[_SpanPointerDescription]: try: if botocore_add_span_pointers: diff --git a/datadog_lambda/tag_object.py b/datadog_lambda/tag_object.py index 6d82f83b5..744e48933 100644 --- a/datadog_lambda/tag_object.py +++ b/datadog_lambda/tag_object.py @@ -4,18 +4,17 @@ # Copyright 2021 Datadog, Inc. from decimal import Decimal -import logging import ujson as json +from datadog_lambda.config import config + redactable_keys = ["authorization", "x-authorization", "password", "token"] -max_depth = 10 -logger = logging.getLogger(__name__) def tag_object(span, key, obj, depth=0): if obj is None: return span.set_tag(key, obj) - if depth >= max_depth: + if depth >= config.capture_payload_max_depth: return span.set_tag(key, _redact_val(key, str(obj)[0:5000])) depth += 1 if _should_try_string(obj): diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 4b6f300a8..3d5f671e8 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -32,6 +32,8 @@ from ddtrace import __version__ as ddtrace_version from ddtrace.propagation.http import HTTPPropagator from ddtrace.trace import Context, Span, tracer + +from datadog_lambda.config import config from datadog_lambda import __version__ as datadog_lambda_version from datadog_lambda.trigger import ( _EventSource, @@ -42,10 +44,7 @@ EventSubtypes, ) -dd_trace_otel_enabled = ( - os.environ.get("DD_TRACE_OTEL_ENABLED", "false").lower() == "true" -) -if dd_trace_otel_enabled: +if config.otel_enabled: from opentelemetry.trace import set_tracer_provider from ddtrace.opentelemetry import TracerProvider @@ -55,18 +54,11 @@ logger = logging.getLogger(__name__) dd_trace_context = None -dd_tracing_enabled = os.environ.get("DD_TRACE_ENABLED", "false").lower() == "true" -if dd_tracing_enabled: +if config.telemetry_enabled: # Enable the telemetry client if the user has opted in - if ( - os.environ.get("DD_INSTRUMENTATION_TELEMETRY_ENABLED", "false").lower() - == "true" - ): - from ddtrace.internal.telemetry import telemetry_writer + from ddtrace.internal.telemetry import telemetry_writer - telemetry_writer.enable() - -is_lambda_context = os.environ.get(XrayDaemon.FUNCTION_NAME_HEADER_NAME) != "" + telemetry_writer.enable() propagator = HTTPPropagator() @@ -97,7 +89,7 @@ def _convert_xray_sampling(xray_sampled): def _get_xray_trace_context(): - if not is_lambda_context: + if not config.is_lambda_context: return None xray_trace_entity = parse_xray_header( @@ -639,13 +631,11 @@ def get_dd_trace_context_obj(): automatically, but this function can be used to manually inject the trace context to an outgoing request. """ - if dd_tracing_enabled: + if config.trace_enabled: dd_trace_py_context = _get_dd_trace_py_context() if _is_context_complete(dd_trace_py_context): return dd_trace_py_context - global dd_trace_context - try: xray_context = _get_xray_trace_context() # xray (sub)segment except Exception as e: @@ -690,10 +680,10 @@ def set_correlation_ids(): TODO: Remove me when Datadog tracer is natively supported in Lambda. """ - if not is_lambda_context: + if not config.is_lambda_context: logger.debug("set_correlation_ids is only supported in LambdaContext") return - if dd_tracing_enabled: + if config.trace_enabled: logger.debug("using ddtrace implementation for spans") return @@ -1480,7 +1470,7 @@ def emit_telemetry_on_exception_outside_of_handler( Emit an enhanced error metric and create a span for exceptions occurring outside the handler """ submit_errors_metric(None) - if dd_tracing_enabled: + if config.trace_enabled: span = tracer.trace( "aws.lambda", service="aws.lambda", diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 0e23b7218..87063411e 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -18,6 +18,7 @@ is_new_sandbox, ColdStartTracer, ) +from datadog_lambda.config import config from datadog_lambda.constants import ( TraceContextSource, XraySubsegment, @@ -26,11 +27,11 @@ from datadog_lambda.module_name import modify_module_name from datadog_lambda.patch import patch_all from datadog_lambda.span_pointers import calculate_span_pointers +from datadog_lambda.tag_object import tag_object from datadog_lambda.tracing import ( extract_dd_trace_context, create_dd_dummy_metadata_subsegment, inject_correlation_ids, - dd_tracing_enabled, mark_trace_as_error_for_5xx_responses, set_correlation_ids, set_dd_trace_py_root, @@ -46,65 +47,20 @@ extract_http_status_code_tag, ) -profiling_env_var = os.environ.get("DD_PROFILING_ENABLED", "false").lower() == "true" -if profiling_env_var: +if config.profiling_enabled: from ddtrace.profiling import profiler -llmobs_env_var = os.environ.get("DD_LLMOBS_ENABLED", "false").lower() in ("true", "1") -if llmobs_env_var: +if config.llmobs_enabled: from ddtrace.llmobs import LLMObs -exception_replay_env_var = os.environ.get( - "DD_EXCEPTION_REPLAY_ENABLED", "false" -).lower() in ("true", "1") -if exception_replay_env_var: +if config.exception_replay_enabled: from ddtrace.debugging._exception.replay import SpanExceptionHandler from ddtrace.debugging._uploader import LogsIntakeUploaderV1 logger = logging.getLogger(__name__) -DD_FLUSH_TO_LOG = "DD_FLUSH_TO_LOG" -DD_LOGS_INJECTION = "DD_LOGS_INJECTION" -DD_MERGE_XRAY_TRACES = "DD_MERGE_XRAY_TRACES" -AWS_LAMBDA_FUNCTION_NAME = "AWS_LAMBDA_FUNCTION_NAME" -DD_LOCAL_TEST = "DD_LOCAL_TEST" -DD_TRACE_EXTRACTOR = "DD_TRACE_EXTRACTOR" -DD_TRACE_MANAGED_SERVICES = "DD_TRACE_MANAGED_SERVICES" -DD_ENCODE_AUTHORIZER_CONTEXT = "DD_ENCODE_AUTHORIZER_CONTEXT" -DD_DECODE_AUTHORIZER_CONTEXT = "DD_DECODE_AUTHORIZER_CONTEXT" -DD_COLD_START_TRACING = "DD_COLD_START_TRACING" -DD_MIN_COLD_START_DURATION = "DD_MIN_COLD_START_DURATION" -DD_COLD_START_TRACE_SKIP_LIB = "DD_COLD_START_TRACE_SKIP_LIB" -DD_CAPTURE_LAMBDA_PAYLOAD = "DD_CAPTURE_LAMBDA_PAYLOAD" -DD_CAPTURE_LAMBDA_PAYLOAD_MAX_DEPTH = "DD_CAPTURE_LAMBDA_PAYLOAD_MAX_DEPTH" DD_REQUESTS_SERVICE_NAME = "DD_REQUESTS_SERVICE_NAME" DD_SERVICE = "DD_SERVICE" -DD_ENV = "DD_ENV" -DD_DATA_STREAMS_ENABLED = "DD_DATA_STREAMS_ENABLED" - - -def get_env_as_int(env_key, default_value: int) -> int: - try: - return int(os.environ.get(env_key, default_value)) - except Exception as e: - logger.warn( - f"Failed to parse {env_key} as int. Using default value: {default_value}. Error: {e}" - ) - return default_value - - -dd_capture_lambda_payload_enabled = ( - os.environ.get(DD_CAPTURE_LAMBDA_PAYLOAD, "false").lower() == "true" -) - -if dd_capture_lambda_payload_enabled: - import datadog_lambda.tag_object as tag_object - - tag_object.max_depth = get_env_as_int( - DD_CAPTURE_LAMBDA_PAYLOAD_MAX_DEPTH, tag_object.max_depth - ) - -env_env_var = os.environ.get(DD_ENV, None) init_timestamp_ns = time_ns() @@ -161,59 +117,16 @@ def __init__(self, func): """Executes when the wrapped function gets wrapped""" try: self.func = func - self.flush_to_log = os.environ.get(DD_FLUSH_TO_LOG, "").lower() == "true" - self.logs_injection = ( - os.environ.get(DD_LOGS_INJECTION, "true").lower() == "true" - ) - self.merge_xray_traces = ( - os.environ.get(DD_MERGE_XRAY_TRACES, "false").lower() == "true" - ) - self.function_name = os.environ.get(AWS_LAMBDA_FUNCTION_NAME, "function") - self.service = os.environ.get(DD_SERVICE, None) - self.extractor_env = os.environ.get(DD_TRACE_EXTRACTOR, None) self.trace_extractor = None self.span = None self.inferred_span = None - depends_on_dd_tracing_enabled = ( - lambda original_boolean: dd_tracing_enabled and original_boolean - ) - self.make_inferred_span = depends_on_dd_tracing_enabled( - os.environ.get(DD_TRACE_MANAGED_SERVICES, "true").lower() == "true" - ) - self.encode_authorizer_context = depends_on_dd_tracing_enabled( - os.environ.get(DD_ENCODE_AUTHORIZER_CONTEXT, "true").lower() == "true" - ) - self.decode_authorizer_context = depends_on_dd_tracing_enabled( - os.environ.get(DD_DECODE_AUTHORIZER_CONTEXT, "true").lower() == "true" - ) - self.cold_start_tracing = depends_on_dd_tracing_enabled( - os.environ.get(DD_COLD_START_TRACING, "true").lower() == "true" - ) - self.min_cold_start_trace_duration = get_env_as_int( - DD_MIN_COLD_START_DURATION, 3 - ) - self.data_streams_enabled = ( - os.environ.get(DD_DATA_STREAMS_ENABLED, "false").lower() == "true" - ) - self.local_testing_mode = os.environ.get( - DD_LOCAL_TEST, "false" - ).lower() in ("true", "1") - self.cold_start_trace_skip_lib = [ - "ddtrace.internal.compat", - "ddtrace.filters", - ] - if DD_COLD_START_TRACE_SKIP_LIB in os.environ: - try: - self.cold_start_trace_skip_lib = os.environ[ - DD_COLD_START_TRACE_SKIP_LIB - ].split(",") - except Exception: - logger.debug(f"Malformatted for env {DD_COLD_START_TRACE_SKIP_LIB}") self.response = None - if profiling_env_var: - self.prof = profiler.Profiler(env=env_env_var, service=self.service) - if self.extractor_env: - extractor_parts = self.extractor_env.rsplit(".", 1) + + if config.profiling_enabled: + self.prof = profiler.Profiler(env=config.env, service=config.service) + + if config.trace_extractor: + extractor_parts = config.trace_extractor.rsplit(".", 1) if len(extractor_parts) == 2: (mod_name, extractor_name) = extractor_parts modified_extractor_name = modify_module_name(mod_name) @@ -221,7 +134,7 @@ def __init__(self, func): self.trace_extractor = getattr(extractor_module, extractor_name) # Inject trace correlation ids to logs - if self.logs_injection: + if config.logs_injection: inject_correlation_ids() # This prevents a breaking change in ddtrace v0.49 regarding the service name @@ -233,11 +146,11 @@ def __init__(self, func): patch_all() # Enable LLM Observability - if llmobs_env_var: + if config.llmobs_enabled: LLMObs.enable() # Enable Exception Replay - if exception_replay_env_var: + if config.exception_replay_enabled: logger.debug("Enabling exception replay") SpanExceptionHandler.enable() @@ -307,7 +220,7 @@ def _before(self, event, context): event, context, extractor=self.trace_extractor, - decode_authorizer_context=self.decode_authorizer_context, + decode_authorizer_context=config.decode_authorizer_context, ) self.event_source = event_source # Create a Datadog X-Ray subsegment with the trace context @@ -321,28 +234,28 @@ def _before(self, event, context): XraySubsegment.TRACE_KEY, ) - if dd_tracing_enabled: - set_dd_trace_py_root(trace_context_source, self.merge_xray_traces) - if self.make_inferred_span: + if config.trace_enabled: + set_dd_trace_py_root(trace_context_source, config.merge_xray_traces) + if config.make_inferred_span: self.inferred_span = create_inferred_span( - event, context, event_source, self.decode_authorizer_context + event, context, event_source, config.decode_authorizer_context ) - if self.data_streams_enabled: + if config.data_streams_enabled: set_dsm_context(event, event_source) self.span = create_function_execution_span( context=context, - function_name=self.function_name, + function_name=config.function_name, is_cold_start=is_cold_start(), is_proactive_init=is_proactive_init(), trace_context_source=trace_context_source, - merge_xray_traces=self.merge_xray_traces, + merge_xray_traces=config.merge_xray_traces, trigger_tags=self.trigger_tags, parent_span=self.inferred_span, span_pointers=calculate_span_pointers(event_source, event), ) else: set_correlation_ids() - if profiling_env_var and is_new_sandbox(): + if config.profiling_enabled and is_new_sandbox(): self.prof.start(stop_on_exit=False, profile_children=True) logger.debug("datadog_lambda_wrapper _before() done") except Exception as e: @@ -361,14 +274,14 @@ def _after(self, event, context): create_dd_dummy_metadata_subsegment( self.trigger_tags, XraySubsegment.LAMBDA_FUNCTION_TAGS_KEY ) - should_trace_cold_start = self.cold_start_tracing and is_new_sandbox() + should_trace_cold_start = config.cold_start_tracing and is_new_sandbox() if should_trace_cold_start: trace_ctx = tracer.current_trace_context() if self.span: - if dd_capture_lambda_payload_enabled: - tag_object.tag_object(self.span, "function.request", event) - tag_object.tag_object(self.span, "function.response", self.response) + if config.capture_payload_enabled: + tag_object(self.span, "function.request", event) + tag_object(self.span, "function.response", self.response) if status_code: self.span.set_tag("http.status_code", status_code) @@ -378,8 +291,8 @@ def _after(self, event, context): if status_code: self.inferred_span.set_tag("http.status_code", status_code) - if self.service: - self.inferred_span.set_tag("peer.service", self.service) + if config.service: + self.inferred_span.set_tag("peer.service", config.service) if InferredSpanInfo.is_async(self.inferred_span) and self.span: self.inferred_span.finish(finish_time=self.span.start) @@ -391,33 +304,35 @@ def _after(self, event, context): following_span = self.span or self.inferred_span ColdStartTracer( tracer, - self.function_name, + config.function_name, following_span.start_ns, trace_ctx, - self.min_cold_start_trace_duration, - self.cold_start_trace_skip_lib, + config.min_cold_start_trace_duration, + config.cold_start_trace_skip_lib, ).trace() except Exception as e: logger.debug("Failed to create cold start spans. %s", e) - if not self.flush_to_log or should_use_extension: + if not config.flush_to_log or should_use_extension: from datadog_lambda.metric import flush_stats flush_stats(context) - if should_use_extension and self.local_testing_mode: + if should_use_extension and config.local_test: # when testing locally, the extension does not know when an # invocation completes because it does not have access to the # logs api flush_extension() - if llmobs_env_var: + if config.llmobs_enabled: LLMObs.flush() # Flush exception replay - if exception_replay_env_var: + if config.exception_replay_enabled: LogsIntakeUploaderV1._instance.periodic() - if self.encode_authorizer_context and is_authorizer_response(self.response): + if config.encode_authorizer_context and is_authorizer_response( + self.response + ): self._inject_authorizer_span_headers( event.get("requestContext", {}).get("requestId") ) diff --git a/tests/conftest.py b/tests/conftest.py new file mode 100644 index 000000000..338698025 --- /dev/null +++ b/tests/conftest.py @@ -0,0 +1,8 @@ +import pytest + +from datadog_lambda.config import config + + +@pytest.fixture(autouse=True) +def reset_config(): + config._reset() diff --git a/tests/test_api.py b/tests/test_api.py index 59ee4ee8d..7fcc3c221 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -22,7 +22,10 @@ def setUp(self): ) self.env_patcher.start() - @patch("datadog_lambda.api.fips_mode_enabled", True) + def tearDown(self): + del os.environ["AWS_REGION"] + + @patch("datadog_lambda.config.Config.fips_mode_enabled", True) @patch("botocore.session.Session.create_client") def test_secrets_manager_fips_endpoint(self, mock_boto3_client): mock_client = MagicMock() @@ -63,7 +66,7 @@ def test_secrets_manager_different_region(self, mock_boto3_client): ) self.assertEqual(api_key, "test-api-key") - @patch("datadog_lambda.api.fips_mode_enabled", True) + @patch("datadog_lambda.config.Config.fips_mode_enabled", True) @patch("botocore.session.Session.create_client") def test_secrets_manager_different_region_but_still_fips(self, mock_boto3_client): mock_client = MagicMock() @@ -84,7 +87,7 @@ def test_secrets_manager_different_region_but_still_fips(self, mock_boto3_client ) self.assertEqual(api_key, "test-api-key") - @patch("datadog_lambda.api.fips_mode_enabled", True) + @patch("datadog_lambda.config.Config.fips_mode_enabled", True) @patch("botocore.session.Session.create_client") def test_ssm_fips_endpoint(self, mock_boto3_client): mock_client = MagicMock() @@ -103,7 +106,7 @@ def test_ssm_fips_endpoint(self, mock_boto3_client): ) self.assertEqual(api_key, "test-api-key") - @patch("datadog_lambda.api.fips_mode_enabled", True) + @patch("datadog_lambda.config.Config.fips_mode_enabled", True) @patch("botocore.session.Session.create_client") @patch("datadog_lambda.api.decrypt_kms_api_key") def test_kms_fips_endpoint(self, mock_decrypt_kms, mock_boto3_client): diff --git a/tests/test_cold_start.py b/tests/test_cold_start.py index c7444c49e..d75b5f43a 100644 --- a/tests/test_cold_start.py +++ b/tests/test_cold_start.py @@ -8,6 +8,8 @@ import datadog_lambda.cold_start as cold_start import datadog_lambda.wrapper as wrapper +from tests.utils import get_mock_context + class TestColdStartTracingSetup(unittest.TestCase): def test_proactive_init(self): @@ -247,7 +249,7 @@ def finish(span): monkeypatch.setattr(wrapper.tracer, "_on_span_finish", finish) monkeypatch.setattr(wrapper, "is_new_sandbox", lambda: True) - monkeypatch.setattr("datadog_lambda.wrapper.dd_tracing_enabled", True) + monkeypatch.setattr("datadog_lambda.config.Config.trace_enabled", True) monkeypatch.setenv( "DD_COLD_START_TRACE_SKIP_LIB", "ddtrace.contrib.logging,datadog_lambda.wrapper" ) @@ -257,10 +259,7 @@ def finish(span): def handler(event, context): import tabnanny - lambda_context = MagicMock() - lambda_context.invoked_function_arn = ( - "arn:aws:lambda:us-west-1:123457598159:function:python-layer-test:1" - ) + lambda_context = get_mock_context() handler.cold_start_tracing = True handler({}, lambda_context) diff --git a/tests/test_config.py b/tests/test_config.py new file mode 100644 index 000000000..92002439d --- /dev/null +++ b/tests/test_config.py @@ -0,0 +1,240 @@ +import pytest + +from datadog_lambda.config import config, _get_env, Config + + +@pytest.fixture +def setenv(monkeypatch): + def set_env(key, value): + if value is None: + monkeypatch.delenv(key, raising=False) + else: + monkeypatch.setenv(key, value) + + return set_env + + +def _test_as_bool(env_key, conf_key, default): + return ( + (env_key, conf_key, None, default), + (env_key, conf_key, "", False), + (env_key, conf_key, "true", True), + (env_key, conf_key, "TRUE", True), + (env_key, conf_key, "false", False), + (env_key, conf_key, "FALSE", False), + (env_key, conf_key, "1", True), + (env_key, conf_key, "0", False), + (env_key, conf_key, "purple", False), + ) + + +def _test_int(env_key, conf_key, default): + return ( + (env_key, conf_key, None, default), + (env_key, conf_key, "", default), + (env_key, conf_key, "5", 5), + (env_key, conf_key, "0", 0), + (env_key, conf_key, "2.5", default), + (env_key, conf_key, "-1", -1), + (env_key, conf_key, "purple", default), + ) + + +def _test_as_list(env_key, conf_key, default): + return ( + (env_key, conf_key, None, default.split(",")), + (env_key, conf_key, "", []), + (env_key, conf_key, " ", []), + (env_key, conf_key, ",", []), + (env_key, conf_key, " , ", []), + (env_key, conf_key, "a", ["a"]), + (env_key, conf_key, "a,", ["a"]), + (env_key, conf_key, "a, ", ["a"]), + (env_key, conf_key, "a,b", ["a", "b"]), + (env_key, conf_key, "a, b", ["a", "b"]), + ) + + +_test_config_from_environ = ( + *_test_as_bool("DD_FLUSH_TO_LOG", "flush_to_log", default=False), + *_test_as_bool("DD_LOGS_INJECTION", "logs_injection", default=True), + *_test_as_bool("DD_TRACE_ENABLED", "trace_enabled", default=True), + *_test_as_bool("DD_COLD_START_TRACING", "cold_start_tracing", default=True), + *_test_as_bool("DD_TRACE_MANAGED_SERVICES", "make_inferred_span", default=True), + *_test_as_bool( + "DD_ENCODE_AUTHORIZER_CONTEXT", "encode_authorizer_context", default=True + ), + *_test_as_bool( + "DD_DECODE_AUTHORIZER_CONTEXT", "decode_authorizer_context", default=True + ), + *_test_as_bool("DD_FLUSH_IN_THREAD", "flush_in_thread", default=False), + *_test_as_bool("DD_ENHANCED_METRICS", "enhanced_metrics_enabled", default=True), + *_test_as_bool("DD_INTEGRATION_TEST", "integration_test", default=False), + *_test_as_bool("DD_BOTOCORE_ADD_SPAN_POINTERS", "add_span_pointers", default=True), + *_test_as_bool("DD_TRACE_OTEL_ENABLED", "otel_enabled", default=False), + *_test_as_bool( + "DD_INSTRUMENTATION_TELEMETRY_ENABLED", "telemetry_enabled", default=False + ), + *_test_as_bool("DD_MERGE_XRAY_TRACES", "merge_xray_traces", default=False), + *_test_as_bool("DD_PROFILING_ENABLED", "profiling_enabled", default=False), + *_test_as_bool("DD_LLMOBS_ENABLED", "llmobs_enabled", default=False), + *_test_as_bool( + "DD_EXCEPTION_REPLAY_ENABLED", "exception_replay_enabled", default=False + ), + *_test_as_bool( + "DD_CAPTURE_LAMBDA_PAYLOAD", "capture_payload_enabled", default=False + ), + *_test_as_bool("DD_LOCAL_TEST", "local_test", default=False), + *_test_as_bool("DD_DATA_STREAMS_ENABLED", "data_streams_enabled", default=False), + *_test_int( + "DD_CAPTURE_LAMBDA_PAYLOAD_MAX_DEPTH", "capture_payload_max_depth", default=10 + ), + *_test_int( + "DD_MIN_COLD_START_DURATION", "min_cold_start_trace_duration", default=3 + ), + *_test_as_list( + "DD_COLD_START_TRACE_SKIP_LIB", + "cold_start_trace_skip_lib", + default="ddtrace.internal.compat,ddtrace.filters", + ), + ("DD_SERVICE", "service", None, None), + ("DD_SERVICE", "service", "", ""), + ("DD_SERVICE", "service", "my_service", "my_service"), + ("AWS_LAMBDA_FUNCTION_NAME", "aws_lambda_function_name", None, None), + ("AWS_LAMBDA_FUNCTION_NAME", "aws_lambda_function_name", "", ""), + ( + "AWS_LAMBDA_FUNCTION_NAME", + "aws_lambda_function_name", + "my_function", + "my_function", + ), + ("AWS_LAMBDA_FUNCTION_NAME", "function_name", None, "function"), + ("AWS_LAMBDA_FUNCTION_NAME", "function_name", "", ""), + ("AWS_LAMBDA_FUNCTION_NAME", "function_name", "my_function", "my_function"), + ("AWS_LAMBDA_FUNCTION_NAME", "is_lambda_context", None, False), + ("AWS_LAMBDA_FUNCTION_NAME", "is_lambda_context", "", False), + ("AWS_LAMBDA_FUNCTION_NAME", "is_lambda_context", "my_function", True), + ("AWS_REGION", "is_gov_region", None, False), + ("AWS_REGION", "is_gov_region", "", False), + ("AWS_REGION", "is_gov_region", "us-gov-1", True), + ("AWS_REGION", "is_gov_region", "us-est-1", False), + ("DD_TRACE_EXTRACTOR", "trace_extractor", None, None), + ("DD_TRACE_EXTRACTOR", "trace_extractor", "", ""), + ("DD_TRACE_EXTRACTOR", "trace_extractor", "my_extractor", "my_extractor"), + ("DD_ENV", "env", None, None), + ("DD_ENV", "env", "", ""), + ("DD_ENV", "env", "my_env", "my_env"), +) + + +@pytest.mark.parametrize("env_key,conf_key,env_val,conf_val", _test_config_from_environ) +def test_config_from_environ(env_key, conf_key, env_val, conf_val, setenv): + setenv(env_key, env_val) + assert getattr(config, conf_key) == conf_val + + +_test_config_from_environ_depends_on_tracing = ( + *_test_as_bool("DD_COLD_START_TRACING", "cold_start_tracing", default=True), + *_test_as_bool("DD_TRACE_MANAGED_SERVICES", "make_inferred_span", default=True), + *_test_as_bool( + "DD_ENCODE_AUTHORIZER_CONTEXT", "encode_authorizer_context", default=True + ), + *_test_as_bool( + "DD_DECODE_AUTHORIZER_CONTEXT", "decode_authorizer_context", default=True + ), + *_test_as_bool("DD_DATA_STREAMS_ENABLED", "data_streams_enabled", default=False), + *_test_as_bool( + "DD_INSTRUMENTATION_TELEMETRY_ENABLED", "telemetry_enabled", default=False + ), +) + + +@pytest.mark.parametrize( + "env_key,conf_key,env_val,conf_val", _test_config_from_environ_depends_on_tracing +) +def test_config_from_environ_depends_on_tracing( + env_key, conf_key, env_val, conf_val, setenv +): + setenv(env_key, env_val) + setenv("DD_TRACE_ENABLED", "false") + assert getattr(config, conf_key) is False + + +def test_config_aws_lambda_function_name(setenv): + # these config values all access the same environment variable, test to + # ensure the wrong value is not cached + setenv("AWS_LAMBDA_FUNCTION_NAME", "my_function") + assert config.aws_lambda_function_name == "my_function" + assert config.function_name == "my_function" + assert config.is_lambda_context is True + + +_test_fips_mode_from_environ = ( + (None, None, False), + (None, "", False), + (None, "us-gov-1", True), + (None, "us-east-1", False), + ("", None, False), + ("", "", False), + ("", "us-gov-1", False), + ("", "us-east-1", False), + ("true", None, True), + ("true", "", True), + ("true", "us-gov-1", True), + ("true", "us-east-1", True), + ("TRUE", None, True), + ("TRUE", "", True), + ("TRUE", "us-gov-1", True), + ("TRUE", "us-east-1", True), + ("false", None, False), + ("false", "", False), + ("false", "us-gov-1", False), + ("false", "us-east-1", False), + ("FALSE", None, False), + ("FALSE", "", False), + ("FALSE", "us-gov-1", False), + ("FALSE", "us-east-1", False), + ("1", None, False), + ("1", "", False), + ("1", "us-gov-1", False), + ("1", "us-east-1", False), + ("0", None, False), + ("0", "", False), + ("0", "us-gov-1", False), + ("0", "us-east-1", False), +) + + +@pytest.mark.parametrize("fips_mode,region,conf_val", _test_fips_mode_from_environ) +def test_fips_mode_from_environ(fips_mode, region, conf_val, setenv): + setenv("DD_LAMBDA_FIPS_MODE", fips_mode) + setenv("AWS_REGION", region) + assert config.fips_mode_enabled == conf_val + + +def test__get_env_does_not_log_when_env_not_set(setenv, monkeypatch): + setenv("TEST_1", None) + setenv("TEST_2", None) + setenv("TEST_3", None) + setenv("TEST_4", None) + + class Testing(Config): + test_1 = _get_env("TEST_1") + test_2 = _get_env("TEST_2", "purple") + test_3 = _get_env("TEST_3", "true", bool) + test_4 = _get_env("TEST_4", "true", bool, depends_on_tracing=True) + + logs = [] + + def cap_warn(*args, **kwargs): + logs.append(args) + + monkeypatch.setattr("datadog_lambda.config.logger.warning", cap_warn) + + testing = Testing() + testing.test_1 + testing.test_2 + testing.test_3 + testing.test_4 + + assert not logs diff --git a/tests/test_metric.py b/tests/test_metric.py index e7dab2c3c..aa537d346 100644 --- a/tests/test_metric.py +++ b/tests/test_metric.py @@ -62,7 +62,7 @@ def test_select_metrics_handler_dd_api_fallback(self): self.assertEqual(MetricsHandler.DATADOG_API, _select_metrics_handler()) del os.environ["DD_FLUSH_TO_LOG"] - @patch("datadog_lambda.metric.fips_mode_enabled", True) + @patch("datadog_lambda.config.Config.fips_mode_enabled", True) @patch("datadog_lambda.metric.should_use_extension", False) def test_select_metrics_handler_has_no_fallback_in_fips_mode(self): os.environ["DD_FLUSH_TO_LOG"] = "False" diff --git a/tests/test_patch.py b/tests/test_patch.py index bf9248756..b03d2e23e 100644 --- a/tests/test_patch.py +++ b/tests/test_patch.py @@ -1,3 +1,4 @@ +import pytest import unittest from unittest.mock import patch, MagicMock @@ -5,6 +6,13 @@ from datadog_lambda.patch import _patch_http, _ensure_patch_requests from datadog_lambda.constants import TraceHeader +from ddtrace.contrib.internal.requests.patch import unpatch as unpatch_requests + + +@pytest.fixture(scope="module", autouse=True) +def reset_patches(): + unpatch_requests() + class TestPatchHTTPClients(unittest.TestCase): def setUp(self): diff --git a/tests/test_tag_object.py b/tests/test_tag_object.py index 77512164f..574bb331a 100644 --- a/tests/test_tag_object.py +++ b/tests/test_tag_object.py @@ -29,6 +29,7 @@ def test_tag_object(self): True, ) + @patch("datadog_lambda.config.Config.capture_payload_max_depth", 2) def test_tag_object_max_depth(self): payload = { "hello": "world", @@ -41,11 +42,8 @@ def test_tag_object_max_depth(self): "vals": [{"thingOne": 1}, {"thingTwo": 2}], } spanMock = MagicMock() - import datadog_lambda.tag_object as lib_ref - lib_ref.max_depth = 2 # setting up the test tag_object(spanMock, "function.request", payload) - lib_ref.max_depth = 10 # revert the setup spanMock.set_tag.assert_has_calls( [ call("function.request.vals.0", "{'thingOne': 1}"), @@ -62,6 +60,7 @@ def test_tag_object_max_depth(self): True, ) + @patch("datadog_lambda.config.Config.capture_payload_max_depth", 0) def test_tag_object_max_depth_0(self): payload = { "hello": "world", @@ -74,11 +73,8 @@ def test_tag_object_max_depth_0(self): "vals": [{"thingOne": 1}, {"thingTwo": 2}], } spanMock = MagicMock() - import datadog_lambda.tag_object as lib_ref - lib_ref.max_depth = 0 # setting up the test tag_object(spanMock, "function.request", payload) - lib_ref.max_depth = 10 # revert the setup spanMock.set_tag.assert_has_calls( [ call( diff --git a/tests/test_tracing.py b/tests/test_tracing.py index e38e4ecd1..a629343ea 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -251,20 +251,16 @@ def test_extract_dd_trace_context(event, expect): class TestExtractAndGetDDTraceContext(unittest.TestCase): def setUp(self): - global dd_tracing_enabled - dd_tracing_enabled = False os.environ["_X_AMZN_TRACE_ID"] = fake_xray_header_value patcher = patch("datadog_lambda.tracing.send_segment") self.mock_send_segment = patcher.start() self.addCleanup(patcher.stop) - patcher = patch("datadog_lambda.tracing.is_lambda_context") + patcher = patch("datadog_lambda.config.Config.is_lambda_context") self.mock_is_lambda_context = patcher.start() self.mock_is_lambda_context.return_value = True self.addCleanup(patcher.stop) def tearDown(self): - global dd_tracing_enabled - dd_tracing_enabled = False del os.environ["_X_AMZN_TRACE_ID"] @with_trace_propagation_style("datadog") @@ -984,11 +980,12 @@ def setUp(self): ) self.addCleanup(patcher.stop) - patcher = patch("datadog_lambda.tracing.is_lambda_context") + patcher = patch("datadog_lambda.config.Config.is_lambda_context") self.mock_is_lambda_context = patcher.start() self.mock_is_lambda_context.return_value = True self.addCleanup(patcher.stop) + @patch("datadog_lambda.config.Config.trace_enabled", False) def test_set_correlation_ids(self): set_correlation_ids() span = tracer.current_span() @@ -1124,13 +1121,11 @@ def test_function_with_span_pointers(self): class TestSetTraceRootSpan(unittest.TestCase): def setUp(self): - global dd_tracing_enabled - dd_tracing_enabled = False os.environ["_X_AMZN_TRACE_ID"] = fake_xray_header_value patcher = patch("datadog_lambda.tracing.send_segment") self.mock_send_segment = patcher.start() self.addCleanup(patcher.stop) - patcher = patch("datadog_lambda.tracing.is_lambda_context") + patcher = patch("datadog_lambda.config.Config.is_lambda_context") self.mock_is_lambda_context = patcher.start() self.mock_is_lambda_context.return_value = True self.addCleanup(patcher.stop) @@ -1143,8 +1138,6 @@ def setUp(self): self.addCleanup(patcher.stop) def tearDown(self): - global dd_tracing_enabled - dd_tracing_enabled = False del os.environ["_X_AMZN_TRACE_ID"] def test_mixed_parent_context_when_merging(self): @@ -1245,6 +1238,7 @@ def test_get_service_mapping(self): create_service_mapping(os.environ["DD_SERVICE_MAPPING"]) ) self.assertEqual(self.get_service_mapping(), expected_output) + del os.environ["DD_SERVICE_MAPPING"] def test_set_service_mapping(self): new_service_mapping = {"api3": "service3", "api4": "service4"} @@ -1285,6 +1279,8 @@ def test_determine_service_name(self): "default", ) + del os.environ["DD_SERVICE_MAPPING"] + def test_remaps_all_inferred_span_service_names_from_api_gateway_event(self): new_service_mapping = {"lambda_api_gateway": "new-name"} self.set_service_mapping(new_service_mapping) @@ -2386,7 +2382,7 @@ def test_deterministic_m5_hash__always_leading_with_zero(self): class TestExceptionOutsideHandler(unittest.TestCase): - @patch("datadog_lambda.tracing.dd_tracing_enabled", True) + @patch("datadog_lambda.config.Config.trace_enabled", True) @patch("datadog_lambda.tracing.submit_errors_metric") @patch("time.time_ns", return_value=42) def test_exception_outside_handler_tracing_enabled( @@ -2427,7 +2423,7 @@ def test_exception_outside_handler_tracing_enabled( assert mock_span.error == 1 assert mock_span.start_ns == 42 - @patch("datadog_lambda.tracing.dd_tracing_enabled", False) + @patch("datadog_lambda.config.Config.trace_enabled", False) @patch("datadog_lambda.tracing.submit_errors_metric") @patch("time.time_ns", return_value=42) def test_exception_outside_handler_tracing_disabled( diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index f482fa3de..f0240905a 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -8,6 +8,8 @@ import datadog_lambda.wrapper as wrapper import datadog_lambda.xray as xray + +from datadog_lambda.config import config from datadog_lambda.metric import lambda_metric from datadog_lambda.thread_stats_writer import ThreadStatsWriter from ddtrace.trace import Span, tracer @@ -24,7 +26,6 @@ def setUp(self): patch("ddtrace.internal.writer.AgentWriter.flush_queue").start() wrapper.datadog_lambda_wrapper._force_wrap = True - wrapper.dd_tracing_enabled = True patcher = patch( "datadog.threadstats.reporters.HttpReporter.flush_distributions" ) @@ -80,9 +81,8 @@ def setUp(self): self.mock_set_dsm_context = patcher.start() self.addCleanup(patcher.stop) + @patch("datadog_lambda.config.Config.trace_enabled", False) def test_datadog_lambda_wrapper(self): - wrapper.dd_tracing_enabled = False - @wrapper.datadog_lambda_wrapper def lambda_handler(event, context): lambda_metric("test.metric", 100) @@ -92,7 +92,6 @@ def lambda_handler(event, context): lambda_context = get_mock_context() lambda_handler(lambda_event, lambda_context) - wrapper.dd_tracing_enabled = True self.mock_threadstats_flush_distributions.assert_has_calls( [ call( @@ -189,9 +188,9 @@ def lambda_handler(event, context): metric_module.lambda_stats.stop() metric_module.lambda_stats = ThreadStatsWriter(False) + @patch("datadog_lambda.config.Config.trace_enabled", False) def test_datadog_lambda_wrapper_inject_correlation_ids(self): os.environ["DD_LOGS_INJECTION"] = "True" - wrapper.dd_tracing_enabled = False @wrapper.datadog_lambda_wrapper def lambda_handler(event, context): @@ -199,7 +198,6 @@ def lambda_handler(event, context): lambda_event = {} lambda_handler(lambda_event, get_mock_context()) - wrapper.dd_tracing_enabled = True self.mock_set_correlation_ids.assert_called() self.mock_inject_correlation_ids.assert_called() @@ -457,11 +455,8 @@ def lambda_handler(event, context): ] ) + @patch("datadog_lambda.config.Config.enhanced_metrics_enabled", False) def test_no_enhanced_metrics_without_env_var(self): - patcher = patch("datadog_lambda.metric.enhanced_metrics_enabled", False) - patcher.start() - self.addCleanup(patcher.stop) - @wrapper.datadog_lambda_wrapper def lambda_handler(event, context): raise RuntimeError() @@ -515,6 +510,7 @@ def lambda_handler(event, context): self.assertEqual(os.environ.get("DD_REQUESTS_SERVICE_NAME"), "myAwesomeService") del os.environ["DD_SERVICE"] + @patch("datadog_lambda.config.Config.make_inferred_span", False) def test_encode_authorizer_span(self): @wrapper.datadog_lambda_wrapper def lambda_handler(event, context): @@ -541,7 +537,6 @@ def lambda_handler(event, context): trace_ctx.sampling_priority = 1 test_span.finish() lambda_handler.inferred_span = test_span - lambda_handler.make_inferred_span = False result = lambda_handler(lambda_event, lambda_context) raw_inject_data = result["context"]["_datadog"] self.assertIsInstance(raw_inject_data, str) @@ -569,7 +564,7 @@ def return_type_test(event, context): def test_set_dsm_context_called_when_DSM_and_tracing_enabled(self): os.environ["DD_DATA_STREAMS_ENABLED"] = "true" - wrapper.dd_tracing_enabled = True + os.environ["DD_TRACE_ENABLED"] = "true" @wrapper.datadog_lambda_wrapper def lambda_handler(event, context): @@ -583,7 +578,7 @@ def lambda_handler(event, context): def test_set_dsm_context_not_called_when_only_DSM_enabled(self): os.environ["DD_DATA_STREAMS_ENABLED"] = "true" - wrapper.dd_tracing_enabled = False + os.environ["DD_TRACE_ENABLED"] = "false" @wrapper.datadog_lambda_wrapper def lambda_handler(event, context): @@ -597,7 +592,7 @@ def lambda_handler(event, context): def test_set_dsm_context_not_called_when_only_tracing_enabled(self): os.environ["DD_DATA_STREAMS_ENABLED"] = "false" - wrapper.dd_tracing_enabled = True + os.environ["DD_TRACE_ENABLED"] = "true" @wrapper.datadog_lambda_wrapper def lambda_handler(event, context): @@ -611,7 +606,7 @@ def lambda_handler(event, context): def test_set_dsm_context_not_called_when_tracing_and_DSM_disabled(self): os.environ["DD_DATA_STREAMS_ENABLED"] = "false" - wrapper.dd_tracing_enabled = False + os.environ["DD_TRACE_ENABLED"] = "false" @wrapper.datadog_lambda_wrapper def lambda_handler(event, context): @@ -624,18 +619,6 @@ def lambda_handler(event, context): del os.environ["DD_DATA_STREAMS_ENABLED"] -class TestLambdaDecoratorSettings(unittest.TestCase): - def test_some_envs_should_depend_on_dd_tracing_enabled(self): - wrapper.dd_tracing_enabled = False - os.environ[wrapper.DD_TRACE_MANAGED_SERVICES] = "true" - os.environ[wrapper.DD_ENCODE_AUTHORIZER_CONTEXT] = "true" - os.environ[wrapper.DD_DECODE_AUTHORIZER_CONTEXT] = "true" - decorator = wrapper._LambdaDecorator(func=None) - self.assertFalse(decorator.make_inferred_span) - self.assertFalse(decorator.encode_authorizer_context) - self.assertFalse(decorator.decode_authorizer_context) - - class TestLambdaWrapperWithTraceContext(unittest.TestCase): xray_root = "1-5e272390-8c398be037738dc042009320" xray_parent = "94ae789b969f1cc5" @@ -706,14 +689,28 @@ def handler(event, context): class TestLambdaWrapperFlushExtension(unittest.TestCase): - def setUp(self): - self.orig_environ = os.environ + @patch("datadog_lambda.config.Config.local_test", True) + @patch("datadog_lambda.wrapper.should_use_extension", True) + def test_local_test_true_flushing(self): + flushes = [] + lambda_event = {} + lambda_context = get_mock_context() + + def flush(): + flushes.append(1) - def tearDown(self): - os.environ = self.orig_environ + @patch("datadog_lambda.wrapper.flush_extension", flush) + @wrapper.datadog_lambda_wrapper + def lambda_handler(event, context): + pass + lambda_handler(lambda_event, lambda_context) + + self.assertEqual(len(flushes), 1) + + @patch("datadog_lambda.config.Config.local_test", False) @patch("datadog_lambda.wrapper.should_use_extension", True) - def test_local_test_envvar_flushing(self): + def test_local_test_false_flushing(self): flushes = [] lambda_event = {} lambda_context = get_mock_context() @@ -721,24 +718,11 @@ def test_local_test_envvar_flushing(self): def flush(): flushes.append(1) - for environ, flush_called in ( - ({"DD_LOCAL_TEST": "True"}, True), - ({"DD_LOCAL_TEST": "true"}, True), - ({"DD_LOCAL_TEST": "1"}, True), - ({"DD_LOCAL_TEST": "False"}, False), - ({"DD_LOCAL_TEST": "false"}, False), - ({"DD_LOCAL_TEST": "0"}, False), - ({"DD_LOCAL_TEST": ""}, False), - ({}, False), - ): - os.environ = environ - flushes.clear() - - @patch("datadog_lambda.wrapper.flush_extension", flush) - @wrapper.datadog_lambda_wrapper - def lambda_handler(event, context): - pass + @patch("datadog_lambda.wrapper.flush_extension", flush) + @wrapper.datadog_lambda_wrapper + def lambda_handler(event, context): + pass - lambda_handler(lambda_event, lambda_context) + lambda_handler(lambda_event, lambda_context) - self.assertEqual(flush_called, len(flushes) == 1) + self.assertEqual(len(flushes), 0) diff --git a/tests/utils.py b/tests/utils.py index 0f246e68f..2d56ca0c0 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -22,6 +22,7 @@ def get_mock_context( lambda_context.invoked_function_arn = invoked_function_arn lambda_context.function_version = function_version lambda_context.function_name = function_name + lambda_context.get_remaining_time_in_millis = lambda: 100 lambda_context.client_context = ClientContext(custom) return lambda_context From e230d94554991136bc185bef2c46261f50073abc Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Wed, 11 Jun 2025 14:54:46 -0400 Subject: [PATCH 262/403] handle a case where the record is some customized item (#616) --- datadog_lambda/trigger.py | 2 +- tests/test_trigger.py | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/datadog_lambda/trigger.py b/datadog_lambda/trigger.py index 14cb06ac2..bbd0d027a 100644 --- a/datadog_lambda/trigger.py +++ b/datadog_lambda/trigger.py @@ -153,7 +153,7 @@ def parse_event_source(event: dict) -> _EventSource: event_source = _EventSource(EventTypes.STEPFUNCTIONS) event_record = get_first_record(event) - if event_record: + if event_record and isinstance(event_record, dict): aws_event_source = event_record.get("eventSource") or event_record.get( "EventSource" ) diff --git a/tests/test_trigger.py b/tests/test_trigger.py index c12e8f5c4..151039372 100644 --- a/tests/test_trigger.py +++ b/tests/test_trigger.py @@ -280,6 +280,13 @@ def test_detect_lambda_function_url_domain_with_invalid_input(self): # Test with string that would normally cause an exception when split self.assertFalse(detect_lambda_function_url_domain("")) + def test_event_source_with_non_dict_event_record(self): + # Test with event_record that's not a dictionary + event = {"Records": "not_a_dict"} + event_source = parse_event_source(event) + # Should handle the first non-dict record gracefully and return unknown + self.assertEqual(event_source.to_string(), "unknown") + class GetTriggerTags(unittest.TestCase): def test_extract_trigger_tags_api_gateway(self): From 8f2a45af6d90845efaf69246349f572e0de0b445 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 18 Jun 2025 16:01:59 -0400 Subject: [PATCH 263/403] chore(deps): bump protobuf from 5.29.3 to 5.29.5 (#619) Bumps [protobuf](https://github.com/protocolbuffers/protobuf) from 5.29.3 to 5.29.5. - [Release notes](https://github.com/protocolbuffers/protobuf/releases) - [Changelog](https://github.com/protocolbuffers/protobuf/blob/main/protobuf_release.bzl) - [Commits](https://github.com/protocolbuffers/protobuf/compare/v5.29.3...v5.29.5) --- updated-dependencies: - dependency-name: protobuf dependency-version: 5.29.5 dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 145 ++++++++++++++++++++++++++++++---------------------- 1 file changed, 83 insertions(+), 62 deletions(-) diff --git a/poetry.lock b/poetry.lock index 3953f9539..434f887c7 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,23 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. - -[[package]] -name = "boto3" -version = "1.36.8" -description = "The AWS SDK for Python" -optional = true -python-versions = ">=3.8" -files = [ - {file = "boto3-1.36.8-py3-none-any.whl", hash = "sha256:7f61c9d0ea64f484a17c1e3115fdf90fd7b17ab6771e07cb4549f42b9fd28fb9"}, - {file = "boto3-1.36.8.tar.gz", hash = "sha256:ac47215d320b0c2534340db58d6d5284cb1860b7bff172b4dd6eee2dee1d5779"}, -] - -[package.dependencies] -botocore = ">=1.36.8,<1.37.0" -jmespath = ">=0.7.1,<2.0.0" -s3transfer = ">=0.11.0,<0.12.0" - -[package.extras] -crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] +# This file is automatically @generated by Poetry 2.1.1 and should not be changed by hand. [[package]] name = "botocore" @@ -25,6 +6,8 @@ version = "1.36.8" description = "Low-level, data-driven core of boto 3." optional = true python-versions = ">=3.8" +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "botocore-1.36.8-py3-none-any.whl", hash = "sha256:59d3fdfbae6d916b046e973bebcbeb70a102f9e570ca86d5ba512f1854b78fc2"}, {file = "botocore-1.36.8.tar.gz", hash = "sha256:81c88e5566cf018e1411a68304dc1fb9e4156ca2b50a3a0f0befc274299e67fa"}, @@ -34,8 +17,8 @@ files = [ jmespath = ">=0.7.1,<2.0.0" python-dateutil = ">=2.1,<3.0.0" urllib3 = [ - {version = ">=1.25.4,<2.2.0 || >2.2.0,<3", markers = "python_version >= \"3.10\""}, {version = ">=1.25.4,<1.27", markers = "python_version < \"3.10\""}, + {version = ">=1.25.4,<2.2.0 || >2.2.0,<3", markers = "python_version >= \"3.10\""}, ] [package.extras] @@ -47,6 +30,7 @@ version = "0.16.1" description = "Python module to generate and modify bytecode" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "bytecode-0.16.1-py3-none-any.whl", hash = "sha256:1d4b61ed6bade4bff44127c8283bef8131a664ce4dbe09d64a88caf329939f35"}, {file = "bytecode-0.16.1.tar.gz", hash = "sha256:8fbbb637c880f339e564858bc6c7984ede67ae97bc71343379a535a9a4baf398"}, @@ -61,6 +45,7 @@ version = "2024.12.14" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" +groups = ["main"] files = [ {file = "certifi-2024.12.14-py3-none-any.whl", hash = "sha256:1275f7a45be9464efc1173084eaa30f866fe2e47d389406136d332ed4967ec56"}, {file = "certifi-2024.12.14.tar.gz", hash = "sha256:b650d30f370c2b724812bee08008be0c4163b163ddaec3f2546c1caf65f191db"}, @@ -72,6 +57,7 @@ version = "3.4.1" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "charset_normalizer-3.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:91b36a978b5ae0ee86c394f5a54d6ef44db1de0815eb43de826d41d21e4af3de"}, {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7461baadb4dc00fd9e0acbe254e3d7d2112e7f92ced2adc96e54ef6501c5f176"}, @@ -173,6 +159,8 @@ version = "0.4.6" description = "Cross-platform colored terminal text." optional = true python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +groups = ["main"] +markers = "extra == \"dev\" and sys_platform == \"win32\"" files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, @@ -184,6 +172,7 @@ version = "0.51.0" description = "The Datadog Python library" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +groups = ["main"] files = [ {file = "datadog-0.51.0-py2.py3-none-any.whl", hash = "sha256:a9764f091c96af4e0996d4400b168fc5fba380f911d6d672c9dcd4773e29ea3f"}, {file = "datadog-0.51.0.tar.gz", hash = "sha256:3279534f831ae0b4ae2d8ce42ef038b4ab38e667d7ed6ff7437982d7a0cf5250"}, @@ -198,6 +187,7 @@ version = "2.20.0" description = "Datadog APM client library" optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "ddtrace-2.20.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:e1dee099099b95acf7d0e552179925cfec58a52315cc914d153506367b195bc4"}, {file = "ddtrace-2.20.0-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:9d209bef14caafcd53be8c14e04741d86c08f76496c1bf755e2eaa38605ce3e0"}, @@ -271,10 +261,10 @@ files = [ [package.dependencies] bytecode = [ + {version = ">=0.13.0", markers = "python_version < \"3.11\""}, {version = ">=0.16.0", markers = "python_version >= \"3.13.0\""}, {version = ">=0.15.0", markers = "python_version ~= \"3.12.0\""}, {version = ">=0.14.0", markers = "python_version ~= \"3.11.0\""}, - {version = ">=0.13.0", markers = "python_version < \"3.11.0\""}, ] envier = ">=0.5,<1.0" legacy-cgi = {version = ">=2.0.0", markers = "python_version >= \"3.13.0\""} @@ -294,6 +284,7 @@ version = "1.2.18" description = "Python @deprecated decorator to deprecate old python classes, functions or methods." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7" +groups = ["main"] files = [ {file = "Deprecated-1.2.18-py2.py3-none-any.whl", hash = "sha256:bd5011788200372a32418f888e326a09ff80d0214bd961147cfed01b5c018eec"}, {file = "deprecated-1.2.18.tar.gz", hash = "sha256:422b6f6d859da6f2ef57857761bfb392480502a64c3028ca9bbe86085d72115d"}, @@ -303,7 +294,7 @@ files = [ wrapt = ">=1.10,<2" [package.extras] -dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "setuptools", "tox"] +dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "setuptools ; python_version >= \"3.12\"", "tox"] [[package]] name = "envier" @@ -311,6 +302,7 @@ version = "0.6.1" description = "Python application configuration via the environment" optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "envier-0.6.1-py3-none-any.whl", hash = "sha256:73609040a76be48bbcb97074d9969666484aa0de706183a6e9ef773156a8a6a9"}, {file = "envier-0.6.1.tar.gz", hash = "sha256:3309a01bb3d8850c9e7a31a5166d5a836846db2faecb79b9cb32654dd50ca9f9"}, @@ -325,6 +317,8 @@ version = "1.2.2" description = "Backport of PEP 654 (exception groups)" optional = true python-versions = ">=3.7" +groups = ["main"] +markers = "extra == \"dev\" and python_version <= \"3.10\"" files = [ {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, @@ -339,6 +333,8 @@ version = "5.0.4" description = "the modular source code checker: pep8 pyflakes and co" optional = true python-versions = ">=3.6.1" +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "flake8-5.0.4-py2.py3-none-any.whl", hash = "sha256:7a1cf6b73744f5806ab95e526f6f0d8c01c66d7bbe349562d22dfca20610b248"}, {file = "flake8-5.0.4.tar.gz", hash = "sha256:6fbe320aad8d6b95cec8b8e47bc933004678dc63095be98528b7bdd2a9f510db"}, @@ -355,6 +351,7 @@ version = "3.10" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.6" +groups = ["main"] files = [ {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, @@ -369,6 +366,7 @@ version = "8.5.0" description = "Read metadata from Python packages" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "importlib_metadata-8.5.0-py3-none-any.whl", hash = "sha256:45e54197d28b7a7f1559e60b95e7c567032b602131fbd588f1497f47880aa68b"}, {file = "importlib_metadata-8.5.0.tar.gz", hash = "sha256:71522656f0abace1d072b9e5481a48f07c138e00f079c38c8f883823f9c26bd7"}, @@ -378,12 +376,12 @@ files = [ zipp = ">=3.20" [package.extras] -check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)"] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""] cover = ["pytest-cov"] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] enabler = ["pytest-enabler (>=2.2)"] perf = ["ipython"] -test = ["flufl.flake8", "importlib-resources (>=1.3)", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6,!=8.1.*)", "pytest-perf (>=0.9.2)"] +test = ["flufl.flake8", "importlib-resources (>=1.3) ; python_version < \"3.9\"", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6,!=8.1.*)", "pytest-perf (>=0.9.2)"] type = ["pytest-mypy"] [[package]] @@ -392,6 +390,8 @@ version = "2.0.0" description = "brain-dead simple config-ini parsing" optional = true python-versions = ">=3.7" +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, @@ -403,6 +403,8 @@ version = "1.0.1" description = "JSON Matching Expressions" optional = true python-versions = ">=3.7" +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "jmespath-1.0.1-py3-none-any.whl", hash = "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980"}, {file = "jmespath-1.0.1.tar.gz", hash = "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe"}, @@ -414,6 +416,8 @@ version = "2.6.2" description = "Fork of the standard library cgi and cgitb modules, being deprecated in PEP-594" optional = false python-versions = ">=3.10" +groups = ["main"] +markers = "python_version >= \"3.13.0\"" files = [ {file = "legacy_cgi-2.6.2-py3-none-any.whl", hash = "sha256:a7b83afb1baf6ebeb56522537c5943ef9813cf933f6715e88a803f7edbce0bff"}, {file = "legacy_cgi-2.6.2.tar.gz", hash = "sha256:9952471ceb304043b104c22d00b4f333cac27a6abe446d8a528fc437cf13c85f"}, @@ -425,6 +429,8 @@ version = "0.7.0" description = "McCabe checker, plugin for flake8" optional = true python-versions = ">=3.6" +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"}, {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, @@ -436,6 +442,7 @@ version = "1.29.0" description = "OpenTelemetry Python API" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "opentelemetry_api-1.29.0-py3-none-any.whl", hash = "sha256:5fcd94c4141cc49c736271f3e1efb777bebe9cc535759c54c936cca4f1b312b8"}, {file = "opentelemetry_api-1.29.0.tar.gz", hash = "sha256:d04a6cf78aad09614f52964ecb38021e248f5714dc32c2e0d8fd99517b4d69cf"}, @@ -451,6 +458,8 @@ version = "24.2" description = "Core utilities for Python packages" optional = true python-versions = ">=3.8" +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"}, {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"}, @@ -462,6 +471,8 @@ version = "1.5.0" description = "plugin and hook calling mechanisms for python" optional = true python-versions = ">=3.8" +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, @@ -473,22 +484,23 @@ testing = ["pytest", "pytest-benchmark"] [[package]] name = "protobuf" -version = "5.29.3" +version = "5.29.5" description = "" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ - {file = "protobuf-5.29.3-cp310-abi3-win32.whl", hash = "sha256:3ea51771449e1035f26069c4c7fd51fba990d07bc55ba80701c78f886bf9c888"}, - {file = "protobuf-5.29.3-cp310-abi3-win_amd64.whl", hash = "sha256:a4fa6f80816a9a0678429e84973f2f98cbc218cca434abe8db2ad0bffc98503a"}, - {file = "protobuf-5.29.3-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:a8434404bbf139aa9e1300dbf989667a83d42ddda9153d8ab76e0d5dcaca484e"}, - {file = "protobuf-5.29.3-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:daaf63f70f25e8689c072cfad4334ca0ac1d1e05a92fc15c54eb9cf23c3efd84"}, - {file = "protobuf-5.29.3-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:c027e08a08be10b67c06bf2370b99c811c466398c357e615ca88c91c07f0910f"}, - {file = "protobuf-5.29.3-cp38-cp38-win32.whl", hash = "sha256:84a57163a0ccef3f96e4b6a20516cedcf5bb3a95a657131c5c3ac62200d23252"}, - {file = "protobuf-5.29.3-cp38-cp38-win_amd64.whl", hash = "sha256:b89c115d877892a512f79a8114564fb435943b59067615894c3b13cd3e1fa107"}, - {file = "protobuf-5.29.3-cp39-cp39-win32.whl", hash = "sha256:0eb32bfa5219fc8d4111803e9a690658aa2e6366384fd0851064b963b6d1f2a7"}, - {file = "protobuf-5.29.3-cp39-cp39-win_amd64.whl", hash = "sha256:6ce8cc3389a20693bfde6c6562e03474c40851b44975c9b2bf6df7d8c4f864da"}, - {file = "protobuf-5.29.3-py3-none-any.whl", hash = "sha256:0a18ed4a24198528f2333802eb075e59dea9d679ab7a6c5efb017a59004d849f"}, - {file = "protobuf-5.29.3.tar.gz", hash = "sha256:5da0f41edaf117bde316404bad1a486cb4ededf8e4a54891296f648e8e076620"}, + {file = "protobuf-5.29.5-cp310-abi3-win32.whl", hash = "sha256:3f1c6468a2cfd102ff4703976138844f78ebd1fb45f49011afc5139e9e283079"}, + {file = "protobuf-5.29.5-cp310-abi3-win_amd64.whl", hash = "sha256:3f76e3a3675b4a4d867b52e4a5f5b78a2ef9565549d4037e06cf7b0942b1d3fc"}, + {file = "protobuf-5.29.5-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e38c5add5a311f2a6eb0340716ef9b039c1dfa428b28f25a7838ac329204a671"}, + {file = "protobuf-5.29.5-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:fa18533a299d7ab6c55a238bf8629311439995f2e7eca5caaff08663606e9015"}, + {file = "protobuf-5.29.5-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:63848923da3325e1bf7e9003d680ce6e14b07e55d0473253a690c3a8b8fd6e61"}, + {file = "protobuf-5.29.5-cp38-cp38-win32.whl", hash = "sha256:ef91363ad4faba7b25d844ef1ada59ff1604184c0bcd8b39b8a6bef15e1af238"}, + {file = "protobuf-5.29.5-cp38-cp38-win_amd64.whl", hash = "sha256:7318608d56b6402d2ea7704ff1e1e4597bee46d760e7e4dd42a3d45e24b87f2e"}, + {file = "protobuf-5.29.5-cp39-cp39-win32.whl", hash = "sha256:6f642dc9a61782fa72b90878af134c5afe1917c89a568cd3476d758d3c3a0736"}, + {file = "protobuf-5.29.5-cp39-cp39-win_amd64.whl", hash = "sha256:470f3af547ef17847a28e1f47200a1cbf0ba3ff57b7de50d22776607cd2ea353"}, + {file = "protobuf-5.29.5-py3-none-any.whl", hash = "sha256:6cf42630262c59b2d8de33954443d94b746c952b01434fc58a417fdbd2e84bd5"}, + {file = "protobuf-5.29.5.tar.gz", hash = "sha256:bc1463bafd4b0929216c35f437a8e28731a2b7fe3d98bb77a600efced5a15c84"}, ] [[package]] @@ -497,6 +509,8 @@ version = "9.0.0" description = "Get CPU info with pure Python" optional = true python-versions = "*" +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "py-cpuinfo-9.0.0.tar.gz", hash = "sha256:3cdbbf3fac90dc6f118bfd64384f309edeadd902d7c8fb17f02ffa1fc3f49690"}, {file = "py_cpuinfo-9.0.0-py3-none-any.whl", hash = "sha256:859625bc251f64e21f077d099d4162689c762b5d6a4c3c97553d56241c9674d5"}, @@ -508,6 +522,8 @@ version = "2.9.1" description = "Python style guide checker" optional = true python-versions = ">=3.6" +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "pycodestyle-2.9.1-py2.py3-none-any.whl", hash = "sha256:d1735fc58b418fd7c5f658d28d943854f8a849b01a5d0a1e6f3f3fdd0166804b"}, {file = "pycodestyle-2.9.1.tar.gz", hash = "sha256:2c9607871d58c76354b697b42f5d57e1ada7d261c261efac224b664affdc5785"}, @@ -519,6 +535,8 @@ version = "2.5.0" description = "passive checker of Python programs" optional = true python-versions = ">=3.6" +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "pyflakes-2.5.0-py2.py3-none-any.whl", hash = "sha256:4579f67d887f804e67edb544428f264b7b24f435b263c4614f384135cea553d2"}, {file = "pyflakes-2.5.0.tar.gz", hash = "sha256:491feb020dca48ccc562a8c0cbe8df07ee13078df59813b83959cbdada312ea3"}, @@ -530,6 +548,8 @@ version = "8.3.4" description = "pytest: simple powerful testing with Python" optional = true python-versions = ">=3.8" +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "pytest-8.3.4-py3-none-any.whl", hash = "sha256:50e16d954148559c9a74109af1eaf0c945ba2d8f30f0a3d3335edde19788b6f6"}, {file = "pytest-8.3.4.tar.gz", hash = "sha256:965370d062bce11e73868e0335abac31b4d3de0e82f4007408d242b4f8610761"}, @@ -552,6 +572,8 @@ version = "4.0.0" description = "A ``pytest`` fixture for benchmarking code. It will group the tests into rounds that are calibrated to the chosen timer." optional = true python-versions = ">=3.7" +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "pytest-benchmark-4.0.0.tar.gz", hash = "sha256:fb0785b83efe599a6a956361c0691ae1dbb5318018561af10f3e915caa0048d1"}, {file = "pytest_benchmark-4.0.0-py3-none-any.whl", hash = "sha256:fdb7db64e31c8b277dff9850d2a2556d8b60bcb0ea6524e36e28ffd7c87f71d6"}, @@ -572,6 +594,8 @@ version = "2.9.0.post0" description = "Extensions to the standard Python datetime module" optional = true python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, @@ -586,6 +610,7 @@ version = "2.32.3" description = "Python HTTP for Humans." optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, @@ -601,29 +626,14 @@ urllib3 = ">=1.21.1,<3" socks = ["PySocks (>=1.5.6,!=1.5.7)"] use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] -[[package]] -name = "s3transfer" -version = "0.11.2" -description = "An Amazon S3 Transfer Manager" -optional = true -python-versions = ">=3.8" -files = [ - {file = "s3transfer-0.11.2-py3-none-any.whl", hash = "sha256:be6ecb39fadd986ef1701097771f87e4d2f821f27f6071c872143884d2950fbc"}, - {file = "s3transfer-0.11.2.tar.gz", hash = "sha256:3b39185cb72f5acc77db1a58b6e25b977f28d20496b6e58d6813d75f464d632f"}, -] - -[package.dependencies] -botocore = ">=1.36.0,<2.0a.0" - -[package.extras] -crt = ["botocore[crt] (>=1.36.0,<2.0a.0)"] - [[package]] name = "six" version = "1.17.0" description = "Python 2 and 3 compatibility utilities" optional = true python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"}, {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"}, @@ -635,6 +645,8 @@ version = "2.2.1" description = "A lil' TOML parser" optional = true python-versions = ">=3.8" +groups = ["main"] +markers = "extra == \"dev\" and python_version <= \"3.10\"" files = [ {file = "tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249"}, {file = "tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6"}, @@ -676,6 +688,7 @@ version = "4.12.2" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, @@ -687,6 +700,7 @@ version = "5.10.0" description = "Ultra fast JSON encoder and decoder for Python" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "ujson-5.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2601aa9ecdbee1118a1c2065323bda35e2c5a2cf0797ef4522d485f9d3ef65bd"}, {file = "ujson-5.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:348898dd702fc1c4f1051bc3aacbf894caa0927fe2c53e68679c073375f732cf"}, @@ -774,14 +788,16 @@ version = "1.26.20" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" +groups = ["main"] +markers = "python_version < \"3.10\"" files = [ {file = "urllib3-1.26.20-py2.py3-none-any.whl", hash = "sha256:0ed14ccfbf1c30a9072c7ca157e4319b70d65f623e91e7b32fadb2853431016e"}, {file = "urllib3-1.26.20.tar.gz", hash = "sha256:40c2dc0c681e47eb8f90e7e27bf6ff7df2e677421fd46756da1161c39ca70d32"}, ] [package.extras] -brotli = ["brotli (==1.0.9)", "brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"] -secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] +brotli = ["brotli (==1.0.9) ; os_name != \"nt\" and python_version < \"3\" and platform_python_implementation == \"CPython\"", "brotli (>=1.0.9) ; python_version >= \"3\" and platform_python_implementation == \"CPython\"", "brotlicffi (>=0.8.0) ; (os_name != \"nt\" or python_version >= \"3\") and platform_python_implementation != \"CPython\"", "brotlipy (>=0.6.0) ; os_name == \"nt\" and python_version < \"3\""] +secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress ; python_version == \"2.7\"", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] [[package]] @@ -790,13 +806,15 @@ version = "2.3.0" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.9" +groups = ["main"] +markers = "python_version >= \"3.10\"" files = [ {file = "urllib3-2.3.0-py3-none-any.whl", hash = "sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df"}, {file = "urllib3-2.3.0.tar.gz", hash = "sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d"}, ] [package.extras] -brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +brotli = ["brotli (>=1.0.9) ; platform_python_implementation == \"CPython\"", "brotlicffi (>=0.8.0) ; platform_python_implementation != \"CPython\""] h2 = ["h2 (>=4,<5)"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] zstd = ["zstandard (>=0.18.0)"] @@ -807,6 +825,7 @@ version = "1.17.2" description = "Module for decorators, wrappers and monkey patching." optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "wrapt-1.17.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3d57c572081fed831ad2d26fd430d565b76aa277ed1d30ff4d40670b1c0dd984"}, {file = "wrapt-1.17.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b5e251054542ae57ac7f3fba5d10bfff615b6c2fb09abeb37d2f1463f841ae22"}, @@ -895,6 +914,7 @@ version = "0.14.2" description = "Makes working with XML feel like you are working with JSON" optional = false python-versions = ">=3.6" +groups = ["main"] files = [ {file = "xmltodict-0.14.2-py2.py3-none-any.whl", hash = "sha256:20cc7d723ed729276e808f26fb6b3599f786cbc37e06c65e192ba77c40f20aac"}, {file = "xmltodict-0.14.2.tar.gz", hash = "sha256:201e7c28bb210e374999d1dde6382923ab0ed1a8a5faeece48ab525b7810a553"}, @@ -906,23 +926,24 @@ version = "3.20.2" description = "Backport of pathlib-compatible object wrapper for zip files" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "zipp-3.20.2-py3-none-any.whl", hash = "sha256:a817ac80d6cf4b23bf7f2828b7cabf326f15a001bea8b1f9b49631780ba28350"}, {file = "zipp-3.20.2.tar.gz", hash = "sha256:bc9eb26f4506fda01b81bcde0ca78103b6e62f991b381fec825435c836edbc29"}, ] [package.extras] -check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)"] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""] cover = ["pytest-cov"] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] enabler = ["pytest-enabler (>=2.2)"] -test = ["big-O", "importlib-resources", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-ignore-flaky"] +test = ["big-O", "importlib-resources ; python_version < \"3.9\"", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-ignore-flaky"] type = ["pytest-mypy"] [extras] -dev = ["boto3", "flake8", "pytest", "pytest-benchmark", "requests"] +dev = ["botocore", "flake8", "pytest", "pytest-benchmark", "requests"] [metadata] -lock-version = "2.0" +lock-version = "2.1" python-versions = ">=3.8.0,<4" -content-hash = "9128af5437fd535ec458c64280d8390574c632e704cace5ea783de3c5d453c8c" +content-hash = "f6a2f7355200da107aa5b027d6fe4fb6bdb5a898ce8298a56e6ac39fe8d8e34d" From f93bc0a88dff1cddb184938efddbb5289add21cc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 18 Jun 2025 16:02:16 -0400 Subject: [PATCH 264/403] chore(deps): bump brace-expansion in /tests/integration (#617) Bumps [brace-expansion](https://github.com/juliangruber/brace-expansion) from 1.1.11 to 1.1.12. - [Release notes](https://github.com/juliangruber/brace-expansion/releases) - [Commits](https://github.com/juliangruber/brace-expansion/compare/1.1.11...v1.1.12) --- updated-dependencies: - dependency-name: brace-expansion dependency-version: 1.1.12 dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- tests/integration/yarn.lock | 339 ++---------------------------------- 1 file changed, 16 insertions(+), 323 deletions(-) diff --git a/tests/integration/yarn.lock b/tests/integration/yarn.lock index f96feb522..37cb357d5 100644 --- a/tests/integration/yarn.lock +++ b/tests/integration/yarn.lock @@ -2,28 +2,6 @@ # yarn lockfile v1 -"@iarna/toml@^2.2.5": - version "2.2.5" - resolved "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz" - integrity sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg== - -"@isaacs/cliui@^8.0.2": - version "8.0.2" - resolved "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz" - integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== - dependencies: - string-width "^5.1.2" - string-width-cjs "npm:string-width@^4.2.0" - strip-ansi "^7.0.1" - strip-ansi-cjs "npm:strip-ansi@^6.0.1" - wrap-ansi "^8.1.0" - wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" - -"@pkgjs/parseargs@^0.11.0": - version "0.11.0" - resolved "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz" - integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== - "2-thenable@^1.0.0": version "1.0.0" resolved "https://registry.npmjs.org/2-thenable/-/2-thenable-1.0.0.tgz" @@ -32,16 +10,16 @@ d "1" es5-ext "^0.10.47" +"@iarna/toml@^2.2.5": + version "2.2.5" + resolved "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz" + integrity sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg== + ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== -ansi-regex@^6.0.1: - version "6.1.0" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz" - integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA== - ansi-styles@^4.0.0: version "4.3.0" resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" @@ -49,37 +27,11 @@ ansi-styles@^4.0.0: dependencies: color-convert "^2.0.1" -ansi-styles@^6.1.0: - version "6.2.1" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz" - integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== - appdirectory@^0.1.0: version "0.1.0" resolved "https://registry.npmjs.org/appdirectory/-/appdirectory-0.1.0.tgz" integrity sha512-DJ5DV8vZXBbusyiyPlH28xppwS8eAMRuuyMo88xeEcf4bV64lbLtbxRxqixZuJBXsZzLtXFmA13GwVjJc7vdQw== -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" - integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== - -axios-proxy-builder@^0.1.2: - version "0.1.2" - resolved "https://registry.npmjs.org/axios-proxy-builder/-/axios-proxy-builder-0.1.2.tgz" - integrity sha512-6uBVsBZzkB3tCC8iyx59mCjQckhB8+GQrI9Cop8eC7ybIsvs/KtnNgEBfRMSEa7GqK2VBGUzgjNYMdPIfotyPA== - dependencies: - tunnel "^0.0.6" - -axios@^1.7.4: - version "1.7.9" - resolved "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz" - integrity sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw== - dependencies: - follow-redirects "^1.15.6" - form-data "^4.0.0" - proxy-from-env "^1.1.0" - balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" @@ -91,20 +43,13 @@ bluebird@^3.7.2: integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + version "1.1.12" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.12.tgz#ab9b454466e5a8cc3a187beaad580412a9c5b843" + integrity sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg== dependencies: balanced-match "^1.0.0" concat-map "0.0.1" -brace-expansion@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== - dependencies: - balanced-match "^1.0.0" - camelcase@^5.0.0: version "5.3.1" resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" @@ -142,13 +87,6 @@ color-name@~1.1.4: resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -combined-stream@^1.0.8: - version "1.0.8" - resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - concat-map@0.0.1: version "0.0.1" resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" @@ -170,16 +108,7 @@ cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.0: - version "7.0.6" - resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz" - integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -d@^1.0.1, d@^1.0.2, d@1: +d@1, d@^1.0.1, d@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/d/-/d-1.0.2.tgz" integrity sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw== @@ -192,11 +121,6 @@ decamelize@^1.2.0: resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" - integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== - duration@^0.2.2: version "0.2.2" resolved "https://registry.npmjs.org/duration/-/duration-0.2.2.tgz" @@ -205,21 +129,11 @@ duration@^0.2.2: d "1" es5-ext "~0.10.46" -eastasianwidth@^0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz" - integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== - emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== -emoji-regex@^9.2.2: - version "9.2.2" - resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" - integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== - es5-ext@^0.10.35, es5-ext@^0.10.47, es5-ext@^0.10.49, es5-ext@^0.10.53, es5-ext@^0.10.62, es5-ext@^0.10.64, es5-ext@~0.10.14, es5-ext@~0.10.46: version "0.10.64" resolved "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz" @@ -280,28 +194,6 @@ find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" -follow-redirects@^1.15.6: - version "1.15.9" - resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz" - integrity sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ== - -foreground-child@^3.1.0: - version "3.3.0" - resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz" - integrity sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg== - dependencies: - cross-spawn "^7.0.0" - signal-exit "^4.0.1" - -form-data@^4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz" - integrity sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - fs-extra@^10.1.0: version "10.1.0" resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz" @@ -329,31 +221,7 @@ glob-all@^3.3.1: glob "^7.2.3" yargs "^15.3.1" -glob@^10.3.7: - version "10.4.5" - resolved "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz" - integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== - dependencies: - foreground-child "^3.1.0" - jackspeak "^3.1.2" - minimatch "^9.0.4" - minipass "^7.1.2" - package-json-from-dist "^1.0.0" - path-scurry "^1.11.1" - -glob@^7.1.3: - version "7.2.3" - resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.2.3: +glob@^7.1.3, glob@^7.2.3: version "7.2.3" resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -383,7 +251,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@^2.0.3, inherits@~2.0.3, inherits@2: +inherits@2, inherits@^2.0.3, inherits@~2.0.3: version "2.0.4" resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -437,15 +305,6 @@ isobject@^3.0.1: resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== -jackspeak@^3.1.2: - version "3.4.3" - resolved "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz" - integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== - dependencies: - "@isaacs/cliui" "^8.0.2" - optionalDependencies: - "@pkgjs/parseargs" "^0.11.0" - jsonfile@^6.0.1: version "6.1.0" resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz" @@ -507,23 +366,6 @@ log@^6.0.0: type "^2.7.3" uni-global "^1.0.0" -lru-cache@^10.2.0: - version "10.4.3" - resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz" - integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== - -mime-db@1.52.0: - version "1.52.0" - resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - -mime-types@^2.1.12: - version "2.1.35" - resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - dependencies: - mime-db "1.52.0" - minimatch@^3.1.1: version "3.1.2" resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" @@ -531,18 +373,6 @@ minimatch@^3.1.1: dependencies: brace-expansion "^1.1.7" -minimatch@^9.0.4: - version "9.0.5" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz" - integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== - dependencies: - brace-expansion "^2.0.1" - -"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: - version "7.1.2" - resolved "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz" - integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== - next-tick@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz" @@ -579,11 +409,6 @@ p-try@^2.0.0: resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -package-json-from-dist@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz" - integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== - pako@~1.0.2: version "1.0.11" resolved "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz" @@ -604,29 +429,11 @@ path-key@^2.0.1: resolved "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz" integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== -path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-scurry@^1.11.1: - version "1.11.1" - resolved "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz" - integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== - dependencies: - lru-cache "^10.2.0" - minipass "^5.0.0 || ^6.0.2 || ^7.0.0" - process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== -proxy-from-env@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz" - integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== - readable-stream@^3.0.0: version "3.6.2" resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" @@ -666,23 +473,11 @@ rimraf@^3.0.2: dependencies: glob "^7.1.3" -rimraf@^5.0.5: - version "5.0.10" - resolved "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz" - integrity sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ== - dependencies: - glob "^10.3.7" - safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -sax@>=0.6.0: - version "1.4.1" - resolved "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz" - integrity sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg== - semver@^5.5.0: version "5.7.2" resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz" @@ -720,16 +515,6 @@ serverless-python-requirements@^6.1.1: sha256-file "1.0.0" shell-quote "^1.8.1" -serverless@>=2.32: - version "4.5.0" - resolved "https://registry.npmjs.org/serverless/-/serverless-4.5.0.tgz" - integrity sha512-msbs5I/fuPiW0ZfBuFA7lpKazCTFtF0AhOCA0HsrJBGVaOrNbwzlC/krZKXn1YgDR2+cw/izKRNupZJXtpyxJQ== - dependencies: - axios "^1.7.4" - axios-proxy-builder "^0.1.2" - rimraf "^5.0.5" - xml2js "0.6.2" - set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" @@ -760,33 +545,16 @@ shebang-command@^1.2.0: dependencies: shebang-regex "^1.0.0" -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz" integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - shell-quote@^1.8.1: version "1.8.2" resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.2.tgz" integrity sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA== -signal-exit@^4.0.1: - version "4.1.0" - resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz" - integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== - split2@^3.1.1: version "3.2.2" resolved "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz" @@ -810,22 +578,6 @@ stream-promise@^3.2.0: es5-ext "^0.10.49" is-stream "^1.1.0" -string_decoder@^1.1.1, string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -"string-width-cjs@npm:string-width@^4.2.0": - version "4.2.3" - resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - string-width@^4.1.0, string-width@^4.2.0: version "4.2.3" resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" @@ -835,21 +587,12 @@ string-width@^4.1.0, string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" -string-width@^5.0.1, string-width@^5.1.2: - version "5.1.2" - resolved "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz" - integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== - dependencies: - eastasianwidth "^0.2.0" - emoji-regex "^9.2.2" - strip-ansi "^7.0.1" - -"strip-ansi-cjs@npm:strip-ansi@^6.0.1": - version "6.0.1" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== +string_decoder@^1.1.1, string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== dependencies: - ansi-regex "^5.0.1" + safe-buffer "~5.1.0" strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" @@ -858,18 +601,6 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1: dependencies: ansi-regex "^5.0.1" -strip-ansi@^7.0.1: - version "7.1.0" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz" - integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== - dependencies: - ansi-regex "^6.0.1" - -tunnel@^0.0.6: - version "0.0.6" - resolved "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz" - integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg== - type@^2.5.0, type@^2.7.2, type@^2.7.3: version "2.7.3" resolved "https://registry.npmjs.org/type/-/type-2.7.3.tgz" @@ -904,22 +635,6 @@ which@^1.2.9: dependencies: isexe "^2.0.0" -which@^2.0.1: - version "2.0.2" - resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": - version "7.0.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - wrap-ansi@^6.2.0: version "6.2.0" resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz" @@ -929,33 +644,11 @@ wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" -wrap-ansi@^8.1.0: - version "8.1.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz" - integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== - dependencies: - ansi-styles "^6.1.0" - string-width "^5.0.1" - strip-ansi "^7.0.1" - wrappy@1: version "1.0.2" resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== -xml2js@0.6.2: - version "0.6.2" - resolved "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz" - integrity sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA== - dependencies: - sax ">=0.6.0" - xmlbuilder "~11.0.0" - -xmlbuilder@~11.0.0: - version "11.0.1" - resolved "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz" - integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== - y18n@^4.0.0: version "4.0.3" resolved "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz" From 267a5429a99e85746537a1585608497a9d355fef Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 19 Jun 2025 23:51:26 -0400 Subject: [PATCH 265/403] chore(deps): bump requests from 2.32.3 to 2.32.4 (#615) --- poetry.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/poetry.lock b/poetry.lock index 434f887c7..4c37bf871 100644 --- a/poetry.lock +++ b/poetry.lock @@ -606,19 +606,19 @@ six = ">=1.5" [[package]] name = "requests" -version = "2.32.3" +version = "2.32.4" description = "Python HTTP for Humans." optional = false python-versions = ">=3.8" groups = ["main"] files = [ - {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, - {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, + {file = "requests-2.32.4-py3-none-any.whl", hash = "sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c"}, + {file = "requests-2.32.4.tar.gz", hash = "sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422"}, ] [package.dependencies] certifi = ">=2017.4.17" -charset-normalizer = ">=2,<4" +charset_normalizer = ">=2,<4" idna = ">=2.5,<4" urllib3 = ">=1.21.1,<3" From b08b7635675826278170dbb570e2d9307ae02cf9 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Mon, 23 Jun 2025 12:46:01 -0400 Subject: [PATCH 266/403] release v6.111.0 (#625) --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index 9534f0c73..2bb1df7ff 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "6.110.0" +__version__ = "6.111.0" diff --git a/pyproject.toml b/pyproject.toml index ba5bcb176..1d5feb7fd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "6.110.0" +version = "6.111.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 555ed5bd0635afe57c8bdfe4c09767effe24f855 Mon Sep 17 00:00:00 2001 From: Florentin Labelle Date: Thu, 26 Jun 2025 09:54:10 +0200 Subject: [PATCH 267/403] feat: initial support for ASM inside the tracer (#621) * build: add back libddwaf in the layer * fix: ensure the start_ns of a function url inferred span is an int * feat(asm): enable Threat Detection inside AWS Lambda for HTTP events * test(asm): test parsing events for lambda * build: bump layer size check * fix(asm): work with non dictionary responses * fix(asm): add extra check + comment on listeners --- Dockerfile | 1 - datadog_lambda/asm.py | 174 +++++++++ datadog_lambda/config.py | 1 + datadog_lambda/tracing.py | 2 +- datadog_lambda/wrapper.py | 12 + scripts/check_layer_size.sh | 4 +- ...ation-load-balancer-mutivalue-headers.json | 31 ++ tests/test_asm.py | 329 ++++++++++++++++++ 8 files changed, 550 insertions(+), 4 deletions(-) create mode 100644 datadog_lambda/asm.py create mode 100644 tests/event_samples/application-load-balancer-mutivalue-headers.json create mode 100644 tests/test_asm.py diff --git a/Dockerfile b/Dockerfile index 0e79d884a..c58245287 100644 --- a/Dockerfile +++ b/Dockerfile @@ -21,7 +21,6 @@ RUN pip install --no-cache-dir . -t ./python/lib/$runtime/site-packages RUN rm -rf ./python/lib/$runtime/site-packages/botocore* RUN rm -rf ./python/lib/$runtime/site-packages/setuptools RUN rm -rf ./python/lib/$runtime/site-packages/jsonschema/tests -RUN find . -name 'libddwaf.so' -delete RUN rm -f ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_taint_tracking/*.so RUN rm -f ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_stacktrace*.so RUN rm -f ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/libdd_wrapper*.so diff --git a/datadog_lambda/asm.py b/datadog_lambda/asm.py new file mode 100644 index 000000000..aab0f1e9d --- /dev/null +++ b/datadog_lambda/asm.py @@ -0,0 +1,174 @@ +from copy import deepcopy +import logging +from typing import Any, Dict, List, Optional, Union + +from ddtrace.contrib.internal.trace_utils import _get_request_header_client_ip +from ddtrace.internal import core +from ddtrace.trace import Span + +from datadog_lambda.trigger import ( + EventSubtypes, + EventTypes, + _EventSource, + _http_event_types, +) + +logger = logging.getLogger(__name__) + + +def _to_single_value_headers(headers: Dict[str, List[str]]) -> Dict[str, str]: + """ + Convert multi-value headers to single-value headers. + If a header has multiple values, join them with commas. + """ + single_value_headers = {} + for key, values in headers.items(): + single_value_headers[key] = ", ".join(values) + return single_value_headers + + +def _merge_single_and_multi_value_headers( + single_value_headers: Dict[str, str], + multi_value_headers: Dict[str, List[str]], +): + """ + Merge single-value headers with multi-value headers. + If a header exists in both, we merge them removing duplicates + """ + merged_headers = deepcopy(multi_value_headers) + for key, value in single_value_headers.items(): + if key not in merged_headers: + merged_headers[key] = [value] + elif value not in merged_headers[key]: + merged_headers[key].append(value) + return _to_single_value_headers(merged_headers) + + +def asm_start_request( + span: Span, + event: Dict[str, Any], + event_source: _EventSource, + trigger_tags: Dict[str, str], +): + if event_source.event_type not in _http_event_types: + return + + request_headers: Dict[str, str] = {} + peer_ip: Optional[str] = None + request_path_parameters: Optional[Dict[str, Any]] = None + route: Optional[str] = None + + if event_source.event_type == EventTypes.ALB: + headers = event.get("headers") + multi_value_request_headers = event.get("multiValueHeaders") + if multi_value_request_headers: + request_headers = _to_single_value_headers(multi_value_request_headers) + else: + request_headers = headers or {} + + raw_uri = event.get("path") + parsed_query = event.get("multiValueQueryStringParameters") or event.get( + "queryStringParameters" + ) + + elif event_source.event_type == EventTypes.LAMBDA_FUNCTION_URL: + request_headers = event.get("headers", {}) + peer_ip = event.get("requestContext", {}).get("http", {}).get("sourceIp") + raw_uri = event.get("rawPath") + parsed_query = event.get("queryStringParameters") + + elif event_source.event_type == EventTypes.API_GATEWAY: + request_context = event.get("requestContext", {}) + request_path_parameters = event.get("pathParameters") + route = trigger_tags.get("http.route") + + if event_source.subtype == EventSubtypes.API_GATEWAY: + request_headers = event.get("headers", {}) + peer_ip = request_context.get("identity", {}).get("sourceIp") + raw_uri = event.get("path") + parsed_query = event.get("multiValueQueryStringParameters") + + elif event_source.subtype == EventSubtypes.HTTP_API: + request_headers = event.get("headers", {}) + peer_ip = request_context.get("http", {}).get("sourceIp") + raw_uri = event.get("rawPath") + parsed_query = event.get("queryStringParameters") + + elif event_source.subtype == EventSubtypes.WEBSOCKET: + request_headers = _to_single_value_headers( + event.get("multiValueHeaders", {}) + ) + peer_ip = request_context.get("identity", {}).get("sourceIp") + raw_uri = event.get("path") + parsed_query = event.get("multiValueQueryStringParameters") + + else: + return + + else: + return + + body = event.get("body") + is_base64_encoded = event.get("isBase64Encoded", False) + + request_ip = _get_request_header_client_ip(request_headers, peer_ip, True) + if request_ip is not None: + span.set_tag_str("http.client_ip", request_ip) + span.set_tag_str("network.client.ip", request_ip) + + core.dispatch( + # The matching listener is registered in ddtrace.appsec._handlers + "aws_lambda.start_request", + ( + span, + request_headers, + request_ip, + body, + is_base64_encoded, + raw_uri, + route, + trigger_tags.get("http.method"), + parsed_query, + request_path_parameters, + ), + ) + + +def asm_start_response( + span: Span, + status_code: str, + event_source: _EventSource, + response: Union[Dict[str, Any], str, None], +): + if event_source.event_type not in _http_event_types: + return + + if isinstance(response, dict) and ( + "headers" in response or "multiValueHeaders" in response + ): + headers = response.get("headers", {}) + multi_value_request_headers = response.get("multiValueHeaders") + if isinstance(multi_value_request_headers, dict) and isinstance(headers, dict): + response_headers = _merge_single_and_multi_value_headers( + headers, multi_value_request_headers + ) + elif isinstance(headers, dict): + response_headers = headers + else: + response_headers = { + "content-type": "application/json", + } + else: + response_headers = { + "content-type": "application/json", + } + + core.dispatch( + # The matching listener is registered in ddtrace.appsec._handlers + "aws_lambda.start_response", + ( + span, + status_code, + response_headers, + ), + ) diff --git a/datadog_lambda/config.py b/datadog_lambda/config.py index 7a08d8a7f..aaa1af5e8 100644 --- a/datadog_lambda/config.py +++ b/datadog_lambda/config.py @@ -95,6 +95,7 @@ def _resolve_env(self, key, default=None, cast=None, depends_on_tracing=False): data_streams_enabled = _get_env( "DD_DATA_STREAMS_ENABLED", "false", as_bool, depends_on_tracing=True ) + appsec_enabled = _get_env("DD_APPSEC_ENABLED", "false", as_bool) is_gov_region = _get_env("AWS_REGION", "", lambda x: x.startswith("us-gov-")) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 3d5f671e8..89a4126bc 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -859,7 +859,7 @@ def create_inferred_span_from_lambda_function_url_event(event, context): InferredSpanInfo.set_tags(tags, tag_source="self", synchronicity="sync") if span: span.set_tags(tags) - span.start_ns = int(request_time_epoch) * 1e6 + span.start_ns = int(request_time_epoch * 1e6) return span diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 87063411e..29972bf43 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -9,6 +9,7 @@ from importlib import import_module from time import time_ns +from datadog_lambda.asm import asm_start_response, asm_start_request from datadog_lambda.dsm import set_dsm_context from datadog_lambda.extension import should_use_extension, flush_extension from datadog_lambda.cold_start import ( @@ -253,6 +254,8 @@ def _before(self, event, context): parent_span=self.inferred_span, span_pointers=calculate_span_pointers(event_source, event), ) + if config.appsec_enabled: + asm_start_request(self.span, event, event_source, self.trigger_tags) else: set_correlation_ids() if config.profiling_enabled and is_new_sandbox(): @@ -285,6 +288,15 @@ def _after(self, event, context): if status_code: self.span.set_tag("http.status_code", status_code) + + if config.appsec_enabled: + asm_start_response( + self.span, + status_code, + self.event_source, + response=self.response, + ) + self.span.finish() if self.inferred_span: diff --git a/scripts/check_layer_size.sh b/scripts/check_layer_size.sh index 90d5861b0..626f9d316 100755 --- a/scripts/check_layer_size.sh +++ b/scripts/check_layer_size.sh @@ -8,8 +8,8 @@ # Compares layer size to threshold, and fails if below that threshold set -e -MAX_LAYER_COMPRESSED_SIZE_KB=$(expr 5 \* 1024) -MAX_LAYER_UNCOMPRESSED_SIZE_KB=$(expr 13 \* 1024) +MAX_LAYER_COMPRESSED_SIZE_KB=$(expr 6 \* 1024) +MAX_LAYER_UNCOMPRESSED_SIZE_KB=$(expr 15 \* 1024) LAYER_FILES_PREFIX="datadog_lambda_py" diff --git a/tests/event_samples/application-load-balancer-mutivalue-headers.json b/tests/event_samples/application-load-balancer-mutivalue-headers.json new file mode 100644 index 000000000..6d446d15c --- /dev/null +++ b/tests/event_samples/application-load-balancer-mutivalue-headers.json @@ -0,0 +1,31 @@ +{ + "requestContext": { + "elb": { + "targetGroupArn": "arn:aws:elasticloadbalancing:us-east-2:123456789012:targetgroup/lambda-xyz/123abc" + } + }, + "httpMethod": "GET", + "path": "/lambda", + "queryStringParameters": { + "query": "1234ABCD" + }, + "multiValueHeaders": { + "accept": ["text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8"], + "accept-encoding": ["gzip"], + "accept-language": ["en-US,en;q=0.9"], + "connection": ["keep-alive"], + "host": ["lambda-alb-123578498.us-east-2.elb.amazonaws.com"], + "upgrade-insecure-requests": ["1"], + "user-agent": ["Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"], + "x-amzn-trace-id": ["Root=1-5c536348-3d683b8b04734faae651f476"], + "x-forwarded-for": ["72.12.164.125"], + "x-forwarded-port": ["80"], + "x-forwarded-proto": ["http"], + "x-imforwards": ["20"], + "x-datadog-trace-id": ["12345"], + "x-datadog-parent-id": ["67890"], + "x-datadog-sampling-priority": ["2"] + }, + "body": "", + "isBase64Encoded": false +} diff --git a/tests/test_asm.py b/tests/test_asm.py new file mode 100644 index 000000000..e57c289fd --- /dev/null +++ b/tests/test_asm.py @@ -0,0 +1,329 @@ +import json +import pytest +from unittest.mock import MagicMock, patch + +from datadog_lambda.asm import asm_start_request, asm_start_response +from datadog_lambda.trigger import parse_event_source, extract_trigger_tags +from tests.utils import get_mock_context + +event_samples = "tests/event_samples/" + + +# Test cases for ASM start request +ASM_START_REQUEST_TEST_CASES = [ + ( + "application_load_balancer", + "application-load-balancer.json", + "72.12.164.125", + "/lambda", + "GET", + "", + False, + {"query": "1234ABCD"}, + None, + None, + ), + ( + "application_load_balancer_multivalue_headers", + "application-load-balancer-mutivalue-headers.json", + "72.12.164.125", + "/lambda", + "GET", + "", + False, + {"query": "1234ABCD"}, + None, + None, + ), + ( + "lambda_function_url", + "lambda-url.json", + "71.195.30.42", + "/", + "GET", + None, + False, + None, + None, + None, + ), + ( + "api_gateway", + "api-gateway.json", + "127.0.0.1", + "/path/to/resource", + "POST", + "eyJ0ZXN0IjoiYm9keSJ9", + True, + {"foo": ["bar"]}, + {"proxy": "/path/to/resource"}, + "/{proxy+}", + ), + ( + "api_gateway_v2_parametrized", + "api-gateway-v2-parametrized.json", + "76.115.124.192", + "/user/42", + "GET", + None, + False, + None, + {"id": "42"}, + "/user/{id}", + ), + ( + "api_gateway_websocket", + "api-gateway-websocket-default.json", + "38.122.226.210", + None, + None, + '"What\'s good in the hood?"', + False, + None, + None, + None, + ), +] + + +# Test cases for ASM start response +ASM_START_RESPONSE_TEST_CASES = [ + ( + "application_load_balancer", + "application-load-balancer.json", + { + "statusCode": 200, + "headers": {"Content-Type": "text/html"}, + }, + "200", + {"Content-Type": "text/html"}, + True, + ), + ( + "application_load_balancer_multivalue_headers", + "application-load-balancer-mutivalue-headers.json", + { + "statusCode": 404, + "multiValueHeaders": { + "Content-Type": ["text/plain"], + "X-Error": ["Not Found"], + }, + }, + "404", + { + "Content-Type": "text/plain", + "X-Error": "Not Found", + }, + True, + ), + ( + "lambda_function_url", + "lambda-url.json", + { + "statusCode": 201, + "headers": { + "Location": "/user/123", + "Content-Type": "application/json", + }, + }, + "201", + { + "Location": "/user/123", + "Content-Type": "application/json", + }, + True, + ), + ( + "api_gateway", + "api-gateway.json", + { + "statusCode": 200, + "headers": { + "Content-Type": "application/json", + "X-Custom-Header": "test-value", + }, + "body": '{"message": "success"}', + }, + "200", + { + "Content-Type": "application/json", + "X-Custom-Header": "test-value", + }, + True, + ), + ( + "api_gateway_v2_parametrized", + "api-gateway-v2-parametrized.json", + { + "statusCode": 200, + "headers": {"Content-Type": "application/json"}, + }, + "200", + {"Content-Type": "application/json"}, + True, + ), + ( + "api_gateway_websocket", + "api-gateway-websocket-default.json", + { + "statusCode": 200, + "headers": {"Content-Type": "text/plain"}, + }, + "200", + {"Content-Type": "text/plain"}, + True, + ), + ( + "non_http_event_s3", + "s3.json", + {"statusCode": 200}, + "200", + {}, + False, # Should not dispatch for non-HTTP events + ), + ( + "api_gateway_v2_string_response", + "api-gateway-v2-parametrized.json", + "Hello, World!", + "200", + {"content-type": "application/json"}, + True, + ), + ( + "api_gateway_v2_dict_response", + "api-gateway-v2-parametrized.json", + {"message": "Hello, World!"}, + "200", + {"content-type": "application/json"}, + True, + ), +] + + +@pytest.mark.parametrize( + "name,file,expected_ip,expected_uri,expected_method,expected_body,expected_base64,expected_query,expected_path_params,expected_route", + ASM_START_REQUEST_TEST_CASES, +) +@patch("datadog_lambda.asm.core") +def test_asm_start_request_parametrized( + mock_core, + name, + file, + expected_ip, + expected_uri, + expected_method, + expected_body, + expected_base64, + expected_query, + expected_path_params, + expected_route, +): + """Test ASM start request for various HTTP event types using parametrization""" + mock_span = MagicMock() + ctx = get_mock_context() + + # Reset mock for each test + mock_core.reset_mock() + mock_span.reset_mock() + + test_file = event_samples + file + with open(test_file, "r") as f: + event = json.load(f) + + event_source = parse_event_source(event) + trigger_tags = extract_trigger_tags(event, ctx) + + asm_start_request(mock_span, event, event_source, trigger_tags) + + # Verify core.dispatch was called + mock_core.dispatch.assert_called_once() + call_args = mock_core.dispatch.call_args + dispatch_args = call_args[0][1] + ( + span, + request_headers, + request_ip, + body, + is_base64_encoded, + raw_uri, + http_route, + http_method, + parsed_query, + request_path_parameters, + ) = dispatch_args + + # Common assertions + assert span == mock_span + assert isinstance(request_headers, dict) + + # Specific assertions based on test case + assert request_ip == expected_ip + assert raw_uri == expected_uri + assert http_method == expected_method + assert body == expected_body + assert is_base64_encoded == expected_base64 + + if expected_query is not None: + assert parsed_query == expected_query + else: + assert parsed_query is None + + if expected_path_params is not None: + assert request_path_parameters == expected_path_params + else: + assert request_path_parameters is None + + # Check route is correctly extracted and passed + assert http_route == expected_route + + # Check IP tags were set if IP is present + if expected_ip: + mock_span.set_tag_str.assert_any_call("http.client_ip", expected_ip) + mock_span.set_tag_str.assert_any_call("network.client.ip", expected_ip) + + +@pytest.mark.parametrize( + "name,event_file,response,status_code,expected_headers,should_dispatch", + ASM_START_RESPONSE_TEST_CASES, +) +@patch("datadog_lambda.asm.core") +def test_asm_start_response_parametrized( + mock_core, + name, + event_file, + response, + status_code, + expected_headers, + should_dispatch, +): + """Test ASM start response for various HTTP event types using parametrization""" + mock_span = MagicMock() + + # Reset mock for each test + mock_core.reset_mock() + mock_span.reset_mock() + + test_file = event_samples + event_file + with open(test_file, "r") as f: + event = json.load(f) + + event_source = parse_event_source(event) + + asm_start_response(mock_span, status_code, event_source, response) + + if should_dispatch: + # Verify core.dispatch was called + mock_core.dispatch.assert_called_once() + call_args = mock_core.dispatch.call_args + assert call_args[0][0] == "aws_lambda.start_response" + + # Extract the dispatched arguments + dispatch_args = call_args[0][1] + span, response_status_code, response_headers = dispatch_args + + assert span == mock_span + assert response_status_code == status_code + assert response_headers == expected_headers + else: + # Verify core.dispatch was not called for non-HTTP events + mock_core.dispatch.assert_not_called() From 495c7704cbace47bc7b6ad87756f9c2857f1dc7c Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Thu, 26 Jun 2025 12:16:07 -0400 Subject: [PATCH 268/403] bugfix: error metrics should be sent during exception handling (#626) Signed-off-by: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> --- datadog_lambda/wrapper.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 29972bf43..98a1e87e3 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -166,10 +166,9 @@ def __call__(self, event, context, **kwargs): self.response = self.func(event, context, **kwargs) return self.response except Exception: - if not should_use_extension: - from datadog_lambda.metric import submit_errors_metric + from datadog_lambda.metric import submit_errors_metric - submit_errors_metric(context) + submit_errors_metric(context) if self.span: self.span.set_traceback() From d72ebaaa960f48d06ba199dd69bef954bf535f92 Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Mon, 30 Jun 2025 14:33:24 -0700 Subject: [PATCH 269/403] fix: call `patch_all` before importing handler code. (#598) * Call `patch_all` before importing handler code. * Remove tests for patch_all. * Move patch_all to init. * Update integration tests. --- datadog_lambda/__init__.py | 7 ++ datadog_lambda/wrapper.py | 3 - .../logs/async-metrics_python310.log | 90 ++++++++------ .../logs/async-metrics_python311.log | 90 ++++++++------ .../logs/async-metrics_python312.log | 90 ++++++++------ .../logs/async-metrics_python313.log | 90 ++++++++------ .../snapshots/logs/async-metrics_python38.log | 90 ++++++++------ .../snapshots/logs/async-metrics_python39.log | 90 ++++++++------ .../snapshots/logs/sync-metrics_python310.log | 117 +++++++++++------- .../snapshots/logs/sync-metrics_python311.log | 117 +++++++++++------- .../snapshots/logs/sync-metrics_python312.log | 117 +++++++++++------- .../snapshots/logs/sync-metrics_python313.log | 117 +++++++++++------- .../snapshots/logs/sync-metrics_python38.log | 117 +++++++++++------- .../snapshots/logs/sync-metrics_python39.log | 117 +++++++++++------- tests/test_wrapper.py | 6 - 15 files changed, 763 insertions(+), 495 deletions(-) diff --git a/datadog_lambda/__init__.py b/datadog_lambda/__init__.py index 378fd15c8..f319d2ed8 100644 --- a/datadog_lambda/__init__.py +++ b/datadog_lambda/__init__.py @@ -17,3 +17,10 @@ initialize_logging(__name__) + + +from datadog_lambda.patch import patch_all # noqa: E402 + +# Patch third-party libraries for tracing, must be done before importing any +# handler code. +patch_all() diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 98a1e87e3..c7474f659 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -26,7 +26,6 @@ Headers, ) from datadog_lambda.module_name import modify_module_name -from datadog_lambda.patch import patch_all from datadog_lambda.span_pointers import calculate_span_pointers from datadog_lambda.tag_object import tag_object from datadog_lambda.tracing import ( @@ -143,8 +142,6 @@ def __init__(self, func): os.environ[DD_REQUESTS_SERVICE_NAME] = os.environ.get( DD_SERVICE, "aws.lambda" ) - # Patch third-party libraries for tracing - patch_all() # Enable LLM Observability if config.llmobs_enabled: diff --git a/tests/integration/snapshots/logs/async-metrics_python310.log b/tests/integration/snapshots/logs/async-metrics_python310.log index 0bd7237c9..bda234df4 100644 --- a/tests/integration/snapshots/logs/async-metrics_python310.log +++ b/tests/integration/snapshots/logs/async-metrics_python310.log @@ -119,7 +119,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -133,7 +133,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -145,7 +146,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -160,7 +161,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -326,7 +328,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -340,7 +342,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -352,7 +355,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -367,7 +370,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -485,7 +489,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -499,7 +503,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -511,7 +516,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -526,7 +531,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -660,7 +666,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -674,7 +680,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -686,7 +693,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -701,7 +708,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -826,7 +834,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -840,7 +848,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -852,7 +861,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -867,7 +876,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1001,7 +1011,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1015,7 +1025,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1027,7 +1038,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1042,7 +1053,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1165,7 +1177,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1179,7 +1191,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1191,7 +1204,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1206,7 +1219,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1328,7 +1342,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1342,7 +1356,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1354,7 +1369,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1369,7 +1384,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1499,7 +1515,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1513,7 +1529,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1525,7 +1542,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1540,7 +1557,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 diff --git a/tests/integration/snapshots/logs/async-metrics_python311.log b/tests/integration/snapshots/logs/async-metrics_python311.log index 8550a0623..fd318de30 100644 --- a/tests/integration/snapshots/logs/async-metrics_python311.log +++ b/tests/integration/snapshots/logs/async-metrics_python311.log @@ -119,7 +119,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -133,7 +133,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -145,7 +146,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -160,7 +161,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -326,7 +328,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -340,7 +342,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -352,7 +355,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -367,7 +370,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -485,7 +489,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -499,7 +503,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -511,7 +516,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -526,7 +531,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -660,7 +666,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -674,7 +680,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -686,7 +693,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -701,7 +708,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -826,7 +834,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -840,7 +848,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -852,7 +861,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -867,7 +876,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1001,7 +1011,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1015,7 +1025,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1027,7 +1038,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1042,7 +1053,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1165,7 +1177,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1179,7 +1191,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1191,7 +1204,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1206,7 +1219,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1328,7 +1342,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1342,7 +1356,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1354,7 +1369,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1369,7 +1384,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1499,7 +1515,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1513,7 +1529,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1525,7 +1542,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1540,7 +1557,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 diff --git a/tests/integration/snapshots/logs/async-metrics_python312.log b/tests/integration/snapshots/logs/async-metrics_python312.log index 57c318abf..b51b6a2d9 100644 --- a/tests/integration/snapshots/logs/async-metrics_python312.log +++ b/tests/integration/snapshots/logs/async-metrics_python312.log @@ -119,7 +119,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -133,7 +133,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -145,7 +146,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -160,7 +161,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -326,7 +328,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -340,7 +342,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -352,7 +355,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -367,7 +370,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -485,7 +489,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -499,7 +503,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -511,7 +516,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -526,7 +531,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -660,7 +666,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -674,7 +680,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -686,7 +693,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -701,7 +708,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -826,7 +834,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -840,7 +848,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -852,7 +861,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -867,7 +876,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1001,7 +1011,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1015,7 +1025,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1027,7 +1038,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1042,7 +1053,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1165,7 +1177,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1179,7 +1191,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1191,7 +1204,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1206,7 +1219,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1328,7 +1342,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1342,7 +1356,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1354,7 +1369,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1369,7 +1384,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1499,7 +1515,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1513,7 +1529,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1525,7 +1542,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1540,7 +1557,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 diff --git a/tests/integration/snapshots/logs/async-metrics_python313.log b/tests/integration/snapshots/logs/async-metrics_python313.log index 9204499bd..89b73e922 100644 --- a/tests/integration/snapshots/logs/async-metrics_python313.log +++ b/tests/integration/snapshots/logs/async-metrics_python313.log @@ -119,7 +119,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -133,7 +133,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -145,7 +146,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -160,7 +161,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -326,7 +328,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -340,7 +342,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -352,7 +355,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -367,7 +370,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -485,7 +489,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -499,7 +503,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -511,7 +516,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -526,7 +531,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -660,7 +666,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -674,7 +680,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -686,7 +693,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -701,7 +708,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -826,7 +834,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -840,7 +848,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -852,7 +861,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -867,7 +876,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1001,7 +1011,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1015,7 +1025,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1027,7 +1038,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1042,7 +1053,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1165,7 +1177,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1179,7 +1191,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1191,7 +1204,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1206,7 +1219,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1328,7 +1342,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1342,7 +1356,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1354,7 +1369,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1369,7 +1384,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1499,7 +1515,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1513,7 +1529,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1525,7 +1542,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1540,7 +1557,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 diff --git a/tests/integration/snapshots/logs/async-metrics_python38.log b/tests/integration/snapshots/logs/async-metrics_python38.log index e6df054c3..ff5e5a60c 100644 --- a/tests/integration/snapshots/logs/async-metrics_python38.log +++ b/tests/integration/snapshots/logs/async-metrics_python38.log @@ -119,7 +119,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -133,7 +133,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -145,7 +146,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -160,7 +161,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -326,7 +328,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -340,7 +342,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -352,7 +355,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -367,7 +370,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -485,7 +489,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -499,7 +503,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -511,7 +516,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -526,7 +531,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -660,7 +666,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -674,7 +680,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -686,7 +693,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -701,7 +708,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -826,7 +834,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -840,7 +848,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -852,7 +861,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -867,7 +876,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1001,7 +1011,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1015,7 +1025,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1027,7 +1038,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1042,7 +1053,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1165,7 +1177,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1179,7 +1191,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1191,7 +1204,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1206,7 +1219,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1328,7 +1342,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1342,7 +1356,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1354,7 +1369,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1369,7 +1384,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1499,7 +1515,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1513,7 +1529,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1525,7 +1542,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1540,7 +1557,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 diff --git a/tests/integration/snapshots/logs/async-metrics_python39.log b/tests/integration/snapshots/logs/async-metrics_python39.log index 9bcb7a859..5e3d46b66 100644 --- a/tests/integration/snapshots/logs/async-metrics_python39.log +++ b/tests/integration/snapshots/logs/async-metrics_python39.log @@ -119,7 +119,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -133,7 +133,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -145,7 +146,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -160,7 +161,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -326,7 +328,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -340,7 +342,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -352,7 +355,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -367,7 +370,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -485,7 +489,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -499,7 +503,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -511,7 +516,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -526,7 +531,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -660,7 +666,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -674,7 +680,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -686,7 +693,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -701,7 +708,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -826,7 +834,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -840,7 +848,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -852,7 +861,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -867,7 +876,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1001,7 +1011,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1015,7 +1025,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1027,7 +1038,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1042,7 +1053,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1165,7 +1177,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1179,7 +1191,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1191,7 +1204,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1206,7 +1219,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1328,7 +1342,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1342,7 +1356,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1354,7 +1369,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1369,7 +1384,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1499,7 +1515,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1513,7 +1529,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1525,7 +1542,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1540,7 +1557,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 diff --git a/tests/integration/snapshots/logs/sync-metrics_python310.log b/tests/integration/snapshots/logs/sync-metrics_python310.log index 40562a6d0..215698312 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python310.log +++ b/tests/integration/snapshots/logs/sync-metrics_python310.log @@ -99,7 +99,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -113,7 +113,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -125,7 +126,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -140,7 +141,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -158,7 +160,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -174,6 +176,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -325,7 +328,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -339,7 +342,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -351,7 +355,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -366,7 +370,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -384,7 +389,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -400,6 +405,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -503,7 +509,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -517,7 +523,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -529,7 +536,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -544,7 +551,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -562,7 +570,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -578,6 +586,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -697,7 +706,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -711,7 +720,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -723,7 +733,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -738,7 +748,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -756,7 +767,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -772,6 +783,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -882,7 +894,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -896,7 +908,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -908,7 +921,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -923,7 +936,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -941,7 +955,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -957,6 +971,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1076,7 +1091,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1090,7 +1105,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1102,7 +1118,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1117,7 +1133,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1135,7 +1152,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -1151,6 +1168,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1259,7 +1277,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1273,7 +1291,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1285,7 +1304,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1300,7 +1319,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1318,7 +1338,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -1334,6 +1354,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1441,7 +1462,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1455,7 +1476,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1467,7 +1489,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1482,7 +1504,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1500,7 +1523,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -1516,6 +1539,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1631,7 +1655,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1645,7 +1669,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1657,7 +1682,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1672,7 +1697,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1690,7 +1716,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -1706,6 +1732,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" diff --git a/tests/integration/snapshots/logs/sync-metrics_python311.log b/tests/integration/snapshots/logs/sync-metrics_python311.log index 52ec4c85a..5fcd504d6 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python311.log +++ b/tests/integration/snapshots/logs/sync-metrics_python311.log @@ -99,7 +99,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -113,7 +113,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -125,7 +126,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -140,7 +141,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -158,7 +160,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -174,6 +176,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -325,7 +328,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -339,7 +342,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -351,7 +355,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -366,7 +370,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -384,7 +389,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -400,6 +405,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -503,7 +509,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -517,7 +523,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -529,7 +536,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -544,7 +551,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -562,7 +570,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -578,6 +586,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -697,7 +706,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -711,7 +720,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -723,7 +733,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -738,7 +748,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -756,7 +767,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -772,6 +783,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -882,7 +894,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -896,7 +908,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -908,7 +921,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -923,7 +936,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -941,7 +955,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -957,6 +971,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1076,7 +1091,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1090,7 +1105,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1102,7 +1118,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1117,7 +1133,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1135,7 +1152,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -1151,6 +1168,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1259,7 +1277,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1273,7 +1291,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1285,7 +1304,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1300,7 +1319,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1318,7 +1338,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -1334,6 +1354,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1441,7 +1462,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1455,7 +1476,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1467,7 +1489,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1482,7 +1504,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1500,7 +1523,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -1516,6 +1539,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1631,7 +1655,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1645,7 +1669,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1657,7 +1682,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1672,7 +1697,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1690,7 +1716,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -1706,6 +1732,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" diff --git a/tests/integration/snapshots/logs/sync-metrics_python312.log b/tests/integration/snapshots/logs/sync-metrics_python312.log index 3ec0f01f7..9a05404ce 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python312.log +++ b/tests/integration/snapshots/logs/sync-metrics_python312.log @@ -99,7 +99,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -113,7 +113,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -125,7 +126,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -140,7 +141,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -158,7 +160,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -174,6 +176,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -325,7 +328,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -339,7 +342,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -351,7 +355,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -366,7 +370,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -384,7 +389,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -400,6 +405,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -503,7 +509,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -517,7 +523,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -529,7 +536,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -544,7 +551,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -562,7 +570,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -578,6 +586,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -697,7 +706,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -711,7 +720,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -723,7 +733,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -738,7 +748,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -756,7 +767,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -772,6 +783,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -882,7 +894,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -896,7 +908,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -908,7 +921,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -923,7 +936,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -941,7 +955,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -957,6 +971,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1076,7 +1091,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1090,7 +1105,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1102,7 +1118,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1117,7 +1133,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1135,7 +1152,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -1151,6 +1168,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1259,7 +1277,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1273,7 +1291,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1285,7 +1304,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1300,7 +1319,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1318,7 +1338,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -1334,6 +1354,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1441,7 +1462,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1455,7 +1476,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1467,7 +1489,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1482,7 +1504,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1500,7 +1523,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -1516,6 +1539,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1631,7 +1655,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1645,7 +1669,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1657,7 +1682,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1672,7 +1697,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1690,7 +1716,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -1706,6 +1732,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" diff --git a/tests/integration/snapshots/logs/sync-metrics_python313.log b/tests/integration/snapshots/logs/sync-metrics_python313.log index d2c20dc04..5d17bed58 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python313.log +++ b/tests/integration/snapshots/logs/sync-metrics_python313.log @@ -99,7 +99,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -113,7 +113,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -125,7 +126,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -140,7 +141,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -158,7 +160,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -174,6 +176,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -325,7 +328,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -339,7 +342,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -351,7 +355,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -366,7 +370,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -384,7 +389,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -400,6 +405,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -503,7 +509,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -517,7 +523,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -529,7 +536,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -544,7 +551,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -562,7 +570,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -578,6 +586,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -697,7 +706,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -711,7 +720,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -723,7 +733,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -738,7 +748,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -756,7 +767,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -772,6 +783,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -882,7 +894,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -896,7 +908,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -908,7 +921,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -923,7 +936,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -941,7 +955,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -957,6 +971,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1076,7 +1091,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1090,7 +1105,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1102,7 +1118,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1117,7 +1133,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1135,7 +1152,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -1151,6 +1168,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1259,7 +1277,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1273,7 +1291,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1285,7 +1304,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1300,7 +1319,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1318,7 +1338,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -1334,6 +1354,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1441,7 +1462,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1455,7 +1476,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1467,7 +1489,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1482,7 +1504,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1500,7 +1523,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -1516,6 +1539,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1631,7 +1655,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1645,7 +1669,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1657,7 +1682,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1672,7 +1697,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1690,7 +1716,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -1706,6 +1732,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" diff --git a/tests/integration/snapshots/logs/sync-metrics_python38.log b/tests/integration/snapshots/logs/sync-metrics_python38.log index 57a354a6d..37ed391e3 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python38.log +++ b/tests/integration/snapshots/logs/sync-metrics_python38.log @@ -99,7 +99,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -113,7 +113,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -125,7 +126,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -140,7 +141,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -158,7 +160,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -174,6 +176,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -325,7 +328,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -339,7 +342,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -351,7 +355,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -366,7 +370,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -384,7 +389,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -400,6 +405,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -503,7 +509,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -517,7 +523,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -529,7 +536,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -544,7 +551,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -562,7 +570,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -578,6 +586,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -697,7 +706,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -711,7 +720,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -723,7 +733,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -738,7 +748,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -756,7 +767,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -772,6 +783,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -882,7 +894,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -896,7 +908,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -908,7 +921,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -923,7 +936,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -941,7 +955,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -957,6 +971,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1076,7 +1091,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1090,7 +1105,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1102,7 +1118,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1117,7 +1133,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1135,7 +1152,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -1151,6 +1168,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1259,7 +1277,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1273,7 +1291,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1285,7 +1304,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1300,7 +1319,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1318,7 +1338,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -1334,6 +1354,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1441,7 +1462,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1455,7 +1476,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1467,7 +1489,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1482,7 +1504,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1500,7 +1523,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -1516,6 +1539,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1631,7 +1655,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1645,7 +1669,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1657,7 +1682,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1672,7 +1697,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1690,7 +1716,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -1706,6 +1732,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" diff --git a/tests/integration/snapshots/logs/sync-metrics_python39.log b/tests/integration/snapshots/logs/sync-metrics_python39.log index 8b7bb31b4..f147744b7 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -99,7 +99,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -113,7 +113,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -125,7 +126,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -140,7 +141,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -158,7 +160,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -174,6 +176,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -325,7 +328,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -339,7 +342,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -351,7 +355,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -366,7 +370,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -384,7 +389,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -400,6 +405,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -503,7 +509,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -517,7 +523,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -529,7 +536,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -544,7 +551,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -562,7 +570,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -578,6 +586,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -697,7 +706,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -711,7 +720,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -723,7 +733,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -738,7 +748,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -756,7 +767,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -772,6 +783,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -882,7 +894,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -896,7 +908,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -908,7 +921,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -923,7 +936,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -941,7 +955,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -957,6 +971,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1076,7 +1091,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1090,7 +1105,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1102,7 +1118,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1117,7 +1133,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1135,7 +1152,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -1151,6 +1168,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1259,7 +1277,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1273,7 +1291,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1285,7 +1304,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1300,7 +1319,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1318,7 +1338,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -1334,6 +1354,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1441,7 +1462,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1455,7 +1476,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1467,7 +1489,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1482,7 +1504,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1500,7 +1523,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -1516,6 +1539,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1631,7 +1655,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1645,7 +1669,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1, @@ -1657,7 +1682,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "GET /", "name": "requests.request", "error": 0, @@ -1672,7 +1697,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "http.useragent": "python-requests/X.X.X", + "_dd.base_service": "integration-tests-python" }, "metrics": { "_dd.measured": 1 @@ -1690,7 +1716,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "integration-tests-python", + "service": "requests", "resource": "POST /api/v1/distribution_points", "name": "requests.request", "error": 0, @@ -1706,6 +1732,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index f0240905a..09f48c8aa 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -45,10 +45,6 @@ def setUp(self): self.mock_inject_correlation_ids = patcher.start() self.addCleanup(patcher.stop) - patcher = patch("datadog_lambda.wrapper.patch_all") - self.mock_patch_all = patcher.start() - self.addCleanup(patcher.stop) - patcher = patch("datadog_lambda.tags.get_cold_start_tag") self.mock_get_cold_start_tag = patcher.start() self.mock_get_cold_start_tag.return_value = "cold_start:true" @@ -117,7 +113,6 @@ def lambda_handler(event, context): ) self.mock_set_correlation_ids.assert_called() self.mock_inject_correlation_ids.assert_called() - self.mock_patch_all.assert_called() def test_datadog_lambda_wrapper_flush_to_log(self): os.environ["DD_FLUSH_TO_LOG"] = "True" @@ -487,7 +482,6 @@ def lambda_handler(event, context): lambda_handler_double_wrapped(lambda_event, get_mock_context()) - self.mock_patch_all.assert_called_once() self.mock_submit_invocations_metric.assert_called_once() def test_dd_requests_service_name_default(self): From ae7df53a7c92a6e64c982f5bbe30ed890dc3d1ff Mon Sep 17 00:00:00 2001 From: Florentin Labelle Date: Fri, 4 Jul 2025 09:10:24 +0200 Subject: [PATCH 270/403] feat(appsec): skip processing spans for events that are not http requests (#627) --- datadog_lambda/asm.py | 10 ++++++++++ datadog_lambda/wrapper.py | 6 +++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/datadog_lambda/asm.py b/datadog_lambda/asm.py index aab0f1e9d..9636760c3 100644 --- a/datadog_lambda/asm.py +++ b/datadog_lambda/asm.py @@ -44,6 +44,16 @@ def _merge_single_and_multi_value_headers( return _to_single_value_headers(merged_headers) +def asm_set_context(event_source: _EventSource): + """Add asm specific items to the ExecutionContext. + + This allows the AppSecSpanProcessor to know information about the event + at the moment the span is created and skip it when not relevant. + """ + if event_source.event_type not in _http_event_types: + core.set_item("appsec_skip_next_lambda_event", True) + + def asm_start_request( span: Span, event: Dict[str, Any], diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index c7474f659..7abe0fc1e 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -9,7 +9,7 @@ from importlib import import_module from time import time_ns -from datadog_lambda.asm import asm_start_response, asm_start_request +from datadog_lambda.asm import asm_set_context, asm_start_response, asm_start_request from datadog_lambda.dsm import set_dsm_context from datadog_lambda.extension import should_use_extension, flush_extension from datadog_lambda.cold_start import ( @@ -239,6 +239,10 @@ def _before(self, event, context): ) if config.data_streams_enabled: set_dsm_context(event, event_source) + + if config.appsec_enabled: + asm_set_context(event_source) + self.span = create_function_execution_span( context=context, function_name=config.function_name, From d2a195e3b4d1dfe7af125837d54f9d50acb20376 Mon Sep 17 00:00:00 2001 From: michael-zhao459 Date: Wed, 9 Jul 2025 17:31:48 -0400 Subject: [PATCH 271/403] feat: lambda support for DSM (#622) * removed current dsm implementation * new dsm lambda implementation * check env variable in proper way * add tests * add more detailed comment to function * fixed lint for tests * remove not needed tests * fix * error handling * fix * some fixes * renamed to extract_context_with_datastreams * changed to explicit check of dsm context * move dsm tests to test_tracing.py * add wanted tests * caught sns -> sqs bug * revert back to original tracing.py implementation * fix lint * revert spacing stuff to original * remove unneccessary checks, still set checkpoints even when dsm context fails to be propagated * remove not needed comment * fixes * lambda functions not allowed by lint * use lambda function, add checks before checkpoint * remove unneccesary import * move if statement with least work first * changed function name to original, arn exception handle w test, return None instead of {} * some fixes * remove comments that are not needed * fix * fix * extra check * remove unneccesary work associated with event_source * fix lint * add tests for empty arn logic * more descriptive name * fix lint * fix * moved arn check to checkpoint, remove comments, add variable dec * kinesis fix, tests fix * remove not needed test * formatting fix * made tests clearer and more comprehensive * fix * made comments more obvious on point of tests * update toml file * edit build make more sense * made sure tests match with table * fix * removed not needed comments * addc comment * add some more kinesis tests * add logger check in exception test cases * fix comment * fix * updated tests to use inner checkpoint check, keep build at <4 * fix * change to 3.10.2 --- datadog_lambda/dsm.py | 38 -- datadog_lambda/tracing.py | 50 +- datadog_lambda/wrapper.py | 3 - pyproject.toml | 2 +- tests/test_dsm.py | 112 ----- tests/test_tracing.py | 932 +++++++++++++++++++++++++++++++++++++- tests/test_wrapper.py | 60 --- 7 files changed, 976 insertions(+), 221 deletions(-) delete mode 100644 datadog_lambda/dsm.py delete mode 100644 tests/test_dsm.py diff --git a/datadog_lambda/dsm.py b/datadog_lambda/dsm.py deleted file mode 100644 index 427f5e479..000000000 --- a/datadog_lambda/dsm.py +++ /dev/null @@ -1,38 +0,0 @@ -from datadog_lambda import logger -from datadog_lambda.trigger import EventTypes - - -def set_dsm_context(event, event_source): - - if event_source.equals(EventTypes.SQS): - _dsm_set_sqs_context(event) - - -def _dsm_set_sqs_context(event): - from datadog_lambda.wrapper import format_err_with_traceback - from ddtrace.internal.datastreams import data_streams_processor - from ddtrace.internal.datastreams.processor import DsmPathwayCodec - from ddtrace.internal.datastreams.botocore import ( - get_datastreams_context, - calculate_sqs_payload_size, - ) - - records = event.get("Records") - if records is None: - return - processor = data_streams_processor() - - for record in records: - try: - queue_arn = record.get("eventSourceARN", "") - - contextjson = get_datastreams_context(record) - payload_size = calculate_sqs_payload_size(record) - - ctx = DsmPathwayCodec.decode(contextjson, processor) - ctx.set_checkpoint( - ["direction:in", f"topic:{queue_arn}", "type:sqs"], - payload_size=payload_size, - ) - except Exception as e: - logger.error(format_err_with_traceback(e)) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 89a4126bc..f40574804 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -67,6 +67,24 @@ LOWER_64_BITS = "LOWER_64_BITS" +def _dsm_set_checkpoint(context_json, event_type, arn): + if not config.data_streams_enabled: + return + + if not arn: + return + + try: + from ddtrace.data_streams import set_consume_checkpoint + + carrier_get = lambda k: context_json and context_json.get(k) # noqa: E731 + set_consume_checkpoint(event_type, arn, carrier_get, manual_checkpoint=False) + except Exception as e: + logger.debug( + f"DSM:Failed to set consume checkpoint for {event_type} {arn}: {e}" + ) + + def _convert_xray_trace_id(xray_trace_id): """ Convert X-Ray trace id (hex)'s last 63 bits to a Datadog trace id (int). @@ -202,7 +220,9 @@ def create_sns_event(message): } -def extract_context_from_sqs_or_sns_event_or_context(event, lambda_context): +def extract_context_from_sqs_or_sns_event_or_context( + event, lambda_context, event_source +): """ Extract Datadog trace context from an SQS event. @@ -214,7 +234,10 @@ def extract_context_from_sqs_or_sns_event_or_context(event, lambda_context): Lambda Context. Falls back to lambda context if no trace data is found in the SQS message attributes. + Set a DSM checkpoint if DSM is enabled and the method for context propagation is supported. """ + source_arn = "" + event_type = "sqs" if event_source.equals(EventTypes.SQS) else "sns" # EventBridge => SQS try: @@ -226,6 +249,7 @@ def extract_context_from_sqs_or_sns_event_or_context(event, lambda_context): try: first_record = event.get("Records")[0] + source_arn = first_record.get("eventSourceARN", "") # logic to deal with SNS => SQS event if "body" in first_record: @@ -241,6 +265,9 @@ def extract_context_from_sqs_or_sns_event_or_context(event, lambda_context): msg_attributes = first_record.get("messageAttributes") if msg_attributes is None: sns_record = first_record.get("Sns") or {} + # SNS->SQS event would extract SNS arn without this check + if event_source.equals(EventTypes.SNS): + source_arn = sns_record.get("TopicArn", "") msg_attributes = sns_record.get("MessageAttributes") or {} dd_payload = msg_attributes.get("_datadog") if dd_payload: @@ -272,8 +299,9 @@ def extract_context_from_sqs_or_sns_event_or_context(event, lambda_context): logger.debug( "Failed to extract Step Functions context from SQS/SNS event." ) - - return propagator.extract(dd_data) + context = propagator.extract(dd_data) + _dsm_set_checkpoint(dd_data, event_type, source_arn) + return context else: # Handle case where trace context is injected into attributes.AWSTraceHeader # example: Root=1-654321ab-000000001234567890abcdef;Parent=0123456789abcdef;Sampled=1 @@ -296,9 +324,13 @@ def extract_context_from_sqs_or_sns_event_or_context(event, lambda_context): span_id=int(x_ray_context["parent_id"], 16), sampling_priority=float(x_ray_context["sampled"]), ) + # Still want to set a DSM checkpoint even if DSM context not propagated + _dsm_set_checkpoint(None, event_type, source_arn) return extract_context_from_lambda_context(lambda_context) except Exception as e: logger.debug("The trace extractor returned with error %s", e) + # Still want to set a DSM checkpoint even if DSM context not propagated + _dsm_set_checkpoint(None, event_type, source_arn) return extract_context_from_lambda_context(lambda_context) @@ -357,9 +389,12 @@ def extract_context_from_eventbridge_event(event, lambda_context): def extract_context_from_kinesis_event(event, lambda_context): """ Extract datadog trace context from a Kinesis Stream's base64 encoded data string + Set a DSM checkpoint if DSM is enabled and the method for context propagation is supported. """ + source_arn = "" try: record = get_first_record(event) + source_arn = record.get("eventSourceARN", "") kinesis = record.get("kinesis") if not kinesis: return extract_context_from_lambda_context(lambda_context) @@ -373,10 +408,13 @@ def extract_context_from_kinesis_event(event, lambda_context): data_obj = json.loads(data_str) dd_ctx = data_obj.get("_datadog") if dd_ctx: - return propagator.extract(dd_ctx) + context = propagator.extract(dd_ctx) + _dsm_set_checkpoint(dd_ctx, "kinesis", source_arn) + return context except Exception as e: logger.debug("The trace extractor returned with error %s", e) - + # Still want to set a DSM checkpoint even if DSM context not propagated + _dsm_set_checkpoint(None, "kinesis", source_arn) return extract_context_from_lambda_context(lambda_context) @@ -594,7 +632,7 @@ def extract_dd_trace_context( ) elif event_source.equals(EventTypes.SNS) or event_source.equals(EventTypes.SQS): context = extract_context_from_sqs_or_sns_event_or_context( - event, lambda_context + event, lambda_context, event_source ) elif event_source.equals(EventTypes.EVENTBRIDGE): context = extract_context_from_eventbridge_event(event, lambda_context) diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 7abe0fc1e..06f8884c1 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -10,7 +10,6 @@ from time import time_ns from datadog_lambda.asm import asm_set_context, asm_start_response, asm_start_request -from datadog_lambda.dsm import set_dsm_context from datadog_lambda.extension import should_use_extension, flush_extension from datadog_lambda.cold_start import ( set_cold_start, @@ -237,8 +236,6 @@ def _before(self, event, context): self.inferred_span = create_inferred_span( event, context, event_source, config.decode_authorizer_context ) - if config.data_streams_enabled: - set_dsm_context(event, event_source) if config.appsec_enabled: asm_set_context(event_source) diff --git a/pyproject.toml b/pyproject.toml index 1d5feb7fd..f8e4d7ef7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -28,7 +28,7 @@ classifiers = [ python = ">=3.8.0,<4" datadog = ">=0.51.0,<1.0.0" wrapt = "^1.11.2" -ddtrace = ">=2.20.0,<4" +ddtrace = ">=3.10.2,<4" ujson = ">=5.9.0" botocore = { version = "^1.34.0", optional = true } requests = { version ="^2.22.0", optional = true } diff --git a/tests/test_dsm.py b/tests/test_dsm.py deleted file mode 100644 index 544212d88..000000000 --- a/tests/test_dsm.py +++ /dev/null @@ -1,112 +0,0 @@ -import unittest -from unittest.mock import patch, MagicMock - -from datadog_lambda.dsm import set_dsm_context, _dsm_set_sqs_context -from datadog_lambda.trigger import EventTypes, _EventSource - - -class TestDsmSQSContext(unittest.TestCase): - def setUp(self): - patcher = patch("datadog_lambda.dsm._dsm_set_sqs_context") - self.mock_dsm_set_sqs_context = patcher.start() - self.addCleanup(patcher.stop) - - patcher = patch("ddtrace.internal.datastreams.data_streams_processor") - self.mock_data_streams_processor = patcher.start() - self.addCleanup(patcher.stop) - - patcher = patch("ddtrace.internal.datastreams.botocore.get_datastreams_context") - self.mock_get_datastreams_context = patcher.start() - self.mock_get_datastreams_context.return_value = {} - self.addCleanup(patcher.stop) - - patcher = patch( - "ddtrace.internal.datastreams.botocore.calculate_sqs_payload_size" - ) - self.mock_calculate_sqs_payload_size = patcher.start() - self.mock_calculate_sqs_payload_size.return_value = 100 - self.addCleanup(patcher.stop) - - patcher = patch("ddtrace.internal.datastreams.processor.DsmPathwayCodec.decode") - self.mock_dsm_pathway_codec_decode = patcher.start() - self.addCleanup(patcher.stop) - - def test_non_sqs_event_source_does_nothing(self): - """Test that non-SQS event sources don't trigger DSM context setting""" - event = {} - # Use Unknown Event Source - event_source = _EventSource(EventTypes.UNKNOWN) - set_dsm_context(event, event_source) - - # DSM context should not be set for non-SQS events - self.mock_dsm_set_sqs_context.assert_not_called() - - def test_sqs_event_with_no_records_does_nothing(self): - """Test that events where Records is None don't trigger DSM processing""" - events_with_no_records = [ - {}, - {"Records": None}, - {"someOtherField": "value"}, - ] - - for event in events_with_no_records: - _dsm_set_sqs_context(event) - self.mock_data_streams_processor.assert_not_called() - - def test_sqs_event_triggers_dsm_sqs_context(self): - """Test that SQS event sources trigger the SQS-specific DSM context function""" - sqs_event = { - "Records": [ - { - "eventSource": "aws:sqs", - "eventSourceARN": "arn:aws:sqs:us-east-1:123456789012:my-queue", - "body": "Hello from SQS!", - } - ] - } - - event_source = _EventSource(EventTypes.SQS) - set_dsm_context(sqs_event, event_source) - - self.mock_dsm_set_sqs_context.assert_called_once_with(sqs_event) - - def test_sqs_multiple_records_process_each_record(self): - """Test that each record in an SQS event gets processed individually""" - multi_record_event = { - "Records": [ - { - "eventSourceARN": "arn:aws:sqs:us-east-1:123456789012:queue1", - "body": "Message 1", - }, - { - "eventSourceARN": "arn:aws:sqs:us-east-1:123456789012:queue2", - "body": "Message 2", - }, - { - "eventSourceARN": "arn:aws:sqs:us-east-1:123456789012:queue3", - "body": "Message 3", - }, - ] - } - - mock_context = MagicMock() - self.mock_dsm_pathway_codec_decode.return_value = mock_context - - _dsm_set_sqs_context(multi_record_event) - - self.assertEqual(mock_context.set_checkpoint.call_count, 3) - - calls = mock_context.set_checkpoint.call_args_list - expected_arns = [ - "arn:aws:sqs:us-east-1:123456789012:queue1", - "arn:aws:sqs:us-east-1:123456789012:queue2", - "arn:aws:sqs:us-east-1:123456789012:queue3", - ] - - for i, call in enumerate(calls): - args, kwargs = call - tags = args[0] - self.assertIn("direction:in", tags) - self.assertIn(f"topic:{expected_arns[i]}", tags) - self.assertIn("type:sqs", tags) - self.assertEqual(kwargs["payload_size"], 100) diff --git a/tests/test_tracing.py b/tests/test_tracing.py index a629343ea..fcedd5164 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -1,3 +1,4 @@ +import base64 import copy import functools import json @@ -6,7 +7,7 @@ import os import unittest -from unittest.mock import Mock, patch, call +from unittest.mock import Mock, patch, call, ANY import ddtrace @@ -41,8 +42,12 @@ service_mapping as global_service_mapping, propagator, emit_telemetry_on_exception_outside_of_handler, + _dsm_set_checkpoint, + extract_context_from_kinesis_event, + extract_context_from_sqs_or_sns_event_or_context, ) +from datadog_lambda.trigger import parse_event_source from tests.utils import get_mock_context @@ -2438,3 +2443,928 @@ def test_exception_outside_handler_tracing_disabled( mock_submit_errors_metric.assert_called_once_with(None) mock_trace.assert_not_called() + + +class TestExtractDDContextWithDSMLogic(unittest.TestCase): + def setUp(self): + checkpoint_patcher = patch("ddtrace.data_streams.set_consume_checkpoint") + self.mock_checkpoint = checkpoint_patcher.start() + self.addCleanup(checkpoint_patcher.stop) + self.lambda_context = get_mock_context() + config_patcher = patch( + "datadog_lambda.config.Config.data_streams_enabled", True + ) + config_patcher.start() + self.addCleanup(config_patcher.stop) + + # SQS TESTS + + def test_sqs_context_propagated_string_value(self): + dd_data = {"dd-pathway-ctx-base64": "12345"} + dd_json_data = json.dumps(dd_data) + + event = { + "Records": [ + { + "eventSourceARN": "arn:aws:sqs:us-east-1:123456789012:test-queue", + "messageAttributes": { + "_datadog": {"dataType": "String", "stringValue": dd_json_data} + }, + "eventSource": "aws:sqs", + } + ] + } + + extract_context_from_sqs_or_sns_event_or_context( + event, self.lambda_context, parse_event_source(event) + ) + + self.assertEqual(self.mock_checkpoint.call_count, 1) + args, _ = self.mock_checkpoint.call_args + self.assertEqual(args[0], "sqs") + self.assertEqual(args[1], "arn:aws:sqs:us-east-1:123456789012:test-queue") + carrier_get = args[2] + self.assertEqual(carrier_get("dd-pathway-ctx-base64"), "12345") + + def test_sqs_context_propagated_binary_value(self): + dd_data = {"dd-pathway-ctx-base64": "12345"} + dd_json_data = json.dumps(dd_data) + encoded_data = base64.b64encode(dd_json_data.encode()).decode() + + event = { + "Records": [ + { + "eventSourceARN": "arn:aws:sqs:us-east-1:123456789012:test-queue", + "messageAttributes": { + "_datadog": {"dataType": "Binary", "binaryValue": encoded_data} + }, + "eventSource": "aws:sqs", + } + ] + } + + extract_context_from_sqs_or_sns_event_or_context( + event, self.lambda_context, parse_event_source(event) + ) + + self.assertEqual(self.mock_checkpoint.call_count, 1) + args, _ = self.mock_checkpoint.call_args + self.assertEqual(args[0], "sqs") + self.assertEqual(args[1], "arn:aws:sqs:us-east-1:123456789012:test-queue") + carrier_get = args[2] + self.assertEqual(carrier_get("dd-pathway-ctx-base64"), "12345") + + def test_sqs_no_datadog_message_attribute(self): + event = { + "Records": [ + { + "eventSourceARN": "arn:aws:sqs:us-east-1:123456789012:test-queue", + "messageAttributes": {}, # No _datadog key + "eventSource": "aws:sqs", + } + ] + } + + extract_context_from_sqs_or_sns_event_or_context( + event, self.lambda_context, parse_event_source(event) + ) + self.assertEqual(self.mock_checkpoint.call_count, 1) + args, _ = self.mock_checkpoint.call_args + self.assertEqual(args[0], "sqs") + self.assertEqual(args[1], "arn:aws:sqs:us-east-1:123456789012:test-queue") + carrier_get = args[2] + # None indicates no DSM context propagation + self.assertEqual(carrier_get("dd-pathway-ctx-base64"), None) + + def test_sqs_empty_datadog_message_attribute(self): + event = { + "Records": [ + { + "eventSourceARN": "arn:aws:sqs:us-east-1:123456789012:test-queue", + "messageAttributes": { + "_datadog": { + "dataType": "String", + "stringValue": "null", + } # json.loads("null") => None + }, + "eventSource": "aws:sqs", + } + ] + } + + extract_context_from_sqs_or_sns_event_or_context( + event, self.lambda_context, parse_event_source(event) + ) + self.assertEqual(self.mock_checkpoint.call_count, 1) + args, _ = self.mock_checkpoint.call_args + self.assertEqual(args[0], "sqs") + self.assertEqual(args[1], "arn:aws:sqs:us-east-1:123456789012:test-queue") + carrier_get = args[2] + # None indicates no DSM context propagation + self.assertEqual(carrier_get("dd-pathway-ctx-base64"), None) + + def test_sqs_no_DSM_context_in_message_attribute(self): + dd_data = {"NOT-DSM-KEY": "12345"} + dd_json_data = json.dumps(dd_data) + event = { + "Records": [ + { + "eventSourceARN": "arn:aws:sqs:us-east-1:123456789012:test-queue", + "messageAttributes": { + "_datadog": {"dataType": "String", "stringValue": dd_json_data} + }, + "eventSource": "aws:sqs", + } + ] + } + + extract_context_from_sqs_or_sns_event_or_context( + event, self.lambda_context, parse_event_source(event) + ) + + self.assertEqual(self.mock_checkpoint.call_count, 1) + args, _ = self.mock_checkpoint.call_args + self.assertEqual(args[0], "sqs") + self.assertEqual(args[1], "arn:aws:sqs:us-east-1:123456789012:test-queue") + carrier_get = args[2] + # None indicates no DSM context propagation + self.assertEqual(carrier_get("dd-pathway-ctx-base64"), None) + + @patch("datadog_lambda.tracing.logger") + def test_sqs_invalid_datadog_message_attribute(self, mock_logger): + test_cases = [ + { + "name": "invalid_base64", + "event": { + "Records": [ + { + "eventSourceARN": "arn:aws:sqs:us-east-1:123456789012:test-queue", + "messageAttributes": { + "_datadog": { + "dataType": "Binary", + "binaryValue": "invalid-base64", + } + }, + "eventSource": "aws:sqs", + } + ] + }, + "expected_log": ("The trace extractor returned with error %s", ANY), + }, + { + "name": "unsupported_datatype", + "event": { + "Records": [ + { + "eventSourceARN": "arn:aws:sqs:us-east-1:123456789012:test-queue", + "messageAttributes": { + "_datadog": { + "dataType": "Number", + "numberValue": 123, + } # Unsupported type + }, + "eventSource": "aws:sqs", + } + ] + }, + "expected_log": ( + "Datadog Lambda Python only supports extracting trace" + "context from String or Binary SQS/SNS message attributes", + ), + }, + ] + + for test_case in test_cases: + with self.subTest(test_case=test_case["name"]): + mock_logger.reset_mock() + self.mock_checkpoint.reset_mock() + + extract_context_from_sqs_or_sns_event_or_context( + test_case["event"], + self.lambda_context, + parse_event_source(test_case["event"]), + ) + + # Exception triggers logger + mock_logger.debug.assert_any_call(*test_case["expected_log"]) + + self.assertEqual(self.mock_checkpoint.call_count, 1) + args, _ = self.mock_checkpoint.call_args + self.assertEqual(args[0], "sqs") + self.assertEqual( + args[1], "arn:aws:sqs:us-east-1:123456789012:test-queue" + ) + carrier_get = args[2] + # None indicates no DSM context propagation + self.assertEqual(carrier_get("dd-pathway-ctx-base64"), None) + + def test_sqs_source_arn_not_found(self): + event = { + "Records": [ + { + "eventSourceARN": "", + "messageAttributes": {}, + "eventSource": "aws:sqs", + } + ] + } + + extract_context_from_sqs_or_sns_event_or_context( + event, self.lambda_context, parse_event_source(event) + ) + + self.mock_checkpoint.assert_not_called() + + @patch("datadog_lambda.config.Config.data_streams_enabled", False) + def test_sqs_data_streams_disabled(self): + context_json = {"dd-pathway-ctx-base64": "12345"} + event_type = "sqs" + arn = "arn:aws:sqs:us-east-1:123456789012:test-queue" + + _dsm_set_checkpoint(context_json, event_type, arn) + + self.mock_checkpoint.assert_not_called() + + # SNS TESTS + + def test_sns_context_propagated_string_value(self): + dd_data = {"dd-pathway-ctx-base64": "12345"} + dd_json_data = json.dumps(dd_data) + + event = { + "Records": [ + { + "eventSourceARN": "", + "Sns": { + "TopicArn": "arn:aws:sns:us-east-1:123456789012:test-topic", + "MessageAttributes": { + "_datadog": {"Type": "String", "Value": dd_json_data} + }, + }, + "eventSource": "aws:sns", + } + ] + } + + extract_context_from_sqs_or_sns_event_or_context( + event, self.lambda_context, parse_event_source(event) + ) + + self.assertEqual(self.mock_checkpoint.call_count, 1) + args, _ = self.mock_checkpoint.call_args + self.assertEqual(args[0], "sns") + self.assertEqual(args[1], "arn:aws:sns:us-east-1:123456789012:test-topic") + carrier_get = args[2] + self.assertEqual(carrier_get("dd-pathway-ctx-base64"), "12345") + + def test_sns_context_propagated_binary_value(self): + dd_data = {"dd-pathway-ctx-base64": "12345"} + dd_json_data = json.dumps(dd_data) + encoded_data = base64.b64encode(dd_json_data.encode()).decode() + + event = { + "Records": [ + { + "eventSourceARN": "", + "Sns": { + "TopicArn": "arn:aws:sns:us-east-1:123456789012:test-topic", + "MessageAttributes": { + "_datadog": {"Type": "Binary", "Value": encoded_data} + }, + }, + "eventSource": "aws:sns", + } + ] + } + + extract_context_from_sqs_or_sns_event_or_context( + event, self.lambda_context, parse_event_source(event) + ) + + self.assertEqual(self.mock_checkpoint.call_count, 1) + args, _ = self.mock_checkpoint.call_args + self.assertEqual(args[0], "sns") + self.assertEqual(args[1], "arn:aws:sns:us-east-1:123456789012:test-topic") + carrier_get = args[2] + self.assertEqual(carrier_get("dd-pathway-ctx-base64"), "12345") + + def test_sns_no_datadog_message_attribute(self): + event = { + "Records": [ + { + "Sns": { + "TopicArn": "arn:aws:sns:us-east-1:123456789012:test-topic", + "MessageAttributes": {}, # No _datadog key + }, + "eventSource": "aws:sns", + } + ] + } + + extract_context_from_sqs_or_sns_event_or_context( + event, self.lambda_context, parse_event_source(event) + ) + self.assertEqual(self.mock_checkpoint.call_count, 1) + args, _ = self.mock_checkpoint.call_args + self.assertEqual(args[0], "sns") + self.assertEqual(args[1], "arn:aws:sns:us-east-1:123456789012:test-topic") + carrier_get = args[2] + # None indicates no DSM context propagation + self.assertEqual(carrier_get("dd-pathway-ctx-base64"), None) + + def test_sns_empty_datadog_message_attribute(self): + event = { + "Records": [ + { + "Sns": { + "TopicArn": "arn:aws:sns:us-east-1:123456789012:test-topic", + "MessageAttributes": { + "_datadog": { + "Type": "String", + "Value": "null", + } # json.loads("null") => None + }, + }, + "eventSource": "aws:sns", + } + ] + } + + extract_context_from_sqs_or_sns_event_or_context( + event, self.lambda_context, parse_event_source(event) + ) + self.assertEqual(self.mock_checkpoint.call_count, 1) + args, _ = self.mock_checkpoint.call_args + self.assertEqual(args[0], "sns") + self.assertEqual(args[1], "arn:aws:sns:us-east-1:123456789012:test-topic") + carrier_get = args[2] + # None indicates no DSM context propagation + self.assertEqual(carrier_get("dd-pathway-ctx-base64"), None) + + def test_sns_no_DSM_context_in_message_attribute(self): + dd_data = {"NOT-DSM-KEY": "12345"} + dd_json_data = json.dumps(dd_data) + + event = { + "Records": [ + { + "eventSourceARN": "", + "Sns": { + "TopicArn": "arn:aws:sns:us-east-1:123456789012:test-topic", + "MessageAttributes": { + "_datadog": {"Type": "String", "Value": dd_json_data} + }, + }, + "eventSource": "aws:sns", + } + ] + } + + extract_context_from_sqs_or_sns_event_or_context( + event, self.lambda_context, parse_event_source(event) + ) + + self.assertEqual(self.mock_checkpoint.call_count, 1) + args, _ = self.mock_checkpoint.call_args + self.assertEqual(args[0], "sns") + self.assertEqual(args[1], "arn:aws:sns:us-east-1:123456789012:test-topic") + carrier_get = args[2] + # None indicates no DSM context propagation + self.assertEqual(carrier_get("dd-pathway-ctx-base64"), None) + + @patch("datadog_lambda.tracing.logger") + def test_sns_invalid_datadog_message_attribute(self, mock_logger): + test_cases = [ + { + "name": "invalid_base64", + "event": { + "Records": [ + { + "Sns": { + "TopicArn": "arn:aws:sns:us-east-1:123456789012:test-topic", + "MessageAttributes": { + "_datadog": { + "Type": "Binary", + "Value": "invalid-base64", + } + }, + }, + "eventSource": "aws:sns", + } + ] + }, + "expected_log": ("The trace extractor returned with error %s", ANY), + }, + { + "name": "unsupported_datatype", + "event": { + "Records": [ + { + "Sns": { + "TopicArn": "arn:aws:sns:us-east-1:123456789012:test-topic", + "MessageAttributes": { + "_datadog": { + "Type": "Number", + "numberValue": 123, + } # Unsupported type + }, + }, + "eventSource": "aws:sns", + } + ] + }, + "expected_log": ( + "Datadog Lambda Python only supports extracting trace" + "context from String or Binary SQS/SNS message attributes", + ), + }, + ] + + for test_case in test_cases: + with self.subTest(test_case=test_case["name"]): + mock_logger.reset_mock() + self.mock_checkpoint.reset_mock() + + extract_context_from_sqs_or_sns_event_or_context( + test_case["event"], + self.lambda_context, + parse_event_source(test_case["event"]), + ) + + # Exception triggers logger + mock_logger.debug.assert_any_call(*test_case["expected_log"]) + + self.assertEqual(self.mock_checkpoint.call_count, 1) + args, _ = self.mock_checkpoint.call_args + self.assertEqual(args[0], "sns") + self.assertEqual( + args[1], "arn:aws:sns:us-east-1:123456789012:test-topic" + ) + carrier_get = args[2] + # None indicates no DSM context propagation + self.assertEqual(carrier_get("dd-pathway-ctx-base64"), None) + + def test_sns_source_arn_not_found(self): + event = { + "Records": [ + { + "Sns": { + "TopicArn": "", + "MessageAttributes": {}, + }, + "eventSource": "aws:sns", + "eventSourceARN": "", + } + ] + } + + extract_context_from_sqs_or_sns_event_or_context( + event, self.lambda_context, parse_event_source(event) + ) + + self.mock_checkpoint.assert_not_called() + + @patch("datadog_lambda.config.Config.data_streams_enabled", False) + def test_sns_data_streams_disabled(self): + context_json = {"dd-pathway-ctx-base64": "12345"} + event_type = "sns" + arn = "arn:aws:sns:us-east-1:123456789012:test-topic" + + _dsm_set_checkpoint(context_json, event_type, arn) + + self.mock_checkpoint.assert_not_called() + + # SNS -> SQS TESTS + + def test_sns_to_sqs_context_propagated_string_value(self): + dd_data = {"dd-pathway-ctx-base64": "12345"} + dd_json_data = json.dumps(dd_data) + + sns_notification = { + "Type": "Notification", + "TopicArn": "arn:aws:sns:us-east-1:123456789012:test-topic", + "MessageAttributes": { + "_datadog": {"Type": "String", "Value": dd_json_data} + }, + "Message": "test message", + } + + event = { + "Records": [ + { + "eventSourceARN": "arn:aws:sqs:us-east-1:123456789012:test-queue", + "body": json.dumps(sns_notification), + "eventSource": "aws:sqs", + } + ] + } + + extract_context_from_sqs_or_sns_event_or_context( + event, self.lambda_context, parse_event_source(event) + ) + + self.assertEqual(self.mock_checkpoint.call_count, 1) + args, _ = self.mock_checkpoint.call_args + self.assertEqual(args[0], "sqs") + # Should use SQS ARN, not SNS ARN + self.assertEqual(args[1], "arn:aws:sqs:us-east-1:123456789012:test-queue") + carrier_get = args[2] + self.assertEqual(carrier_get("dd-pathway-ctx-base64"), "12345") + + def test_sns_to_sqs_context_propagated_binary_value(self): + dd_data = {"dd-pathway-ctx-base64": "12345"} + dd_json_data = json.dumps(dd_data) + encoded_data = base64.b64encode(dd_json_data.encode()).decode() + + sns_notification = { + "Type": "Notification", + "TopicArn": "arn:aws:sns:us-east-1:123456789012:test-topic", + "MessageAttributes": { + "_datadog": {"Type": "Binary", "Value": encoded_data} + }, + "Message": "test message", + } + + event = { + "Records": [ + { + "eventSourceARN": "arn:aws:sqs:us-east-1:123456789012:test-queue", + "body": json.dumps(sns_notification), + "eventSource": "aws:sqs", + } + ] + } + + extract_context_from_sqs_or_sns_event_or_context( + event, self.lambda_context, parse_event_source(event) + ) + self.assertEqual(self.mock_checkpoint.call_count, 1) + args, _ = self.mock_checkpoint.call_args + self.assertEqual(args[0], "sqs") + # Should use SQS ARN, not SNS ARN + self.assertEqual(args[1], "arn:aws:sqs:us-east-1:123456789012:test-queue") + carrier_get = args[2] + self.assertEqual(carrier_get("dd-pathway-ctx-base64"), "12345") + + def test_sns_to_sqs_no_datadog_message_attribute(self): + sns_notification = { + "Type": "Notification", + "TopicArn": "arn:aws:sns:us-east-1:123456789012:test-topic", + "MessageAttributes": {}, # No _datadog key + "Message": "test message", + } + + event = { + "Records": [ + { + "eventSourceARN": "arn:aws:sqs:us-east-1:123456789012:test-queue", + "body": json.dumps(sns_notification), + "eventSource": "aws:sqs", + } + ] + } + + extract_context_from_sqs_or_sns_event_or_context( + event, self.lambda_context, parse_event_source(event) + ) + self.assertEqual(self.mock_checkpoint.call_count, 1) + args, _ = self.mock_checkpoint.call_args + self.assertEqual(args[0], "sqs") + # Should use SQS ARN, not SNS ARN + self.assertEqual(args[1], "arn:aws:sqs:us-east-1:123456789012:test-queue") + carrier_get = args[2] + # None indicates no DSM context propagation + self.assertEqual(carrier_get("dd-pathway-ctx-base64"), None) + + def test_sns_to_sqs_empty_datadog_message_attribute(self): + sns_notification = { + "Type": "Notification", + "TopicArn": "arn:aws:sns:us-east-1:123456789012:test-topic", + "MessageAttributes": { + "_datadog": { + "Type": "String", + "Value": "null", + } # json.loads("null") => None + }, + "Message": "test message", + } + + event = { + "Records": [ + { + "eventSourceARN": "arn:aws:sqs:us-east-1:123456789012:test-queue", + "body": json.dumps(sns_notification), + "eventSource": "aws:sqs", + } + ] + } + + extract_context_from_sqs_or_sns_event_or_context( + event, self.lambda_context, parse_event_source(event) + ) + self.assertEqual(self.mock_checkpoint.call_count, 1) + args, _ = self.mock_checkpoint.call_args + self.assertEqual(args[0], "sqs") + # Should use SQS ARN, not SNS ARN + self.assertEqual(args[1], "arn:aws:sqs:us-east-1:123456789012:test-queue") + carrier_get = args[2] + # None indicates no DSM context propagation + self.assertEqual(carrier_get("dd-pathway-ctx-base64"), None) + + def test_sns_to_sqs_no_DSM_context_in_message_attribute(self): + dd_data = {"NOT-DSM-KEY": "12345"} + dd_json_data = json.dumps(dd_data) + encoded_data = base64.b64encode(dd_json_data.encode()).decode() + + sns_notification = { + "Type": "Notification", + "TopicArn": "arn:aws:sns:us-east-1:123456789012:test-topic", + "MessageAttributes": { + "_datadog": {"Type": "Binary", "Value": encoded_data} + }, + "Message": "test message", + } + + event = { + "Records": [ + { + "eventSourceARN": "arn:aws:sqs:us-east-1:123456789012:test-queue", + "body": json.dumps(sns_notification), + "eventSource": "aws:sqs", + } + ] + } + + extract_context_from_sqs_or_sns_event_or_context( + event, self.lambda_context, parse_event_source(event) + ) + + self.assertEqual(self.mock_checkpoint.call_count, 1) + args, _ = self.mock_checkpoint.call_args + self.assertEqual(args[0], "sqs") + # Should use SQS ARN, not SNS ARN + self.assertEqual(args[1], "arn:aws:sqs:us-east-1:123456789012:test-queue") + carrier_get = args[2] + # None indicates no DSM context propagation + self.assertEqual(carrier_get("dd-pathway-ctx-base64"), None) + + @patch("datadog_lambda.tracing.logger") + def test_sns_to_sqs_invalid_datadog_message_attribute(self, mock_logger): + test_cases = [ + { + "name": "invalid_base64", + "sns_notification": { + "Type": "Notification", + "TopicArn": "arn:aws:sns:us-east-1:123456789012:test-topic", + "MessageAttributes": { + "_datadog": {"Type": "Binary", "Value": "not-base64"} + }, + "Message": "test message", + }, + "expected_log": ("The trace extractor returned with error %s", ANY), + }, + { + "name": "unsupported_datatype", + "sns_notification": { + "Type": "Notification", + "TopicArn": "arn:aws:sns:us-east-1:123456789012:test-topic", + "MessageAttributes": { + "_datadog": { + "Type": "Number", + "numberValue": 123, + } # Unsupported type + }, + "Message": "test message", + }, + "expected_log": ( + "Datadog Lambda Python only supports extracting trace" + "context from String or Binary SQS/SNS message attributes", + ), + }, + ] + + for test_case in test_cases: + with self.subTest(test_case=test_case["name"]): + mock_logger.reset_mock() + self.mock_checkpoint.reset_mock() + + event = { + "Records": [ + { + "eventSourceARN": "arn:aws:sqs:us-east-1:123456789012:test-queue", + "body": json.dumps(test_case["sns_notification"]), + "eventSource": "aws:sqs", + } + ] + } + + extract_context_from_sqs_or_sns_event_or_context( + event, self.lambda_context, parse_event_source(event) + ) + + # Exception triggers logger + mock_logger.debug.assert_any_call(*test_case["expected_log"]) + + self.assertEqual(self.mock_checkpoint.call_count, 1) + args, _ = self.mock_checkpoint.call_args + self.assertEqual(args[0], "sqs") + # Should use SQS ARN, not SNS ARN + self.assertEqual( + args[1], "arn:aws:sqs:us-east-1:123456789012:test-queue" + ) + carrier_get = args[2] + # None indicates no DSM context propagation + self.assertEqual(carrier_get("dd-pathway-ctx-base64"), None) + + def test_sns_to_sqs_source_arn_not_found(self): + sns_notification = { + "Type": "Notification", + "TopicArn": "arn:aws:sns:us-east-1:123456789012:test-topic", + "MessageAttributes": {}, + "Message": "test message", + } + + event = { + "Records": [ + { + "eventSourceARN": "", # Empty SQS ARN + "body": json.dumps(sns_notification), + "eventSource": "aws:sqs", + } + ] + } + + extract_context_from_sqs_or_sns_event_or_context( + event, self.lambda_context, parse_event_source(event) + ) + + self.mock_checkpoint.assert_not_called() + + @patch("datadog_lambda.config.Config.data_streams_enabled", False) + def test_sns_to_sqs_data_streams_disabled(self): + context_json = {"dd-pathway-ctx-base64": "12345"} + event_type = "sqs" + arn = "arn:aws:sqs:us-east-1:123456789012:test-queue" + + _dsm_set_checkpoint(context_json, event_type, arn) + + self.mock_checkpoint.assert_not_called() + + # KINESIS TESTS + + def test_kinesis_context_propagated_binary_value(self): + dd_data = {"dd-pathway-ctx-base64": "12345"} + kinesis_data = {"_datadog": dd_data, "message": "test"} + kinesis_data_str = json.dumps(kinesis_data) + encoded_data = base64.b64encode(kinesis_data_str.encode()).decode() + + event = { + "Records": [ + { + "eventSourceARN": "arn:aws:kinesis:us-east-1:123456789012:stream/test-stream", + "kinesis": {"data": encoded_data}, + } + ] + } + + extract_context_from_kinesis_event(event, self.lambda_context) + + self.assertEqual(self.mock_checkpoint.call_count, 1) + args, _ = self.mock_checkpoint.call_args + self.assertEqual(args[0], "kinesis") + self.assertEqual( + args[1], "arn:aws:kinesis:us-east-1:123456789012:stream/test-stream" + ) + carrier_get = args[2] + self.assertEqual(carrier_get("dd-pathway-ctx-base64"), "12345") + + def test_kinesis_no_datadog_message_attribute(self): + kinesis_data = {"message": "test"} # No _datadog key + kinesis_data_str = json.dumps(kinesis_data) + encoded_data = base64.b64encode(kinesis_data_str.encode()).decode() + + event = { + "Records": [ + { + "eventSourceARN": "arn:aws:kinesis:us-east-1:123456789012:stream/test-stream", + "kinesis": {"data": encoded_data}, + } + ] + } + + extract_context_from_kinesis_event(event, self.lambda_context) + + self.assertEqual(self.mock_checkpoint.call_count, 1) + args, _ = self.mock_checkpoint.call_args + self.assertEqual(args[0], "kinesis") + self.assertEqual( + args[1], "arn:aws:kinesis:us-east-1:123456789012:stream/test-stream" + ) + carrier_get = args[2] + # None indicates no DSM context propagation + self.assertEqual(carrier_get("dd-pathway-ctx-base64"), None) + + def test_kinesis_empty_message_attribute(self): + kinesis_data = {"_datadog": None, "message": "test"} # _datadog is None + kinesis_data_str = json.dumps(kinesis_data) + encoded_data = base64.b64encode(kinesis_data_str.encode()).decode() + + event = { + "Records": [ + { + "eventSourceARN": "arn:aws:kinesis:us-east-1:123456789012:stream/test-stream", + "kinesis": {"data": encoded_data}, + } + ] + } + + extract_context_from_kinesis_event(event, self.lambda_context) + self.assertEqual(self.mock_checkpoint.call_count, 1) + args, _ = self.mock_checkpoint.call_args + self.assertEqual(args[0], "kinesis") + self.assertEqual( + args[1], "arn:aws:kinesis:us-east-1:123456789012:stream/test-stream" + ) + carrier_get = args[2] + # None indicates no DSM context propagation + self.assertEqual(carrier_get("dd-pathway-ctx-base64"), None) + + def test_kinesis_no_DSM_context_in_message_attribute(self): + dd_data = {"NOT-DSM-KEY": "12345"} + kinesis_data = {"_datadog": dd_data, "message": "test"} + kinesis_data_str = json.dumps(kinesis_data) + encoded_data = base64.b64encode(kinesis_data_str.encode()).decode() + + event = { + "Records": [ + { + "eventSourceARN": "arn:aws:kinesis:us-east-1:123456789012:stream/test-stream", + "kinesis": {"data": encoded_data}, + } + ] + } + + extract_context_from_kinesis_event(event, self.lambda_context) + + self.assertEqual(self.mock_checkpoint.call_count, 1) + args, _ = self.mock_checkpoint.call_args + self.assertEqual(args[0], "kinesis") + self.assertEqual( + args[1], "arn:aws:kinesis:us-east-1:123456789012:stream/test-stream" + ) + carrier_get = args[2] + # None indicates no DSM context propagation + self.assertEqual(carrier_get("dd-pathway-ctx-base64"), None) + + @patch("datadog_lambda.tracing.logger") + def test_kinesis_invalid_datadog_message_attribute(self, mock_logger): + event = { + "Records": [ + { + "eventSourceARN": "arn:aws:kinesis:us-east-1:123456789012:stream/test-stream", + "kinesis": {"data": "invalid-base64"}, + } + ] + } + + extract_context_from_kinesis_event(event, self.lambda_context) + # Exception triggers logger + mock_logger.debug.assert_any_call( + "The trace extractor returned with error %s", + ANY, + ) + self.assertEqual(self.mock_checkpoint.call_count, 1) + args, _ = self.mock_checkpoint.call_args + self.assertEqual(args[0], "kinesis") + self.assertEqual( + args[1], "arn:aws:kinesis:us-east-1:123456789012:stream/test-stream" + ) + carrier_get = args[2] + # None indicates no DSM context propagation + self.assertEqual(carrier_get("dd-pathway-ctx-base64"), None) + + def test_kinesis_source_arn_not_found(self): + kinesis_data = {"message": "test"} + kinesis_data_str = json.dumps(kinesis_data) + encoded_data = base64.b64encode(kinesis_data_str.encode()).decode() + + event = { + "Records": [ + { + "eventSourceARN": "", + "kinesis": {"data": encoded_data}, + } + ] + } + + extract_context_from_kinesis_event(event, self.lambda_context) + + self.mock_checkpoint.assert_not_called() + + @patch("datadog_lambda.config.Config.data_streams_enabled", False) + def test_kinesis_data_streams_disabled(self): + context_json = {"dd-pathway-ctx-base64": "12345"} + event_type = "kinesis" + arn = "arn:aws:kinesis:us-east-1:123456789012:stream/test-stream" + + _dsm_set_checkpoint(context_json, event_type, arn) diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index 09f48c8aa..fc081e904 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -73,10 +73,6 @@ def setUp(self): self.mock_dd_lambda_layer_tag = patcher.start() self.addCleanup(patcher.stop) - patcher = patch("datadog_lambda.wrapper.set_dsm_context") - self.mock_set_dsm_context = patcher.start() - self.addCleanup(patcher.stop) - @patch("datadog_lambda.config.Config.trace_enabled", False) def test_datadog_lambda_wrapper(self): @wrapper.datadog_lambda_wrapper @@ -556,62 +552,6 @@ def return_type_test(event, context): self.assertEqual(result, test_result) self.assertFalse(MockPrintExc.called) - def test_set_dsm_context_called_when_DSM_and_tracing_enabled(self): - os.environ["DD_DATA_STREAMS_ENABLED"] = "true" - os.environ["DD_TRACE_ENABLED"] = "true" - - @wrapper.datadog_lambda_wrapper - def lambda_handler(event, context): - return "ok" - - result = lambda_handler({}, get_mock_context()) - self.assertEqual(result, "ok") - self.mock_set_dsm_context.assert_called_once() - - del os.environ["DD_DATA_STREAMS_ENABLED"] - - def test_set_dsm_context_not_called_when_only_DSM_enabled(self): - os.environ["DD_DATA_STREAMS_ENABLED"] = "true" - os.environ["DD_TRACE_ENABLED"] = "false" - - @wrapper.datadog_lambda_wrapper - def lambda_handler(event, context): - return "ok" - - result = lambda_handler({}, get_mock_context()) - self.assertEqual(result, "ok") - self.mock_set_dsm_context.assert_not_called() - - del os.environ["DD_DATA_STREAMS_ENABLED"] - - def test_set_dsm_context_not_called_when_only_tracing_enabled(self): - os.environ["DD_DATA_STREAMS_ENABLED"] = "false" - os.environ["DD_TRACE_ENABLED"] = "true" - - @wrapper.datadog_lambda_wrapper - def lambda_handler(event, context): - return "ok" - - result = lambda_handler({}, get_mock_context()) - self.assertEqual(result, "ok") - self.mock_set_dsm_context.assert_not_called() - - del os.environ["DD_DATA_STREAMS_ENABLED"] - - def test_set_dsm_context_not_called_when_tracing_and_DSM_disabled(self): - os.environ["DD_DATA_STREAMS_ENABLED"] = "false" - os.environ["DD_TRACE_ENABLED"] = "false" - - @wrapper.datadog_lambda_wrapper - def lambda_handler(event, context): - return "ok" - - result = lambda_handler({}, get_mock_context()) - self.assertEqual(result, "ok") - self.mock_set_dsm_context.assert_not_called() - - del os.environ["DD_DATA_STREAMS_ENABLED"] - class TestLambdaWrapperWithTraceContext(unittest.TestCase): xray_root = "1-5e272390-8c398be037738dc042009320" From a97a1c9c097a0d28d0caf095c3516eb61a0c4502 Mon Sep 17 00:00:00 2001 From: Florentin Labelle Date: Fri, 11 Jul 2025 13:37:15 +0200 Subject: [PATCH 272/403] build: publish artifacts of built layers on main updates (#629) --- .github/workflows/build_layer.yml | 35 +++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 .github/workflows/build_layer.yml diff --git a/.github/workflows/build_layer.yml b/.github/workflows/build_layer.yml new file mode 100644 index 000000000..789868ed0 --- /dev/null +++ b/.github/workflows/build_layer.yml @@ -0,0 +1,35 @@ +name: Build Layers for system-Tests + +on: + push: + branches: + - "main" + +jobs: + build: + runs-on: ${{ matrix.arch == 'arm64' && 'ubuntu-24.04-arm' || 'ubuntu-latest' }} + + strategy: + matrix: + arch: [arm64, amd64] + python_version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"] + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Patch pyproject.toml + run: | + echo "Patching pyproject.toml to use main branch of dd-trace-py" + sed -i 's|^ddtrace =.*$|ddtrace = { git = "https://github.com/DataDog/dd-trace-py.git" }|' pyproject.toml + + - name: Build layer for Python ${{ matrix.python_version }} on ${{ matrix.arch }} + run: | + echo "Building layer for Python ${{ matrix.python_version }} on ${{ matrix.arch }}" + ARCH=${{ matrix.arch }} PYTHON_VERSION=${{ matrix.python_version }} ./scripts/build_layers.sh + + - name: Upload layer artifact + uses: actions/upload-artifact@v4 + with: + path: .layers/datadog_lambda_py-${{ matrix.arch }}-${{ matrix.python_version }}.zip + name: datadog-lambda-python-${{ matrix.python_version }}-${{ matrix.arch }} From 4c9348660c44d03f23a7560aeae5625ca56498fb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 14 Jul 2025 15:03:57 -0400 Subject: [PATCH 273/403] chore(deps): bump requests from 2.32.3 to 2.32.4 in /tests/integration (#632) Bumps [requests](https://github.com/psf/requests) from 2.32.3 to 2.32.4. - [Release notes](https://github.com/psf/requests/releases) - [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md) - [Commits](https://github.com/psf/requests/compare/v2.32.3...v2.32.4) --- updated-dependencies: - dependency-name: requests dependency-version: 2.32.4 dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- tests/integration/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/integration/requirements.txt b/tests/integration/requirements.txt index 5678a66cd..343ea0257 100644 --- a/tests/integration/requirements.txt +++ b/tests/integration/requirements.txt @@ -1,4 +1,4 @@ certifi==2024.12.14 charset-normalizer==3.4.1 idna==3.10 -requests==2.32.3 +requests==2.32.4 From 664124e2acb10ba356ae9af62ea188facb8a365d Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Thu, 17 Jul 2025 10:15:25 -0400 Subject: [PATCH 274/403] version 7.112.0 (#631) --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index 2bb1df7ff..e1dbe71f1 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "6.111.0" +__version__ = "7.112.0" diff --git a/pyproject.toml b/pyproject.toml index f8e4d7ef7..1a43b9e82 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "6.111.0" +version = "7.112.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From c7739ebcdb0a93bd01745fb5ad5922a96a783b89 Mon Sep 17 00:00:00 2001 From: Florentin Labelle Date: Mon, 21 Jul 2025 09:13:37 +0200 Subject: [PATCH 275/403] feat(appsec): enable request blocking (#630) --- datadog_lambda/asm.py | 47 ++++++++++++++- datadog_lambda/wrapper.py | 22 ++++++- tests/test_asm.py | 81 ++++++++++++++++++++++++-- tests/test_wrapper.py | 117 +++++++++++++++++++++++++++++++++++++- 4 files changed, 258 insertions(+), 9 deletions(-) diff --git a/datadog_lambda/asm.py b/datadog_lambda/asm.py index 9636760c3..11df24714 100644 --- a/datadog_lambda/asm.py +++ b/datadog_lambda/asm.py @@ -1,9 +1,12 @@ -from copy import deepcopy import logging +import urllib.parse +from copy import deepcopy from typing import Any, Dict, List, Optional, Union from ddtrace.contrib.internal.trace_utils import _get_request_header_client_ip from ddtrace.internal import core +from ddtrace.internal.utils import get_blocked +from ddtrace.internal.utils import http as http_utils from ddtrace.trace import Span from datadog_lambda.trigger import ( @@ -50,6 +53,7 @@ def asm_set_context(event_source: _EventSource): This allows the AppSecSpanProcessor to know information about the event at the moment the span is created and skip it when not relevant. """ + if event_source.event_type not in _http_event_types: core.set_item("appsec_skip_next_lambda_event", True) @@ -126,6 +130,14 @@ def asm_start_request( span.set_tag_str("http.client_ip", request_ip) span.set_tag_str("network.client.ip", request_ip) + # Encode the parsed query and append it to reconstruct the original raw URI expected by AppSec. + if parsed_query: + try: + encoded_query = urllib.parse.urlencode(parsed_query, doseq=True) + raw_uri += "?" + encoded_query # type: ignore + except Exception: + pass + core.dispatch( # The matching listener is registered in ddtrace.appsec._handlers "aws_lambda.start_request", @@ -182,3 +194,36 @@ def asm_start_response( response_headers, ), ) + + +def get_asm_blocked_response( + event_source: _EventSource, +) -> Optional[Dict[str, Any]]: + """Get the blocked response for the given event source.""" + if event_source.event_type not in _http_event_types: + return None + + blocked = get_blocked() + if not blocked: + return None + + desired_type = blocked.get("type", "auto") + if desired_type == "none": + content_type = "text/plain; charset=utf-8" + content = "" + else: + content_type = blocked.get("content-type", "application/json") + content = http_utils._get_blocked_template(content_type) + + response_headers = { + "content-type": content_type, + } + if "location" in blocked: + response_headers["location"] = blocked["location"] + + return { + "statusCode": blocked.get("status_code", 403), + "headers": response_headers, + "body": content, + "isBase64Encoded": False, + } diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 06f8884c1..917a4fa0e 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -9,7 +9,7 @@ from importlib import import_module from time import time_ns -from datadog_lambda.asm import asm_set_context, asm_start_response, asm_start_request +from ddtrace.internal._exceptions import BlockingException from datadog_lambda.extension import should_use_extension, flush_extension from datadog_lambda.cold_start import ( set_cold_start, @@ -46,6 +46,14 @@ extract_http_status_code_tag, ) +if config.appsec_enabled: + from datadog_lambda.asm import ( + asm_set_context, + asm_start_response, + asm_start_request, + get_asm_blocked_response, + ) + if config.profiling_enabled: from ddtrace.profiling import profiler @@ -120,6 +128,7 @@ def __init__(self, func): self.span = None self.inferred_span = None self.response = None + self.blocking_response = None if config.profiling_enabled: self.prof = profiler.Profiler(env=config.env, service=config.service) @@ -159,8 +168,12 @@ def __call__(self, event, context, **kwargs): """Executes when the wrapped function gets called""" self._before(event, context) try: + if self.blocking_response: + return self.blocking_response self.response = self.func(event, context, **kwargs) return self.response + except BlockingException: + self.blocking_response = get_asm_blocked_response(self.event_source) except Exception: from datadog_lambda.metric import submit_errors_metric @@ -171,6 +184,8 @@ def __call__(self, event, context, **kwargs): raise finally: self._after(event, context) + if self.blocking_response: + return self.blocking_response def _inject_authorizer_span_headers(self, request_id): reference_span = self.inferred_span if self.inferred_span else self.span @@ -203,6 +218,7 @@ def _inject_authorizer_span_headers(self, request_id): def _before(self, event, context): try: self.response = None + self.blocking_response = None set_cold_start(init_timestamp_ns) if not should_use_extension: @@ -253,6 +269,7 @@ def _before(self, event, context): ) if config.appsec_enabled: asm_start_request(self.span, event, event_source, self.trigger_tags) + self.blocking_response = get_asm_blocked_response(self.event_source) else: set_correlation_ids() if config.profiling_enabled and is_new_sandbox(): @@ -286,13 +303,14 @@ def _after(self, event, context): if status_code: self.span.set_tag("http.status_code", status_code) - if config.appsec_enabled: + if config.appsec_enabled and not self.blocking_response: asm_start_response( self.span, status_code, self.event_source, response=self.response, ) + self.blocking_response = get_asm_blocked_response(self.event_source) self.span.finish() diff --git a/tests/test_asm.py b/tests/test_asm.py index e57c289fd..e3a5e027b 100644 --- a/tests/test_asm.py +++ b/tests/test_asm.py @@ -2,8 +2,17 @@ import pytest from unittest.mock import MagicMock, patch -from datadog_lambda.asm import asm_start_request, asm_start_response -from datadog_lambda.trigger import parse_event_source, extract_trigger_tags +from datadog_lambda.asm import ( + asm_start_request, + asm_start_response, + get_asm_blocked_response, +) +from datadog_lambda.trigger import ( + EventTypes, + _EventSource, + extract_trigger_tags, + parse_event_source, +) from tests.utils import get_mock_context event_samples = "tests/event_samples/" @@ -15,7 +24,7 @@ "application_load_balancer", "application-load-balancer.json", "72.12.164.125", - "/lambda", + "/lambda?query=1234ABCD", "GET", "", False, @@ -27,7 +36,7 @@ "application_load_balancer_multivalue_headers", "application-load-balancer-mutivalue-headers.json", "72.12.164.125", - "/lambda", + "/lambda?query=1234ABCD", "GET", "", False, @@ -51,7 +60,7 @@ "api_gateway", "api-gateway.json", "127.0.0.1", - "/path/to/resource", + "/path/to/resource?foo=bar", "POST", "eyJ0ZXN0IjoiYm9keSJ9", True, @@ -199,6 +208,40 @@ ), ] +ASM_BLOCKED_RESPONSE_TEST_CASES = [ + # JSON blocking response + ( + {"status_code": 403, "type": "auto", "content-type": "application/json"}, + 403, + {"content-type": "application/json"}, + ), + # HTML blocking response + ( + { + "status_code": 401, + "type": "html", + "content-type": "text/html", + }, + 401, + {"content-type": "text/html"}, + ), + # Plain text redirect response + ( + {"status_code": 301, "type": "none", "location": "https://example.com/blocked"}, + 301, + { + "content-type": "text/plain; charset=utf-8", + "location": "https://example.com/blocked", + }, + ), + # Default to content-type application/json and status code 403 when not provided + ( + {"type": "auto"}, + 403, + {"content-type": "application/json"}, + ), +] + @pytest.mark.parametrize( "name,file,expected_ip,expected_uri,expected_method,expected_body,expected_base64,expected_query,expected_path_params,expected_route", @@ -327,3 +370,31 @@ def test_asm_start_response_parametrized( else: # Verify core.dispatch was not called for non-HTTP events mock_core.dispatch.assert_not_called() + + +@pytest.mark.parametrize( + "blocked_config, expected_status, expected_headers", + ASM_BLOCKED_RESPONSE_TEST_CASES, +) +@patch("datadog_lambda.asm.get_blocked") +def test_get_asm_blocked_response_blocked( + mock_get_blocked, + blocked_config, + expected_status, + expected_headers, +): + mock_get_blocked.return_value = blocked_config + event_source = _EventSource(event_type=EventTypes.API_GATEWAY) + response = get_asm_blocked_response(event_source) + assert response["statusCode"] == expected_status + assert response["headers"] == expected_headers + + +@patch("datadog_lambda.asm.get_blocked") +def test_get_asm_blocked_response_not_blocked( + mock_get_blocked, +): + mock_get_blocked.return_value = None + event_source = _EventSource(event_type=EventTypes.API_GATEWAY) + response = get_asm_blocked_response(event_source) + assert response is None diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index fc081e904..e07b5ca91 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -2,8 +2,9 @@ import json import os import unittest +import importlib -from unittest.mock import patch, call, ANY +from unittest.mock import MagicMock, patch, call, ANY from datadog_lambda.constants import TraceHeader import datadog_lambda.wrapper as wrapper @@ -660,3 +661,117 @@ def lambda_handler(event, context): lambda_handler(lambda_event, lambda_context) self.assertEqual(len(flushes), 0) + + +class TestLambdaWrapperAppsecBlocking(unittest.TestCase): + def setUp(self): + os.environ["DD_APPSEC_ENABLED"] = "true" + os.environ["DD_TRACE_ENABLED"] = "true" + + importlib.reload(wrapper) + + self.addCleanup(os.environ.pop, "DD_APPSEC_ENABLED", None) + self.addCleanup(os.environ.pop, "DD_TRACE_ENABLED", None) + self.addCleanup(lambda: importlib.reload(wrapper)) + + patcher = patch("datadog_lambda.wrapper.asm_set_context") + self.mock_asm_set_context = patcher.start() + self.addCleanup(patcher.stop) + + patcher = patch("datadog_lambda.wrapper.asm_start_request") + self.mock_asm_start_request = patcher.start() + self.addCleanup(patcher.stop) + + patcher = patch("datadog_lambda.wrapper.asm_start_response") + self.mock_asm_start_response = patcher.start() + self.addCleanup(patcher.stop) + + patcher = patch("datadog_lambda.wrapper.get_asm_blocked_response") + self.mock_get_asm_blocking_response = patcher.start() + self.addCleanup(patcher.stop) + + self.fake_blocking_response = { + "statusCode": "403", + "headers": { + "Content-Type": "application/json", + }, + "body": '{"message": "Blocked by AppSec"}', + "isBase64Encoded": False, + } + + def test_blocking_before(self): + self.mock_get_asm_blocking_response.return_value = self.fake_blocking_response + + mock_handler = MagicMock() + + lambda_handler = wrapper.datadog_lambda_wrapper(mock_handler) + + response = lambda_handler({}, get_mock_context()) + self.assertEqual(response, self.fake_blocking_response) + + mock_handler.assert_not_called() + + self.mock_asm_set_context.assert_called_once() + self.mock_asm_start_request.assert_called_once() + self.mock_asm_start_response.assert_not_called() + + def test_blocking_during(self): + self.mock_get_asm_blocking_response.return_value = None + + @wrapper.datadog_lambda_wrapper + def lambda_handler(event, context): + self.mock_get_asm_blocking_response.return_value = ( + self.fake_blocking_response + ) + raise wrapper.BlockingException() + + response = lambda_handler({}, get_mock_context()) + self.assertEqual(response, self.fake_blocking_response) + + self.mock_asm_set_context.assert_called_once() + self.mock_asm_start_request.assert_called_once() + self.mock_asm_start_response.assert_not_called() + + def test_blocking_after(self): + self.mock_get_asm_blocking_response.return_value = None + + @wrapper.datadog_lambda_wrapper + def lambda_handler(event, context): + self.mock_get_asm_blocking_response.return_value = ( + self.fake_blocking_response + ) + return { + "statusCode": 200, + "body": "This should not be returned", + } + + response = lambda_handler({}, get_mock_context()) + self.assertEqual(response, self.fake_blocking_response) + + self.mock_asm_set_context.assert_called_once() + self.mock_asm_start_request.assert_called_once() + self.mock_asm_start_response.assert_called_once() + + def test_no_blocking_appsec_disabled(self): + os.environ["DD_APPSEC_ENABLED"] = "false" + + importlib.reload(wrapper) + + self.mock_get_asm_blocking_response.return_value = self.fake_blocking_response + + expected_response = { + "statusCode": 200, + "body": "This should be returned", + } + + @wrapper.datadog_lambda_wrapper + def lambda_handler(event, context): + return expected_response + + response = lambda_handler({}, get_mock_context()) + self.assertEqual(response, expected_response) + + self.mock_get_asm_blocking_response.assert_not_called() + self.mock_asm_set_context.assert_not_called() + self.mock_asm_start_request.assert_not_called() + self.mock_asm_start_response.assert_not_called() From 37078c336b29c32ed379dc23cd0ee1ccc3359736 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Thu, 24 Jul 2025 10:06:49 -0400 Subject: [PATCH 276/403] v7.113.0-dev (#634) * v7.113.0.dev0 PEP 400 requires it to be devN * remove .devN versioning from logs --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- scripts/run_integration_tests.sh | 2 ++ 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index e1dbe71f1..ae708026a 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "7.112.0" +__version__ = "7.113.0.dev0" diff --git a/pyproject.toml b/pyproject.toml index 1a43b9e82..9efbd0fae 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "7.112.0" +version = "7.113.0.dev0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" diff --git a/scripts/run_integration_tests.sh b/scripts/run_integration_tests.sh index 9ea2f0130..f6e4f537c 100755 --- a/scripts/run_integration_tests.sh +++ b/scripts/run_integration_tests.sh @@ -212,6 +212,8 @@ for handler_name in "${LAMBDA_HANDLERS[@]}"; do sed -E "s/(datadog_lambda:v)([0-9]+\.[0-9]+\.[0-9]+)/\1XX/g" | sed -E "s/(datadogpy\/)([0-9]+\.[0-9]+\.[0-9]+)/\1XX/g" | sed -E "s/(python )([0-9]\.[0-9]+\.[0-9]+)/\1XX/g" | + # Remove .devN versioning from logs + sed -E "s/\.dev[0-9]+//g" | # Strip out run ID (from function name, resource, etc.) sed -E "s/${!run_id}/XXXX/g" | # Normalize python-requests version From 502303d672aac543e3e36cf08d44d325d464635c Mon Sep 17 00:00:00 2001 From: Taegyun Kim Date: Fri, 25 Jul 2025 03:14:42 +0900 Subject: [PATCH 277/403] fix(profiling): include ddup and dd_wrapper so files to enable profiling (#638) * chore(profiling): include ddup and dd_wrapper so files * bump up layer size limit * set to 21 --- Dockerfile | 2 -- scripts/check_layer_size.sh | 4 ++-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index c58245287..02910a783 100644 --- a/Dockerfile +++ b/Dockerfile @@ -23,8 +23,6 @@ RUN rm -rf ./python/lib/$runtime/site-packages/setuptools RUN rm -rf ./python/lib/$runtime/site-packages/jsonschema/tests RUN rm -f ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_taint_tracking/*.so RUN rm -f ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_stacktrace*.so -RUN rm -f ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/libdd_wrapper*.so -RUN rm -f ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/ddup/_ddup.*.so # _stack_v2 may not exist for some versions of ddtrace (e.g. under python 3.13) RUN rm -f ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/stack_v2/_stack_v2.*.so # remove *.dist-info directories except any entry_points.txt files diff --git a/scripts/check_layer_size.sh b/scripts/check_layer_size.sh index 626f9d316..0b835cb04 100755 --- a/scripts/check_layer_size.sh +++ b/scripts/check_layer_size.sh @@ -8,8 +8,8 @@ # Compares layer size to threshold, and fails if below that threshold set -e -MAX_LAYER_COMPRESSED_SIZE_KB=$(expr 6 \* 1024) -MAX_LAYER_UNCOMPRESSED_SIZE_KB=$(expr 15 \* 1024) +MAX_LAYER_COMPRESSED_SIZE_KB=$(expr 8 \* 1024) +MAX_LAYER_UNCOMPRESSED_SIZE_KB=$(expr 21 \* 1024) LAYER_FILES_PREFIX="datadog_lambda_py" From 50d893a402a9ef28d958457a0293b6ab1eb18498 Mon Sep 17 00:00:00 2001 From: Florentin Labelle Date: Mon, 28 Jul 2025 16:46:21 +0200 Subject: [PATCH 278/403] feat(appsec): enable api security (#636) --- datadog_lambda/asm.py | 11 ++++++ datadog_lambda/wrapper.py | 3 ++ .../logs/async-metrics_python310.log | 2 ++ .../logs/async-metrics_python311.log | 2 ++ .../logs/async-metrics_python312.log | 2 ++ .../logs/async-metrics_python313.log | 2 ++ .../snapshots/logs/async-metrics_python38.log | 2 ++ .../snapshots/logs/async-metrics_python39.log | 2 ++ .../snapshots/logs/sync-metrics_python310.log | 2 ++ .../snapshots/logs/sync-metrics_python311.log | 2 ++ .../snapshots/logs/sync-metrics_python312.log | 2 ++ .../snapshots/logs/sync-metrics_python313.log | 2 ++ .../snapshots/logs/sync-metrics_python38.log | 2 ++ .../snapshots/logs/sync-metrics_python39.log | 2 ++ tests/test_asm.py | 35 ++++++++++++------- 15 files changed, 60 insertions(+), 13 deletions(-) diff --git a/datadog_lambda/asm.py b/datadog_lambda/asm.py index 11df24714..31f750d82 100644 --- a/datadog_lambda/asm.py +++ b/datadog_lambda/asm.py @@ -195,6 +195,17 @@ def asm_start_response( ), ) + if isinstance(response, dict) and "statusCode" in response: + body = response.get("body") + else: + body = response + + core.dispatch( + # The matching listener is registered in ddtrace.appsec._handlers + "aws_lambda.parse_body", + (body,), + ) + def get_asm_blocked_response( event_source: _EventSource, diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 917a4fa0e..494556257 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -318,6 +318,9 @@ def _after(self, event, context): if status_code: self.inferred_span.set_tag("http.status_code", status_code) + if self.trigger_tags and (route := self.trigger_tags.get("http.route")): + self.inferred_span.set_tag("http.route", route) + if config.service: self.inferred_span.set_tag("peer.service", config.service) diff --git a/tests/integration/snapshots/logs/async-metrics_python310.log b/tests/integration/snapshots/logs/async-metrics_python310.log index bda234df4..6de63bec3 100644 --- a/tests/integration/snapshots/logs/async-metrics_python310.log +++ b/tests/integration/snapshots/logs/async-metrics_python310.log @@ -66,6 +66,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "http.route": "/", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python", @@ -613,6 +614,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "http.route": "/httpapi/get", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python", diff --git a/tests/integration/snapshots/logs/async-metrics_python311.log b/tests/integration/snapshots/logs/async-metrics_python311.log index fd318de30..18bd119dd 100644 --- a/tests/integration/snapshots/logs/async-metrics_python311.log +++ b/tests/integration/snapshots/logs/async-metrics_python311.log @@ -66,6 +66,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "http.route": "/", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python", @@ -613,6 +614,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "http.route": "/httpapi/get", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python", diff --git a/tests/integration/snapshots/logs/async-metrics_python312.log b/tests/integration/snapshots/logs/async-metrics_python312.log index b51b6a2d9..e884a96d3 100644 --- a/tests/integration/snapshots/logs/async-metrics_python312.log +++ b/tests/integration/snapshots/logs/async-metrics_python312.log @@ -66,6 +66,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "http.route": "/", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python", @@ -613,6 +614,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "http.route": "/httpapi/get", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python", diff --git a/tests/integration/snapshots/logs/async-metrics_python313.log b/tests/integration/snapshots/logs/async-metrics_python313.log index 89b73e922..3393f6842 100644 --- a/tests/integration/snapshots/logs/async-metrics_python313.log +++ b/tests/integration/snapshots/logs/async-metrics_python313.log @@ -66,6 +66,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "http.route": "/", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python", @@ -613,6 +614,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "http.route": "/httpapi/get", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python", diff --git a/tests/integration/snapshots/logs/async-metrics_python38.log b/tests/integration/snapshots/logs/async-metrics_python38.log index ff5e5a60c..0495ba459 100644 --- a/tests/integration/snapshots/logs/async-metrics_python38.log +++ b/tests/integration/snapshots/logs/async-metrics_python38.log @@ -66,6 +66,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "http.route": "/", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python", @@ -613,6 +614,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "http.route": "/httpapi/get", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python", diff --git a/tests/integration/snapshots/logs/async-metrics_python39.log b/tests/integration/snapshots/logs/async-metrics_python39.log index 5e3d46b66..d2aad04c4 100644 --- a/tests/integration/snapshots/logs/async-metrics_python39.log +++ b/tests/integration/snapshots/logs/async-metrics_python39.log @@ -66,6 +66,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "http.route": "/", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python", @@ -613,6 +614,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "http.route": "/httpapi/get", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python", diff --git a/tests/integration/snapshots/logs/sync-metrics_python310.log b/tests/integration/snapshots/logs/sync-metrics_python310.log index 215698312..aa96b02d9 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python310.log +++ b/tests/integration/snapshots/logs/sync-metrics_python310.log @@ -46,6 +46,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "http.route": "/", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python", @@ -653,6 +654,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "http.route": "/httpapi/get", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python", diff --git a/tests/integration/snapshots/logs/sync-metrics_python311.log b/tests/integration/snapshots/logs/sync-metrics_python311.log index 5fcd504d6..91ae2e516 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python311.log +++ b/tests/integration/snapshots/logs/sync-metrics_python311.log @@ -46,6 +46,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "http.route": "/", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python", @@ -653,6 +654,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "http.route": "/httpapi/get", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python", diff --git a/tests/integration/snapshots/logs/sync-metrics_python312.log b/tests/integration/snapshots/logs/sync-metrics_python312.log index 9a05404ce..81e897cad 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python312.log +++ b/tests/integration/snapshots/logs/sync-metrics_python312.log @@ -46,6 +46,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "http.route": "/", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python", @@ -653,6 +654,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "http.route": "/httpapi/get", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python", diff --git a/tests/integration/snapshots/logs/sync-metrics_python313.log b/tests/integration/snapshots/logs/sync-metrics_python313.log index 5d17bed58..77376e6b5 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python313.log +++ b/tests/integration/snapshots/logs/sync-metrics_python313.log @@ -46,6 +46,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "http.route": "/", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python", @@ -653,6 +654,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "http.route": "/httpapi/get", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python", diff --git a/tests/integration/snapshots/logs/sync-metrics_python38.log b/tests/integration/snapshots/logs/sync-metrics_python38.log index 37ed391e3..ddc8d7510 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python38.log +++ b/tests/integration/snapshots/logs/sync-metrics_python38.log @@ -46,6 +46,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "http.route": "/", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python", @@ -653,6 +654,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "http.route": "/httpapi/get", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python", diff --git a/tests/integration/snapshots/logs/sync-metrics_python39.log b/tests/integration/snapshots/logs/sync-metrics_python39.log index f147744b7..128319f6c 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -46,6 +46,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "http.route": "/", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python", @@ -653,6 +654,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "http.route": "/httpapi/get", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.base_service": "integration-tests-python", diff --git a/tests/test_asm.py b/tests/test_asm.py index e3a5e027b..7a5e6c560 100644 --- a/tests/test_asm.py +++ b/tests/test_asm.py @@ -106,6 +106,7 @@ }, "200", {"Content-Type": "text/html"}, + None, True, ), ( @@ -123,6 +124,7 @@ "Content-Type": "text/plain", "X-Error": "Not Found", }, + None, True, ), ( @@ -140,6 +142,7 @@ "Location": "/user/123", "Content-Type": "application/json", }, + None, True, ), ( @@ -158,6 +161,7 @@ "Content-Type": "application/json", "X-Custom-Header": "test-value", }, + '{"message": "success"}', True, ), ( @@ -169,6 +173,7 @@ }, "200", {"Content-Type": "application/json"}, + None, True, ), ( @@ -180,6 +185,7 @@ }, "200", {"Content-Type": "text/plain"}, + None, True, ), ( @@ -188,6 +194,7 @@ {"statusCode": 200}, "200", {}, + None, False, # Should not dispatch for non-HTTP events ), ( @@ -196,6 +203,7 @@ "Hello, World!", "200", {"content-type": "application/json"}, + "Hello, World!", True, ), ( @@ -204,6 +212,7 @@ {"message": "Hello, World!"}, "200", {"content-type": "application/json"}, + {"message": "Hello, World!"}, True, ), ] @@ -326,7 +335,7 @@ def test_asm_start_request_parametrized( @pytest.mark.parametrize( - "name,event_file,response,status_code,expected_headers,should_dispatch", + "name,event_file,response,status_code,expected_headers,expected_body,should_dispatch", ASM_START_RESPONSE_TEST_CASES, ) @patch("datadog_lambda.asm.core") @@ -337,6 +346,7 @@ def test_asm_start_response_parametrized( response, status_code, expected_headers, + expected_body, should_dispatch, ): """Test ASM start response for various HTTP event types using parametrization""" @@ -355,18 +365,17 @@ def test_asm_start_response_parametrized( asm_start_response(mock_span, status_code, event_source, response) if should_dispatch: - # Verify core.dispatch was called - mock_core.dispatch.assert_called_once() - call_args = mock_core.dispatch.call_args - assert call_args[0][0] == "aws_lambda.start_response" - - # Extract the dispatched arguments - dispatch_args = call_args[0][1] - span, response_status_code, response_headers = dispatch_args - - assert span == mock_span - assert response_status_code == status_code - assert response_headers == expected_headers + assert mock_core.dispatch.call_count == 2 + + assert mock_core.dispatch.call_args_list[0].args == ( + "aws_lambda.start_response", + (mock_span, status_code, expected_headers), + ) + + assert mock_core.dispatch.call_args_list[1].args == ( + "aws_lambda.parse_body", + (expected_body,), + ) else: # Verify core.dispatch was not called for non-HTTP events mock_core.dispatch.assert_not_called() From 7806d7283bbf175da805adf35a8b3747bc60ab19 Mon Sep 17 00:00:00 2001 From: Zarir Hamza Date: Mon, 28 Jul 2025 15:41:47 -0400 Subject: [PATCH 279/403] Enhance Synthetic Span Service Representation (#635) * Update naming and corresponding tracer changes --- datadog_lambda/tracing.py | 65 +++++++-- pyproject.toml | 2 +- tests/event_samples/kinesisStream.json | 20 +++ .../logs/async-metrics_python310.log | 128 +++++++--------- .../logs/async-metrics_python311.log | 128 +++++++--------- .../logs/async-metrics_python312.log | 128 +++++++--------- .../logs/async-metrics_python313.log | 128 +++++++--------- .../snapshots/logs/async-metrics_python38.log | 128 +++++++--------- .../snapshots/logs/async-metrics_python39.log | 128 +++++++--------- .../snapshots/logs/sync-metrics_python310.log | 137 +++++++----------- .../snapshots/logs/sync-metrics_python311.log | 137 +++++++----------- .../snapshots/logs/sync-metrics_python312.log | 137 +++++++----------- .../snapshots/logs/sync-metrics_python313.log | 137 +++++++----------- .../snapshots/logs/sync-metrics_python38.log | 137 +++++++----------- .../snapshots/logs/sync-metrics_python39.log | 137 +++++++----------- tests/test_tracing.py | 72 ++++++--- 16 files changed, 726 insertions(+), 1023 deletions(-) create mode 100644 tests/event_samples/kinesisStream.json diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index f40574804..51157f6a7 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -4,6 +4,7 @@ # Copyright 2019 Datadog, Inc. import logging import os +import re import traceback import ujson as json from datetime import datetime, timezone @@ -856,15 +857,31 @@ def create_service_mapping(val): return new_service_mapping -def determine_service_name(service_mapping, specific_key, generic_key, default_value): - service_name = service_mapping.get(specific_key) - if service_name is None: - service_name = service_mapping.get(generic_key, default_value) - return service_name +def determine_service_name( + service_mapping, specific_key, generic_key, extracted_key, fallback=None +): + # Check for mapped service (specific key first, then generic key) + mapped_service = service_mapping.get(specific_key) or service_mapping.get( + generic_key + ) + if mapped_service: + return mapped_service + + # Check if AWS service representation is disabled + aws_service_representation = os.environ.get( + "DD_TRACE_AWS_SERVICE_REPRESENTATION_ENABLED", "" + ).lower() + if aws_service_representation in ("false", "0"): + return fallback + + # Use extracted_key if it exists and is not empty, otherwise use fallback + return ( + extracted_key.strip() if extracted_key and extracted_key.strip() else fallback + ) # Initialization code -service_mapping_str = os.getenv("DD_SERVICE_MAPPING", "") +service_mapping_str = os.environ.get("DD_SERVICE_MAPPING", "") service_mapping = create_service_mapping(service_mapping_str) _dd_origin = {"_dd.origin": "lambda"} @@ -988,6 +1005,7 @@ def create_inferred_span_from_api_gateway_websocket_event( "http.url": http_url, "endpoint": endpoint, "resource_names": endpoint, + "span.kind": "server", "apiid": api_id, "apiname": api_id, "stage": request_context.get("stage"), @@ -1046,6 +1064,7 @@ def create_inferred_span_from_api_gateway_event( "endpoint": path, "http.method": method, "resource_names": resource, + "span.kind": "server", "apiid": api_id, "apiname": api_id, "stage": request_context.get("stage"), @@ -1150,12 +1169,13 @@ def create_inferred_span_from_sqs_event(event, context): event_source_arn = event_record.get("eventSourceARN") queue_name = event_source_arn.split(":")[-1] service_name = determine_service_name( - service_mapping, queue_name, "lambda_sqs", "sqs" + service_mapping, queue_name, "lambda_sqs", queue_name, "sqs" ) attrs = event_record.get("attributes") or {} tags = { "operation_name": "aws.sqs", "resource_names": queue_name, + "span.kind": "server", "queuename": queue_name, "event_source_arn": event_source_arn, "receipt_handle": event_record.get("receiptHandle"), @@ -1217,11 +1237,12 @@ def create_inferred_span_from_sns_event(event, context): topic_arn = sns_message.get("TopicArn") topic_name = topic_arn.split(":")[-1] service_name = determine_service_name( - service_mapping, topic_name, "lambda_sns", "sns" + service_mapping, topic_name, "lambda_sns", topic_name, "sns" ) tags = { "operation_name": "aws.sns", "resource_names": topic_name, + "span.kind": "server", "topicname": topic_name, "topic_arn": topic_arn, "message_id": sns_message.get("MessageId"), @@ -1252,15 +1273,16 @@ def create_inferred_span_from_kinesis_event(event, context): event_record = get_first_record(event) event_source_arn = event_record.get("eventSourceARN") event_id = event_record.get("eventID") - stream_name = event_source_arn.split(":")[-1] + stream_name = re.sub(r"^stream/", "", (event_source_arn or "").split(":")[-1]) shard_id = event_id.split(":")[0] service_name = determine_service_name( - service_mapping, stream_name, "lambda_kinesis", "kinesis" + service_mapping, stream_name, "lambda_kinesis", stream_name, "kinesis" ) kinesis = event_record.get("kinesis") or {} tags = { "operation_name": "aws.kinesis", "resource_names": stream_name, + "span.kind": "server", "streamname": stream_name, "shardid": shard_id, "event_source_arn": event_source_arn, @@ -1287,12 +1309,13 @@ def create_inferred_span_from_dynamodb_event(event, context): event_source_arn = event_record.get("eventSourceARN") table_name = event_source_arn.split("/")[1] service_name = determine_service_name( - service_mapping, table_name, "lambda_dynamodb", "dynamodb" + service_mapping, table_name, "lambda_dynamodb", table_name, "dynamodb" ) dynamodb_message = event_record.get("dynamodb") or {} tags = { "operation_name": "aws.dynamodb", "resource_names": table_name, + "span.kind": "server", "tablename": table_name, "event_source_arn": event_source_arn, "event_id": event_record.get("eventID"), @@ -1321,11 +1344,12 @@ def create_inferred_span_from_s3_event(event, context): obj = s3.get("object") or {} bucket_name = bucket.get("name") service_name = determine_service_name( - service_mapping, bucket_name, "lambda_s3", "s3" + service_mapping, bucket_name, "lambda_s3", bucket_name, "s3" ) tags = { "operation_name": "aws.s3", "resource_names": bucket_name, + "span.kind": "server", "event_name": event_record.get("eventName"), "bucketname": bucket_name, "bucket_arn": bucket.get("arn"), @@ -1351,11 +1375,12 @@ def create_inferred_span_from_s3_event(event, context): def create_inferred_span_from_eventbridge_event(event, context): source = event.get("source") service_name = determine_service_name( - service_mapping, source, "lambda_eventbridge", "eventbridge" + service_mapping, source, "lambda_eventbridge", source, "eventbridge" ) tags = { "operation_name": "aws.eventbridge", "resource_names": source, + "span.kind": "server", "detail_type": event.get("detail-type"), } InferredSpanInfo.set_tags( @@ -1429,9 +1454,21 @@ def create_function_execution_span( tags["_dd.parent_source"] = trace_context_source tags.update(trigger_tags) tracer.set_tags(_dd_origin) + # Determine service name based on config and env var + if config.service: + service_name = config.service + else: + aws_service_representation = os.environ.get( + "DD_TRACE_AWS_SERVICE_REPRESENTATION_ENABLED", "" + ).lower() + if aws_service_representation in ("false", "0"): + service_name = "aws.lambda" + else: + service_name = function_name if function_name else "aws.lambda" + span = tracer.trace( "aws.lambda", - service="aws.lambda", + service=service_name, resource=function_name, span_type="serverless", ) diff --git a/pyproject.toml b/pyproject.toml index 9efbd0fae..77c08cb5c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -28,7 +28,7 @@ classifiers = [ python = ">=3.8.0,<4" datadog = ">=0.51.0,<1.0.0" wrapt = "^1.11.2" -ddtrace = ">=3.10.2,<4" +ddtrace = ">=3.11.0,<4" ujson = ">=5.9.0" botocore = { version = "^1.34.0", optional = true } requests = { version ="^2.22.0", optional = true } diff --git a/tests/event_samples/kinesisStream.json b/tests/event_samples/kinesisStream.json new file mode 100644 index 000000000..a320fc44f --- /dev/null +++ b/tests/event_samples/kinesisStream.json @@ -0,0 +1,20 @@ +{ + "Records": [ + { + "kinesis": { + "kinesisSchemaVersion": "1.0", + "partitionKey": "partitionkey", + "sequenceNumber": "49624230154685806402418173680709770494154422022871973922", + "data": "eyJmb28iOiAiYmFyIiwgIl9kYXRhZG9nIjogeyJ4LWRhdGFkb2ctdHJhY2UtaWQiOiAiNDk0ODM3NzMxNjM1NzI5MTQyMSIsICJ4LWRhdGFkb2ctcGFyZW50LWlkIjogIjI4NzYyNTMzODAwMTg2ODEwMjYiLCAieC1kYXRhZG9nLXNhbXBsaW5nLXByaW9yaXR5IjogIjEifX0=", + "approximateArrivalTimestamp": 1643638425.163 + }, + "eventSource": "aws:kinesis", + "eventVersion": "1.0", + "eventID": "shardId-000000000002:49624230154685806402418173680709770494154422022871973922", + "eventName": "aws:kinesis:record", + "invokeIdentityArn": "arn:aws:iam::601427279990:role/inferred-spans-python-dev-eu-west-1-lambdaRole", + "awsRegion": "eu-west-1", + "eventSourceARN": "arn:aws:kinesis:eu-west-1:601427279990:stream/kinesisStream" + } + ] +} diff --git a/tests/integration/snapshots/logs/async-metrics_python310.log b/tests/integration/snapshots/logs/async-metrics_python310.log index 6de63bec3..66351a990 100644 --- a/tests/integration/snapshots/logs/async-metrics_python310.log +++ b/tests/integration/snapshots/logs/async-metrics_python310.log @@ -59,6 +59,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "endpoint": "/", "http.method": "GET", "resource_names": "GET /", + "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", "stage": "Prod", @@ -69,7 +70,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.route": "/", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -85,7 +85,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python310", "name": "aws.lambda", "error": 0, @@ -108,8 +108,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url_details.path": "/Prod/", "http.method": "GET", "http.route": "/", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -134,8 +133,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -162,8 +160,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -229,7 +226,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "dynamodb", + "service": "ExampleTableWithStream", "resource": "ExampleTableWithStream", "name": "aws.dynamodb", "error": 0, @@ -240,6 +237,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.dynamodb", "resource_names": "ExampleTableWithStream", + "span.kind": "server", "tablename": "ExampleTableWithStream", "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", "event_id": "XXXX", @@ -251,7 +249,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -299,7 +296,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python310", "name": "aws.lambda", "error": 0, @@ -317,8 +314,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -343,8 +339,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -371,8 +366,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -429,7 +423,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "eventbridge", + "service": "eventbridge.custom.event.sender", "resource": "eventbridge.custom.event.sender", "name": "aws.eventbridge", "error": 0, @@ -440,12 +434,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.eventbridge", "resource_names": "eventbridge.custom.event.sender", + "span.kind": "server", "detail_type": "testdetail", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -461,7 +455,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python310", "name": "aws.lambda", "error": 0, @@ -478,8 +472,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "function_trigger.event_source": "eventbridge", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source": "eventbridge" }, "metrics": { "_dd.top_level": 1 @@ -504,8 +497,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -532,8 +524,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -617,7 +608,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.route": "/httpapi/get", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -633,7 +623,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python310", "name": "aws.lambda", "error": 0, @@ -656,8 +646,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url_details.path": "/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -682,8 +671,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -710,8 +698,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -768,7 +755,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "kinesis", + "service": "EXAMPLE", "resource": "EXAMPLE", "name": "aws.kinesis", "error": 0, @@ -779,6 +766,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.kinesis", "resource_names": "EXAMPLE", + "span.kind": "server", "streamname": "EXAMPLE", "shardid": "shardId-XXXX", "event_source_arn": "arn:aws:kinesis:EXAMPLE", @@ -790,7 +778,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -806,7 +793,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python310", "name": "aws.lambda", "error": 0, @@ -824,8 +811,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -850,8 +836,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -878,8 +863,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -936,7 +920,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "s3", + "service": "example-bucket", "resource": "example-bucket", "name": "aws.s3", "error": 0, @@ -945,6 +929,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.s3", "resource_names": "example-bucket", + "span.kind": "server", "event_name": "ObjectCreated:Put", "bucketname": "example-bucket", "bucket_arn": "arn:aws:s3:::example-bucket", @@ -955,7 +940,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -983,7 +967,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python310", "name": "aws.lambda", "error": 0, @@ -1001,8 +985,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1027,8 +1010,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1055,8 +1037,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1113,7 +1094,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "sns", + "service": "sns-lambda", "resource": "sns-lambda", "name": "aws.sns", "error": 0, @@ -1124,6 +1105,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.sns", "resource_names": "sns-lambda", + "span.kind": "server", "topicname": "sns-lambda", "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", "message_id": "XXXX", @@ -1133,7 +1115,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1149,7 +1130,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python310", "name": "aws.lambda", "error": 0, @@ -1167,8 +1148,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1193,8 +1173,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1221,8 +1200,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1279,7 +1257,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "sqs", + "service": "my-queue", "resource": "my-queue", "name": "aws.sqs", "error": 0, @@ -1290,6 +1268,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.sqs", "resource_names": "my-queue", + "span.kind": "server", "queuename": "my-queue", "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", @@ -1298,7 +1277,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1314,7 +1292,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python310", "name": "aws.lambda", "error": 0, @@ -1332,8 +1310,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1358,8 +1335,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1386,8 +1362,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1457,6 +1432,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com$default", "endpoint": "$default", "resource_names": "$default", + "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", "stage": "dev", @@ -1469,7 +1445,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1485,7 +1460,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python310", "name": "aws.lambda", "error": 0, @@ -1505,8 +1480,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -1531,8 +1505,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1559,8 +1532,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 diff --git a/tests/integration/snapshots/logs/async-metrics_python311.log b/tests/integration/snapshots/logs/async-metrics_python311.log index 18bd119dd..8e19e239d 100644 --- a/tests/integration/snapshots/logs/async-metrics_python311.log +++ b/tests/integration/snapshots/logs/async-metrics_python311.log @@ -59,6 +59,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "endpoint": "/", "http.method": "GET", "resource_names": "GET /", + "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", "stage": "Prod", @@ -69,7 +70,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.route": "/", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -85,7 +85,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python311", "name": "aws.lambda", "error": 0, @@ -108,8 +108,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url_details.path": "/Prod/", "http.method": "GET", "http.route": "/", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -134,8 +133,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -162,8 +160,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -229,7 +226,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "dynamodb", + "service": "ExampleTableWithStream", "resource": "ExampleTableWithStream", "name": "aws.dynamodb", "error": 0, @@ -240,6 +237,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.dynamodb", "resource_names": "ExampleTableWithStream", + "span.kind": "server", "tablename": "ExampleTableWithStream", "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", "event_id": "XXXX", @@ -251,7 +249,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -299,7 +296,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python311", "name": "aws.lambda", "error": 0, @@ -317,8 +314,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -343,8 +339,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -371,8 +366,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -429,7 +423,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "eventbridge", + "service": "eventbridge.custom.event.sender", "resource": "eventbridge.custom.event.sender", "name": "aws.eventbridge", "error": 0, @@ -440,12 +434,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.eventbridge", "resource_names": "eventbridge.custom.event.sender", + "span.kind": "server", "detail_type": "testdetail", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -461,7 +455,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python311", "name": "aws.lambda", "error": 0, @@ -478,8 +472,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "function_trigger.event_source": "eventbridge", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source": "eventbridge" }, "metrics": { "_dd.top_level": 1 @@ -504,8 +497,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -532,8 +524,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -617,7 +608,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.route": "/httpapi/get", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -633,7 +623,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python311", "name": "aws.lambda", "error": 0, @@ -656,8 +646,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url_details.path": "/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -682,8 +671,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -710,8 +698,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -768,7 +755,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "kinesis", + "service": "EXAMPLE", "resource": "EXAMPLE", "name": "aws.kinesis", "error": 0, @@ -779,6 +766,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.kinesis", "resource_names": "EXAMPLE", + "span.kind": "server", "streamname": "EXAMPLE", "shardid": "shardId-XXXX", "event_source_arn": "arn:aws:kinesis:EXAMPLE", @@ -790,7 +778,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -806,7 +793,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python311", "name": "aws.lambda", "error": 0, @@ -824,8 +811,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -850,8 +836,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -878,8 +863,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -936,7 +920,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "s3", + "service": "example-bucket", "resource": "example-bucket", "name": "aws.s3", "error": 0, @@ -945,6 +929,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.s3", "resource_names": "example-bucket", + "span.kind": "server", "event_name": "ObjectCreated:Put", "bucketname": "example-bucket", "bucket_arn": "arn:aws:s3:::example-bucket", @@ -955,7 +940,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -983,7 +967,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python311", "name": "aws.lambda", "error": 0, @@ -1001,8 +985,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1027,8 +1010,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1055,8 +1037,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1113,7 +1094,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "sns", + "service": "sns-lambda", "resource": "sns-lambda", "name": "aws.sns", "error": 0, @@ -1124,6 +1105,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.sns", "resource_names": "sns-lambda", + "span.kind": "server", "topicname": "sns-lambda", "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", "message_id": "XXXX", @@ -1133,7 +1115,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1149,7 +1130,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python311", "name": "aws.lambda", "error": 0, @@ -1167,8 +1148,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1193,8 +1173,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1221,8 +1200,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1279,7 +1257,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "sqs", + "service": "my-queue", "resource": "my-queue", "name": "aws.sqs", "error": 0, @@ -1290,6 +1268,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.sqs", "resource_names": "my-queue", + "span.kind": "server", "queuename": "my-queue", "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", @@ -1298,7 +1277,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1314,7 +1292,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python311", "name": "aws.lambda", "error": 0, @@ -1332,8 +1310,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1358,8 +1335,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1386,8 +1362,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1457,6 +1432,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com$default", "endpoint": "$default", "resource_names": "$default", + "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", "stage": "dev", @@ -1469,7 +1445,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1485,7 +1460,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python311", "name": "aws.lambda", "error": 0, @@ -1505,8 +1480,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -1531,8 +1505,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1559,8 +1532,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 diff --git a/tests/integration/snapshots/logs/async-metrics_python312.log b/tests/integration/snapshots/logs/async-metrics_python312.log index e884a96d3..9879d8754 100644 --- a/tests/integration/snapshots/logs/async-metrics_python312.log +++ b/tests/integration/snapshots/logs/async-metrics_python312.log @@ -59,6 +59,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "endpoint": "/", "http.method": "GET", "resource_names": "GET /", + "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", "stage": "Prod", @@ -69,7 +70,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.route": "/", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -85,7 +85,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python312", "name": "aws.lambda", "error": 0, @@ -108,8 +108,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url_details.path": "/Prod/", "http.method": "GET", "http.route": "/", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -134,8 +133,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -162,8 +160,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -229,7 +226,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "dynamodb", + "service": "ExampleTableWithStream", "resource": "ExampleTableWithStream", "name": "aws.dynamodb", "error": 0, @@ -240,6 +237,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.dynamodb", "resource_names": "ExampleTableWithStream", + "span.kind": "server", "tablename": "ExampleTableWithStream", "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", "event_id": "XXXX", @@ -251,7 +249,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -299,7 +296,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python312", "name": "aws.lambda", "error": 0, @@ -317,8 +314,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -343,8 +339,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -371,8 +366,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -429,7 +423,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "eventbridge", + "service": "eventbridge.custom.event.sender", "resource": "eventbridge.custom.event.sender", "name": "aws.eventbridge", "error": 0, @@ -440,12 +434,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.eventbridge", "resource_names": "eventbridge.custom.event.sender", + "span.kind": "server", "detail_type": "testdetail", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -461,7 +455,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python312", "name": "aws.lambda", "error": 0, @@ -478,8 +472,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "function_trigger.event_source": "eventbridge", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source": "eventbridge" }, "metrics": { "_dd.top_level": 1 @@ -504,8 +497,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -532,8 +524,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -617,7 +608,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.route": "/httpapi/get", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -633,7 +623,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python312", "name": "aws.lambda", "error": 0, @@ -656,8 +646,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url_details.path": "/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -682,8 +671,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -710,8 +698,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -768,7 +755,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "kinesis", + "service": "EXAMPLE", "resource": "EXAMPLE", "name": "aws.kinesis", "error": 0, @@ -779,6 +766,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.kinesis", "resource_names": "EXAMPLE", + "span.kind": "server", "streamname": "EXAMPLE", "shardid": "shardId-XXXX", "event_source_arn": "arn:aws:kinesis:EXAMPLE", @@ -790,7 +778,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -806,7 +793,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python312", "name": "aws.lambda", "error": 0, @@ -824,8 +811,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -850,8 +836,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -878,8 +863,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -936,7 +920,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "s3", + "service": "example-bucket", "resource": "example-bucket", "name": "aws.s3", "error": 0, @@ -945,6 +929,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.s3", "resource_names": "example-bucket", + "span.kind": "server", "event_name": "ObjectCreated:Put", "bucketname": "example-bucket", "bucket_arn": "arn:aws:s3:::example-bucket", @@ -955,7 +940,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -983,7 +967,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python312", "name": "aws.lambda", "error": 0, @@ -1001,8 +985,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1027,8 +1010,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1055,8 +1037,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1113,7 +1094,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "sns", + "service": "sns-lambda", "resource": "sns-lambda", "name": "aws.sns", "error": 0, @@ -1124,6 +1105,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.sns", "resource_names": "sns-lambda", + "span.kind": "server", "topicname": "sns-lambda", "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", "message_id": "XXXX", @@ -1133,7 +1115,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1149,7 +1130,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python312", "name": "aws.lambda", "error": 0, @@ -1167,8 +1148,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1193,8 +1173,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1221,8 +1200,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1279,7 +1257,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "sqs", + "service": "my-queue", "resource": "my-queue", "name": "aws.sqs", "error": 0, @@ -1290,6 +1268,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.sqs", "resource_names": "my-queue", + "span.kind": "server", "queuename": "my-queue", "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", @@ -1298,7 +1277,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1314,7 +1292,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python312", "name": "aws.lambda", "error": 0, @@ -1332,8 +1310,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1358,8 +1335,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1386,8 +1362,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1457,6 +1432,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com$default", "endpoint": "$default", "resource_names": "$default", + "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", "stage": "dev", @@ -1469,7 +1445,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1485,7 +1460,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python312", "name": "aws.lambda", "error": 0, @@ -1505,8 +1480,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -1531,8 +1505,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1559,8 +1532,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 diff --git a/tests/integration/snapshots/logs/async-metrics_python313.log b/tests/integration/snapshots/logs/async-metrics_python313.log index 3393f6842..92bb83efe 100644 --- a/tests/integration/snapshots/logs/async-metrics_python313.log +++ b/tests/integration/snapshots/logs/async-metrics_python313.log @@ -59,6 +59,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "endpoint": "/", "http.method": "GET", "resource_names": "GET /", + "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", "stage": "Prod", @@ -69,7 +70,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.route": "/", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -85,7 +85,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python313", "name": "aws.lambda", "error": 0, @@ -108,8 +108,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url_details.path": "/Prod/", "http.method": "GET", "http.route": "/", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -134,8 +133,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -162,8 +160,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -229,7 +226,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "dynamodb", + "service": "ExampleTableWithStream", "resource": "ExampleTableWithStream", "name": "aws.dynamodb", "error": 0, @@ -240,6 +237,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.dynamodb", "resource_names": "ExampleTableWithStream", + "span.kind": "server", "tablename": "ExampleTableWithStream", "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", "event_id": "XXXX", @@ -251,7 +249,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -299,7 +296,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python313", "name": "aws.lambda", "error": 0, @@ -317,8 +314,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -343,8 +339,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -371,8 +366,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -429,7 +423,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "eventbridge", + "service": "eventbridge.custom.event.sender", "resource": "eventbridge.custom.event.sender", "name": "aws.eventbridge", "error": 0, @@ -440,12 +434,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.eventbridge", "resource_names": "eventbridge.custom.event.sender", + "span.kind": "server", "detail_type": "testdetail", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -461,7 +455,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python313", "name": "aws.lambda", "error": 0, @@ -478,8 +472,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "function_trigger.event_source": "eventbridge", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source": "eventbridge" }, "metrics": { "_dd.top_level": 1 @@ -504,8 +497,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -532,8 +524,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -617,7 +608,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.route": "/httpapi/get", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -633,7 +623,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python313", "name": "aws.lambda", "error": 0, @@ -656,8 +646,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url_details.path": "/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -682,8 +671,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -710,8 +698,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -768,7 +755,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "kinesis", + "service": "EXAMPLE", "resource": "EXAMPLE", "name": "aws.kinesis", "error": 0, @@ -779,6 +766,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.kinesis", "resource_names": "EXAMPLE", + "span.kind": "server", "streamname": "EXAMPLE", "shardid": "shardId-XXXX", "event_source_arn": "arn:aws:kinesis:EXAMPLE", @@ -790,7 +778,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -806,7 +793,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python313", "name": "aws.lambda", "error": 0, @@ -824,8 +811,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -850,8 +836,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -878,8 +863,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -936,7 +920,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "s3", + "service": "example-bucket", "resource": "example-bucket", "name": "aws.s3", "error": 0, @@ -945,6 +929,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.s3", "resource_names": "example-bucket", + "span.kind": "server", "event_name": "ObjectCreated:Put", "bucketname": "example-bucket", "bucket_arn": "arn:aws:s3:::example-bucket", @@ -955,7 +940,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -983,7 +967,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python313", "name": "aws.lambda", "error": 0, @@ -1001,8 +985,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1027,8 +1010,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1055,8 +1037,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1113,7 +1094,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "sns", + "service": "sns-lambda", "resource": "sns-lambda", "name": "aws.sns", "error": 0, @@ -1124,6 +1105,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.sns", "resource_names": "sns-lambda", + "span.kind": "server", "topicname": "sns-lambda", "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", "message_id": "XXXX", @@ -1133,7 +1115,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1149,7 +1130,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python313", "name": "aws.lambda", "error": 0, @@ -1167,8 +1148,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1193,8 +1173,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1221,8 +1200,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1279,7 +1257,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "sqs", + "service": "my-queue", "resource": "my-queue", "name": "aws.sqs", "error": 0, @@ -1290,6 +1268,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.sqs", "resource_names": "my-queue", + "span.kind": "server", "queuename": "my-queue", "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", @@ -1298,7 +1277,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1314,7 +1292,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python313", "name": "aws.lambda", "error": 0, @@ -1332,8 +1310,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1358,8 +1335,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1386,8 +1362,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1457,6 +1432,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com$default", "endpoint": "$default", "resource_names": "$default", + "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", "stage": "dev", @@ -1469,7 +1445,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1485,7 +1460,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python313", "name": "aws.lambda", "error": 0, @@ -1505,8 +1480,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -1531,8 +1505,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1559,8 +1532,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 diff --git a/tests/integration/snapshots/logs/async-metrics_python38.log b/tests/integration/snapshots/logs/async-metrics_python38.log index 0495ba459..6c5021469 100644 --- a/tests/integration/snapshots/logs/async-metrics_python38.log +++ b/tests/integration/snapshots/logs/async-metrics_python38.log @@ -59,6 +59,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "endpoint": "/", "http.method": "GET", "resource_names": "GET /", + "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", "stage": "Prod", @@ -69,7 +70,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.route": "/", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -85,7 +85,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python38", "name": "aws.lambda", "error": 0, @@ -108,8 +108,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url_details.path": "/Prod/", "http.method": "GET", "http.route": "/", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -134,8 +133,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -162,8 +160,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -229,7 +226,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "dynamodb", + "service": "ExampleTableWithStream", "resource": "ExampleTableWithStream", "name": "aws.dynamodb", "error": 0, @@ -240,6 +237,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.dynamodb", "resource_names": "ExampleTableWithStream", + "span.kind": "server", "tablename": "ExampleTableWithStream", "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", "event_id": "XXXX", @@ -251,7 +249,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -299,7 +296,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python38", "name": "aws.lambda", "error": 0, @@ -317,8 +314,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -343,8 +339,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -371,8 +366,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -429,7 +423,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "eventbridge", + "service": "eventbridge.custom.event.sender", "resource": "eventbridge.custom.event.sender", "name": "aws.eventbridge", "error": 0, @@ -440,12 +434,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.eventbridge", "resource_names": "eventbridge.custom.event.sender", + "span.kind": "server", "detail_type": "testdetail", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -461,7 +455,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python38", "name": "aws.lambda", "error": 0, @@ -478,8 +472,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "function_trigger.event_source": "eventbridge", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source": "eventbridge" }, "metrics": { "_dd.top_level": 1 @@ -504,8 +497,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -532,8 +524,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -617,7 +608,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.route": "/httpapi/get", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -633,7 +623,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python38", "name": "aws.lambda", "error": 0, @@ -656,8 +646,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url_details.path": "/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -682,8 +671,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -710,8 +698,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -768,7 +755,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "kinesis", + "service": "EXAMPLE", "resource": "EXAMPLE", "name": "aws.kinesis", "error": 0, @@ -779,6 +766,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.kinesis", "resource_names": "EXAMPLE", + "span.kind": "server", "streamname": "EXAMPLE", "shardid": "shardId-XXXX", "event_source_arn": "arn:aws:kinesis:EXAMPLE", @@ -790,7 +778,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -806,7 +793,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python38", "name": "aws.lambda", "error": 0, @@ -824,8 +811,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -850,8 +836,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -878,8 +863,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -936,7 +920,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "s3", + "service": "example-bucket", "resource": "example-bucket", "name": "aws.s3", "error": 0, @@ -945,6 +929,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.s3", "resource_names": "example-bucket", + "span.kind": "server", "event_name": "ObjectCreated:Put", "bucketname": "example-bucket", "bucket_arn": "arn:aws:s3:::example-bucket", @@ -955,7 +940,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -983,7 +967,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python38", "name": "aws.lambda", "error": 0, @@ -1001,8 +985,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1027,8 +1010,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1055,8 +1037,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1113,7 +1094,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "sns", + "service": "sns-lambda", "resource": "sns-lambda", "name": "aws.sns", "error": 0, @@ -1124,6 +1105,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.sns", "resource_names": "sns-lambda", + "span.kind": "server", "topicname": "sns-lambda", "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", "message_id": "XXXX", @@ -1133,7 +1115,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1149,7 +1130,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python38", "name": "aws.lambda", "error": 0, @@ -1167,8 +1148,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1193,8 +1173,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1221,8 +1200,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1279,7 +1257,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "sqs", + "service": "my-queue", "resource": "my-queue", "name": "aws.sqs", "error": 0, @@ -1290,6 +1268,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.sqs", "resource_names": "my-queue", + "span.kind": "server", "queuename": "my-queue", "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", @@ -1298,7 +1277,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1314,7 +1292,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python38", "name": "aws.lambda", "error": 0, @@ -1332,8 +1310,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1358,8 +1335,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1386,8 +1362,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1457,6 +1432,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com$default", "endpoint": "$default", "resource_names": "$default", + "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", "stage": "dev", @@ -1469,7 +1445,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1485,7 +1460,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python38", "name": "aws.lambda", "error": 0, @@ -1505,8 +1480,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -1531,8 +1505,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1559,8 +1532,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 diff --git a/tests/integration/snapshots/logs/async-metrics_python39.log b/tests/integration/snapshots/logs/async-metrics_python39.log index d2aad04c4..42bdaeb84 100644 --- a/tests/integration/snapshots/logs/async-metrics_python39.log +++ b/tests/integration/snapshots/logs/async-metrics_python39.log @@ -59,6 +59,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "endpoint": "/", "http.method": "GET", "resource_names": "GET /", + "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", "stage": "Prod", @@ -69,7 +70,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.route": "/", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -85,7 +85,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python39", "name": "aws.lambda", "error": 0, @@ -108,8 +108,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url_details.path": "/Prod/", "http.method": "GET", "http.route": "/", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -134,8 +133,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -162,8 +160,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -229,7 +226,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "dynamodb", + "service": "ExampleTableWithStream", "resource": "ExampleTableWithStream", "name": "aws.dynamodb", "error": 0, @@ -240,6 +237,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.dynamodb", "resource_names": "ExampleTableWithStream", + "span.kind": "server", "tablename": "ExampleTableWithStream", "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", "event_id": "XXXX", @@ -251,7 +249,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -299,7 +296,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python39", "name": "aws.lambda", "error": 0, @@ -317,8 +314,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -343,8 +339,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -371,8 +366,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -429,7 +423,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "eventbridge", + "service": "eventbridge.custom.event.sender", "resource": "eventbridge.custom.event.sender", "name": "aws.eventbridge", "error": 0, @@ -440,12 +434,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.eventbridge", "resource_names": "eventbridge.custom.event.sender", + "span.kind": "server", "detail_type": "testdetail", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -461,7 +455,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python39", "name": "aws.lambda", "error": 0, @@ -478,8 +472,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "function_trigger.event_source": "eventbridge", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source": "eventbridge" }, "metrics": { "_dd.top_level": 1 @@ -504,8 +497,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -532,8 +524,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -617,7 +608,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.route": "/httpapi/get", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -633,7 +623,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python39", "name": "aws.lambda", "error": 0, @@ -656,8 +646,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url_details.path": "/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -682,8 +671,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -710,8 +698,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -768,7 +755,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "kinesis", + "service": "EXAMPLE", "resource": "EXAMPLE", "name": "aws.kinesis", "error": 0, @@ -779,6 +766,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.kinesis", "resource_names": "EXAMPLE", + "span.kind": "server", "streamname": "EXAMPLE", "shardid": "shardId-XXXX", "event_source_arn": "arn:aws:kinesis:EXAMPLE", @@ -790,7 +778,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -806,7 +793,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python39", "name": "aws.lambda", "error": 0, @@ -824,8 +811,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -850,8 +836,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -878,8 +863,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -936,7 +920,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "s3", + "service": "example-bucket", "resource": "example-bucket", "name": "aws.s3", "error": 0, @@ -945,6 +929,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.s3", "resource_names": "example-bucket", + "span.kind": "server", "event_name": "ObjectCreated:Put", "bucketname": "example-bucket", "bucket_arn": "arn:aws:s3:::example-bucket", @@ -955,7 +940,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -983,7 +967,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python39", "name": "aws.lambda", "error": 0, @@ -1001,8 +985,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1027,8 +1010,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1055,8 +1037,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1113,7 +1094,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "sns", + "service": "sns-lambda", "resource": "sns-lambda", "name": "aws.sns", "error": 0, @@ -1124,6 +1105,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.sns", "resource_names": "sns-lambda", + "span.kind": "server", "topicname": "sns-lambda", "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", "message_id": "XXXX", @@ -1133,7 +1115,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1149,7 +1130,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python39", "name": "aws.lambda", "error": 0, @@ -1167,8 +1148,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1193,8 +1173,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1221,8 +1200,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1279,7 +1257,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "sqs", + "service": "my-queue", "resource": "my-queue", "name": "aws.sqs", "error": 0, @@ -1290,6 +1268,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.sqs", "resource_names": "my-queue", + "span.kind": "server", "queuename": "my-queue", "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", @@ -1298,7 +1277,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1314,7 +1292,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python39", "name": "aws.lambda", "error": 0, @@ -1332,8 +1310,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1358,8 +1335,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1386,8 +1362,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1457,6 +1432,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com$default", "endpoint": "$default", "resource_names": "$default", + "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", "stage": "dev", @@ -1469,7 +1445,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1485,7 +1460,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-async-metrics_python39", "name": "aws.lambda", "error": 0, @@ -1505,8 +1480,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -1531,8 +1505,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1559,8 +1532,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 diff --git a/tests/integration/snapshots/logs/sync-metrics_python310.log b/tests/integration/snapshots/logs/sync-metrics_python310.log index aa96b02d9..201ca82a7 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python310.log +++ b/tests/integration/snapshots/logs/sync-metrics_python310.log @@ -39,6 +39,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "endpoint": "/", "http.method": "GET", "resource_names": "GET /", + "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", "stage": "Prod", @@ -49,7 +50,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.route": "/", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -65,7 +65,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python310", "name": "aws.lambda", "error": 0, @@ -88,8 +88,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url_details.path": "/Prod/", "http.method": "GET", "http.route": "/", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -114,8 +113,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -142,8 +140,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -177,7 +174,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -229,7 +225,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "dynamodb", + "service": "ExampleTableWithStream", "resource": "ExampleTableWithStream", "name": "aws.dynamodb", "error": 0, @@ -240,6 +236,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.dynamodb", "resource_names": "ExampleTableWithStream", + "span.kind": "server", "tablename": "ExampleTableWithStream", "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", "event_id": "XXXX", @@ -251,7 +248,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -299,7 +295,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python310", "name": "aws.lambda", "error": 0, @@ -317,8 +313,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -343,8 +338,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -371,8 +365,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -406,7 +399,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -449,7 +441,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "eventbridge", + "service": "eventbridge.custom.event.sender", "resource": "eventbridge.custom.event.sender", "name": "aws.eventbridge", "error": 0, @@ -460,12 +452,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.eventbridge", "resource_names": "eventbridge.custom.event.sender", + "span.kind": "server", "detail_type": "testdetail", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -481,7 +473,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python310", "name": "aws.lambda", "error": 0, @@ -498,8 +490,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "function_trigger.event_source": "eventbridge", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source": "eventbridge" }, "metrics": { "_dd.top_level": 1 @@ -524,8 +515,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -552,8 +542,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -587,7 +576,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -657,7 +645,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.route": "/httpapi/get", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -673,7 +660,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python310", "name": "aws.lambda", "error": 0, @@ -696,8 +683,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url_details.path": "/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -722,8 +708,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -750,8 +735,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -785,7 +769,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -828,7 +811,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "kinesis", + "service": "EXAMPLE", "resource": "EXAMPLE", "name": "aws.kinesis", "error": 0, @@ -839,6 +822,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.kinesis", "resource_names": "EXAMPLE", + "span.kind": "server", "streamname": "EXAMPLE", "shardid": "shardId-XXXX", "event_source_arn": "arn:aws:kinesis:EXAMPLE", @@ -850,7 +834,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -866,7 +849,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python310", "name": "aws.lambda", "error": 0, @@ -884,8 +867,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -910,8 +892,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -938,8 +919,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -973,7 +953,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1016,7 +995,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "s3", + "service": "example-bucket", "resource": "example-bucket", "name": "aws.s3", "error": 0, @@ -1025,6 +1004,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.s3", "resource_names": "example-bucket", + "span.kind": "server", "event_name": "ObjectCreated:Put", "bucketname": "example-bucket", "bucket_arn": "arn:aws:s3:::example-bucket", @@ -1035,7 +1015,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1063,7 +1042,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python310", "name": "aws.lambda", "error": 0, @@ -1081,8 +1060,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1107,8 +1085,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1135,8 +1112,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1170,7 +1146,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1213,7 +1188,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "sns", + "service": "sns-lambda", "resource": "sns-lambda", "name": "aws.sns", "error": 0, @@ -1224,6 +1199,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.sns", "resource_names": "sns-lambda", + "span.kind": "server", "topicname": "sns-lambda", "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", "message_id": "XXXX", @@ -1233,7 +1209,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1249,7 +1224,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python310", "name": "aws.lambda", "error": 0, @@ -1267,8 +1242,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1293,8 +1267,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1321,8 +1294,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1356,7 +1328,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1399,7 +1370,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "sqs", + "service": "my-queue", "resource": "my-queue", "name": "aws.sqs", "error": 0, @@ -1410,6 +1381,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.sqs", "resource_names": "my-queue", + "span.kind": "server", "queuename": "my-queue", "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", @@ -1418,7 +1390,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1434,7 +1405,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python310", "name": "aws.lambda", "error": 0, @@ -1452,8 +1423,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1478,8 +1448,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1506,8 +1475,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1541,7 +1509,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1597,6 +1564,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com$default", "endpoint": "$default", "resource_names": "$default", + "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", "stage": "dev", @@ -1609,7 +1577,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1625,7 +1592,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python310", "name": "aws.lambda", "error": 0, @@ -1645,8 +1612,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -1671,8 +1637,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1699,8 +1664,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1734,7 +1698,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" diff --git a/tests/integration/snapshots/logs/sync-metrics_python311.log b/tests/integration/snapshots/logs/sync-metrics_python311.log index 91ae2e516..564db4a94 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python311.log +++ b/tests/integration/snapshots/logs/sync-metrics_python311.log @@ -39,6 +39,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "endpoint": "/", "http.method": "GET", "resource_names": "GET /", + "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", "stage": "Prod", @@ -49,7 +50,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.route": "/", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -65,7 +65,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python311", "name": "aws.lambda", "error": 0, @@ -88,8 +88,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url_details.path": "/Prod/", "http.method": "GET", "http.route": "/", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -114,8 +113,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -142,8 +140,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -177,7 +174,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -229,7 +225,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "dynamodb", + "service": "ExampleTableWithStream", "resource": "ExampleTableWithStream", "name": "aws.dynamodb", "error": 0, @@ -240,6 +236,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.dynamodb", "resource_names": "ExampleTableWithStream", + "span.kind": "server", "tablename": "ExampleTableWithStream", "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", "event_id": "XXXX", @@ -251,7 +248,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -299,7 +295,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python311", "name": "aws.lambda", "error": 0, @@ -317,8 +313,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -343,8 +338,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -371,8 +365,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -406,7 +399,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -449,7 +441,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "eventbridge", + "service": "eventbridge.custom.event.sender", "resource": "eventbridge.custom.event.sender", "name": "aws.eventbridge", "error": 0, @@ -460,12 +452,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.eventbridge", "resource_names": "eventbridge.custom.event.sender", + "span.kind": "server", "detail_type": "testdetail", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -481,7 +473,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python311", "name": "aws.lambda", "error": 0, @@ -498,8 +490,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "function_trigger.event_source": "eventbridge", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source": "eventbridge" }, "metrics": { "_dd.top_level": 1 @@ -524,8 +515,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -552,8 +542,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -587,7 +576,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -657,7 +645,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.route": "/httpapi/get", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -673,7 +660,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python311", "name": "aws.lambda", "error": 0, @@ -696,8 +683,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url_details.path": "/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -722,8 +708,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -750,8 +735,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -785,7 +769,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -828,7 +811,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "kinesis", + "service": "EXAMPLE", "resource": "EXAMPLE", "name": "aws.kinesis", "error": 0, @@ -839,6 +822,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.kinesis", "resource_names": "EXAMPLE", + "span.kind": "server", "streamname": "EXAMPLE", "shardid": "shardId-XXXX", "event_source_arn": "arn:aws:kinesis:EXAMPLE", @@ -850,7 +834,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -866,7 +849,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python311", "name": "aws.lambda", "error": 0, @@ -884,8 +867,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -910,8 +892,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -938,8 +919,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -973,7 +953,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1016,7 +995,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "s3", + "service": "example-bucket", "resource": "example-bucket", "name": "aws.s3", "error": 0, @@ -1025,6 +1004,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.s3", "resource_names": "example-bucket", + "span.kind": "server", "event_name": "ObjectCreated:Put", "bucketname": "example-bucket", "bucket_arn": "arn:aws:s3:::example-bucket", @@ -1035,7 +1015,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1063,7 +1042,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python311", "name": "aws.lambda", "error": 0, @@ -1081,8 +1060,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1107,8 +1085,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1135,8 +1112,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1170,7 +1146,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1213,7 +1188,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "sns", + "service": "sns-lambda", "resource": "sns-lambda", "name": "aws.sns", "error": 0, @@ -1224,6 +1199,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.sns", "resource_names": "sns-lambda", + "span.kind": "server", "topicname": "sns-lambda", "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", "message_id": "XXXX", @@ -1233,7 +1209,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1249,7 +1224,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python311", "name": "aws.lambda", "error": 0, @@ -1267,8 +1242,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1293,8 +1267,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1321,8 +1294,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1356,7 +1328,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1399,7 +1370,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "sqs", + "service": "my-queue", "resource": "my-queue", "name": "aws.sqs", "error": 0, @@ -1410,6 +1381,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.sqs", "resource_names": "my-queue", + "span.kind": "server", "queuename": "my-queue", "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", @@ -1418,7 +1390,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1434,7 +1405,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python311", "name": "aws.lambda", "error": 0, @@ -1452,8 +1423,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1478,8 +1448,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1506,8 +1475,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1541,7 +1509,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1597,6 +1564,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com$default", "endpoint": "$default", "resource_names": "$default", + "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", "stage": "dev", @@ -1609,7 +1577,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1625,7 +1592,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python311", "name": "aws.lambda", "error": 0, @@ -1645,8 +1612,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -1671,8 +1637,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1699,8 +1664,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1734,7 +1698,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" diff --git a/tests/integration/snapshots/logs/sync-metrics_python312.log b/tests/integration/snapshots/logs/sync-metrics_python312.log index 81e897cad..6010a3641 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python312.log +++ b/tests/integration/snapshots/logs/sync-metrics_python312.log @@ -39,6 +39,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "endpoint": "/", "http.method": "GET", "resource_names": "GET /", + "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", "stage": "Prod", @@ -49,7 +50,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.route": "/", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -65,7 +65,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python312", "name": "aws.lambda", "error": 0, @@ -88,8 +88,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url_details.path": "/Prod/", "http.method": "GET", "http.route": "/", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -114,8 +113,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -142,8 +140,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -177,7 +174,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -229,7 +225,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "dynamodb", + "service": "ExampleTableWithStream", "resource": "ExampleTableWithStream", "name": "aws.dynamodb", "error": 0, @@ -240,6 +236,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.dynamodb", "resource_names": "ExampleTableWithStream", + "span.kind": "server", "tablename": "ExampleTableWithStream", "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", "event_id": "XXXX", @@ -251,7 +248,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -299,7 +295,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python312", "name": "aws.lambda", "error": 0, @@ -317,8 +313,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -343,8 +338,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -371,8 +365,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -406,7 +399,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -449,7 +441,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "eventbridge", + "service": "eventbridge.custom.event.sender", "resource": "eventbridge.custom.event.sender", "name": "aws.eventbridge", "error": 0, @@ -460,12 +452,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.eventbridge", "resource_names": "eventbridge.custom.event.sender", + "span.kind": "server", "detail_type": "testdetail", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -481,7 +473,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python312", "name": "aws.lambda", "error": 0, @@ -498,8 +490,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "function_trigger.event_source": "eventbridge", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source": "eventbridge" }, "metrics": { "_dd.top_level": 1 @@ -524,8 +515,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -552,8 +542,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -587,7 +576,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -657,7 +645,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.route": "/httpapi/get", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -673,7 +660,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python312", "name": "aws.lambda", "error": 0, @@ -696,8 +683,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url_details.path": "/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -722,8 +708,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -750,8 +735,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -785,7 +769,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -828,7 +811,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "kinesis", + "service": "EXAMPLE", "resource": "EXAMPLE", "name": "aws.kinesis", "error": 0, @@ -839,6 +822,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.kinesis", "resource_names": "EXAMPLE", + "span.kind": "server", "streamname": "EXAMPLE", "shardid": "shardId-XXXX", "event_source_arn": "arn:aws:kinesis:EXAMPLE", @@ -850,7 +834,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -866,7 +849,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python312", "name": "aws.lambda", "error": 0, @@ -884,8 +867,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -910,8 +892,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -938,8 +919,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -973,7 +953,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1016,7 +995,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "s3", + "service": "example-bucket", "resource": "example-bucket", "name": "aws.s3", "error": 0, @@ -1025,6 +1004,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.s3", "resource_names": "example-bucket", + "span.kind": "server", "event_name": "ObjectCreated:Put", "bucketname": "example-bucket", "bucket_arn": "arn:aws:s3:::example-bucket", @@ -1035,7 +1015,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1063,7 +1042,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python312", "name": "aws.lambda", "error": 0, @@ -1081,8 +1060,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1107,8 +1085,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1135,8 +1112,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1170,7 +1146,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1213,7 +1188,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "sns", + "service": "sns-lambda", "resource": "sns-lambda", "name": "aws.sns", "error": 0, @@ -1224,6 +1199,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.sns", "resource_names": "sns-lambda", + "span.kind": "server", "topicname": "sns-lambda", "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", "message_id": "XXXX", @@ -1233,7 +1209,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1249,7 +1224,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python312", "name": "aws.lambda", "error": 0, @@ -1267,8 +1242,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1293,8 +1267,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1321,8 +1294,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1356,7 +1328,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1399,7 +1370,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "sqs", + "service": "my-queue", "resource": "my-queue", "name": "aws.sqs", "error": 0, @@ -1410,6 +1381,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.sqs", "resource_names": "my-queue", + "span.kind": "server", "queuename": "my-queue", "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", @@ -1418,7 +1390,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1434,7 +1405,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python312", "name": "aws.lambda", "error": 0, @@ -1452,8 +1423,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1478,8 +1448,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1506,8 +1475,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1541,7 +1509,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1597,6 +1564,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com$default", "endpoint": "$default", "resource_names": "$default", + "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", "stage": "dev", @@ -1609,7 +1577,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1625,7 +1592,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python312", "name": "aws.lambda", "error": 0, @@ -1645,8 +1612,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -1671,8 +1637,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1699,8 +1664,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1734,7 +1698,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" diff --git a/tests/integration/snapshots/logs/sync-metrics_python313.log b/tests/integration/snapshots/logs/sync-metrics_python313.log index 77376e6b5..21d033620 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python313.log +++ b/tests/integration/snapshots/logs/sync-metrics_python313.log @@ -39,6 +39,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "endpoint": "/", "http.method": "GET", "resource_names": "GET /", + "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", "stage": "Prod", @@ -49,7 +50,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.route": "/", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -65,7 +65,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python313", "name": "aws.lambda", "error": 0, @@ -88,8 +88,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url_details.path": "/Prod/", "http.method": "GET", "http.route": "/", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -114,8 +113,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -142,8 +140,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -177,7 +174,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -229,7 +225,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "dynamodb", + "service": "ExampleTableWithStream", "resource": "ExampleTableWithStream", "name": "aws.dynamodb", "error": 0, @@ -240,6 +236,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.dynamodb", "resource_names": "ExampleTableWithStream", + "span.kind": "server", "tablename": "ExampleTableWithStream", "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", "event_id": "XXXX", @@ -251,7 +248,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -299,7 +295,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python313", "name": "aws.lambda", "error": 0, @@ -317,8 +313,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -343,8 +338,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -371,8 +365,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -406,7 +399,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -449,7 +441,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "eventbridge", + "service": "eventbridge.custom.event.sender", "resource": "eventbridge.custom.event.sender", "name": "aws.eventbridge", "error": 0, @@ -460,12 +452,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.eventbridge", "resource_names": "eventbridge.custom.event.sender", + "span.kind": "server", "detail_type": "testdetail", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -481,7 +473,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python313", "name": "aws.lambda", "error": 0, @@ -498,8 +490,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "function_trigger.event_source": "eventbridge", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source": "eventbridge" }, "metrics": { "_dd.top_level": 1 @@ -524,8 +515,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -552,8 +542,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -587,7 +576,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -657,7 +645,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.route": "/httpapi/get", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -673,7 +660,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python313", "name": "aws.lambda", "error": 0, @@ -696,8 +683,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url_details.path": "/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -722,8 +708,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -750,8 +735,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -785,7 +769,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -828,7 +811,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "kinesis", + "service": "EXAMPLE", "resource": "EXAMPLE", "name": "aws.kinesis", "error": 0, @@ -839,6 +822,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.kinesis", "resource_names": "EXAMPLE", + "span.kind": "server", "streamname": "EXAMPLE", "shardid": "shardId-XXXX", "event_source_arn": "arn:aws:kinesis:EXAMPLE", @@ -850,7 +834,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -866,7 +849,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python313", "name": "aws.lambda", "error": 0, @@ -884,8 +867,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -910,8 +892,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -938,8 +919,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -973,7 +953,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1016,7 +995,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "s3", + "service": "example-bucket", "resource": "example-bucket", "name": "aws.s3", "error": 0, @@ -1025,6 +1004,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.s3", "resource_names": "example-bucket", + "span.kind": "server", "event_name": "ObjectCreated:Put", "bucketname": "example-bucket", "bucket_arn": "arn:aws:s3:::example-bucket", @@ -1035,7 +1015,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1063,7 +1042,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python313", "name": "aws.lambda", "error": 0, @@ -1081,8 +1060,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1107,8 +1085,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1135,8 +1112,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1170,7 +1146,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1213,7 +1188,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "sns", + "service": "sns-lambda", "resource": "sns-lambda", "name": "aws.sns", "error": 0, @@ -1224,6 +1199,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.sns", "resource_names": "sns-lambda", + "span.kind": "server", "topicname": "sns-lambda", "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", "message_id": "XXXX", @@ -1233,7 +1209,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1249,7 +1224,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python313", "name": "aws.lambda", "error": 0, @@ -1267,8 +1242,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1293,8 +1267,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1321,8 +1294,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1356,7 +1328,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1399,7 +1370,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "sqs", + "service": "my-queue", "resource": "my-queue", "name": "aws.sqs", "error": 0, @@ -1410,6 +1381,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.sqs", "resource_names": "my-queue", + "span.kind": "server", "queuename": "my-queue", "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", @@ -1418,7 +1390,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1434,7 +1405,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python313", "name": "aws.lambda", "error": 0, @@ -1452,8 +1423,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1478,8 +1448,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1506,8 +1475,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1541,7 +1509,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1597,6 +1564,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com$default", "endpoint": "$default", "resource_names": "$default", + "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", "stage": "dev", @@ -1609,7 +1577,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1625,7 +1592,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python313", "name": "aws.lambda", "error": 0, @@ -1645,8 +1612,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -1671,8 +1637,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1699,8 +1664,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1734,7 +1698,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" diff --git a/tests/integration/snapshots/logs/sync-metrics_python38.log b/tests/integration/snapshots/logs/sync-metrics_python38.log index ddc8d7510..a68289046 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python38.log +++ b/tests/integration/snapshots/logs/sync-metrics_python38.log @@ -39,6 +39,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "endpoint": "/", "http.method": "GET", "resource_names": "GET /", + "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", "stage": "Prod", @@ -49,7 +50,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.route": "/", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -65,7 +65,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python38", "name": "aws.lambda", "error": 0, @@ -88,8 +88,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url_details.path": "/Prod/", "http.method": "GET", "http.route": "/", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -114,8 +113,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -142,8 +140,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -177,7 +174,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -229,7 +225,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "dynamodb", + "service": "ExampleTableWithStream", "resource": "ExampleTableWithStream", "name": "aws.dynamodb", "error": 0, @@ -240,6 +236,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.dynamodb", "resource_names": "ExampleTableWithStream", + "span.kind": "server", "tablename": "ExampleTableWithStream", "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", "event_id": "XXXX", @@ -251,7 +248,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -299,7 +295,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python38", "name": "aws.lambda", "error": 0, @@ -317,8 +313,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -343,8 +338,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -371,8 +365,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -406,7 +399,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -449,7 +441,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "eventbridge", + "service": "eventbridge.custom.event.sender", "resource": "eventbridge.custom.event.sender", "name": "aws.eventbridge", "error": 0, @@ -460,12 +452,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.eventbridge", "resource_names": "eventbridge.custom.event.sender", + "span.kind": "server", "detail_type": "testdetail", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -481,7 +473,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python38", "name": "aws.lambda", "error": 0, @@ -498,8 +490,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "function_trigger.event_source": "eventbridge", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source": "eventbridge" }, "metrics": { "_dd.top_level": 1 @@ -524,8 +515,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -552,8 +542,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -587,7 +576,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -657,7 +645,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.route": "/httpapi/get", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -673,7 +660,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python38", "name": "aws.lambda", "error": 0, @@ -696,8 +683,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url_details.path": "/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -722,8 +708,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -750,8 +735,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -785,7 +769,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -828,7 +811,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "kinesis", + "service": "EXAMPLE", "resource": "EXAMPLE", "name": "aws.kinesis", "error": 0, @@ -839,6 +822,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.kinesis", "resource_names": "EXAMPLE", + "span.kind": "server", "streamname": "EXAMPLE", "shardid": "shardId-XXXX", "event_source_arn": "arn:aws:kinesis:EXAMPLE", @@ -850,7 +834,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -866,7 +849,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python38", "name": "aws.lambda", "error": 0, @@ -884,8 +867,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -910,8 +892,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -938,8 +919,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -973,7 +953,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1016,7 +995,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "s3", + "service": "example-bucket", "resource": "example-bucket", "name": "aws.s3", "error": 0, @@ -1025,6 +1004,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.s3", "resource_names": "example-bucket", + "span.kind": "server", "event_name": "ObjectCreated:Put", "bucketname": "example-bucket", "bucket_arn": "arn:aws:s3:::example-bucket", @@ -1035,7 +1015,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1063,7 +1042,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python38", "name": "aws.lambda", "error": 0, @@ -1081,8 +1060,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1107,8 +1085,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1135,8 +1112,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1170,7 +1146,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1213,7 +1188,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "sns", + "service": "sns-lambda", "resource": "sns-lambda", "name": "aws.sns", "error": 0, @@ -1224,6 +1199,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.sns", "resource_names": "sns-lambda", + "span.kind": "server", "topicname": "sns-lambda", "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", "message_id": "XXXX", @@ -1233,7 +1209,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1249,7 +1224,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python38", "name": "aws.lambda", "error": 0, @@ -1267,8 +1242,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1293,8 +1267,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1321,8 +1294,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1356,7 +1328,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1399,7 +1370,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "sqs", + "service": "my-queue", "resource": "my-queue", "name": "aws.sqs", "error": 0, @@ -1410,6 +1381,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.sqs", "resource_names": "my-queue", + "span.kind": "server", "queuename": "my-queue", "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", @@ -1418,7 +1390,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1434,7 +1405,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python38", "name": "aws.lambda", "error": 0, @@ -1452,8 +1423,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1478,8 +1448,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1506,8 +1475,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1541,7 +1509,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1597,6 +1564,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com$default", "endpoint": "$default", "resource_names": "$default", + "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", "stage": "dev", @@ -1609,7 +1577,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1625,7 +1592,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python38", "name": "aws.lambda", "error": 0, @@ -1645,8 +1612,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -1671,8 +1637,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1699,8 +1664,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1734,7 +1698,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" diff --git a/tests/integration/snapshots/logs/sync-metrics_python39.log b/tests/integration/snapshots/logs/sync-metrics_python39.log index 128319f6c..6a8d692e9 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -39,6 +39,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "endpoint": "/", "http.method": "GET", "resource_names": "GET /", + "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", "stage": "Prod", @@ -49,7 +50,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.route": "/", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -65,7 +65,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python39", "name": "aws.lambda", "error": 0, @@ -88,8 +88,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url_details.path": "/Prod/", "http.method": "GET", "http.route": "/", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -114,8 +113,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -142,8 +140,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -177,7 +174,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -229,7 +225,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "dynamodb", + "service": "ExampleTableWithStream", "resource": "ExampleTableWithStream", "name": "aws.dynamodb", "error": 0, @@ -240,6 +236,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.dynamodb", "resource_names": "ExampleTableWithStream", + "span.kind": "server", "tablename": "ExampleTableWithStream", "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", "event_id": "XXXX", @@ -251,7 +248,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -299,7 +295,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python39", "name": "aws.lambda", "error": 0, @@ -317,8 +313,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -343,8 +338,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -371,8 +365,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -406,7 +399,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -449,7 +441,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "eventbridge", + "service": "eventbridge.custom.event.sender", "resource": "eventbridge.custom.event.sender", "name": "aws.eventbridge", "error": 0, @@ -460,12 +452,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.eventbridge", "resource_names": "eventbridge.custom.event.sender", + "span.kind": "server", "detail_type": "testdetail", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -481,7 +473,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python39", "name": "aws.lambda", "error": 0, @@ -498,8 +490,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "function_trigger.event_source": "eventbridge", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source": "eventbridge" }, "metrics": { "_dd.top_level": 1 @@ -524,8 +515,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -552,8 +542,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -587,7 +576,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -657,7 +645,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.route": "/httpapi/get", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -673,7 +660,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python39", "name": "aws.lambda", "error": 0, @@ -696,8 +683,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url_details.path": "/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -722,8 +708,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -750,8 +735,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -785,7 +769,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -828,7 +811,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "kinesis", + "service": "EXAMPLE", "resource": "EXAMPLE", "name": "aws.kinesis", "error": 0, @@ -839,6 +822,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.kinesis", "resource_names": "EXAMPLE", + "span.kind": "server", "streamname": "EXAMPLE", "shardid": "shardId-XXXX", "event_source_arn": "arn:aws:kinesis:EXAMPLE", @@ -850,7 +834,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -866,7 +849,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python39", "name": "aws.lambda", "error": 0, @@ -884,8 +867,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -910,8 +892,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -938,8 +919,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -973,7 +953,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1016,7 +995,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "s3", + "service": "example-bucket", "resource": "example-bucket", "name": "aws.s3", "error": 0, @@ -1025,6 +1004,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.s3", "resource_names": "example-bucket", + "span.kind": "server", "event_name": "ObjectCreated:Put", "bucketname": "example-bucket", "bucket_arn": "arn:aws:s3:::example-bucket", @@ -1035,7 +1015,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1063,7 +1042,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python39", "name": "aws.lambda", "error": 0, @@ -1081,8 +1060,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1107,8 +1085,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1135,8 +1112,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1170,7 +1146,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1213,7 +1188,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "sns", + "service": "sns-lambda", "resource": "sns-lambda", "name": "aws.sns", "error": 0, @@ -1224,6 +1199,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.sns", "resource_names": "sns-lambda", + "span.kind": "server", "topicname": "sns-lambda", "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", "message_id": "XXXX", @@ -1233,7 +1209,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1249,7 +1224,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python39", "name": "aws.lambda", "error": 0, @@ -1267,8 +1242,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1293,8 +1267,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1321,8 +1294,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1356,7 +1328,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1399,7 +1370,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "sqs", + "service": "my-queue", "resource": "my-queue", "name": "aws.sqs", "error": 0, @@ -1410,6 +1381,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.origin": "lambda", "operation_name": "aws.sqs", "resource_names": "my-queue", + "span.kind": "server", "queuename": "my-queue", "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", @@ -1418,7 +1390,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1434,7 +1405,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python39", "name": "aws.lambda", "error": 0, @@ -1452,8 +1423,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "dd_trace": "X.X.X", "span.name": "aws.lambda", "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX", - "_dd.base_service": "integration-tests-python" + "function_trigger.event_source_arn": "XXXX" }, "metrics": { "_dd.top_level": 1 @@ -1478,8 +1448,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1506,8 +1475,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1541,7 +1509,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1597,6 +1564,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com$default", "endpoint": "$default", "resource_names": "$default", + "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", "stage": "dev", @@ -1609,7 +1577,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.status_code": "200", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" @@ -1625,7 +1592,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "trace_id": "XXXX", "parent_id": "XXXX", "span_id": "XXXX", - "service": "aws.lambda", + "service": "integration-tests-python", "resource": "integration-tests-python-XXXX-sync-metrics_python39", "name": "aws.lambda", "error": 0, @@ -1645,8 +1612,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", - "http.status_code": "200", - "_dd.base_service": "integration-tests-python" + "http.status_code": "200" }, "metrics": { "_dd.top_level": 1 @@ -1671,8 +1637,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://datadoghq.com/", "out.host": "datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1, @@ -1699,8 +1664,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "http.url": "https://www.datadoghq.com/", "out.host": "www.datadoghq.com", "http.status_code": "200", - "http.useragent": "python-requests/X.X.X", - "_dd.base_service": "integration-tests-python" + "http.useragent": "python-requests/X.X.X" }, "metrics": { "_dd.measured": 1 @@ -1734,7 +1698,6 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "out.host": "api.datadoghq.com", "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.base_service": "integration-tests-python", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", "language": "python" diff --git a/tests/test_tracing.py b/tests/test_tracing.py index fcedd5164..c87a09711 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -1284,6 +1284,42 @@ def test_determine_service_name(self): "default", ) + # Test with DD_TRACE_AWS_SERVICE_REPRESENTATION_ENABLED set to false + os.environ["DD_TRACE_AWS_SERVICE_REPRESENTATION_ENABLED"] = "false" + self.assertEqual( + determine_service_name( + self.get_service_mapping(), "api4", "api4", "extracted", "fallback" + ), + "fallback", + ) + + # Test with DD_TRACE_AWS_SERVICE_REPRESENTATION_ENABLED set to 0 + os.environ["DD_TRACE_AWS_SERVICE_REPRESENTATION_ENABLED"] = "0" + self.assertEqual( + determine_service_name( + self.get_service_mapping(), "api4", "api4", "extracted", "fallback" + ), + "fallback", + ) + + # Test with DD_TRACE_AWS_SERVICE_REPRESENTATION_ENABLED not set (default behavior) + if "DD_TRACE_AWS_SERVICE_REPRESENTATION_ENABLED" in os.environ: + del os.environ["DD_TRACE_AWS_SERVICE_REPRESENTATION_ENABLED"] + self.assertEqual( + determine_service_name( + self.get_service_mapping(), "api4", "api4", "extracted", "fallback" + ), + "extracted", + ) + + # Test with empty extracted key + self.assertEqual( + determine_service_name( + self.get_service_mapping(), "api4", "api4", " ", "fallback" + ), + "fallback", + ) + del os.environ["DD_SERVICE_MAPPING"] def test_remaps_all_inferred_span_service_names_from_api_gateway_event(self): @@ -1478,7 +1514,7 @@ def test_remaps_specific_inferred_span_service_names_from_sqs_event(self): ] = "arn:aws:sqs:eu-west-1:123456789012:different-sqs-url" span2 = create_inferred_span(event2, ctx) self.assertEqual(span2.get_tag("operation_name"), "aws.sqs") - self.assertEqual(span2.service, "sqs") + self.assertEqual(span2.service, "different-sqs-url") def test_remaps_all_inferred_span_service_names_from_sns_event(self): self.set_service_mapping({"lambda_sns": "new-name"}) @@ -1524,7 +1560,7 @@ def test_remaps_specific_inferred_span_service_names_from_sns_event(self): ] = "arn:aws:sns:us-west-2:123456789012:different-sns-topic" span2 = create_inferred_span(event2, ctx) self.assertEqual(span2.get_tag("operation_name"), "aws.sns") - self.assertEqual(span2.service, "sns") + self.assertEqual(span2.service, "different-sns-topic") def test_remaps_all_inferred_span_service_names_from_kinesis_event(self): self.set_service_mapping({"lambda_kinesis": "new-name"}) @@ -1561,7 +1597,7 @@ def test_remaps_specific_inferred_span_service_names_from_kinesis_event(self): span1 = create_inferred_span(original_event, ctx) self.assertEqual(span1.get_tag("operation_name"), "aws.kinesis") - self.assertEqual(span1.service, "kinesis") + self.assertEqual(span1.service, "kinesisStream") # Testing the second event event2 = copy.deepcopy(original_event) @@ -1570,7 +1606,7 @@ def test_remaps_specific_inferred_span_service_names_from_kinesis_event(self): ] = "arn:aws:kinesis:eu-west-1:601427279990:stream/DifferentKinesisStream" span2 = create_inferred_span(event2, ctx) self.assertEqual(span2.get_tag("operation_name"), "aws.kinesis") - self.assertEqual(span2.service, "kinesis") + self.assertEqual(span2.service, "DifferentKinesisStream") def test_remaps_all_inferred_span_service_names_from_s3_event(self): self.set_service_mapping({"lambda_s3": "new-name"}) @@ -1614,7 +1650,7 @@ def test_remaps_specific_inferred_span_service_names_from_s3_event(self): event2["Records"][0]["s3"]["bucket"]["name"] = "different-example-bucket" span2 = create_inferred_span(event2, ctx) self.assertEqual(span2.get_tag("operation_name"), "aws.s3") - self.assertEqual(span2.service, "s3") + self.assertEqual(span2.service, "different-example-bucket") def test_remaps_all_inferred_span_service_names_from_dynamodb_event(self): self.set_service_mapping({"lambda_dynamodb": "new-name"}) @@ -1660,7 +1696,7 @@ def test_remaps_specific_inferred_span_service_names_from_dynamodb_event(self): ] = "arn:aws:dynamodb:us-east-1:123456789012:table/DifferentExampleTableWithStream/stream/2015-06-27T00:48:05.899" span2 = create_inferred_span(event2, ctx) self.assertEqual(span2.get_tag("operation_name"), "aws.dynamodb") - self.assertEqual(span2.service, "dynamodb") + self.assertEqual(span2.service, "DifferentExampleTableWithStream") def test_remaps_all_inferred_span_service_names_from_eventbridge_event(self): self.set_service_mapping({"lambda_eventbridge": "new-name"}) @@ -1704,7 +1740,7 @@ def test_remaps_specific_inferred_span_service_names_from_eventbridge_event( event2["source"] = "different.eventbridge.custom.event.sender" span2 = create_inferred_span(event2, ctx) self.assertEqual(span2.get_tag("operation_name"), "aws.eventbridge") - self.assertEqual(span2.service, "eventbridge") + self.assertEqual(span2.service, "different.eventbridge.custom.event.sender") class _Span(object): @@ -1927,7 +1963,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): ( "sqs-string-msg-attribute", _Span( - service="sqs", + service="InferredSpansQueueNode", start=1634662094.538, span_type="web", tags={ @@ -1945,7 +1981,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): ( "sns-string-msg-attribute", _Span( - service="sns", + service="serverlessTracingTopicPy", start=1643638421.637, span_type="web", tags={ @@ -1964,7 +2000,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): ( "sns-b64-msg-attribute", _Span( - service="sns", + service="serverlessTracingTopicPy", start=1643638421.637, span_type="web", tags={ @@ -1981,9 +2017,9 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): ), ), ( - "kinesis", + "kinesisStream", _Span( - service="kinesis", + service="kinesisStream", start=1643638425.163, span_type="web", tags={ @@ -2000,16 +2036,16 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): "operation_name": "aws.kinesis", "partition_key": "partitionkey", "request_id": None, - "resource_names": "stream/kinesisStream", + "resource_names": "kinesisStream", "shardid": "shardId-000000000002", - "streamname": "stream/kinesisStream", + "streamname": "kinesisStream", }, ), ), ( "dynamodb", _Span( - service="dynamodb", + service="ExampleTableWithStream", start=1428537600.0, span_type="web", tags={ @@ -2035,7 +2071,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): ( "s3", _Span( - service="s3", + service="example-bucket", start=0.0, span_type="web", tags={ @@ -2060,7 +2096,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): ( "eventbridge-custom", _Span( - service="eventbridge", + service="eventbridge.custom.event.sender", start=1635989865.0, span_type="web", tags={ @@ -2079,7 +2115,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): ( "eventbridge-sqs", _Span( - service="sqs", + service="eventbridge-sqs-queue", start=1691102943.638, span_type="web", parent_name="aws.eventbridge", From f8b610dacdc1bcd27873d81fd79b040f3729d914 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Tue, 29 Jul 2025 11:23:43 -0400 Subject: [PATCH 280/403] v8.113.0 (#640) --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index ae708026a..7fb332f27 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "7.113.0.dev0" +__version__ = "8.113.0" diff --git a/pyproject.toml b/pyproject.toml index 77c08cb5c..1ef66fd54 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "7.113.0.dev0" +version = "8.113.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From f1a4cb4f52abd42f99a42d8764963fd0c0a9297d Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Tue, 29 Jul 2025 13:04:08 -0400 Subject: [PATCH 281/403] v8.114.0.dev0 (#642) --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index 7fb332f27..d5b71e8d9 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "8.113.0" +__version__ = "8.114.0.dev0" diff --git a/pyproject.toml b/pyproject.toml index 1ef66fd54..a2fc7b74c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "8.113.0" +version = "8.114.0.dev0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From f2808fbe252fb9c97f8ec330a61ebf2e6b1e8fd9 Mon Sep 17 00:00:00 2001 From: Florentin Labelle Date: Thu, 31 Jul 2025 09:36:08 +0200 Subject: [PATCH 282/403] feat(appsec): enable telemetry when appsec is enabled through the tracer and not the extension (#641) * feat(appsec): default to telemetry enabled * build: keep dist-info/METADATA files for SCA to work correctly --- Dockerfile | 7 +++++-- datadog_lambda/__init__.py | 5 ++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index 02910a783..771251295 100644 --- a/Dockerfile +++ b/Dockerfile @@ -25,8 +25,11 @@ RUN rm -f ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_taint_tracki RUN rm -f ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_stacktrace*.so # _stack_v2 may not exist for some versions of ddtrace (e.g. under python 3.13) RUN rm -f ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/stack_v2/_stack_v2.*.so -# remove *.dist-info directories except any entry_points.txt files -RUN find ./python/lib/$runtime/site-packages/*.dist-info -not -name "entry_points.txt" -type f -delete +# remove *.dist-info directories except any entry_points.txt files and METADATA files required for Appsec Software Composition Analysis +RUN find ./python/lib/$runtime/site-packages/*.dist-info \ + -type f \ + ! \( -name 'entry_points.txt' -o -name 'METADATA' \) \ + -delete RUN find ./python/lib/$runtime/site-packages -type d -empty -delete # Remove requests and dependencies diff --git a/datadog_lambda/__init__.py b/datadog_lambda/__init__.py index f319d2ed8..0166f077b 100644 --- a/datadog_lambda/__init__.py +++ b/datadog_lambda/__init__.py @@ -3,7 +3,10 @@ if os.environ.get("DD_INSTRUMENTATION_TELEMETRY_ENABLED") is None: - os.environ["DD_INSTRUMENTATION_TELEMETRY_ENABLED"] = "false" + # Telemetry is required for Appsec Software Composition Analysis + os.environ["DD_INSTRUMENTATION_TELEMETRY_ENABLED"] = os.environ.get( + "DD_APPSEC_ENABLED", "false" + ) if os.environ.get("DD_API_SECURITY_ENABLED") is None: os.environ["DD_API_SECURITY_ENABLED"] = "False" From 7bdc7d6659d0432170023fbd7371ef432de5f4d7 Mon Sep 17 00:00:00 2001 From: Yiming Luo Date: Mon, 4 Aug 2025 11:54:40 -0400 Subject: [PATCH 283/403] chore: Fix update_deps workflow (#607) --- .github/workflows/update_deps.yml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/workflows/update_deps.yml b/.github/workflows/update_deps.yml index 33a524b25..15a3ac665 100644 --- a/.github/workflows/update_deps.yml +++ b/.github/workflows/update_deps.yml @@ -25,18 +25,17 @@ jobs: - name: Set up Python uses: actions/setup-python@v4 with: - python-version: 3.7 + python-version: 3.13 - name: Update Dependencies run: | - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python - - source $HOME/.poetry/env - poetry build + pip install poetry poetry update - name: Create Pull Request uses: peter-evans/create-pull-request@v3 with: + token: ${{ steps.generate_token.outputs.token }} commit-message: update dependencies title: Update Dependencies body: | From 2163fb49295bd8b654edea85f0713605967b272d Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Thu, 14 Aug 2025 11:40:24 -0700 Subject: [PATCH 284/403] Increase allowed layer package size. (#649) --- scripts/check_layer_size.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/check_layer_size.sh b/scripts/check_layer_size.sh index 0b835cb04..b7460976a 100755 --- a/scripts/check_layer_size.sh +++ b/scripts/check_layer_size.sh @@ -8,8 +8,8 @@ # Compares layer size to threshold, and fails if below that threshold set -e -MAX_LAYER_COMPRESSED_SIZE_KB=$(expr 8 \* 1024) -MAX_LAYER_UNCOMPRESSED_SIZE_KB=$(expr 21 \* 1024) +MAX_LAYER_COMPRESSED_SIZE_KB=$(expr 17 \* 1024 / 2) # 8704 KB +MAX_LAYER_UNCOMPRESSED_SIZE_KB=$(expr 23 \* 1024) # 23552 KB LAYER_FILES_PREFIX="datadog_lambda_py" From 6c296ab7d3121379cde00ea7e48f786736cfce4a Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Fri, 15 Aug 2025 13:01:51 -0700 Subject: [PATCH 285/403] Run e2e tests on each PR. (#584) --- ci/input_files/build.yaml.tpl | 74 ++++++++++++++++++++++++++++++++--- ci/publish_layers.sh | 8 ++++ 2 files changed, 76 insertions(+), 6 deletions(-) diff --git a/ci/input_files/build.yaml.tpl b/ci/input_files/build.yaml.tpl index 769f87f5c..8624a8060 100644 --- a/ci/input_files/build.yaml.tpl +++ b/ci/input_files/build.yaml.tpl @@ -1,8 +1,11 @@ +{{- $e2e_region := "us-west-2" -}} + stages: - build - test - sign - publish + - e2e .python-before-script: &python-before-script - pip install virtualenv @@ -56,11 +59,11 @@ check-layer-size ({{ $runtime.name }}-{{ $runtime.arch }}): stage: test tags: ["arch:amd64"] image: registry.ddbuild.io/images/docker:20.10 - needs: + needs: - build-layer ({{ $runtime.name }}-{{ $runtime.arch }}) dependencies: - build-layer ({{ $runtime.name }}-{{ $runtime.arch }}) - script: + script: - PYTHON_VERSION={{ $runtime.python_version }} ARCH={{ $runtime.arch }} ./scripts/check_layer_size.sh lint python: @@ -69,7 +72,7 @@ lint python: image: registry.ddbuild.io/images/mirror/python:{{ $runtime.image }} cache: &{{ $runtime.name }}-{{ $runtime.arch }}-cache before_script: *python-before-script - script: + script: - source venv/bin/activate - ./scripts/check_format.sh @@ -79,7 +82,7 @@ unit-test ({{ $runtime.name }}-{{ $runtime.arch }}): image: registry.ddbuild.io/images/mirror/python:{{ $runtime.image }} cache: &{{ $runtime.name }}-{{ $runtime.arch }}-cache before_script: *python-before-script - script: + script: - source venv/bin/activate - pytest -vv @@ -87,7 +90,7 @@ integration-test ({{ $runtime.name }}-{{ $runtime.arch }}): stage: test tags: ["arch:amd64"] image: registry.ddbuild.io/images/docker:20.10-py3 - needs: + needs: - build-layer ({{ $runtime.name }}-{{ $runtime.arch }}) dependencies: - build-layer ({{ $runtime.name }}-{{ $runtime.arch }}) @@ -132,16 +135,22 @@ sign-layer ({{ $runtime.name }}-{{ $runtime.arch }}): - LAYER_FILE=datadog_lambda_py-{{ $runtime.arch}}-{{ $runtime.python_version }}.zip ./scripts/sign_layers.sh prod {{ range $environment_name, $environment := (ds "environments").environments }} +{{ $dotenv := print $runtime.name "_" $runtime.arch "_" $environment_name ".env" }} publish-layer-{{ $environment_name }} ({{ $runtime.name }}-{{ $runtime.arch }}): stage: publish tags: ["arch:amd64"] image: registry.ddbuild.io/images/docker:20.10-py3 rules: + - if: '"{{ $environment_name }}" == "sandbox" && $REGION == "{{ $e2e_region }}" && "{{ $runtime.arch }}" == "amd64"' + when: on_success - if: '"{{ $environment_name }}" == "sandbox"' when: manual allow_failure: true - if: '$CI_COMMIT_TAG =~ /^v.*/' + artifacts: + reports: + dotenv: {{ $dotenv }} needs: {{ if or (eq $environment_name "prod") }} - sign-layer ({{ $runtime.name }}-{{ $runtime.arch}}) @@ -166,7 +175,7 @@ publish-layer-{{ $environment_name }} ({{ $runtime.name }}-{{ $runtime.arch }}): before_script: - EXTERNAL_ID_NAME={{ $environment.external_id }} ROLE_TO_ASSUME={{ $environment.role_to_assume }} AWS_ACCOUNT={{ $environment.account }} source ./ci/get_secrets.sh script: - - STAGE={{ $environment_name }} PYTHON_VERSION={{ $runtime.python_version }} ARCH={{ $runtime.arch }} ./ci/publish_layers.sh + - STAGE={{ $environment_name }} PYTHON_VERSION={{ $runtime.python_version }} ARCH={{ $runtime.arch }} DOTENV={{ $dotenv }} ./ci/publish_layers.sh {{- end }} @@ -232,3 +241,56 @@ signed layer bundle: - rm -rf datadog_lambda_py-signed-bundle-${CI_JOB_ID} - mkdir -p datadog_lambda_py-signed-bundle-${CI_JOB_ID} - cp .layers/datadog_lambda_py-*.zip datadog_lambda_py-signed-bundle-${CI_JOB_ID} + +e2e-test: + stage: e2e + trigger: + project: DataDog/serverless-e2e-tests + strategy: depend + variables: + LANGUAGES_SUBSET: python + # These env vars are inherited from the dotenv reports of the publish-layer jobs + {{- range (ds "runtimes").runtimes }} + {{- if eq .arch "amd64" }} + {{- $version := print (.name | strings.Trim "python") }} + PYTHON_{{ $version }}_VERSION: $PYTHON_{{ $version }}_VERSION + {{- end }} + {{- end }} + needs: {{ range (ds "runtimes").runtimes }} + {{- if eq .arch "amd64" }} + - "publish-layer-sandbox ({{ .name }}-{{ .arch }}): [{{ $e2e_region }}]" + {{- end }} + {{- end }} + +e2e-test-status: + stage: e2e + image: registry.ddbuild.io/images/docker:20.10-py3 + tags: ["arch:amd64"] + timeout: 3h + script: | + GITLAB_API_TOKEN=$(aws ssm get-parameter --region us-east-1 --name "ci.${CI_PROJECT_NAME}.serverless-e2e-gitlab-token" --with-decryption --query "Parameter.Value" --out text) + URL="${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/pipelines/${CI_PIPELINE_ID}/bridges" + echo "Fetching E2E job status from: $URL" + while true; do + RESPONSE=$(curl -s --header "PRIVATE-TOKEN: ${GITLAB_API_TOKEN}" "$URL") + E2E_JOB_STATUS=$(echo "$RESPONSE" | jq -r '.[] | select(.name=="e2e-test") | .downstream_pipeline.status') + echo -n "E2E job status: $E2E_JOB_STATUS, " + if [ "$E2E_JOB_STATUS" == "success" ]; then + echo "✅ E2E tests completed successfully" + exit 0 + elif [ "$E2E_JOB_STATUS" == "failed" ]; then + echo "❌ E2E tests failed" + exit 1 + elif [ "$E2E_JOB_STATUS" == "running" ]; then + echo "⏳ E2E tests are still running, retrying in 1 minute..." + elif [ "$E2E_JOB_STATUS" == "canceled" ]; then + echo "🚫 E2E tests were canceled" + exit 1 + elif [ "$E2E_JOB_STATUS" == "skipped" ]; then + echo "⏭️ E2E tests were skipped" + exit 0 + else + echo "❓ Unknown E2E test status: $E2E_JOB_STATUS, retrying in 1 minute..." + fi + sleep 60 + done diff --git a/ci/publish_layers.sh b/ci/publish_layers.sh index 58257bf11..9654582a2 100755 --- a/ci/publish_layers.sh +++ b/ci/publish_layers.sh @@ -199,6 +199,8 @@ fi while [ $latest_version -lt $VERSION ]; do latest_version=$(publish_layer $REGION $layer $aws_cli_python_version_key $layer_path) printf "[$REGION] Published version $latest_version for layer $layer in region $REGION\n" + latest_arn=$(aws lambda get-layer-version --layer-name $layer --version-number $latest_version --region $REGION --query 'LayerVersionArn' --output text) + printf "[$REGION] Published arn $latest_arn\n" # This shouldn't happen unless someone manually deleted the latest version, say 28, and # then tries to republish 28 again. The published version would actually be 29, because @@ -209,4 +211,10 @@ while [ $latest_version -lt $VERSION ]; do fi done +if [ -n "$DOTENV" ]; then + printf "[$REGION] Exporting layer version to $DOTENV file...\n" + echo "PYTHON_${PYTHON_VERSION/./}_VERSION=$latest_arn" >> "$DOTENV" + cat "$DOTENV" +fi + printf "[$REGION] Finished publishing layers...\n\n" From db673844725793182e20f8a45fcfac90a9789fe9 Mon Sep 17 00:00:00 2001 From: Florentin Labelle Date: Mon, 18 Aug 2025 09:18:19 +0200 Subject: [PATCH 286/403] fix(appsec): enable appsec through the ddtrace product interface (#647) --- datadog_lambda/wrapper.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 494556257..28c7ae88d 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -53,6 +53,9 @@ asm_start_request, get_asm_blocked_response, ) + from ddtrace.internal.appsec.product import start + + start() if config.profiling_enabled: from ddtrace.profiling import profiler From 3b5260d2f2f846379787df284c6e3c0916ce027d Mon Sep 17 00:00:00 2001 From: Florentin Labelle Date: Wed, 20 Aug 2025 10:31:31 +0200 Subject: [PATCH 287/403] build: use lambda image to ensure binary compatibility when building from source (#650) * build: use lambda python image instead of debian * use sam build-python images --- Dockerfile | 10 ++++++++++ scripts/build_layers.sh | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 771251295..ee4c7efdd 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,6 +7,16 @@ ARG runtime RUN mkdir -p /build/python/lib/$runtime/site-packages WORKDIR /build +# Install newer version of GCC on AL2 +RUN set -eux; \ + if command -v yum >/dev/null 2>&1; then \ + yum -y install git gcc10 gcc10-c++; \ + cd /usr/bin; \ + rm gcc && ln -s gcc10-gcc gcc; \ + rm g++ && ln -s gcc10-g++ g++; \ + rm cc && ln -s gcc10-cc cc; \ + fi + # Add Rust compiler which is needed to build dd-trace-py from source RUN curl https://sh.rustup.rs -sSf | \ sh -s -- --default-toolchain stable -y diff --git a/scripts/build_layers.sh b/scripts/build_layers.sh index a0d6ee39d..23941b7a0 100755 --- a/scripts/build_layers.sh +++ b/scripts/build_layers.sh @@ -61,7 +61,7 @@ function docker_build_zip { # between different python runtimes. temp_dir=$(mktemp -d) docker buildx build -t datadog-lambda-python-${arch}:$1 . --no-cache \ - --build-arg image=public.ecr.aws/docker/library/python:$1 \ + --build-arg image=public.ecr.aws/sam/build-python$1:1 \ --build-arg runtime=python$1 \ --platform linux/${arch} \ --progress=plain \ From 33fcbce8e28c0938ebab6cb6a2b0775deec754d1 Mon Sep 17 00:00:00 2001 From: Taegyun Kim Date: Thu, 21 Aug 2025 05:33:46 +0900 Subject: [PATCH 288/403] chore(build): strip debug symbols using `strip -g` (#652) * chore(build): build dd-trace-py with release mode by default * does this make difference * debug print * try setting here * Revert "debug print" This reverts commit 07df11ac23f48c66d638ddefef811032afbaa4b6. * Revert "try setting here" This reverts commit 6f061439e3561ca88eb3d838e457f00ab7953ca9. * comment * debug print * aggressively strip debug symbols * remove debug print * update comments * can this work too? --- Dockerfile | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Dockerfile b/Dockerfile index ee4c7efdd..36b236f08 100644 --- a/Dockerfile +++ b/Dockerfile @@ -72,5 +72,11 @@ RUN find ./python/lib/$runtime/site-packages/ddtrace -name \*.h -delete RUN find ./python/lib/$runtime/site-packages/ddtrace -name \*.hpp -delete RUN find ./python/lib/$runtime/site-packages/ddtrace -name \*.pyx -delete +# Strip debug symbols using strip -g for all .so files in ddtrace. This is to +# reduce the size when ddtrace is built from sources. The release wheels are +# already stripped of debug symbols. We should revisit this when serverless +# benchmark uses pre-built wheels instead of building from sources. +RUN find ./python/lib/$runtime/site-packages/ddtrace -name "*.so" -exec strip -g {} \; + FROM scratch COPY --from=builder /build/python / From 7184dafff0a729c4e32df325dfc4d49070a0f732 Mon Sep 17 00:00:00 2001 From: Alberto Vara Date: Fri, 29 Aug 2025 07:47:22 +0200 Subject: [PATCH 289/403] Re-remove more iast .so files (#653) * Re-remove more iast .so files * itr:noskip * Update MAX_LAYER_UNCOMPRESSED_SIZE_KB value --- Dockerfile | 1 + scripts/check_layer_size.sh | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 36b236f08..8da968fb2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -31,6 +31,7 @@ RUN pip install --no-cache-dir . -t ./python/lib/$runtime/site-packages RUN rm -rf ./python/lib/$runtime/site-packages/botocore* RUN rm -rf ./python/lib/$runtime/site-packages/setuptools RUN rm -rf ./python/lib/$runtime/site-packages/jsonschema/tests +RUN rm -f ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_ast/iastpatch*.so RUN rm -f ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_taint_tracking/*.so RUN rm -f ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_stacktrace*.so # _stack_v2 may not exist for some versions of ddtrace (e.g. under python 3.13) diff --git a/scripts/check_layer_size.sh b/scripts/check_layer_size.sh index b7460976a..27988e858 100755 --- a/scripts/check_layer_size.sh +++ b/scripts/check_layer_size.sh @@ -9,7 +9,7 @@ set -e MAX_LAYER_COMPRESSED_SIZE_KB=$(expr 17 \* 1024 / 2) # 8704 KB -MAX_LAYER_UNCOMPRESSED_SIZE_KB=$(expr 23 \* 1024) # 23552 KB +MAX_LAYER_UNCOMPRESSED_SIZE_KB=$(expr 22 \* 1024) # 22528 KB LAYER_FILES_PREFIX="datadog_lambda_py" From b55e5382d91890d453302dc80a8378c01d1b5047 Mon Sep 17 00:00:00 2001 From: Florentin Labelle Date: Wed, 3 Sep 2025 13:20:12 +0200 Subject: [PATCH 290/403] appsec: fixes for API Security (#654) --- datadog_lambda/__init__.py | 2 -- datadog_lambda/trigger.py | 2 +- .../logs/async-metrics_python310.log | 3 +++ .../logs/async-metrics_python311.log | 3 +++ .../logs/async-metrics_python312.log | 3 +++ .../logs/async-metrics_python313.log | 3 +++ .../snapshots/logs/async-metrics_python38.log | 3 +++ .../snapshots/logs/async-metrics_python39.log | 3 +++ .../snapshots/logs/sync-metrics_python310.log | 3 +++ .../snapshots/logs/sync-metrics_python311.log | 3 +++ .../snapshots/logs/sync-metrics_python312.log | 3 +++ .../snapshots/logs/sync-metrics_python313.log | 3 +++ .../snapshots/logs/sync-metrics_python38.log | 3 +++ .../snapshots/logs/sync-metrics_python39.log | 3 +++ tests/test_trigger.py | 20 +++++++++++++++---- 15 files changed, 53 insertions(+), 7 deletions(-) diff --git a/datadog_lambda/__init__.py b/datadog_lambda/__init__.py index 0166f077b..2034d3cbf 100644 --- a/datadog_lambda/__init__.py +++ b/datadog_lambda/__init__.py @@ -8,8 +8,6 @@ "DD_APPSEC_ENABLED", "false" ) -if os.environ.get("DD_API_SECURITY_ENABLED") is None: - os.environ["DD_API_SECURITY_ENABLED"] = "False" initialize_cold_start_tracing() diff --git a/datadog_lambda/trigger.py b/datadog_lambda/trigger.py index bbd0d027a..65800cf72 100644 --- a/datadog_lambda/trigger.py +++ b/datadog_lambda/trigger.py @@ -288,7 +288,7 @@ def extract_http_tags(event): """ Extracts HTTP facet tags from the triggering event """ - http_tags = {} + http_tags = {"span.kind": "server"} # Safely get request_context and ensure it's a dictionary request_context = event.get("requestContext") diff --git a/tests/integration/snapshots/logs/async-metrics_python310.log b/tests/integration/snapshots/logs/async-metrics_python310.log index 66351a990..d72afba39 100644 --- a/tests/integration/snapshots/logs/async-metrics_python310.log +++ b/tests/integration/snapshots/logs/async-metrics_python310.log @@ -104,6 +104,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", @@ -642,6 +643,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", + "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", @@ -1479,6 +1481,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.status_code": "200" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python311.log b/tests/integration/snapshots/logs/async-metrics_python311.log index 8e19e239d..dac9c4277 100644 --- a/tests/integration/snapshots/logs/async-metrics_python311.log +++ b/tests/integration/snapshots/logs/async-metrics_python311.log @@ -104,6 +104,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", @@ -642,6 +643,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", + "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", @@ -1479,6 +1481,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.status_code": "200" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python312.log b/tests/integration/snapshots/logs/async-metrics_python312.log index 9879d8754..c2b624ff3 100644 --- a/tests/integration/snapshots/logs/async-metrics_python312.log +++ b/tests/integration/snapshots/logs/async-metrics_python312.log @@ -104,6 +104,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", @@ -642,6 +643,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", + "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", @@ -1479,6 +1481,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.status_code": "200" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python313.log b/tests/integration/snapshots/logs/async-metrics_python313.log index 92bb83efe..9a5e763f9 100644 --- a/tests/integration/snapshots/logs/async-metrics_python313.log +++ b/tests/integration/snapshots/logs/async-metrics_python313.log @@ -104,6 +104,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", @@ -642,6 +643,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", + "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", @@ -1479,6 +1481,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.status_code": "200" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python38.log b/tests/integration/snapshots/logs/async-metrics_python38.log index 6c5021469..9e6370b5b 100644 --- a/tests/integration/snapshots/logs/async-metrics_python38.log +++ b/tests/integration/snapshots/logs/async-metrics_python38.log @@ -104,6 +104,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", @@ -642,6 +643,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", + "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", @@ -1479,6 +1481,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.status_code": "200" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python39.log b/tests/integration/snapshots/logs/async-metrics_python39.log index 42bdaeb84..70f7a59f1 100644 --- a/tests/integration/snapshots/logs/async-metrics_python39.log +++ b/tests/integration/snapshots/logs/async-metrics_python39.log @@ -104,6 +104,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", @@ -642,6 +643,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", + "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", @@ -1479,6 +1481,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.status_code": "200" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python310.log b/tests/integration/snapshots/logs/sync-metrics_python310.log index 201ca82a7..7d504bdcb 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python310.log +++ b/tests/integration/snapshots/logs/sync-metrics_python310.log @@ -84,6 +84,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", @@ -679,6 +680,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", + "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", @@ -1611,6 +1613,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.status_code": "200" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python311.log b/tests/integration/snapshots/logs/sync-metrics_python311.log index 564db4a94..aa242652d 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python311.log +++ b/tests/integration/snapshots/logs/sync-metrics_python311.log @@ -84,6 +84,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", @@ -679,6 +680,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", + "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", @@ -1611,6 +1613,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.status_code": "200" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python312.log b/tests/integration/snapshots/logs/sync-metrics_python312.log index 6010a3641..99471eaf8 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python312.log +++ b/tests/integration/snapshots/logs/sync-metrics_python312.log @@ -84,6 +84,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", @@ -679,6 +680,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", + "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", @@ -1611,6 +1613,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.status_code": "200" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python313.log b/tests/integration/snapshots/logs/sync-metrics_python313.log index 21d033620..e53aae508 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python313.log +++ b/tests/integration/snapshots/logs/sync-metrics_python313.log @@ -84,6 +84,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", @@ -679,6 +680,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", + "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", @@ -1611,6 +1613,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.status_code": "200" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python38.log b/tests/integration/snapshots/logs/sync-metrics_python38.log index a68289046..9cbf45648 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python38.log +++ b/tests/integration/snapshots/logs/sync-metrics_python38.log @@ -84,6 +84,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", @@ -679,6 +680,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", + "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", @@ -1611,6 +1613,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.status_code": "200" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python39.log b/tests/integration/snapshots/logs/sync-metrics_python39.log index 6a8d692e9..cc0407c1b 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -84,6 +84,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/Prod/", "http.method": "GET", @@ -679,6 +680,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", + "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", @@ -1611,6 +1613,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.status_code": "200" }, diff --git a/tests/test_trigger.py b/tests/test_trigger.py index 151039372..452635cfc 100644 --- a/tests/test_trigger.py +++ b/tests/test_trigger.py @@ -305,6 +305,7 @@ def test_extract_trigger_tags_api_gateway(self): "http.url_details.path": "/prod/path/to/resource", "http.method": "POST", "http.route": "/{proxy+}", + "span.kind": "server", }, ) @@ -324,6 +325,7 @@ def test_extract_trigger_tags_api_gateway_non_proxy(self): "http.url_details.path": "/dev/http/get", "http.method": "GET", "http.route": "/http/get", + "span.kind": "server", }, ) @@ -340,6 +342,7 @@ def test_extract_trigger_tags_api_gateway_websocket_connect(self): "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "arn:aws:apigateway:us-west-1::/restapis/p62c47itsb/stages/dev", "http.url": "https://p62c47itsb.execute-api.eu-west-1.amazonaws.com", + "span.kind": "server", }, ) @@ -356,6 +359,7 @@ def test_extract_trigger_tags_api_gateway_websocket_default(self): "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "arn:aws:apigateway:us-west-1::/restapis/p62c47itsb/stages/dev", "http.url": "https://p62c47itsb.execute-api.eu-west-1.amazonaws.com", + "span.kind": "server", }, ) @@ -372,6 +376,7 @@ def test_extract_trigger_tags_api_gateway_websocket_disconnect(self): "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "arn:aws:apigateway:us-west-1::/restapis/p62c47itsb/stages/dev", "http.url": "https://p62c47itsb.execute-api.eu-west-1.amazonaws.com", + "span.kind": "server", }, ) @@ -390,6 +395,7 @@ def test_extract_trigger_tags_api_gateway_http_api(self): "http.url": "https://x02yirxc7a.execute-api.eu-west-1.amazonaws.com", "http.url_details.path": "/httpapi/get", "http.method": "GET", + "span.kind": "server", "http.route": "/httpapi/get", }, ) @@ -408,6 +414,7 @@ def test_extract_trigger_tags_application_load_balancer(self): "function_trigger.event_source_arn": "arn:aws:elasticloadbalancing:us-east-2:123456789012:targetgroup/lambda-xyz/123abc", "http.url_details.path": "/lambda", "http.method": "GET", + "span.kind": "server", }, ) @@ -569,7 +576,12 @@ def test_extract_http_tags_with_invalid_request_context(self): http_tags = extract_http_tags(event) # Should still extract valid tags from the event self.assertEqual( - http_tags, {"http.url_details.path": "/test", "http.method": "GET"} + http_tags, + { + "span.kind": "server", + "http.url_details.path": "/test", + "http.method": "GET", + }, ) def test_extract_http_tags_with_invalid_apigateway_http(self): @@ -582,7 +594,7 @@ def test_extract_http_tags_with_invalid_apigateway_http(self): } http_tags = extract_http_tags(event) # Should not raise an exception - self.assertEqual(http_tags, {}) + self.assertEqual(http_tags, {"span.kind": "server"}) def test_extract_http_tags_with_invalid_headers(self): from datadog_lambda.trigger import extract_http_tags @@ -591,7 +603,7 @@ def test_extract_http_tags_with_invalid_headers(self): event = {"headers": "not_a_dict"} http_tags = extract_http_tags(event) # Should not raise an exception - self.assertEqual(http_tags, {}) + self.assertEqual(http_tags, {"span.kind": "server"}) def test_extract_http_tags_with_invalid_route(self): from datadog_lambda.trigger import extract_http_tags @@ -600,7 +612,7 @@ def test_extract_http_tags_with_invalid_route(self): event = {"routeKey": 12345} # Not a string http_tags = extract_http_tags(event) # Should not raise an exception - self.assertEqual(http_tags, {}) + self.assertEqual(http_tags, {"span.kind": "server"}) class ExtractHTTPStatusCodeTag(unittest.TestCase): From 9c93e475318d2044d5b2a142f374d529483e9d33 Mon Sep 17 00:00:00 2001 From: Florentin Labelle Date: Fri, 5 Sep 2025 16:10:25 +0200 Subject: [PATCH 291/403] ci: add appsec system-tests to the ci (#651) --- .github/workflows/system_tests.yml | 38 ++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 .github/workflows/system_tests.yml diff --git a/.github/workflows/system_tests.yml b/.github/workflows/system_tests.yml new file mode 100644 index 000000000..b61725b1a --- /dev/null +++ b/.github/workflows/system_tests.yml @@ -0,0 +1,38 @@ +name: System Tests + +on: + push: + branches: + - main + pull_request: + branches: + - "**" + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Build layer + run: | + ARCH=amd64 PYTHON_VERSION=3.13 ./scripts/build_layers.sh + + - uses: actions/upload-artifact@v4 + with: + path: .layers/datadog_lambda_py-amd64-3.13.zip + name: binaries + + system-tests: + needs: + - build + uses: DataDog/system-tests/.github/workflows/system-tests.yml@main + secrets: inherit + permissions: + contents: read + packages: write + with: + library: python_lambda + binaries_artifact: binaries + scenarios_groups: appsec + skip_empty_scenarios: true From b171bda519984959227f941012a8b28e3254e737 Mon Sep 17 00:00:00 2001 From: Florentin Labelle Date: Tue, 9 Sep 2025 10:18:38 +0200 Subject: [PATCH 292/403] [APPSEC]: blocking for alb multi value headers events (#655) * fix: alb multi val headers also has multi val query params * appsec: fix blocking for alb multivalue headers events --- datadog_lambda/asm.py | 47 ++++++++++++------- datadog_lambda/trigger.py | 11 ++++- ...ion-load-balancer-multivalue-headers.json} | 2 +- tests/test_asm.py | 24 +++++++++- tests/test_trigger.py | 17 +++++++ 5 files changed, 79 insertions(+), 22 deletions(-) rename tests/event_samples/{application-load-balancer-mutivalue-headers.json => application-load-balancer-multivalue-headers.json} (96%) diff --git a/datadog_lambda/asm.py b/datadog_lambda/asm.py index 31f750d82..7bd8272f8 100644 --- a/datadog_lambda/asm.py +++ b/datadog_lambda/asm.py @@ -73,17 +73,16 @@ def asm_start_request( route: Optional[str] = None if event_source.event_type == EventTypes.ALB: - headers = event.get("headers") - multi_value_request_headers = event.get("multiValueHeaders") - if multi_value_request_headers: - request_headers = _to_single_value_headers(multi_value_request_headers) - else: - request_headers = headers or {} - raw_uri = event.get("path") - parsed_query = event.get("multiValueQueryStringParameters") or event.get( - "queryStringParameters" - ) + + if event_source.subtype == EventSubtypes.ALB: + request_headers = event.get("headers", {}) + parsed_query = event.get("queryStringParameters") + if event_source.subtype == EventSubtypes.ALB_MULTI_VALUE_HEADERS: + request_headers = _to_single_value_headers( + event.get("multiValueHeaders", {}) + ) + parsed_query = event.get("multiValueQueryStringParameters") elif event_source.event_type == EventTypes.LAMBDA_FUNCTION_URL: request_headers = event.get("headers", {}) @@ -226,15 +225,27 @@ def get_asm_blocked_response( content_type = blocked.get("content-type", "application/json") content = http_utils._get_blocked_template(content_type) - response_headers = { - "content-type": content_type, - } - if "location" in blocked: - response_headers["location"] = blocked["location"] - - return { + response = { "statusCode": blocked.get("status_code", 403), - "headers": response_headers, "body": content, "isBase64Encoded": False, } + + needs_multi_value_headers = event_source.equals( + EventTypes.ALB, EventSubtypes.ALB_MULTI_VALUE_HEADERS + ) + + if needs_multi_value_headers: + response["multiValueHeaders"] = { + "content-type": [content_type], + } + if "location" in blocked: + response["multiValueHeaders"]["location"] = [blocked["location"]] + else: + response["headers"] = { + "content-type": content_type, + } + if "location" in blocked: + response["headers"]["location"] = blocked["location"] + + return response diff --git a/datadog_lambda/trigger.py b/datadog_lambda/trigger.py index 65800cf72..e0c3c4fa1 100644 --- a/datadog_lambda/trigger.py +++ b/datadog_lambda/trigger.py @@ -54,6 +54,10 @@ class EventSubtypes(_stringTypedEnum): WEBSOCKET = "websocket" HTTP_API = "http-api" + ALB = "alb" # regular alb + # ALB with the multi-value headers option checked on the target group + ALB_MULTI_VALUE_HEADERS = "alb-multi-value-headers" + class _EventSource: """ @@ -133,7 +137,12 @@ def parse_event_source(event: dict) -> _EventSource: event_source.subtype = EventSubtypes.WEBSOCKET if request_context and request_context.get("elb"): - event_source = _EventSource(EventTypes.ALB) + if "multiValueHeaders" in event: + event_source = _EventSource( + EventTypes.ALB, EventSubtypes.ALB_MULTI_VALUE_HEADERS + ) + else: + event_source = _EventSource(EventTypes.ALB, EventSubtypes.ALB) if event.get("awslogs"): event_source = _EventSource(EventTypes.CLOUDWATCH_LOGS) diff --git a/tests/event_samples/application-load-balancer-mutivalue-headers.json b/tests/event_samples/application-load-balancer-multivalue-headers.json similarity index 96% rename from tests/event_samples/application-load-balancer-mutivalue-headers.json rename to tests/event_samples/application-load-balancer-multivalue-headers.json index 6d446d15c..a35ca5023 100644 --- a/tests/event_samples/application-load-balancer-mutivalue-headers.json +++ b/tests/event_samples/application-load-balancer-multivalue-headers.json @@ -6,7 +6,7 @@ }, "httpMethod": "GET", "path": "/lambda", - "queryStringParameters": { + "multiValueQueryStringParameters": { "query": "1234ABCD" }, "multiValueHeaders": { diff --git a/tests/test_asm.py b/tests/test_asm.py index 7a5e6c560..1e11b102d 100644 --- a/tests/test_asm.py +++ b/tests/test_asm.py @@ -8,6 +8,7 @@ get_asm_blocked_response, ) from datadog_lambda.trigger import ( + EventSubtypes, EventTypes, _EventSource, extract_trigger_tags, @@ -34,7 +35,7 @@ ), ( "application_load_balancer_multivalue_headers", - "application-load-balancer-mutivalue-headers.json", + "application-load-balancer-multivalue-headers.json", "72.12.164.125", "/lambda?query=1234ABCD", "GET", @@ -111,7 +112,7 @@ ), ( "application_load_balancer_multivalue_headers", - "application-load-balancer-mutivalue-headers.json", + "application-load-balancer-multivalue-headers.json", { "statusCode": 404, "multiValueHeaders": { @@ -397,6 +398,25 @@ def test_get_asm_blocked_response_blocked( response = get_asm_blocked_response(event_source) assert response["statusCode"] == expected_status assert response["headers"] == expected_headers + assert "multiValueHeaders" not in response + + +@patch("datadog_lambda.asm.get_blocked") +def test_get_asm_blocked_response_blocked_multi_value_headers( + mock_get_blocked, +): + # HTML blocking response + mock_get_blocked.return_value = { + "status_code": 401, + "type": "html", + "content-type": "text/html", + } + + event_source = _EventSource(EventTypes.ALB, EventSubtypes.ALB_MULTI_VALUE_HEADERS) + response = get_asm_blocked_response(event_source) + assert response["statusCode"] == 401 + assert response["multiValueHeaders"] == {"content-type": ["text/html"]} + assert "headers" not in response @patch("datadog_lambda.asm.get_blocked") diff --git a/tests/test_trigger.py b/tests/test_trigger.py index 452635cfc..182e61d8e 100644 --- a/tests/test_trigger.py +++ b/tests/test_trigger.py @@ -5,6 +5,7 @@ from datadog_lambda.trigger import ( EventSubtypes, + EventTypes, parse_event_source, get_event_source_arn, extract_trigger_tags, @@ -117,6 +118,22 @@ def test_event_source_application_load_balancer(self): event_source = parse_event_source(event) event_source_arn = get_event_source_arn(event_source, event, ctx) self.assertEqual(event_source.to_string(), event_sample_source) + self.assertEqual(event_source.subtype, EventSubtypes.ALB) + self.assertEqual( + event_source_arn, + "arn:aws:elasticloadbalancing:us-east-2:123456789012:targetgroup/lambda-xyz/123abc", + ) + + def test_event_source_application_load_balancer_multi_value_headers(self): + event_sample_source = "application-load-balancer-multivalue-headers" + test_file = event_samples + event_sample_source + ".json" + with open(test_file, "r") as event: + event = json.load(event) + ctx = get_mock_context() + event_source = parse_event_source(event) + event_source_arn = get_event_source_arn(event_source, event, ctx) + self.assertEqual(event_source.event_type, EventTypes.ALB) + self.assertEqual(event_source.subtype, EventSubtypes.ALB_MULTI_VALUE_HEADERS) self.assertEqual( event_source_arn, "arn:aws:elasticloadbalancing:us-east-2:123456789012:targetgroup/lambda-xyz/123abc", From 2389ec30f666eebcb8f5350ebb90853a72ee4e8b Mon Sep 17 00:00:00 2001 From: Florentin Labelle Date: Wed, 10 Sep 2025 13:14:34 +0200 Subject: [PATCH 293/403] fix(appsec): perform _after extractions on the blocking_response (#656) --- datadog_lambda/wrapper.py | 47 +++++++++++++++++++++++---------------- tests/test_wrapper.py | 28 +++++++++++++++++------ 2 files changed, 49 insertions(+), 26 deletions(-) diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 28c7ae88d..51e5bcfac 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -284,6 +284,34 @@ def _before(self, event, context): def _after(self, event, context): try: status_code = extract_http_status_code_tag(self.trigger_tags, self.response) + + if self.span: + if config.appsec_enabled and not self.blocking_response: + asm_start_response( + self.span, + status_code, + self.event_source, + response=self.response, + ) + self.blocking_response = get_asm_blocked_response(self.event_source) + + if self.blocking_response: + status_code = str(self.blocking_response.get("statusCode")) + if config.capture_payload_enabled and self.response: + tag_object( + self.span, "function.blocked_response", self.response + ) + self.response = self.blocking_response + + if config.capture_payload_enabled: + tag_object(self.span, "function.request", event) + tag_object(self.span, "function.response", self.response) + + if status_code: + self.span.set_tag("http.status_code", status_code) + + self.span.finish() + if status_code: self.trigger_tags["http.status_code"] = status_code mark_trace_as_error_for_5xx_responses(context, status_code, self.span) @@ -298,25 +326,6 @@ def _after(self, event, context): if should_trace_cold_start: trace_ctx = tracer.current_trace_context() - if self.span: - if config.capture_payload_enabled: - tag_object(self.span, "function.request", event) - tag_object(self.span, "function.response", self.response) - - if status_code: - self.span.set_tag("http.status_code", status_code) - - if config.appsec_enabled and not self.blocking_response: - asm_start_response( - self.span, - status_code, - self.event_source, - response=self.response, - ) - self.blocking_response = get_asm_blocked_response(self.event_source) - - self.span.finish() - if self.inferred_span: if status_code: self.inferred_span.set_tag("http.status_code", status_code) diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index e07b5ca91..0083b3faa 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -690,6 +690,9 @@ def setUp(self): self.mock_get_asm_blocking_response = patcher.start() self.addCleanup(patcher.stop) + with open("tests/event_samples/api-gateway.json") as f: + self.api_gateway_request = json.loads(f.read()) + self.fake_blocking_response = { "statusCode": "403", "headers": { @@ -706,7 +709,7 @@ def test_blocking_before(self): lambda_handler = wrapper.datadog_lambda_wrapper(mock_handler) - response = lambda_handler({}, get_mock_context()) + response = lambda_handler(self.api_gateway_request, get_mock_context()) self.assertEqual(response, self.fake_blocking_response) mock_handler.assert_not_called() @@ -715,27 +718,31 @@ def test_blocking_before(self): self.mock_asm_start_request.assert_called_once() self.mock_asm_start_response.assert_not_called() + assert lambda_handler.span.get_tag("http.status_code") == "403" + def test_blocking_during(self): self.mock_get_asm_blocking_response.return_value = None - @wrapper.datadog_lambda_wrapper def lambda_handler(event, context): self.mock_get_asm_blocking_response.return_value = ( self.fake_blocking_response ) raise wrapper.BlockingException() - response = lambda_handler({}, get_mock_context()) + lambda_handler = wrapper.datadog_lambda_wrapper(lambda_handler) + + response = lambda_handler(self.api_gateway_request, get_mock_context()) self.assertEqual(response, self.fake_blocking_response) self.mock_asm_set_context.assert_called_once() self.mock_asm_start_request.assert_called_once() self.mock_asm_start_response.assert_not_called() + assert lambda_handler.span.get_tag("http.status_code") == "403" + def test_blocking_after(self): self.mock_get_asm_blocking_response.return_value = None - @wrapper.datadog_lambda_wrapper def lambda_handler(event, context): self.mock_get_asm_blocking_response.return_value = ( self.fake_blocking_response @@ -745,13 +752,17 @@ def lambda_handler(event, context): "body": "This should not be returned", } - response = lambda_handler({}, get_mock_context()) + lambda_handler = wrapper.datadog_lambda_wrapper(lambda_handler) + + response = lambda_handler(self.api_gateway_request, get_mock_context()) self.assertEqual(response, self.fake_blocking_response) self.mock_asm_set_context.assert_called_once() self.mock_asm_start_request.assert_called_once() self.mock_asm_start_response.assert_called_once() + assert lambda_handler.span.get_tag("http.status_code") == "403" + def test_no_blocking_appsec_disabled(self): os.environ["DD_APPSEC_ENABLED"] = "false" @@ -764,14 +775,17 @@ def test_no_blocking_appsec_disabled(self): "body": "This should be returned", } - @wrapper.datadog_lambda_wrapper def lambda_handler(event, context): return expected_response - response = lambda_handler({}, get_mock_context()) + lambda_handler = wrapper.datadog_lambda_wrapper(lambda_handler) + + response = lambda_handler(self.api_gateway_request, get_mock_context()) self.assertEqual(response, expected_response) self.mock_get_asm_blocking_response.assert_not_called() self.mock_asm_set_context.assert_not_called() self.mock_asm_start_request.assert_not_called() self.mock_asm_start_response.assert_not_called() + + assert lambda_handler.span.get_tag("http.status_code") == "200" From 7b54882d322c2233835c6f45ee500a404919eaf9 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Tue, 16 Sep 2025 11:28:10 -0400 Subject: [PATCH 294/403] v8.114.0 (#658) --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index d5b71e8d9..ac6691b07 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "8.114.0.dev0" +__version__ = "8.114.0" diff --git a/pyproject.toml b/pyproject.toml index a2fc7b74c..ae46ce3d3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "8.114.0.dev0" +version = "8.114.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 784a41b74498b062e2a3a1e326199a197150a23d Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Tue, 16 Sep 2025 22:44:05 -0400 Subject: [PATCH 295/403] update version to v8.115.0.dev0 --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index ac6691b07..653b589b9 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "8.114.0" +__version__ = "8.115.0.dev0" diff --git a/pyproject.toml b/pyproject.toml index ae46ce3d3..aebd15b4d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "8.114.0" +version = "8.115.0.dev0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From bb2271c40a9d645696057d5ec146a4bdcc9e3205 Mon Sep 17 00:00:00 2001 From: Rithika Narayan <93233069+rithikanarayan@users.noreply.github.com> Date: Wed, 24 Sep 2025 11:53:32 -0400 Subject: [PATCH 296/403] Increasing allowed uncompressed layer size to 25 MB (#659) --- scripts/check_layer_size.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/check_layer_size.sh b/scripts/check_layer_size.sh index 27988e858..b074d74e4 100755 --- a/scripts/check_layer_size.sh +++ b/scripts/check_layer_size.sh @@ -9,7 +9,7 @@ set -e MAX_LAYER_COMPRESSED_SIZE_KB=$(expr 17 \* 1024 / 2) # 8704 KB -MAX_LAYER_UNCOMPRESSED_SIZE_KB=$(expr 22 \* 1024) # 22528 KB +MAX_LAYER_UNCOMPRESSED_SIZE_KB=$(expr 25 \* 1024) # 25600 KB LAYER_FILES_PREFIX="datadog_lambda_py" From b6131e5c7a052d8e08727c9196d1a83b50be1b68 Mon Sep 17 00:00:00 2001 From: Christian Wygoda <103508637+c-wygoda@users.noreply.github.com> Date: Wed, 1 Oct 2025 18:44:39 +0200 Subject: [PATCH 297/403] fix: support ddtrace 3.x.x, including >=3.15 (#661) --- datadog_lambda/wrapper.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 51e5bcfac..de24d71d4 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -65,7 +65,11 @@ if config.exception_replay_enabled: from ddtrace.debugging._exception.replay import SpanExceptionHandler - from ddtrace.debugging._uploader import LogsIntakeUploaderV1 + + try: + from ddtrace.debugging._uploader import SignalUploader + except ImportError: + from ddtrace.debugging._uploader import LogsIntakeUploaderV1 as SignalUploader logger = logging.getLogger(__name__) @@ -370,7 +374,7 @@ def _after(self, event, context): # Flush exception replay if config.exception_replay_enabled: - LogsIntakeUploaderV1._instance.periodic() + SignalUploader._instance.periodic() if config.encode_authorizer_context and is_authorizer_response( self.response From 09143fe76ba033c698fc63bd90495155d36a47f1 Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Fri, 3 Oct 2025 11:04:27 -0700 Subject: [PATCH 298/403] Improve testing for ddtrace imports. (#662) --- .github/workflows/build.yml | 2 + datadog_lambda/wrapper.py | 4 ++ scripts/check_layer_size.sh | 2 +- tests/test_wrapper.py | 110 ++++++++++++++++++++++++++++++++++++ 4 files changed, 117 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d218bdefd..050624478 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -5,6 +5,8 @@ on: branches: - "main" pull_request: + schedule: + - cron: '0 0,12 * * *' # Runs every day at midnight and noon utc jobs: lint: diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index de24d71d4..0cbedd9f7 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -46,6 +46,10 @@ extract_http_status_code_tag, ) +# ddtrace imports are also tested in +# dd-trace-py/tests/internal/test_serverless.py please update those tests when +# making changes to any ddtrace import. + if config.appsec_enabled: from datadog_lambda.asm import ( asm_set_context, diff --git a/scripts/check_layer_size.sh b/scripts/check_layer_size.sh index b074d74e4..ce67d92d9 100755 --- a/scripts/check_layer_size.sh +++ b/scripts/check_layer_size.sh @@ -8,7 +8,7 @@ # Compares layer size to threshold, and fails if below that threshold set -e -MAX_LAYER_COMPRESSED_SIZE_KB=$(expr 17 \* 1024 / 2) # 8704 KB +MAX_LAYER_COMPRESSED_SIZE_KB=$(expr 9 \* 1024) # 9216 KB MAX_LAYER_UNCOMPRESSED_SIZE_KB=$(expr 25 \* 1024) # 25600 KB diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index 0083b3faa..fe7678ac3 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -789,3 +789,113 @@ def lambda_handler(event, context): self.mock_asm_start_response.assert_not_called() assert lambda_handler.span.get_tag("http.status_code") == "200" + + +@patch("datadog_lambda.config.Config.exception_replay_enabled", True) +def test_exception_replay_enabled(monkeypatch): + importlib.reload(wrapper) + + original_SpanExceptionHandler_enable = wrapper.SpanExceptionHandler.enable + SpanExceptionHandler_enable_calls = [] + + def SpanExceptionHandler_enable(*args, **kwargs): + SpanExceptionHandler_enable_calls.append((args, kwargs)) + return original_SpanExceptionHandler_enable(*args, **kwargs) + + original_SignalUploader_periodic = wrapper.SignalUploader.periodic + SignalUploader_periodic_calls = [] + + def SignalUploader_periodic(*args, **kwargs): + SignalUploader_periodic_calls.append((args, kwargs)) + return original_SignalUploader_periodic(*args, **kwargs) + + monkeypatch.setattr( + "datadog_lambda.wrapper.SpanExceptionHandler.enable", + SpanExceptionHandler_enable, + ) + monkeypatch.setattr( + "datadog_lambda.wrapper.SignalUploader.periodic", SignalUploader_periodic + ) + + expected_response = { + "statusCode": 200, + "body": "This should be returned", + } + + @wrapper.datadog_lambda_wrapper + def lambda_handler(event, context): + return expected_response + + response = lambda_handler({}, get_mock_context()) + + assert response == expected_response + assert len(SpanExceptionHandler_enable_calls) == 1 + assert len(SignalUploader_periodic_calls) == 1 + + +@patch("datadog_lambda.config.Config.profiling_enabled", True) +def test_profiling_enabled(monkeypatch): + importlib.reload(wrapper) + + original_Profiler_start = wrapper.profiler.Profiler.start + Profiler_start_calls = [] + + def Profiler_start(*args, **kwargs): + Profiler_start_calls.append((args, kwargs)) + return original_Profiler_start(*args, **kwargs) + + monkeypatch.setattr("datadog_lambda.wrapper.is_new_sandbox", lambda: True) + monkeypatch.setattr( + "datadog_lambda.wrapper.profiler.Profiler.start", Profiler_start + ) + + expected_response = { + "statusCode": 200, + "body": "This should be returned", + } + + @wrapper.datadog_lambda_wrapper + def lambda_handler(event, context): + return expected_response + + response = lambda_handler({}, get_mock_context()) + + assert response == expected_response + assert len(Profiler_start_calls) == 1 + + +@patch("datadog_lambda.config.Config.llmobs_enabled", True) +def test_llmobs_enabled(monkeypatch): + importlib.reload(wrapper) + + original_LLMObs_enable = wrapper.LLMObs.enable + LLMObs_enable_calls = [] + + def LLMObs_enable(*args, **kwargs): + LLMObs_enable_calls.append((args, kwargs)) + return original_LLMObs_enable(*args, **kwargs) + + original_LLMObs_flush = wrapper.LLMObs.flush + LLMObs_flush_calls = [] + + def LLMObs_flush(*args, **kwargs): + LLMObs_flush_calls.append((args, kwargs)) + return original_LLMObs_flush(*args, **kwargs) + + monkeypatch.setattr("datadog_lambda.wrapper.LLMObs.enable", LLMObs_enable) + monkeypatch.setattr("datadog_lambda.wrapper.LLMObs.flush", LLMObs_flush) + + expected_response = { + "statusCode": 200, + "body": "This should be returned", + } + + @wrapper.datadog_lambda_wrapper + def lambda_handler(event, context): + return expected_response + + response = lambda_handler({}, get_mock_context()) + + assert response == expected_response + assert len(LLMObs_enable_calls) == 1 + assert len(LLMObs_flush_calls) == 1 From 93d4a07fa61a4d4d2feec08e722505a9e0cc8657 Mon Sep 17 00:00:00 2001 From: Rithika Narayan <93233069+rithikanarayan@users.noreply.github.com> Date: Wed, 8 Oct 2025 13:21:43 -0400 Subject: [PATCH 299/403] APMSVLS-65 Extract Trace Context For AppSync Events (#657) APMSVLS-65 first draft of extractor helper function and inclusion in extract_dd_trace_context Second draft of implementation for extracting trace context from event['request']['headers'] Merge branch 'main' into rithika.narayan/APMSVLS-65/extract-context-from-appsync Removing unnecessary allocations from header extraction Added unit tests for extracting context from event['request']['headers'] Refactoring change to use extract_context_from_http_event_or_context Removing extra testing file linting Merge branch 'main' into rithika.narayan/APMSVLS-65/extract-context-from-appsync Cleaned up repeated get calls Checking for request header field without raising exception Removing extraneous file Refactored code, added more unit tests More comprehensive unit testing for coverage Removing imported files Removing more unnecessary files WIP testing whether decode_authorizer_context is set Cleanup More cleanup Testing refactoring for size Removed comments removing changes in tracer Restoring implementation Bump zipped layer size Integer layer size Merge branch 'main' into rithika.narayan/APMSVLS-65/extract-context-from-appsync Fixing layer size calculation Adding unit test for using extract_context_from_lambda_context linting Merge branch 'main' into rithika.narayan/APMSVLS-65/extract-context-from-appsync --- datadog_lambda/tracing.py | 18 + .../event_samples/rum-appsync-no-headers.json | 14 + .../rum-appsync-request-not-dict.json | 12 + tests/event_samples/rum-appsync.json | 53 + tests/integration/input_events/appsync.json | 49 + tests/integration/package-lock.json | 1119 +++++++++++++++++ tests/integration/package.json | 2 +- .../logs/async-metrics_python310.log | 128 ++ .../logs/async-metrics_python311.log | 128 ++ .../logs/async-metrics_python312.log | 128 ++ .../logs/async-metrics_python313.log | 128 ++ .../snapshots/logs/async-metrics_python38.log | 128 ++ .../snapshots/logs/async-metrics_python39.log | 128 ++ .../snapshots/logs/sync-metrics_python310.log | 147 +++ .../snapshots/logs/sync-metrics_python311.log | 147 +++ .../snapshots/logs/sync-metrics_python312.log | 147 +++ .../snapshots/logs/sync-metrics_python313.log | 147 +++ .../snapshots/logs/sync-metrics_python38.log | 147 +++ .../snapshots/logs/sync-metrics_python39.log | 147 +++ .../return_values/async-metrics_appsync.json | 8 + .../return_values/sync-metrics_appsync.json | 8 + tests/integration/yarn.lock | 38 +- tests/test_tracing.py | 48 +- 23 files changed, 2998 insertions(+), 21 deletions(-) create mode 100644 tests/event_samples/rum-appsync-no-headers.json create mode 100644 tests/event_samples/rum-appsync-request-not-dict.json create mode 100644 tests/event_samples/rum-appsync.json create mode 100644 tests/integration/input_events/appsync.json create mode 100644 tests/integration/package-lock.json create mode 100644 tests/integration/snapshots/return_values/async-metrics_appsync.json create mode 100644 tests/integration/snapshots/return_values/sync-metrics_appsync.json diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 51157f6a7..4faaed2df 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -209,6 +209,20 @@ def extract_context_from_http_event_or_context( return context +def extract_context_from_request_header_or_context(event, lambda_context, event_source): + request = event.get("request") + if isinstance(request, (set, dict)) and "headers" in request: + context = extract_context_from_http_event_or_context( + request, + lambda_context, + event_source, + decode_authorizer_context=False, + ) + else: + context = extract_context_from_lambda_context(lambda_context) + return context + + def create_sns_event(message): return { "Records": [ @@ -627,6 +641,10 @@ def extract_dd_trace_context( if extractor is not None: context = extract_context_custom_extractor(extractor, event, lambda_context) + elif isinstance(event, (set, dict)) and "request" in event: + context = extract_context_from_request_header_or_context( + event, lambda_context, event_source + ) elif isinstance(event, (set, dict)) and "headers" in event: context = extract_context_from_http_event_or_context( event, lambda_context, event_source, decode_authorizer_context diff --git a/tests/event_samples/rum-appsync-no-headers.json b/tests/event_samples/rum-appsync-no-headers.json new file mode 100644 index 000000000..ce42c9722 --- /dev/null +++ b/tests/event_samples/rum-appsync-no-headers.json @@ -0,0 +1,14 @@ +{ + "identity": "None", + "info": { + "fieldName": "getItems", + "parentTypeName": "Query", + "selectionSetGraphQL": "{\n id\n}", + "selectionSetList":["id"] + }, + "prev": "None", + "request": { + "domainName": "None" + }, + "source": "None" +} \ No newline at end of file diff --git a/tests/event_samples/rum-appsync-request-not-dict.json b/tests/event_samples/rum-appsync-request-not-dict.json new file mode 100644 index 000000000..1ab6dba82 --- /dev/null +++ b/tests/event_samples/rum-appsync-request-not-dict.json @@ -0,0 +1,12 @@ +{ + "identity": "None", + "info": { + "fieldName": "getItems", + "parentTypeName": "Query", + "selectionSetGraphQL": "{\n id\n}", + "selectionSetList":["id"] + }, + "prev": "None", + "request": "hello", + "source": "None" +} \ No newline at end of file diff --git a/tests/event_samples/rum-appsync.json b/tests/event_samples/rum-appsync.json new file mode 100644 index 000000000..ae085359f --- /dev/null +++ b/tests/event_samples/rum-appsync.json @@ -0,0 +1,53 @@ +{ + "identity": "None", + "info": { + "fieldName": "getItems", + "parentTypeName": "Query", + "selectionSetGraphQL": "{\n id\n}", + "selectionSetList":["id"] + }, + "prev": "None", + "request": { + "domainName": "None", + "headers": { + "accept": "*/*", + "accept-encoding": "gzip, deflate, br, zstd", + "accept-language": "en-US,en;q=0.9", + "cloudfront-forwarded-proto": "https", + "cloudfront-is-desktop-viewer": "True", + "cloudfront-is-mobile-viewer": "False", + "cloudfront-is-smarttv-viewer":"False", + "cloudfront-is-tablet-viewer":" False", + "cloudfront-viewer-asn": "6461", + "cloudfront-viewer-country": "US", + "content-length": "47", + "content-type": "application/graphql", + "host": "4aowrg2uhvbw5mn7osu6searqi.appsync-api.us-east-1.amazonaws.com", + "origin": "http://localhost:5173", + "priority": "u=1, i", + "referer": "http://localhost:5173/", + "sec-ch-ua": "\"Chromium\";v=\"140\", \"Not=A?Brand\";v=\"24\", \"Google Chrome\";v=\"140\"", + "sec-ch-ua-mobile": "?0", + "sec-ch-ua-platform": "macOS", + "sec-fetch-dest": "empty", + "sec-fetch-mode": "cors", + "sec-fetch-site": "cross-site", + "traceparent": "00-0000000000000000d9f454c80b9a529a-73ac6ca3427073a3-01", + "tracestate": "dd=s:1;o:rum", + "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36","via":"2.0 62f9f3967e93a923f21c8acb20cf10b6.cloudfront.net (CloudFront)", + "x-amz-cf-id": "Femhicb_Vbva-J8qWjdI4hKMmqusCeQSp207UGyY3u8VOUrdE8BBvg==", + "x-amzn-appsync-is-vpce-request": "False", + "x-amzn-remote-ip": "64.124.12.19", + "x-amzn-requestid": "1ee1669a-eda3-4d4f-911c-35f74ebef31d", + "x-amzn-trace-id": "Root=1-68cdb7e9-438bf88259d7ce3535723bdd", + "x-datadog-origin": "rum", + "x-datadog-parent-id": "67890", + "x-datadog-sampling-priority": "1", + "x-datadog-trace-id": "12345", + "x-forwarded-for": "64.124.12.19,15.158.225.229", + "x-forwarded-port": "443", + "x-forwarded-proto": "https" + } + }, + "source": "None" +} \ No newline at end of file diff --git a/tests/integration/input_events/appsync.json b/tests/integration/input_events/appsync.json new file mode 100644 index 000000000..dacf24e7e --- /dev/null +++ b/tests/integration/input_events/appsync.json @@ -0,0 +1,49 @@ +{ + "identity": "None", + "info": { + "fieldName": "getItems", + "parentTypeName": "Query", + "selectionSetGraphQL": "{\n id\n}", + "selectionSetList":["id"] + }, + "prev": "None", + "request": { + "domainName": "None", + "headers": { + "accept": "*/*", + "accept-encoding": "gzip, deflate, br, zstd", + "accept-language": "en-US,en;q=0.9", + "cloudfront-forwarded-proto": "https", + "cloudfront-is-desktop-viewer": "True", + "cloudfront-is-mobile-viewer": "False", + "cloudfront-is-smarttv-viewer":"False", + "cloudfront-is-tablet-viewer":" False", + "cloudfront-viewer-asn": "6461", + "cloudfront-viewer-country": "US", + "content-length": "47", + "content-type": "application/graphql", + "host": "4aowrg2uhvbw5mn7osu6searqi.appsync-api.us-east-1.amazonaws.com", + "origin": "http://localhost:5173", + "priority": "u=1, i", + "referer": "http://localhost:5173/", + "sec-ch-ua": "\"Chromium\";v=\"140\", \"Not=A?Brand\";v=\"24\", \"Google Chrome\";v=\"140\"", + "sec-ch-ua-mobile": "?0", + "sec-ch-ua-platform": "macOS", + "sec-fetch-dest": "empty", + "sec-fetch-mode": "cors", + "sec-fetch-site": "cross-site", + "traceparent": "00-0000000000000000d9f454c80b9a529a-73ac6ca3427073a3-01", + "tracestate": "dd=s:1;o:rum", + "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36","via":"2.0 62f9f3967e93a923f21c8acb20cf10b6.cloudfront.net (CloudFront)", + "x-amz-cf-id": "Femhicb_Vbva-J8qWjdI4hKMmqusCeQSp207UGyY3u8VOUrdE8BBvg==", + "x-amzn-appsync-is-vpce-request": "False", + "x-amzn-remote-ip": "64.124.12.19", + "x-amzn-requestid": "1ee1669a-eda3-4d4f-911c-35f74ebef31d", + "x-amzn-trace-id": "Root=1-68cdb7e9-438bf88259d7ce3535723bdd", + "x-forwarded-for": "64.124.12.19,15.158.225.229", + "x-forwarded-port": "443", + "x-forwarded-proto": "https" + } + }, + "source": "None" +} \ No newline at end of file diff --git a/tests/integration/package-lock.json b/tests/integration/package-lock.json new file mode 100644 index 000000000..5990cc8db --- /dev/null +++ b/tests/integration/package-lock.json @@ -0,0 +1,1119 @@ +{ + "name": "integration", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "devDependencies": { + "serverless-plugin-datadog": "^2.18.0", + "serverless-python-requirements": "^6.1.2" + } + }, + "node_modules/@iarna/toml": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", + "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==", + "dev": true, + "license": "ISC" + }, + "node_modules/2-thenable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/2-thenable/-/2-thenable-1.0.0.tgz", + "integrity": "sha512-HqiDzaLDFCXkcCO/SwoyhRwqYtINFHF7t9BDRq4x90TOKNAJpiqUt9X5lQ08bwxYzc067HUywDjGySpebHcUpw==", + "dev": true, + "license": "ISC", + "dependencies": { + "d": "1", + "es5-ext": "^0.10.47" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/appdirectory": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/appdirectory/-/appdirectory-0.1.0.tgz", + "integrity": "sha512-DJ5DV8vZXBbusyiyPlH28xppwS8eAMRuuyMo88xeEcf4bV64lbLtbxRxqixZuJBXsZzLtXFmA13GwVjJc7vdQw==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "dev": true, + "license": "MIT" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true, + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/child-process-ext": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/child-process-ext/-/child-process-ext-2.1.1.tgz", + "integrity": "sha512-0UQ55f51JBkOFa+fvR76ywRzxiPwQS3Xe8oe5bZRphpv+dIMeerW5Zn5e4cUy4COJwVtJyU0R79RMnw+aCqmGA==", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^6.0.5", + "es5-ext": "^0.10.53", + "log": "^6.0.0", + "split2": "^3.1.1", + "stream-promise": "^3.2.0" + } + }, + "node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz", + "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==", + "dev": true, + "license": "MIT", + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/cross-spawn/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/d": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz", + "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==", + "dev": true, + "license": "ISC", + "dependencies": { + "es5-ext": "^0.10.64", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/duration": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/duration/-/duration-0.2.2.tgz", + "integrity": "sha512-06kgtea+bGreF5eKYgI/36A6pLXggY7oR4p1pq4SmdFBn1ReOL5D8RhG64VrqfTTKNucqqtBAwEj8aB88mcqrg==", + "dev": true, + "license": "ISC", + "dependencies": { + "d": "1", + "es5-ext": "~0.10.46" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/es5-ext": { + "version": "0.10.64", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz", + "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", + "dev": true, + "hasInstallScript": true, + "license": "ISC", + "dependencies": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "esniff": "^2.0.1", + "next-tick": "^1.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "dev": true, + "license": "MIT", + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/es6-symbol": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz", + "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==", + "dev": true, + "license": "ISC", + "dependencies": { + "d": "^1.0.2", + "ext": "^1.7.0" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/esniff": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", + "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", + "dev": true, + "license": "ISC", + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.62", + "event-emitter": "^0.3.5", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "node_modules/ext": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "dev": true, + "license": "ISC", + "dependencies": { + "type": "^2.7.2" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, + "license": "ISC" + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-all": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/glob-all/-/glob-all-3.3.1.tgz", + "integrity": "sha512-Y+ESjdI7ZgMwfzanHZYQ87C59jOO0i+Hd+QYtVt9PhLi6d8wlOpzQnfBxWUlaTuAoR3TkybLqqbIoWveU4Ji7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "glob": "^7.2.3", + "yargs": "^15.3.1" + }, + "bin": { + "glob-all": "bin/glob-all" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "license": "MIT", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-primitive": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-3.0.1.tgz", + "integrity": "sha512-GljRxhWvlCNRfZyORiH77FwdFwGcMO620o37EOYC0ORWdq+WYNVqW0w2Juzew4M+L81l6/QS3t5gkkihyRqv9w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "dev": true, + "license": "(MIT OR GPL-3.0-or-later)", + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", + "deprecated": "This package is deprecated. Use the optional chaining (?.) operator instead.", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.uniqby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", + "integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.values": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.values/-/lodash.values-4.3.0.tgz", + "integrity": "sha512-r0RwvdCv8id9TUblb/O7rYPwVy6lerCbcawrfdo9iC/1t1wsNMJknO79WNBgwkH0hIeJ08jmvvESbFpNb4jH0Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/log": { + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/log/-/log-6.3.2.tgz", + "integrity": "sha512-ek8NRg/OPvS9ISOJNWNAz5vZcpYacWNFDWNJjj5OXsc6YuKacfey6wF04cXz/tOJIVrZ2nGSkHpAY5qKtF6ISg==", + "dev": true, + "license": "ISC", + "dependencies": { + "d": "^1.0.2", + "duration": "^0.2.2", + "es5-ext": "^0.10.64", + "event-emitter": "^0.3.5", + "sprintf-kit": "^2.0.2", + "type": "^2.7.3", + "uni-global": "^1.0.0" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true, + "license": "(MIT AND Zlib)" + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true, + "license": "MIT" + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true, + "license": "ISC" + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/serverless-plugin-datadog": { + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/serverless-plugin-datadog/-/serverless-plugin-datadog-2.18.0.tgz", + "integrity": "sha512-RUdCNjUk+uUKQYgQBjK0WNeYJ7lM2/RScqg/LjVSfv5EACeJ3iIUPz1c4bS2jtiH05al8qXudNb6QDkv9zxG7w==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/serverless-python-requirements": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/serverless-python-requirements/-/serverless-python-requirements-6.1.2.tgz", + "integrity": "sha512-pas27CBxxaLTU5XMYnCVPJc+LVdm65Ys5olNvRWRqfUaZwTfD/7KSSt2XPSRme8BeJubroslaiOtWPP+IrxTVA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@iarna/toml": "^2.2.5", + "appdirectory": "^0.1.0", + "bluebird": "^3.7.2", + "child-process-ext": "^2.1.1", + "fs-extra": "^10.1.0", + "glob-all": "^3.3.1", + "is-wsl": "^2.2.0", + "jszip": "^3.10.1", + "lodash.get": "^4.4.2", + "lodash.uniqby": "^4.7.0", + "lodash.values": "^4.3.0", + "rimraf": "^3.0.2", + "semver": "^7.6.0", + "set-value": "^4.1.0", + "sha256-file": "1.0.0", + "shell-quote": "^1.8.1" + }, + "engines": { + "node": ">=12.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true, + "license": "ISC" + }, + "node_modules/set-value": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-4.1.0.tgz", + "integrity": "sha512-zTEg4HL0RwVrqcWs3ztF+x1vkxfm0lP+MQQFPiMJTKVceBwEV0A569Ou8l9IYQG8jOZdMVI1hGsc0tmeD2o/Lw==", + "dev": true, + "funding": [ + "https://github.com/sponsors/jonschlinkert", + "https://paypal.me/jonathanschlinkert", + "https://jonschlinkert.dev/sponsor" + ], + "license": "MIT", + "dependencies": { + "is-plain-object": "^2.0.4", + "is-primitive": "^3.0.1" + }, + "engines": { + "node": ">=11.0" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true, + "license": "MIT" + }, + "node_modules/sha256-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/sha256-file/-/sha256-file-1.0.0.tgz", + "integrity": "sha512-nqf+g0veqgQAkDx0U2y2Tn2KWyADuuludZTw9A7J3D+61rKlIIl9V5TS4mfnwKuXZOH9B7fQyjYJ9pKRHIsAyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shell-quote": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.2.tgz", + "integrity": "sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/split2": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", + "dev": true, + "license": "ISC", + "dependencies": { + "readable-stream": "^3.0.0" + } + }, + "node_modules/split2/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/sprintf-kit": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/sprintf-kit/-/sprintf-kit-2.0.2.tgz", + "integrity": "sha512-lnapdj6W4LflHZGKvl9eVkz5YF0xaTrqpRWVA4cNVOTedwqifIP8ooGImldzT/4IAN5KXFQAyXTdLidYVQdyag==", + "dev": true, + "license": "ISC", + "dependencies": { + "es5-ext": "^0.10.64" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/stream-promise": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/stream-promise/-/stream-promise-3.2.0.tgz", + "integrity": "sha512-P+7muTGs2C8yRcgJw/PPt61q7O517tDHiwYEzMWo1GSBCcZedUMT/clz7vUNsSxFphIlJ6QUL4GexQKlfJoVtA==", + "dev": true, + "license": "ISC", + "dependencies": { + "2-thenable": "^1.0.0", + "es5-ext": "^0.10.49", + "is-stream": "^1.1.0" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/type": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz", + "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/uni-global": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/uni-global/-/uni-global-1.0.0.tgz", + "integrity": "sha512-WWM3HP+siTxzIWPNUg7hZ4XO8clKi6NoCAJJWnuRL+BAqyFXF8gC03WNyTefGoUXYc47uYgXxpKLIEvo65PEHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "type": "^2.5.0" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + } + } +} diff --git a/tests/integration/package.json b/tests/integration/package.json index 1a1784620..8dae6acaa 100644 --- a/tests/integration/package.json +++ b/tests/integration/package.json @@ -1,6 +1,6 @@ { "devDependencies": { "serverless-plugin-datadog": "^2.18.0", - "serverless-python-requirements": "^6.1.1" + "serverless-python-requirements": "^6.1.2" } } diff --git a/tests/integration/snapshots/logs/async-metrics_python310.log b/tests/integration/snapshots/logs/async-metrics_python310.log index d72afba39..ea8bf42f6 100644 --- a/tests/integration/snapshots/logs/async-metrics_python310.log +++ b/tests/integration/snapshots/logs/async-metrics_python310.log @@ -189,6 +189,134 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "integration-tests-python-XXXX-async-metrics_python310", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python310", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python310", + "functionname": "integration-tests-python-XXXX-async-metrics_python310", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python310", + "resource:integration-tests-python-XXXX-async-metrics_python310", + "memorysize:1024", + "cold_start:false", + "runtime:python3.10", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} { "m": "datadog.serverless.dynamodb.stream.type", "v": 1, diff --git a/tests/integration/snapshots/logs/async-metrics_python311.log b/tests/integration/snapshots/logs/async-metrics_python311.log index dac9c4277..5aa9c5545 100644 --- a/tests/integration/snapshots/logs/async-metrics_python311.log +++ b/tests/integration/snapshots/logs/async-metrics_python311.log @@ -189,6 +189,134 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "integration-tests-python-XXXX-async-metrics_python311", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python311", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python311", + "functionname": "integration-tests-python-XXXX-async-metrics_python311", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python311", + "resource:integration-tests-python-XXXX-async-metrics_python311", + "memorysize:1024", + "cold_start:false", + "runtime:python3.11", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} { "m": "datadog.serverless.dynamodb.stream.type", "v": 1, diff --git a/tests/integration/snapshots/logs/async-metrics_python312.log b/tests/integration/snapshots/logs/async-metrics_python312.log index c2b624ff3..67732da61 100644 --- a/tests/integration/snapshots/logs/async-metrics_python312.log +++ b/tests/integration/snapshots/logs/async-metrics_python312.log @@ -189,6 +189,134 @@ START "dd_lambda_layer:datadog-python312_X.X.X" ] } +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "integration-tests-python-XXXX-async-metrics_python312", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python312", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python312", + "functionname": "integration-tests-python-XXXX-async-metrics_python312", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python312", + "resource:integration-tests-python-XXXX-async-metrics_python312", + "memorysize:1024", + "cold_start:false", + "runtime:python3.12", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} { "m": "datadog.serverless.dynamodb.stream.type", "v": 1, diff --git a/tests/integration/snapshots/logs/async-metrics_python313.log b/tests/integration/snapshots/logs/async-metrics_python313.log index 9a5e763f9..18b3109eb 100644 --- a/tests/integration/snapshots/logs/async-metrics_python313.log +++ b/tests/integration/snapshots/logs/async-metrics_python313.log @@ -189,6 +189,134 @@ START "dd_lambda_layer:datadog-python313_X.X.X" ] } +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "integration-tests-python-XXXX-async-metrics_python313", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python313", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python313", + "functionname": "integration-tests-python-XXXX-async-metrics_python313", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python313", + "resource:integration-tests-python-XXXX-async-metrics_python313", + "memorysize:1024", + "cold_start:false", + "runtime:python3.13", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} { "m": "datadog.serverless.dynamodb.stream.type", "v": 1, diff --git a/tests/integration/snapshots/logs/async-metrics_python38.log b/tests/integration/snapshots/logs/async-metrics_python38.log index 9e6370b5b..c9fe147f9 100644 --- a/tests/integration/snapshots/logs/async-metrics_python38.log +++ b/tests/integration/snapshots/logs/async-metrics_python38.log @@ -189,6 +189,134 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python38_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python38_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "integration-tests-python-XXXX-async-metrics_python38", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python38", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python38", + "functionname": "integration-tests-python-XXXX-async-metrics_python38", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python38", + "resource:integration-tests-python-XXXX-async-metrics_python38", + "memorysize:1024", + "cold_start:false", + "runtime:python3.8", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python38_X.X.X" + ] +} { "m": "datadog.serverless.dynamodb.stream.type", "v": 1, diff --git a/tests/integration/snapshots/logs/async-metrics_python39.log b/tests/integration/snapshots/logs/async-metrics_python39.log index 70f7a59f1..47fd9c87e 100644 --- a/tests/integration/snapshots/logs/async-metrics_python39.log +++ b/tests/integration/snapshots/logs/async-metrics_python39.log @@ -189,6 +189,134 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python39_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python39_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "integration-tests-python-XXXX-async-metrics_python39", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python39", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python39", + "functionname": "integration-tests-python-XXXX-async-metrics_python39", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python39", + "resource:integration-tests-python-XXXX-async-metrics_python39", + "memorysize:1024", + "cold_start:false", + "runtime:python3.9", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python39_X.X.X" + ] +} { "m": "datadog.serverless.dynamodb.stream.type", "v": 1, diff --git a/tests/integration/snapshots/logs/sync-metrics_python310.log b/tests/integration/snapshots/logs/sync-metrics_python310.log index 7d504bdcb..1e1b8a7b4 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python310.log +++ b/tests/integration/snapshots/logs/sync-metrics_python310.log @@ -208,6 +208,153 @@ START "dd_lambda_layer:datadog-python310_X.X.X" ] } +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "integration-tests-python-XXXX-sync-metrics_python310", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python310", + "functionname": "integration-tests-python-XXXX-sync-metrics_python310", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "POST /api/v1/distribution_points", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python310", + "resource:integration-tests-python-XXXX-sync-metrics_python310", + "memorysize:1024", + "cold_start:false", + "runtime:python3.10", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python310_X.X.X" + ] +} { "m": "datadog.serverless.dynamodb.stream.type", "v": 1, diff --git a/tests/integration/snapshots/logs/sync-metrics_python311.log b/tests/integration/snapshots/logs/sync-metrics_python311.log index aa242652d..adc6d215d 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python311.log +++ b/tests/integration/snapshots/logs/sync-metrics_python311.log @@ -208,6 +208,153 @@ START "dd_lambda_layer:datadog-python311_X.X.X" ] } +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "integration-tests-python-XXXX-sync-metrics_python311", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python311", + "functionname": "integration-tests-python-XXXX-sync-metrics_python311", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "POST /api/v1/distribution_points", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python311", + "resource:integration-tests-python-XXXX-sync-metrics_python311", + "memorysize:1024", + "cold_start:false", + "runtime:python3.11", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python311_X.X.X" + ] +} { "m": "datadog.serverless.dynamodb.stream.type", "v": 1, diff --git a/tests/integration/snapshots/logs/sync-metrics_python312.log b/tests/integration/snapshots/logs/sync-metrics_python312.log index 99471eaf8..a7934c86d 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python312.log +++ b/tests/integration/snapshots/logs/sync-metrics_python312.log @@ -208,6 +208,153 @@ START "dd_lambda_layer:datadog-python312_X.X.X" ] } +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "integration-tests-python-XXXX-sync-metrics_python312", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python312", + "functionname": "integration-tests-python-XXXX-sync-metrics_python312", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "POST /api/v1/distribution_points", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python312", + "resource:integration-tests-python-XXXX-sync-metrics_python312", + "memorysize:1024", + "cold_start:false", + "runtime:python3.12", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python312_X.X.X" + ] +} { "m": "datadog.serverless.dynamodb.stream.type", "v": 1, diff --git a/tests/integration/snapshots/logs/sync-metrics_python313.log b/tests/integration/snapshots/logs/sync-metrics_python313.log index e53aae508..a5516973c 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python313.log +++ b/tests/integration/snapshots/logs/sync-metrics_python313.log @@ -208,6 +208,153 @@ START "dd_lambda_layer:datadog-python313_X.X.X" ] } +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "integration-tests-python-XXXX-sync-metrics_python313", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python313", + "functionname": "integration-tests-python-XXXX-sync-metrics_python313", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "POST /api/v1/distribution_points", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python313", + "resource:integration-tests-python-XXXX-sync-metrics_python313", + "memorysize:1024", + "cold_start:false", + "runtime:python3.13", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python313_X.X.X" + ] +} { "m": "datadog.serverless.dynamodb.stream.type", "v": 1, diff --git a/tests/integration/snapshots/logs/sync-metrics_python38.log b/tests/integration/snapshots/logs/sync-metrics_python38.log index 9cbf45648..8cd4eb2cc 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python38.log +++ b/tests/integration/snapshots/logs/sync-metrics_python38.log @@ -208,6 +208,153 @@ START "dd_lambda_layer:datadog-python38_X.X.X" ] } +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "integration-tests-python-XXXX-sync-metrics_python38", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python38", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python38", + "functionname": "integration-tests-python-XXXX-sync-metrics_python38", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "POST /api/v1/distribution_points", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python38", + "resource:integration-tests-python-XXXX-sync-metrics_python38", + "memorysize:1024", + "cold_start:false", + "runtime:python3.8", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python38_X.X.X" + ] +} { "m": "datadog.serverless.dynamodb.stream.type", "v": 1, diff --git a/tests/integration/snapshots/logs/sync-metrics_python39.log b/tests/integration/snapshots/logs/sync-metrics_python39.log index cc0407c1b..5e5e9cf30 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -208,6 +208,153 @@ START "dd_lambda_layer:datadog-python39_X.X.X" ] } +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "integration-tests-python-XXXX-sync-metrics_python39", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python39", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python39", + "functionname": "integration-tests-python-XXXX-sync-metrics_python39", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "POST /api/v1/distribution_points", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python39", + "resource:integration-tests-python-XXXX-sync-metrics_python39", + "memorysize:1024", + "cold_start:false", + "runtime:python3.9", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python39_X.X.X" + ] +} { "m": "datadog.serverless.dynamodb.stream.type", "v": 1, diff --git a/tests/integration/snapshots/return_values/async-metrics_appsync.json b/tests/integration/snapshots/return_values/async-metrics_appsync.json new file mode 100644 index 000000000..1ad668ecc --- /dev/null +++ b/tests/integration/snapshots/return_values/async-metrics_appsync.json @@ -0,0 +1,8 @@ +{ + "statusCode": 200, + "body": { + "message": "hello, dog!", + "request_id": null, + "event_record_ids": [] + } +} diff --git a/tests/integration/snapshots/return_values/sync-metrics_appsync.json b/tests/integration/snapshots/return_values/sync-metrics_appsync.json new file mode 100644 index 000000000..1ad668ecc --- /dev/null +++ b/tests/integration/snapshots/return_values/sync-metrics_appsync.json @@ -0,0 +1,8 @@ +{ + "statusCode": 200, + "body": { + "message": "hello, dog!", + "request_id": null, + "event_record_ids": [] + } +} diff --git a/tests/integration/yarn.lock b/tests/integration/yarn.lock index 37cb357d5..7477e8dae 100644 --- a/tests/integration/yarn.lock +++ b/tests/integration/yarn.lock @@ -2,6 +2,11 @@ # yarn lockfile v1 +"@iarna/toml@^2.2.5": + version "2.2.5" + resolved "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz" + integrity sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg== + "2-thenable@^1.0.0": version "1.0.0" resolved "https://registry.npmjs.org/2-thenable/-/2-thenable-1.0.0.tgz" @@ -10,11 +15,6 @@ d "1" es5-ext "^0.10.47" -"@iarna/toml@^2.2.5": - version "2.2.5" - resolved "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz" - integrity sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg== - ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" @@ -44,7 +44,7 @@ bluebird@^3.7.2: brace-expansion@^1.1.7: version "1.1.12" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.12.tgz#ab9b454466e5a8cc3a187beaad580412a9c5b843" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz" integrity sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg== dependencies: balanced-match "^1.0.0" @@ -108,7 +108,7 @@ cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -d@1, d@^1.0.1, d@^1.0.2: +d@^1.0.1, d@^1.0.2, d@1: version "1.0.2" resolved "https://registry.npmjs.org/d/-/d-1.0.2.tgz" integrity sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw== @@ -251,7 +251,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.3, inherits@~2.0.3: +inherits@^2.0.3, inherits@~2.0.3, inherits@2: version "2.0.4" resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -493,10 +493,10 @@ serverless-plugin-datadog@^2.18.0: resolved "https://registry.npmjs.org/serverless-plugin-datadog/-/serverless-plugin-datadog-2.18.0.tgz" integrity sha512-RUdCNjUk+uUKQYgQBjK0WNeYJ7lM2/RScqg/LjVSfv5EACeJ3iIUPz1c4bS2jtiH05al8qXudNb6QDkv9zxG7w== -serverless-python-requirements@^6.1.1: - version "6.1.1" - resolved "https://registry.npmjs.org/serverless-python-requirements/-/serverless-python-requirements-6.1.1.tgz" - integrity sha512-SQsDKjoZXWvRJNsKL7NvHiMM+B6kG0a4RkVexhPCxId/rVMLVyz0UHg7v34kzaklfsXTQIkez+9x7HP3FwdRVQ== +serverless-python-requirements@^6.1.2: + version "6.1.2" + resolved "https://registry.npmjs.org/serverless-python-requirements/-/serverless-python-requirements-6.1.2.tgz" + integrity sha512-pas27CBxxaLTU5XMYnCVPJc+LVdm65Ys5olNvRWRqfUaZwTfD/7KSSt2XPSRme8BeJubroslaiOtWPP+IrxTVA== dependencies: "@iarna/toml" "^2.2.5" appdirectory "^0.1.0" @@ -578,6 +578,13 @@ stream-promise@^3.2.0: es5-ext "^0.10.49" is-stream "^1.1.0" +string_decoder@^1.1.1, string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + string-width@^4.1.0, string-width@^4.2.0: version "4.2.3" resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" @@ -587,13 +594,6 @@ string-width@^4.1.0, string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" -string_decoder@^1.1.1, string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" diff --git a/tests/test_tracing.py b/tests/test_tracing.py index c87a09711..0fddd52ba 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -48,7 +48,7 @@ ) from datadog_lambda.trigger import parse_event_source -from tests.utils import get_mock_context +from tests.utils import get_mock_context, ClientContext function_arn = "arn:aws:lambda:us-west-1:123457598159:function:python-layer-test" @@ -179,6 +179,16 @@ def _wrap(*args, **kwargs): ), ), ("lambda-url", None), + ( + "rum-appsync", + Context( + trace_id=12345, + span_id=67890, + sampling_priority=1, + ), + ), + ("rum-appsync-no-headers", None), + ("rum-appsync-request-not-dict", None), ("s3", None), ( "sns-b64-msg-attribute", @@ -611,6 +621,42 @@ def test_with_complete_datadog_trace_headers_with_trigger_tags(self): ] ) + def test_request_header_malformed(self): + """Testing that if a RUM AppSync event is malformed, the tracer will attempt + to get the trace context from the lambda context in the + extract_context_from_request_header_or_context function.""" + lambda_ctx = get_mock_context() + lambda_ctx.client_context = ClientContext( + custom={ + "_datadog": { + "x-datadog-parent-id": "67890", + "x-datadog-sampling-priority": "1", + "x-datadog-trace-id": "12345", + } + } + ) + request_header_event = { + "identity": "None", + "info": { + "fieldName": "getItems", + "parentTypeName": "Query", + "selectionSetGraphQL": "{\n id\n}", + "selectionSetList": ["id"], + }, + "prev": "None", + "request": "hello", + "source": "None", + } + ctx, source, _ = extract_dd_trace_context(request_header_event, lambda_ctx) + expected_context = Context( + trace_id=12345, + span_id=67890, + sampling_priority=1, + ) + + self.assertEqual(ctx, expected_context) + self.assertEqual(source, "event") + def _test_step_function_trace_data_common( self, event, expected_trace_id, expected_span_id, expected_tid ): From d7763789f262b2da228f8210509e302e6e510d0a Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Fri, 10 Oct 2025 08:46:32 -0400 Subject: [PATCH 300/403] feat: Add batchItemFailures metric (#664) * feat: Add batchItemFailures metric * fmt --- datadog_lambda/metric.py | 27 ++++++++++++++ datadog_lambda/wrapper.py | 4 ++ tests/test_metric.py | 78 +++++++++++++++++++++++++++++++++++++++ tests/test_wrapper.py | 58 +++++++++++++++++++++++++++++ 4 files changed, 167 insertions(+) diff --git a/datadog_lambda/metric.py b/datadog_lambda/metric.py index 73bbeca3c..5df0812f1 100644 --- a/datadog_lambda/metric.py +++ b/datadog_lambda/metric.py @@ -214,6 +214,33 @@ def submit_errors_metric(lambda_context): submit_enhanced_metric("errors", lambda_context) +def submit_batch_item_failures_metric(response, lambda_context): + """Submit aws.lambda.enhanced.batch_item_failures metric with the count of batch item failures + + Args: + response (dict): Lambda function response object + lambda_context (object): Lambda context dict passed to the function by AWS + """ + if not config.enhanced_metrics_enabled: + logger.debug( + "Not submitting batch_item_failures metric because enhanced metrics are disabled" + ) + return + + if not isinstance(response, dict): + return + + batch_item_failures = response.get("batchItemFailures") + if batch_item_failures is not None and isinstance(batch_item_failures, list): + lambda_metric( + "aws.lambda.enhanced.batch_item_failures", + len(batch_item_failures), + timestamp=None, + tags=get_enhanced_metrics_tags(lambda_context), + force_async=True, + ) + + def submit_dynamodb_stream_type_metric(event): stream_view_type = ( event.get("Records", [{}])[0].get("dynamodb", {}).get("StreamViewType") diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 0cbedd9f7..8dbd7e359 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -291,6 +291,10 @@ def _before(self, event, context): def _after(self, event, context): try: + from datadog_lambda.metric import submit_batch_item_failures_metric + + submit_batch_item_failures_metric(self.response, context) + status_code = extract_http_status_code_tag(self.trigger_tags, self.response) if self.span: diff --git a/tests/test_metric.py b/tests/test_metric.py index aa537d346..fe3df247d 100644 --- a/tests/test_metric.py +++ b/tests/test_metric.py @@ -12,6 +12,7 @@ _select_metrics_handler, flush_stats, lambda_metric, + submit_batch_item_failures_metric, ) from datadog_lambda.tags import dd_lambda_layer_tag from datadog_lambda.thread_stats_writer import ThreadStatsWriter @@ -324,3 +325,80 @@ def decrypt(self, CiphertextBlob=None, EncryptionContext={}): mock_kms_client, MOCK_ENCRYPTED_API_KEY_BASE64 ) self.assertEqual(decrypted_key, EXPECTED_DECRYPTED_API_KEY) + + +class TestBatchItemFailuresMetric(unittest.TestCase): + def setUp(self): + patcher = patch("datadog_lambda.metric.lambda_metric") + self.mock_lambda_metric = patcher.start() + self.addCleanup(patcher.stop) + + patcher = patch("datadog_lambda.config.Config.enhanced_metrics_enabled", True) + self.mock_enhanced_metrics_enabled = patcher.start() + self.addCleanup(patcher.stop) + + def test_submit_batch_item_failures_with_failures(self): + response = { + "batchItemFailures": [ + {"itemIdentifier": "msg-1"}, + {"itemIdentifier": "msg-2"}, + {"itemIdentifier": "msg-3"}, + ] + } + context = unittest.mock.Mock() + + with patch("datadog_lambda.metric.get_enhanced_metrics_tags") as mock_get_tags: + mock_get_tags.return_value = ["tag1:value1"] + submit_batch_item_failures_metric(response, context) + + self.mock_lambda_metric.assert_called_once_with( + "aws.lambda.enhanced.batch_item_failures", + 3, + timestamp=None, + tags=["tag1:value1"], + force_async=True, + ) + + def test_submit_batch_item_failures_with_no_failures(self): + response = {"batchItemFailures": []} + context = unittest.mock.Mock() + + with patch("datadog_lambda.metric.get_enhanced_metrics_tags") as mock_get_tags: + mock_get_tags.return_value = ["tag1:value1"] + submit_batch_item_failures_metric(response, context) + self.mock_lambda_metric.assert_called_once_with( + "aws.lambda.enhanced.batch_item_failures", + 0, + timestamp=None, + tags=["tag1:value1"], + force_async=True, + ) + + def test_submit_batch_item_failures_with_no_field(self): + response = {"statusCode": 200} + context = unittest.mock.Mock() + submit_batch_item_failures_metric(response, context) + self.mock_lambda_metric.assert_not_called() + + def test_submit_batch_item_failures_with_none_response(self): + response = None + context = unittest.mock.Mock() + submit_batch_item_failures_metric(response, context) + self.mock_lambda_metric.assert_not_called() + + def test_submit_batch_item_failures_with_non_list_value(self): + response = {"batchItemFailures": "invalid"} + context = unittest.mock.Mock() + submit_batch_item_failures_metric(response, context) + self.mock_lambda_metric.assert_not_called() + + @patch("datadog_lambda.config.Config.enhanced_metrics_enabled", False) + def test_submit_batch_item_failures_enhanced_metrics_disabled(self): + response = { + "batchItemFailures": [ + {"itemIdentifier": "msg-1"}, + ] + } + context = unittest.mock.Mock() + submit_batch_item_failures_metric(response, context) + self.mock_lambda_metric.assert_not_called() diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index fe7678ac3..512a51f89 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -899,3 +899,61 @@ def lambda_handler(event, context): assert response == expected_response assert len(LLMObs_enable_calls) == 1 assert len(LLMObs_flush_calls) == 1 + + +@patch("datadog_lambda.config.Config.trace_enabled", False) +def test_batch_item_failures_metric(): + with patch( + "datadog_lambda.metric.submit_batch_item_failures_metric" + ) as mock_submit: + + @wrapper.datadog_lambda_wrapper + def lambda_handler(event, context): + return { + "batchItemFailures": [ + {"itemIdentifier": "msg-1"}, + {"itemIdentifier": "msg-2"}, + ] + } + + lambda_handler({}, get_mock_context()) + mock_submit.assert_called_once() + call_args = mock_submit.call_args[0] + assert call_args[0] == { + "batchItemFailures": [ + {"itemIdentifier": "msg-1"}, + {"itemIdentifier": "msg-2"}, + ] + } + + +@patch("datadog_lambda.config.Config.trace_enabled", False) +def test_batch_item_failures_metric_no_failures(): + with patch( + "datadog_lambda.metric.submit_batch_item_failures_metric" + ) as mock_submit: + + @wrapper.datadog_lambda_wrapper + def lambda_handler(event, context): + return {"batchItemFailures": []} + + lambda_handler({}, get_mock_context()) + mock_submit.assert_called_once() + call_args = mock_submit.call_args[0] + assert call_args[0] == {"batchItemFailures": []} + + +@patch("datadog_lambda.config.Config.trace_enabled", False) +def test_batch_item_failures_metric_no_response(): + with patch( + "datadog_lambda.metric.submit_batch_item_failures_metric" + ) as mock_submit: + + @wrapper.datadog_lambda_wrapper + def lambda_handler(event, context): + return None + + lambda_handler({}, get_mock_context()) + mock_submit.assert_called_once() + call_args = mock_submit.call_args[0] + assert call_args[0] is None From 968710ec40cf32e70acbaf1d6eb47d733a603c2c Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Fri, 10 Oct 2025 14:55:33 -0400 Subject: [PATCH 301/403] release v8.115.0 (#665) --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index 653b589b9..0149c284a 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "8.115.0.dev0" +__version__ = "8.115.0" diff --git a/pyproject.toml b/pyproject.toml index aebd15b4d..43e88b360 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "8.115.0.dev0" +version = "8.115.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From a55cac58806d7c9a4e79cba18c8077e862c39123 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Fri, 10 Oct 2025 16:09:53 -0400 Subject: [PATCH 302/403] 8.116.0.dev0 --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index 0149c284a..05a11f2b4 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "8.115.0" +__version__ = "8.116.0.dev0" diff --git a/pyproject.toml b/pyproject.toml index 43e88b360..029397485 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "8.115.0" +version = "8.116.0.dev0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 56152da97569d2ee3e9770c4da346e2fb3df0edf Mon Sep 17 00:00:00 2001 From: Florentin Labelle Date: Tue, 14 Oct 2025 17:23:11 +0200 Subject: [PATCH 303/403] fix(http): http.url tag should contain the path (#663) --- datadog_lambda/trigger.py | 3 ++- .../snapshots/logs/async-metrics_python310.log | 6 ++---- .../snapshots/logs/async-metrics_python311.log | 6 ++---- .../snapshots/logs/async-metrics_python312.log | 6 ++---- .../snapshots/logs/async-metrics_python313.log | 6 ++---- .../snapshots/logs/async-metrics_python38.log | 6 ++---- .../snapshots/logs/async-metrics_python39.log | 6 ++---- .../snapshots/logs/sync-metrics_python310.log | 6 ++---- .../snapshots/logs/sync-metrics_python311.log | 6 ++---- .../snapshots/logs/sync-metrics_python312.log | 6 ++---- .../snapshots/logs/sync-metrics_python313.log | 6 ++---- .../snapshots/logs/sync-metrics_python38.log | 6 ++---- .../snapshots/logs/sync-metrics_python39.log | 6 ++---- tests/test_trigger.py | 11 +++-------- 14 files changed, 29 insertions(+), 57 deletions(-) diff --git a/datadog_lambda/trigger.py b/datadog_lambda/trigger.py index e0c3c4fa1..e60de8f0c 100644 --- a/datadog_lambda/trigger.py +++ b/datadog_lambda/trigger.py @@ -325,7 +325,8 @@ def extract_http_tags(event): method = apigateway_v2_http.get("method") if path: - http_tags["http.url_details.path"] = path + if http_tags.get("http.url"): + http_tags["http.url"] += path if method: http_tags["http.method"] = method diff --git a/tests/integration/snapshots/logs/async-metrics_python310.log b/tests/integration/snapshots/logs/async-metrics_python310.log index ea8bf42f6..6779d7ddb 100644 --- a/tests/integration/snapshots/logs/async-metrics_python310.log +++ b/tests/integration/snapshots/logs/async-metrics_python310.log @@ -105,8 +105,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "span.kind": "server", - "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com", - "http.url_details.path": "/Prod/", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", "http.method": "GET", "http.route": "/", "http.status_code": "200" @@ -772,8 +771,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", "span.kind": "server", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", - "http.url_details.path": "/httpapi/get", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", "http.status_code": "200" diff --git a/tests/integration/snapshots/logs/async-metrics_python311.log b/tests/integration/snapshots/logs/async-metrics_python311.log index 5aa9c5545..9f14ff15c 100644 --- a/tests/integration/snapshots/logs/async-metrics_python311.log +++ b/tests/integration/snapshots/logs/async-metrics_python311.log @@ -105,8 +105,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "span.kind": "server", - "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com", - "http.url_details.path": "/Prod/", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", "http.method": "GET", "http.route": "/", "http.status_code": "200" @@ -772,8 +771,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", "span.kind": "server", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", - "http.url_details.path": "/httpapi/get", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", "http.status_code": "200" diff --git a/tests/integration/snapshots/logs/async-metrics_python312.log b/tests/integration/snapshots/logs/async-metrics_python312.log index 67732da61..789a39551 100644 --- a/tests/integration/snapshots/logs/async-metrics_python312.log +++ b/tests/integration/snapshots/logs/async-metrics_python312.log @@ -105,8 +105,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "span.kind": "server", - "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com", - "http.url_details.path": "/Prod/", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", "http.method": "GET", "http.route": "/", "http.status_code": "200" @@ -772,8 +771,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", "span.kind": "server", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", - "http.url_details.path": "/httpapi/get", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", "http.status_code": "200" diff --git a/tests/integration/snapshots/logs/async-metrics_python313.log b/tests/integration/snapshots/logs/async-metrics_python313.log index 18b3109eb..78ade6a7a 100644 --- a/tests/integration/snapshots/logs/async-metrics_python313.log +++ b/tests/integration/snapshots/logs/async-metrics_python313.log @@ -105,8 +105,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "span.kind": "server", - "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com", - "http.url_details.path": "/Prod/", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", "http.method": "GET", "http.route": "/", "http.status_code": "200" @@ -772,8 +771,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", "span.kind": "server", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", - "http.url_details.path": "/httpapi/get", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", "http.status_code": "200" diff --git a/tests/integration/snapshots/logs/async-metrics_python38.log b/tests/integration/snapshots/logs/async-metrics_python38.log index c9fe147f9..5375fafec 100644 --- a/tests/integration/snapshots/logs/async-metrics_python38.log +++ b/tests/integration/snapshots/logs/async-metrics_python38.log @@ -105,8 +105,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "span.kind": "server", - "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com", - "http.url_details.path": "/Prod/", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", "http.method": "GET", "http.route": "/", "http.status_code": "200" @@ -772,8 +771,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", "span.kind": "server", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", - "http.url_details.path": "/httpapi/get", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", "http.status_code": "200" diff --git a/tests/integration/snapshots/logs/async-metrics_python39.log b/tests/integration/snapshots/logs/async-metrics_python39.log index 47fd9c87e..f16e9e2d5 100644 --- a/tests/integration/snapshots/logs/async-metrics_python39.log +++ b/tests/integration/snapshots/logs/async-metrics_python39.log @@ -105,8 +105,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "span.kind": "server", - "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com", - "http.url_details.path": "/Prod/", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", "http.method": "GET", "http.route": "/", "http.status_code": "200" @@ -772,8 +771,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", "span.kind": "server", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", - "http.url_details.path": "/httpapi/get", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", "http.status_code": "200" diff --git a/tests/integration/snapshots/logs/sync-metrics_python310.log b/tests/integration/snapshots/logs/sync-metrics_python310.log index 1e1b8a7b4..1cbd91dd8 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python310.log +++ b/tests/integration/snapshots/logs/sync-metrics_python310.log @@ -85,8 +85,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "span.kind": "server", - "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com", - "http.url_details.path": "/Prod/", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", "http.method": "GET", "http.route": "/", "http.status_code": "200" @@ -828,8 +827,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", "span.kind": "server", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", - "http.url_details.path": "/httpapi/get", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", "http.status_code": "200" diff --git a/tests/integration/snapshots/logs/sync-metrics_python311.log b/tests/integration/snapshots/logs/sync-metrics_python311.log index adc6d215d..b043a8f47 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python311.log +++ b/tests/integration/snapshots/logs/sync-metrics_python311.log @@ -85,8 +85,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "span.kind": "server", - "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com", - "http.url_details.path": "/Prod/", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", "http.method": "GET", "http.route": "/", "http.status_code": "200" @@ -828,8 +827,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", "span.kind": "server", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", - "http.url_details.path": "/httpapi/get", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", "http.status_code": "200" diff --git a/tests/integration/snapshots/logs/sync-metrics_python312.log b/tests/integration/snapshots/logs/sync-metrics_python312.log index a7934c86d..ff9bbdb75 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python312.log +++ b/tests/integration/snapshots/logs/sync-metrics_python312.log @@ -85,8 +85,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "span.kind": "server", - "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com", - "http.url_details.path": "/Prod/", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", "http.method": "GET", "http.route": "/", "http.status_code": "200" @@ -828,8 +827,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", "span.kind": "server", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", - "http.url_details.path": "/httpapi/get", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", "http.status_code": "200" diff --git a/tests/integration/snapshots/logs/sync-metrics_python313.log b/tests/integration/snapshots/logs/sync-metrics_python313.log index a5516973c..87352f25e 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python313.log +++ b/tests/integration/snapshots/logs/sync-metrics_python313.log @@ -85,8 +85,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "span.kind": "server", - "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com", - "http.url_details.path": "/Prod/", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", "http.method": "GET", "http.route": "/", "http.status_code": "200" @@ -828,8 +827,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", "span.kind": "server", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", - "http.url_details.path": "/httpapi/get", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", "http.status_code": "200" diff --git a/tests/integration/snapshots/logs/sync-metrics_python38.log b/tests/integration/snapshots/logs/sync-metrics_python38.log index 8cd4eb2cc..ae41bc18d 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python38.log +++ b/tests/integration/snapshots/logs/sync-metrics_python38.log @@ -85,8 +85,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "span.kind": "server", - "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com", - "http.url_details.path": "/Prod/", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", "http.method": "GET", "http.route": "/", "http.status_code": "200" @@ -828,8 +827,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", "span.kind": "server", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", - "http.url_details.path": "/httpapi/get", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", "http.status_code": "200" diff --git a/tests/integration/snapshots/logs/sync-metrics_python39.log b/tests/integration/snapshots/logs/sync-metrics_python39.log index 5e5e9cf30..1acb7f0da 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -85,8 +85,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", "span.kind": "server", - "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com", - "http.url_details.path": "/Prod/", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", "http.method": "GET", "http.route": "/", "http.status_code": "200" @@ -828,8 +827,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", "span.kind": "server", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", - "http.url_details.path": "/httpapi/get", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", "http.status_code": "200" diff --git a/tests/test_trigger.py b/tests/test_trigger.py index 182e61d8e..f10fcbbf0 100644 --- a/tests/test_trigger.py +++ b/tests/test_trigger.py @@ -318,8 +318,7 @@ def test_extract_trigger_tags_api_gateway(self): { "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "arn:aws:apigateway:us-west-1::/restapis/1234567890/stages/prod", - "http.url": "https://70ixmpl4fl.execute-api.us-east-2.amazonaws.com", - "http.url_details.path": "/prod/path/to/resource", + "http.url": "https://70ixmpl4fl.execute-api.us-east-2.amazonaws.com/prod/path/to/resource", "http.method": "POST", "http.route": "/{proxy+}", "span.kind": "server", @@ -338,8 +337,7 @@ def test_extract_trigger_tags_api_gateway_non_proxy(self): { "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "arn:aws:apigateway:us-west-1::/restapis/lgxbo6a518/stages/dev", - "http.url": "https://lgxbo6a518.execute-api.eu-west-1.amazonaws.com", - "http.url_details.path": "/dev/http/get", + "http.url": "https://lgxbo6a518.execute-api.eu-west-1.amazonaws.com/dev/http/get", "http.method": "GET", "http.route": "/http/get", "span.kind": "server", @@ -409,8 +407,7 @@ def test_extract_trigger_tags_api_gateway_http_api(self): { "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "arn:aws:apigateway:us-west-1::/restapis/x02yirxc7a/stages/$default", - "http.url": "https://x02yirxc7a.execute-api.eu-west-1.amazonaws.com", - "http.url_details.path": "/httpapi/get", + "http.url": "https://x02yirxc7a.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "span.kind": "server", "http.route": "/httpapi/get", @@ -429,7 +426,6 @@ def test_extract_trigger_tags_application_load_balancer(self): { "function_trigger.event_source": "application-load-balancer", "function_trigger.event_source_arn": "arn:aws:elasticloadbalancing:us-east-2:123456789012:targetgroup/lambda-xyz/123abc", - "http.url_details.path": "/lambda", "http.method": "GET", "span.kind": "server", }, @@ -596,7 +592,6 @@ def test_extract_http_tags_with_invalid_request_context(self): http_tags, { "span.kind": "server", - "http.url_details.path": "/test", "http.method": "GET", }, ) From fba070d59d57818d62c89f39b179d72932f1a0d5 Mon Sep 17 00:00:00 2001 From: Brett Langdon Date: Wed, 22 Oct 2025 12:42:48 -0400 Subject: [PATCH 304/403] chore: do not use Span.set_tag_str (#669) * chore: do not use Span.set_tag_str Use Span.set_tag instead. Span.set_tag_str is being deprecated and removed * update to use node 20 for ci --------- Co-authored-by: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> --- ci/input_files/build.yaml.tpl | 4 ++-- datadog_lambda/asm.py | 4 ++-- tests/test_asm.py | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/ci/input_files/build.yaml.tpl b/ci/input_files/build.yaml.tpl index 8624a8060..599160fbf 100644 --- a/ci/input_files/build.yaml.tpl +++ b/ci/input_files/build.yaml.tpl @@ -27,8 +27,8 @@ default: - apt-get install -y ca-certificates curl gnupg xxd - mkdir -p /etc/apt/keyrings - curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg - # We are explicitly setting the node_18.x version for the installation - - echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_18.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list + # We are explicitly setting the node_20.x version for the installation + - echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list - apt-get update - apt-get install nodejs -y - npm install --global yarn diff --git a/datadog_lambda/asm.py b/datadog_lambda/asm.py index 7bd8272f8..6c65a9465 100644 --- a/datadog_lambda/asm.py +++ b/datadog_lambda/asm.py @@ -126,8 +126,8 @@ def asm_start_request( request_ip = _get_request_header_client_ip(request_headers, peer_ip, True) if request_ip is not None: - span.set_tag_str("http.client_ip", request_ip) - span.set_tag_str("network.client.ip", request_ip) + span.set_tag("http.client_ip", request_ip) + span.set_tag("network.client.ip", request_ip) # Encode the parsed query and append it to reconstruct the original raw URI expected by AppSec. if parsed_query: diff --git a/tests/test_asm.py b/tests/test_asm.py index 1e11b102d..3aab8dd73 100644 --- a/tests/test_asm.py +++ b/tests/test_asm.py @@ -331,8 +331,8 @@ def test_asm_start_request_parametrized( # Check IP tags were set if IP is present if expected_ip: - mock_span.set_tag_str.assert_any_call("http.client_ip", expected_ip) - mock_span.set_tag_str.assert_any_call("network.client.ip", expected_ip) + mock_span.set_tag.assert_any_call("http.client_ip", expected_ip) + mock_span.set_tag.assert_any_call("network.client.ip", expected_ip) @pytest.mark.parametrize( From b8779f89d3cf0faaac4fa58502459ee8bae4e822 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Thu, 23 Oct 2025 10:25:59 -0400 Subject: [PATCH 305/403] release v8.116.0 with ddtrace@3.16.2 (#671) --- datadog_lambda/version.py | 2 +- pyproject.toml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index 05a11f2b4..2e2e781ad 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "8.116.0.dev0" +__version__ = "8.116.0" diff --git a/pyproject.toml b/pyproject.toml index 029397485..cf7d18059 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "8.116.0.dev0" +version = "8.116.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" @@ -28,7 +28,7 @@ classifiers = [ python = ">=3.8.0,<4" datadog = ">=0.51.0,<1.0.0" wrapt = "^1.11.2" -ddtrace = ">=3.11.0,<4" +ddtrace = ">=3.16.2,<4" ujson = ">=5.9.0" botocore = { version = "^1.34.0", optional = true } requests = { version ="^2.22.0", optional = true } From 1fac67c442ae0b4521c31e9d2269497e14dd34d6 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Thu, 23 Oct 2025 13:51:31 -0400 Subject: [PATCH 306/403] v8.117.0.dev0 --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index 2e2e781ad..373eef7d0 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "8.116.0" +__version__ = "8.117.0.dev0" diff --git a/pyproject.toml b/pyproject.toml index cf7d18059..d135e085b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "8.116.0" +version = "8.117.0.dev0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From af3d0e2ac6e57a895df839f7226b985a58017b77 Mon Sep 17 00:00:00 2001 From: Florentin Labelle Date: Fri, 31 Oct 2025 09:32:28 +0100 Subject: [PATCH 307/403] feat(config): enable telemetry when SCA is on independently from appsec (#672) --- datadog_lambda/__init__.py | 9 +-------- datadog_lambda/config.py | 15 +++++++++------ datadog_lambda/tracing.py | 5 ----- tests/test_config.py | 34 ++++++++++++++++++++++++++++------ 4 files changed, 38 insertions(+), 25 deletions(-) diff --git a/datadog_lambda/__init__.py b/datadog_lambda/__init__.py index 2034d3cbf..059cead9e 100644 --- a/datadog_lambda/__init__.py +++ b/datadog_lambda/__init__.py @@ -1,12 +1,5 @@ +import datadog_lambda.config # noqa: F401 needs to be imported before `ddtrace` from datadog_lambda.cold_start import initialize_cold_start_tracing -import os - - -if os.environ.get("DD_INSTRUMENTATION_TELEMETRY_ENABLED") is None: - # Telemetry is required for Appsec Software Composition Analysis - os.environ["DD_INSTRUMENTATION_TELEMETRY_ENABLED"] = os.environ.get( - "DD_APPSEC_ENABLED", "false" - ) initialize_cold_start_tracing() diff --git a/datadog_lambda/config.py b/datadog_lambda/config.py index aaa1af5e8..eda6b5828 100644 --- a/datadog_lambda/config.py +++ b/datadog_lambda/config.py @@ -82,12 +82,6 @@ def _resolve_env(self, key, default=None, cast=None, depends_on_tracing=False): logs_injection = _get_env("DD_LOGS_INJECTION", "true", as_bool) merge_xray_traces = _get_env("DD_MERGE_XRAY_TRACES", "false", as_bool) - telemetry_enabled = _get_env( - "DD_INSTRUMENTATION_TELEMETRY_ENABLED", - "false", - as_bool, - depends_on_tracing=True, - ) otel_enabled = _get_env("DD_TRACE_OTEL_ENABLED", "false", as_bool) profiling_enabled = _get_env("DD_PROFILING_ENABLED", "false", as_bool) llmobs_enabled = _get_env("DD_LLMOBS_ENABLED", "false", as_bool) @@ -96,6 +90,7 @@ def _resolve_env(self, key, default=None, cast=None, depends_on_tracing=False): "DD_DATA_STREAMS_ENABLED", "false", as_bool, depends_on_tracing=True ) appsec_enabled = _get_env("DD_APPSEC_ENABLED", "false", as_bool) + sca_enabled = _get_env("DD_APPSEC_SCA_ENABLED", "false", as_bool) is_gov_region = _get_env("AWS_REGION", "", lambda x: x.startswith("us-gov-")) @@ -144,3 +139,11 @@ def _reset(self): "Python Lambda Layer FIPS mode is %s.", "enabled" if config.fips_mode_enabled else "not enabled", ) + + +if ( + "DD_INSTRUMENTATION_TELEMETRY_ENABLED" not in os.environ + and not config.sca_enabled + and not config.appsec_enabled +): + os.environ["DD_INSTRUMENTATION_TELEMETRY_ENABLED"] = "false" diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 4faaed2df..225f5dd82 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -55,11 +55,6 @@ logger = logging.getLogger(__name__) dd_trace_context = None -if config.telemetry_enabled: - # Enable the telemetry client if the user has opted in - from ddtrace.internal.telemetry import telemetry_writer - - telemetry_writer.enable() propagator = HTTPPropagator() diff --git a/tests/test_config.py b/tests/test_config.py index 92002439d..9c5da63a2 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -1,3 +1,6 @@ +import importlib +import sys + import pytest from datadog_lambda.config import config, _get_env, Config @@ -14,6 +17,29 @@ def set_env(key, value): return set_env +def test_config_import_does_not_import_ddtrace(monkeypatch): + import datadog_lambda + + with monkeypatch.context() as mp: + for name in list(sys.modules): + if name == "ddtrace" or name.startswith("ddtrace."): + mp.delitem(sys.modules, name, raising=False) + + class _BlockDdtrace(importlib.abc.MetaPathFinder): + def find_spec(self, fullname, path=None, target=None): + if fullname == "ddtrace" or fullname.startswith("ddtrace."): + raise ImportError("ddtrace must not be imported during this test") + return None + + blocker = _BlockDdtrace() + mp.setattr(sys, "meta_path", [blocker] + sys.meta_path, raising=False) + + mp.delattr(datadog_lambda, "config", raising=False) + mp.delitem(sys.modules, "datadog_lambda.config", raising=False) + importlib.invalidate_caches() + importlib.import_module("datadog_lambda.config") + + def _test_as_bool(env_key, conf_key, default): return ( (env_key, conf_key, None, default), @@ -72,9 +98,6 @@ def _test_as_list(env_key, conf_key, default): *_test_as_bool("DD_INTEGRATION_TEST", "integration_test", default=False), *_test_as_bool("DD_BOTOCORE_ADD_SPAN_POINTERS", "add_span_pointers", default=True), *_test_as_bool("DD_TRACE_OTEL_ENABLED", "otel_enabled", default=False), - *_test_as_bool( - "DD_INSTRUMENTATION_TELEMETRY_ENABLED", "telemetry_enabled", default=False - ), *_test_as_bool("DD_MERGE_XRAY_TRACES", "merge_xray_traces", default=False), *_test_as_bool("DD_PROFILING_ENABLED", "profiling_enabled", default=False), *_test_as_bool("DD_LLMOBS_ENABLED", "llmobs_enabled", default=False), @@ -86,6 +109,8 @@ def _test_as_list(env_key, conf_key, default): ), *_test_as_bool("DD_LOCAL_TEST", "local_test", default=False), *_test_as_bool("DD_DATA_STREAMS_ENABLED", "data_streams_enabled", default=False), + *_test_as_bool("DD_APPSEC_ENABLED", "appsec_enabled", default=False), + *_test_as_bool("DD_APPSEC_SCA_ENABLED", "sca_enabled", default=False), *_test_int( "DD_CAPTURE_LAMBDA_PAYLOAD_MAX_DEPTH", "capture_payload_max_depth", default=10 ), @@ -143,9 +168,6 @@ def test_config_from_environ(env_key, conf_key, env_val, conf_val, setenv): "DD_DECODE_AUTHORIZER_CONTEXT", "decode_authorizer_context", default=True ), *_test_as_bool("DD_DATA_STREAMS_ENABLED", "data_streams_enabled", default=False), - *_test_as_bool( - "DD_INSTRUMENTATION_TELEMETRY_ENABLED", "telemetry_enabled", default=False - ), ) From d2ca8240bd86c6facc28be053dd79eaabb0790a2 Mon Sep 17 00:00:00 2001 From: Rithika Narayan <93233069+rithikanarayan@users.noreply.github.com> Date: Fri, 31 Oct 2025 10:20:08 -0400 Subject: [PATCH 308/403] APMSVLS-212 Reducing Python Lambda Layer Size (#667) strip -g original dockerfile typo No node version Node v 20 strip debug all strip unneeded discard all Merged main removing unnecessary files fixing diff Strip unneeded, cleaned up dockerfile update comment Co-authored-by: rithika.narayan --- Dockerfile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 8da968fb2..cc9e9d70f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -73,11 +73,12 @@ RUN find ./python/lib/$runtime/site-packages/ddtrace -name \*.h -delete RUN find ./python/lib/$runtime/site-packages/ddtrace -name \*.hpp -delete RUN find ./python/lib/$runtime/site-packages/ddtrace -name \*.pyx -delete -# Strip debug symbols using strip -g for all .so files in ddtrace. This is to +# Strip debug symbols and symbols that are not needed for relocation +# processing using strip --strip-unneeded for all .so files. This is to # reduce the size when ddtrace is built from sources. The release wheels are # already stripped of debug symbols. We should revisit this when serverless # benchmark uses pre-built wheels instead of building from sources. -RUN find ./python/lib/$runtime/site-packages/ddtrace -name "*.so" -exec strip -g {} \; +RUN find ./python/lib/$runtime/site-packages -name "*.so" -exec strip --strip-unneeded {} \; FROM scratch COPY --from=builder /build/python / From 92a4e837c244306bca6b31d7b183c449ec63506d Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Mon, 10 Nov 2025 14:24:17 -0500 Subject: [PATCH 309/403] v8.117.0 (#673) --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index 373eef7d0..bb21a06a2 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "8.117.0.dev0" +__version__ = "8.117.0" diff --git a/pyproject.toml b/pyproject.toml index d135e085b..be1000264 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "8.117.0.dev0" +version = "8.117.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 3a1e0d347494f98ec38e9cd0615f24c6356a6f33 Mon Sep 17 00:00:00 2001 From: Rithika Narayan Date: Mon, 10 Nov 2025 15:26:59 -0500 Subject: [PATCH 310/403] Updating to v8.118.0.dev0 --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index bb21a06a2..26394e220 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "8.117.0" +__version__ = "8.118.0.dev0" diff --git a/pyproject.toml b/pyproject.toml index be1000264..2c59df99d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "8.117.0" +version = "8.118.0.dev0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From e303ad186cc84b218bbdc4c70507f2551c9ac3ec Mon Sep 17 00:00:00 2001 From: Rithika Narayan <93233069+rithikanarayan@users.noreply.github.com> Date: Wed, 12 Nov 2025 16:14:52 -0500 Subject: [PATCH 311/403] Keeping stack v2 for profiling (#674) --- Dockerfile | 2 -- 1 file changed, 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index cc9e9d70f..d3ba70da0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -34,8 +34,6 @@ RUN rm -rf ./python/lib/$runtime/site-packages/jsonschema/tests RUN rm -f ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_ast/iastpatch*.so RUN rm -f ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_taint_tracking/*.so RUN rm -f ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_stacktrace*.so -# _stack_v2 may not exist for some versions of ddtrace (e.g. under python 3.13) -RUN rm -f ./python/lib/$runtime/site-packages/ddtrace/internal/datadog/profiling/stack_v2/_stack_v2.*.so # remove *.dist-info directories except any entry_points.txt files and METADATA files required for Appsec Software Composition Analysis RUN find ./python/lib/$runtime/site-packages/*.dist-info \ -type f \ From 5f0ad54779a286a877bfb05aa7fa4ae1553ac09e Mon Sep 17 00:00:00 2001 From: Charles de Beauchesne Date: Fri, 14 Nov 2025 17:35:13 +0100 Subject: [PATCH 312/403] remove python 3.8 build (#675) --- .github/workflows/build_layer.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_layer.yml b/.github/workflows/build_layer.yml index 789868ed0..76a65bfac 100644 --- a/.github/workflows/build_layer.yml +++ b/.github/workflows/build_layer.yml @@ -12,7 +12,7 @@ jobs: strategy: matrix: arch: [arm64, amd64] - python_version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"] + python_version: ["3.9", "3.10", "3.11", "3.12", "3.13"] steps: - name: Checkout From 25515314295427cef4aac2e64a857fa5b1943ec7 Mon Sep 17 00:00:00 2001 From: Charles de Beauchesne Date: Wed, 19 Nov 2025 19:14:22 +0100 Subject: [PATCH 313/403] Adds fail-fast on build job (#678) * Remove useless build for system-tests * Use fail-fast with the complete list * Removes Pr event --- .github/workflows/build_layer.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/build_layer.yml b/.github/workflows/build_layer.yml index 76a65bfac..7368a5172 100644 --- a/.github/workflows/build_layer.yml +++ b/.github/workflows/build_layer.yml @@ -1,6 +1,7 @@ name: Build Layers for system-Tests on: + workflow_dispatch: push: branches: - "main" @@ -10,6 +11,7 @@ jobs: runs-on: ${{ matrix.arch == 'arm64' && 'ubuntu-24.04-arm' || 'ubuntu-latest' }} strategy: + fail-fast: false matrix: arch: [arm64, amd64] python_version: ["3.9", "3.10", "3.11", "3.12", "3.13"] From 61373e5963813ab2a4666d06493d1e0cfba35e96 Mon Sep 17 00:00:00 2001 From: Rithika Narayan <93233069+rithikanarayan@users.noreply.github.com> Date: Tue, 25 Nov 2025 14:07:30 -0500 Subject: [PATCH 314/403] exclude ddtrace v3.19.0 (#684) * exclude ddtrace v3.19.0 * Exclude below 3.16.2 Co-authored-by: Rey Abolofia --------- Co-authored-by: Rey Abolofia --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 2c59df99d..02b61733f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -28,7 +28,7 @@ classifiers = [ python = ">=3.8.0,<4" datadog = ">=0.51.0,<1.0.0" wrapt = "^1.11.2" -ddtrace = ">=3.16.2,<4" +ddtrace = ">=3.16.2,!=3.19.0,<4" ujson = ">=5.9.0" botocore = { version = "^1.34.0", optional = true } requests = { version ="^2.22.0", optional = true } From 8c28b41a6ec88d58f1140047d5ee2203c64d45aa Mon Sep 17 00:00:00 2001 From: Rithika Narayan <93233069+rithikanarayan@users.noreply.github.com> Date: Tue, 25 Nov 2025 15:01:21 -0500 Subject: [PATCH 315/403] ddtrace version less than 3.19.0 (#686) --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 02b61733f..abb5f4054 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -28,7 +28,7 @@ classifiers = [ python = ">=3.8.0,<4" datadog = ">=0.51.0,<1.0.0" wrapt = "^1.11.2" -ddtrace = ">=3.16.2,!=3.19.0,<4" +ddtrace = ">=3.16.2,<3.19.0" ujson = ">=5.9.0" botocore = { version = "^1.34.0", optional = true } requests = { version ="^2.22.0", optional = true } From ea7ad6ec0b28951d5d1f5905c2e28c673ece5d12 Mon Sep 17 00:00:00 2001 From: AJ Stuyvenberg Date: Tue, 25 Nov 2025 15:40:40 -0500 Subject: [PATCH 316/403] Fix case-insensitive header redaction (#685) * Normalize header redaction keys Co-authored-by: astuyve * feat: fmt * less than 3.19.0 --------- Co-authored-by: datadog-official[bot] <214633350+datadog-official[bot]@users.noreply.github.com> Co-authored-by: Rithika Narayan --- datadog_lambda/tag_object.py | 2 +- tests/test_tag_object.py | 15 ++++++++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/tag_object.py b/datadog_lambda/tag_object.py index 744e48933..67f6a14d7 100644 --- a/datadog_lambda/tag_object.py +++ b/datadog_lambda/tag_object.py @@ -62,6 +62,6 @@ def _should_try_string(obj): def _redact_val(k, v): split_key = k.split(".").pop() or k - if split_key in redactable_keys: + if split_key.lower() in redactable_keys: return "redacted" return v diff --git a/tests/test_tag_object.py b/tests/test_tag_object.py index 574bb331a..bd04bf4c7 100644 --- a/tests/test_tag_object.py +++ b/tests/test_tag_object.py @@ -73,13 +73,14 @@ def test_tag_object_max_depth_0(self): "vals": [{"thingOne": 1}, {"thingTwo": 2}], } spanMock = MagicMock() + expected_value = str(payload) tag_object(spanMock, "function.request", payload) spanMock.set_tag.assert_has_calls( [ call( "function.request", - "{'hello': 'world', 'level1': {'level2_dict': {'level3': 3}, 'level2_list': [None, True, 'nice', {'l3': 'v3'}], 'level2_bool': True, 'level2_int': 2}, 'vals': [{'thingOne': 1}, {'thingTwo': 2}]}", + expected_value, ), ], True, @@ -105,6 +106,18 @@ def test_redacted_tag_object(self): True, ) + def test_redacted_tag_object_case_insensitive(self): + payload = { + "Authorization": "secret", + "headers": {"X-AUTHORIZATION": "another"}, + } + spanMock = MagicMock() + tag_object(spanMock, "function.request", payload) + spanMock.set_tag.assert_any_call("function.request.Authorization", "redacted") + spanMock.set_tag.assert_any_call( + "function.request.headers.X-AUTHORIZATION", "redacted" + ) + def test_json_tag_object(self): payload = { "token": "world", From c678c09491d065a435a17de0ae15f0ac3dfdafd9 Mon Sep 17 00:00:00 2001 From: Florentin Labelle Date: Mon, 1 Dec 2025 17:54:05 +0100 Subject: [PATCH 317/403] ci(system-tests): fix ddtrace py build from source (#690) * ci(system-tests): fix ddtrace py build from source * ci(system-tests): run on pull requests --- .github/workflows/build_layer.yml | 1 + Dockerfile | 1 + 2 files changed, 2 insertions(+) diff --git a/.github/workflows/build_layer.yml b/.github/workflows/build_layer.yml index 7368a5172..e146ee0ff 100644 --- a/.github/workflows/build_layer.yml +++ b/.github/workflows/build_layer.yml @@ -2,6 +2,7 @@ name: Build Layers for system-Tests on: workflow_dispatch: + pull_request: push: branches: - "main" diff --git a/Dockerfile b/Dockerfile index d3ba70da0..ce59438db 100644 --- a/Dockerfile +++ b/Dockerfile @@ -15,6 +15,7 @@ RUN set -eux; \ rm gcc && ln -s gcc10-gcc gcc; \ rm g++ && ln -s gcc10-g++ g++; \ rm cc && ln -s gcc10-cc cc; \ + rm c++ && ln -s gcc10-c++ c++; \ fi # Add Rust compiler which is needed to build dd-trace-py from source From fc56ce1f086e63427b121dbedea64f45069eb255 Mon Sep 17 00:00:00 2001 From: Rithika Narayan <93233069+rithikanarayan@users.noreply.github.com> Date: Mon, 1 Dec 2025 11:54:26 -0500 Subject: [PATCH 318/403] Adding Python 3.14 (#677) * first pass of adding runtime 3.14, checked against uses of 3.12 * snapshots * removing comma * Skip testing profiling for 3.14 runtime * Updating asm to reflect dd-tract-py changes to http_utils._get_blocked_template * pinning to older ddtrace * Use pytest to skip profiling test * Update version of black which supports python3.14 * Update linting to newest version of black. --------- Co-authored-by: Rey Abolofia --- .github/workflows/build.yml | 2 +- .github/workflows/build_layer.yml | 2 +- README.md | 2 +- ci/datasources/runtimes.yaml | 8 + ci/publish_layers.sh | 8 + pyproject.toml | 1 + scripts/add_new_region.sh | 4 + scripts/build_layers.sh | 2 +- scripts/check_format.sh | 2 +- scripts/list_layers.sh | 2 + scripts/publish_govcloud.sh | 2 +- scripts/publish_layers.sh | 6 + scripts/run_integration_tests.sh | 3 +- scripts/run_tests.sh | 2 +- scripts/sign_layers.sh | 2 + .../logs/async-metrics_python314.log | 1674 +++++++++++++++ .../snapshots/logs/sync-metrics_python314.log | 1864 +++++++++++++++++ tests/test_api.py | 24 +- tests/test_wrapper.py | 5 + tests/test_xray.py | 12 +- 20 files changed, 3601 insertions(+), 26 deletions(-) create mode 100644 tests/integration/snapshots/logs/async-metrics_python314.log create mode 100644 tests/integration/snapshots/logs/sync-metrics_python314.log diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 050624478..787b5da36 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -43,7 +43,7 @@ jobs: strategy: max-parallel: 4 matrix: - python-version: ['3.8', '3.9', '3.10', '3.11', '3.12', '3.13'] + python-version: ['3.8', '3.9', '3.10', '3.11', '3.12', '3.13', '3.14'] steps: - name: Checkout diff --git a/.github/workflows/build_layer.yml b/.github/workflows/build_layer.yml index e146ee0ff..8eef0c661 100644 --- a/.github/workflows/build_layer.yml +++ b/.github/workflows/build_layer.yml @@ -15,7 +15,7 @@ jobs: fail-fast: false matrix: arch: [arm64, amd64] - python_version: ["3.9", "3.10", "3.11", "3.12", "3.13"] + python_version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13", "3.14"] steps: - name: Checkout diff --git a/README.md b/README.md index 658babc28..a1199e8eb 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ [![Slack](https://chat.datadoghq.com/badge.svg?bg=632CA6)](https://chat.datadoghq.com/) [![License](https://img.shields.io/badge/license-Apache--2.0-blue)](https://github.com/DataDog/datadog-lambda-python/blob/main/LICENSE) -Datadog Lambda Library for Python (3.8, 3.9, 3.10, 3.11, 3.12, and 3.13) enables [enhanced Lambda metrics](https://docs.datadoghq.com/serverless/enhanced_lambda_metrics), [distributed tracing](https://docs.datadoghq.com/serverless/distributed_tracing), and [custom metric submission](https://docs.datadoghq.com/serverless/custom_metrics) from AWS Lambda functions. +Datadog Lambda Library for Python (3.8, 3.9, 3.10, 3.11, 3.12, 3.13, and 3.14) enables [enhanced Lambda metrics](https://docs.datadoghq.com/serverless/enhanced_lambda_metrics), [distributed tracing](https://docs.datadoghq.com/serverless/distributed_tracing), and [custom metric submission](https://docs.datadoghq.com/serverless/custom_metrics) from AWS Lambda functions. ## Installation diff --git a/ci/datasources/runtimes.yaml b/ci/datasources/runtimes.yaml index f9456d396..2b19cf1c4 100644 --- a/ci/datasources/runtimes.yaml +++ b/ci/datasources/runtimes.yaml @@ -47,3 +47,11 @@ runtimes: python_version: "3.13" arch: "arm64" image: "3.13.0" + - name: "python314" + python_version: "3.14" + arch: "amd64" + image: "3.14.0" + - name: "python314" + python_version: "3.14" + arch: "arm64" + image: "3.14.0" diff --git a/ci/publish_layers.sh b/ci/publish_layers.sh index 9654582a2..d15931ac1 100755 --- a/ci/publish_layers.sh +++ b/ci/publish_layers.sh @@ -23,6 +23,8 @@ AWS_CLI_PYTHON_VERSIONS=( "python3.12" "python3.13" "python3.13" + "python3.14" + "python3.14" ) PYTHON_VERSIONS=( "3.8-amd64" @@ -37,6 +39,8 @@ PYTHON_VERSIONS=( "3.12-arm64" "3.13-amd64" "3.13-arm64" + "3.14-amd64" + "3.14-arm64" ) LAYER_PATHS=( ".layers/datadog_lambda_py-amd64-3.8.zip" @@ -51,6 +55,8 @@ LAYER_PATHS=( ".layers/datadog_lambda_py-arm64-3.12.zip" ".layers/datadog_lambda_py-amd64-3.13.zip" ".layers/datadog_lambda_py-arm64-3.13.zip" + ".layers/datadog_lambda_py-amd64-3.14.zip" + ".layers/datadog_lambda_py-arm64-3.14.zip" ) LAYERS=( "Datadog-Python38" @@ -65,6 +71,8 @@ LAYERS=( "Datadog-Python312-ARM" "Datadog-Python313" "Datadog-Python313-ARM" + "Datadog-Python314" + "Datadog-Python314-ARM" ) STAGES=('prod', 'sandbox', 'staging', 'gov-staging', 'gov-prod') diff --git a/pyproject.toml b/pyproject.toml index abb5f4054..5f91a97d7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -22,6 +22,7 @@ classifiers = [ "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14", ] [tool.poetry.dependencies] diff --git a/scripts/add_new_region.sh b/scripts/add_new_region.sh index 576d13e7f..210436294 100755 --- a/scripts/add_new_region.sh +++ b/scripts/add_new_region.sh @@ -25,6 +25,8 @@ LAYER_NAMES=( "Datadog-Python312-ARM" "Datadog-Python313" "Datadog-Python313-ARM" + "Datadog-Python314" + "Datadog-Python314-ARM" ) PYTHON_VERSIONS_FOR_AWS_CLI=( "python3.8" @@ -39,6 +41,8 @@ PYTHON_VERSIONS_FOR_AWS_CLI=( "python3.12" "python3.13" "python3.13" + "python3.14" + "python3.14" ) NEW_REGION=$1 diff --git a/scripts/build_layers.sh b/scripts/build_layers.sh index 23941b7a0..b78ca9abe 100755 --- a/scripts/build_layers.sh +++ b/scripts/build_layers.sh @@ -14,7 +14,7 @@ set -e LAYER_DIR=".layers" LAYER_FILES_PREFIX="datadog_lambda_py" -AVAILABLE_PYTHON_VERSIONS=("3.8" "3.9" "3.10" "3.11" "3.12" "3.13") +AVAILABLE_PYTHON_VERSIONS=("3.8" "3.9" "3.10" "3.11" "3.12" "3.13" "3.14") AVAILABLE_ARCHS=("arm64" "amd64") if [ -z "$ARCH" ]; then diff --git a/scripts/check_format.sh b/scripts/check_format.sh index df5a67187..783a17d6a 100755 --- a/scripts/check_format.sh +++ b/scripts/check_format.sh @@ -2,7 +2,7 @@ set -e PYTHON_VERSION=$(python -c 'import sys; print(sys.version_info.major)') -pip install -Iv black==22.3.0 +pip install -Iv black==25.11.0 python -m black --check datadog_lambda/ --diff python -m black --check tests --diff diff --git a/scripts/list_layers.sh b/scripts/list_layers.sh index 6449e5115..d2710a7e7 100755 --- a/scripts/list_layers.sh +++ b/scripts/list_layers.sh @@ -23,6 +23,8 @@ LAYER_NAMES=( "Datadog-Python312-ARM" "Datadog-Python313" "Datadog-Python313-ARM" + "Datadog-Python314" + "Datadog-Python314-ARM" ) AVAILABLE_REGIONS=$(aws ec2 describe-regions | jq -r '.[] | .[] | .RegionName') LAYERS_MISSING_REGIONS=() diff --git a/scripts/publish_govcloud.sh b/scripts/publish_govcloud.sh index 5fd107b0e..5edd3b08e 100755 --- a/scripts/publish_govcloud.sh +++ b/scripts/publish_govcloud.sh @@ -88,7 +88,7 @@ do export REGION=$region - for python_version in "3.8" "3.9" "3.10" "3.11" "3.12" "3.13"; do + for python_version in "3.8" "3.9" "3.10" "3.11" "3.12" "3.13" "3.14"; do for arch in "amd64" "arm64"; do export PYTHON_VERSION=$python_version export ARCH=$arch diff --git a/scripts/publish_layers.sh b/scripts/publish_layers.sh index 8c78093f8..31a514d13 100755 --- a/scripts/publish_layers.sh +++ b/scripts/publish_layers.sh @@ -26,6 +26,8 @@ PYTHON_VERSIONS_FOR_AWS_CLI=( "python3.12" "python3.13" "python3.13" + "python3.14" + "python3.14" ) LAYER_PATHS=( ".layers/datadog_lambda_py-amd64-3.8.zip" @@ -40,6 +42,8 @@ LAYER_PATHS=( ".layers/datadog_lambda_py-arm64-3.12.zip" ".layers/datadog_lambda_py-amd64-3.13.zip" ".layers/datadog_lambda_py-arm64-3.13.zip" + ".layers/datadog_lambda_py-amd64-3.14.zip" + ".layers/datadog_lambda_py-arm64-3.14.zip" ) AVAILABLE_LAYERS=( "Datadog-Python38" @@ -54,6 +58,8 @@ AVAILABLE_LAYERS=( "Datadog-Python312-ARM" "Datadog-Python313" "Datadog-Python313-ARM" + "Datadog-Python314" + "Datadog-Python314-ARM" ) AVAILABLE_REGIONS=$(aws ec2 describe-regions | jq -r '.[] | .[] | .RegionName') diff --git a/scripts/run_integration_tests.sh b/scripts/run_integration_tests.sh index f6e4f537c..1dfa72b6b 100755 --- a/scripts/run_integration_tests.sh +++ b/scripts/run_integration_tests.sh @@ -33,8 +33,9 @@ python310=("python3.10" "3.10" $(xxd -l 4 -c 4 -p < /dev/random)) python311=("python3.11" "3.11" $(xxd -l 4 -c 4 -p < /dev/random)) python312=("python3.12" "3.12" $(xxd -l 4 -c 4 -p < /dev/random)) python313=("python3.13" "3.13" $(xxd -l 4 -c 4 -p < /dev/random)) +python314=("python3.14" "3.14" $(xxd -l 4 -c 4 -p < /dev/random)) -PARAMETERS_SETS=("python38" "python39" "python310" "python311" "python312" "python313") +PARAMETERS_SETS=("python38" "python39" "python310" "python311" "python312" "python313" "python314") if [ -z "$RUNTIME_PARAM" ]; then echo "Python version not specified, running for all python versions." diff --git a/scripts/run_tests.sh b/scripts/run_tests.sh index 26f4e2156..59d572187 100755 --- a/scripts/run_tests.sh +++ b/scripts/run_tests.sh @@ -8,7 +8,7 @@ # Run unit tests in Docker set -e -PYTHON_VERSIONS=("3.8" "3.9" "3.10" "3.11" "3.12" "3.13") +PYTHON_VERSIONS=("3.8" "3.9" "3.10" "3.11" "3.12" "3.13" "3.14") for python_version in "${PYTHON_VERSIONS[@]}" do diff --git a/scripts/sign_layers.sh b/scripts/sign_layers.sh index eb40062f0..d3c890d38 100755 --- a/scripts/sign_layers.sh +++ b/scripts/sign_layers.sh @@ -21,6 +21,8 @@ LAYER_FILES=( "datadog_lambda_py-arm64-3.12.zip" "datadog_lambda_py-amd64-3.13.zip" "datadog_lambda_py-arm64-3.13.zip" + "datadog_lambda_py-amd64-3.14.zip" + "datadog_lambda_py-arm64-3.14.zip" ) SIGNING_PROFILE_NAME="DatadogLambdaSigningProfile" diff --git a/tests/integration/snapshots/logs/async-metrics_python314.log b/tests/integration/snapshots/logs/async-metrics_python314.log new file mode 100644 index 000000000..8983a83c4 --- /dev/null +++ b/tests/integration/snapshots/logs/async-metrics_python314.log @@ -0,0 +1,1674 @@ +INIT_START Runtime Version: python:3.14.vX Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python314", + "resource:integration-tests-python-XXXX-async-metrics_python314", + "memorysize:1024", + "cold_start:true", + "runtime:python3.14", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python314_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python314_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python314_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "XXXX.execute-api.us-east-2.amazonaws.com", + "resource": "GET /", + "name": "aws.apigateway", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.apigateway.rest", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/", + "endpoint": "/", + "http.method": "GET", + "resource_names": "GET /", + "span.kind": "server", + "apiid": "XXXX", + "apiname": "XXXX", + "stage": "Prod", + "request_id": "XXXX", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "http.status_code": "200", + "http.route": "/", + "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "integration-tests-python-XXXX-async-metrics_python314", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "true", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python314", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python314", + "functionname": "integration-tests-python-XXXX-async-metrics_python314", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "api-gateway", + "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", + "http.method": "GET", + "http.route": "/", + "http.status_code": "200" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python314", + "resource:integration-tests-python-XXXX-async-metrics_python314", + "memorysize:1024", + "cold_start:false", + "runtime:python3.14", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python314_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python314_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python314_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "integration-tests-python-XXXX-async-metrics_python314", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python314", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python314", + "functionname": "integration-tests-python-XXXX-async-metrics_python314", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python314", + "resource:integration-tests-python-XXXX-async-metrics_python314", + "memorysize:1024", + "cold_start:false", + "runtime:python3.14", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python314_X.X.X" + ] +} +{ + "m": "datadog.serverless.dynamodb.stream.type", + "v": 1, + "e": XXXX, + "t": [ + "streamtype:NEW_AND_OLD_IMAGES", + "dd_lambda_layer:datadog-python314_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python314_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python314_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "ExampleTableWithStream", + "resource": "ExampleTableWithStream", + "name": "aws.dynamodb", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.dynamodb", + "resource_names": "ExampleTableWithStream", + "span.kind": "server", + "tablename": "ExampleTableWithStream", + "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", + "event_id": "XXXX", + "event_name": "INSERT", + "event_version": "1.1", + "stream_view_type": "NEW_AND_OLD_IMAGES", + "size_bytes": "26", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + }, + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + }, + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + } + ] + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "integration-tests-python-XXXX-async-metrics_python314", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python314", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python314", + "functionname": "integration-tests-python-XXXX-async-metrics_python314", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "dynamodb", + "function_trigger.event_source_arn": "XXXX" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python314", + "resource:integration-tests-python-XXXX-async-metrics_python314", + "memorysize:1024", + "cold_start:false", + "runtime:python3.14", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python314_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python314_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python314_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "eventbridge.custom.event.sender", + "resource": "eventbridge.custom.event.sender", + "name": "aws.eventbridge", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.eventbridge", + "resource_names": "eventbridge.custom.event.sender", + "span.kind": "server", + "detail_type": "testdetail", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "integration-tests-python-XXXX-async-metrics_python314", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python314", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python314", + "functionname": "integration-tests-python-XXXX-async-metrics_python314", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "eventbridge" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python314", + "resource:integration-tests-python-XXXX-async-metrics_python314", + "memorysize:1024", + "cold_start:false", + "runtime:python3.14", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python314_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python314_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python314_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", + "resource": "GET /httpapi/get", + "name": "aws.httpapi", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.httpapi", + "endpoint": "/httpapi/get", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.method": "GET", + "http.protocol": "HTTP/1.1", + "http.source_ip": "XXXX", + "http.user_agent": "XXXX/7.64.1", + "resource_names": "GET /httpapi/get", + "request_id": "XXXX", + "apiid": "XXXX", + "apiname": "XXXX", + "stage": "$default", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "http.status_code": "200", + "http.route": "/httpapi/get", + "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "integration-tests-python-XXXX-async-metrics_python314", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python314", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python314", + "functionname": "integration-tests-python-XXXX-async-metrics_python314", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "api-gateway", + "function_trigger.event_source_arn": "XXXX$default", + "span.kind": "server", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.method": "GET", + "http.route": "/httpapi/get", + "http.status_code": "200" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python314", + "resource:integration-tests-python-XXXX-async-metrics_python314", + "memorysize:1024", + "cold_start:false", + "runtime:python3.14", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python314_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python314_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python314_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "EXAMPLE", + "resource": "EXAMPLE", + "name": "aws.kinesis", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.kinesis", + "resource_names": "EXAMPLE", + "span.kind": "server", + "streamname": "EXAMPLE", + "shardid": "shardId-XXXX", + "event_source_arn": "arn:aws:kinesis:EXAMPLE", + "event_id": "XXXX", + "event_name": "aws:kinesis:record", + "event_version": "1.0", + "partition_key": "XXXX", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "integration-tests-python-XXXX-async-metrics_python314", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python314", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python314", + "functionname": "integration-tests-python-XXXX-async-metrics_python314", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "kinesis", + "function_trigger.event_source_arn": "XXXX" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python314", + "resource:integration-tests-python-XXXX-async-metrics_python314", + "memorysize:1024", + "cold_start:false", + "runtime:python3.14", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python314_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python314_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python314_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "example-bucket", + "resource": "example-bucket", + "name": "aws.s3", + "error": 0, + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.s3", + "resource_names": "example-bucket", + "span.kind": "server", + "event_name": "ObjectCreated:Put", + "bucketname": "example-bucket", + "bucket_arn": "arn:aws:s3:::example-bucket", + "object_key": "test/key", + "object_size": "1024", + "object_etag": "XXXX", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.s3.object", + "ptr.dir": "u", + "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", + "link.kind": "span-pointer" + } + } + ] + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "integration-tests-python-XXXX-async-metrics_python314", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python314", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python314", + "functionname": "integration-tests-python-XXXX-async-metrics_python314", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "s3", + "function_trigger.event_source_arn": "XXXX" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python314", + "resource:integration-tests-python-XXXX-async-metrics_python314", + "memorysize:1024", + "cold_start:false", + "runtime:python3.14", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python314_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python314_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python314_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "sns-lambda", + "resource": "sns-lambda", + "name": "aws.sns", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.sns", + "resource_names": "sns-lambda", + "span.kind": "server", + "topicname": "sns-lambda", + "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", + "message_id": "XXXX", + "type": "Notification", + "subject": "TestInvoke", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "integration-tests-python-XXXX-async-metrics_python314", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python314", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python314", + "functionname": "integration-tests-python-XXXX-async-metrics_python314", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "sns", + "function_trigger.event_source_arn": "XXXX" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python314", + "resource:integration-tests-python-XXXX-async-metrics_python314", + "memorysize:1024", + "cold_start:false", + "runtime:python3.14", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python314_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python314_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python314_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "my-queue", + "resource": "my-queue", + "name": "aws.sqs", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.sqs", + "resource_names": "my-queue", + "span.kind": "server", + "queuename": "my-queue", + "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", + "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", + "sender_id": "AIDAIENQZJOLO23YVJ4VO", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "integration-tests-python-XXXX-async-metrics_python314", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python314", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python314", + "functionname": "integration-tests-python-XXXX-async-metrics_python314", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "sqs", + "function_trigger.event_source_arn": "XXXX" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-async-metrics_python314", + "resource:integration-tests-python-XXXX-async-metrics_python314", + "memorysize:1024", + "cold_start:false", + "runtime:python3.14", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python314_X.X.X" + ] +} +{ + "m": "hello.dog", + "v": 1, + "e": XXXX, + "t": [ + "team:serverless", + "role:hello", + "dd_lambda_layer:datadog-python314_X.X.X" + ] +} +{ + "m": "tests.integration.count", + "v": 21, + "e": XXXX, + "t": [ + "test:integration", + "role:hello", + "dd_lambda_layer:datadog-python314_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", + "resource": "$default", + "name": "aws.apigateway.websocket", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.apigateway.websocket", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com$default", + "endpoint": "$default", + "resource_names": "$default", + "span.kind": "server", + "apiid": "XXXX", + "apiname": "XXXX", + "stage": "dev", + "request_id": "XXXX", + "connection_id": "XXXX=", + "event_type": "MESSAGE", + "message_direction": "IN", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "http.status_code": "200", + "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "integration-tests-python-XXXX-async-metrics_python314", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python314", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python314", + "functionname": "integration-tests-python-XXXX-async-metrics_python314", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "api-gateway", + "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", + "http.status_code": "200" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB diff --git a/tests/integration/snapshots/logs/sync-metrics_python314.log b/tests/integration/snapshots/logs/sync-metrics_python314.log new file mode 100644 index 000000000..442d83b48 --- /dev/null +++ b/tests/integration/snapshots/logs/sync-metrics_python314.log @@ -0,0 +1,1864 @@ +INIT_START Runtime Version: python:3.14.vX Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python314", + "resource:integration-tests-python-XXXX-sync-metrics_python314", + "memorysize:1024", + "cold_start:true", + "runtime:python3.14", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python314_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "XXXX.execute-api.us-east-2.amazonaws.com", + "resource": "GET /", + "name": "aws.apigateway", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.apigateway.rest", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/", + "endpoint": "/", + "http.method": "GET", + "resource_names": "GET /", + "span.kind": "server", + "apiid": "XXXX", + "apiname": "XXXX", + "stage": "Prod", + "request_id": "XXXX", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "http.status_code": "200", + "http.route": "/", + "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "integration-tests-python-XXXX-sync-metrics_python314", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "true", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python314", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python314", + "functionname": "integration-tests-python-XXXX-sync-metrics_python314", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "api-gateway", + "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", + "http.method": "GET", + "http.route": "/", + "http.status_code": "200" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "POST /api/v1/distribution_points", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python314", + "resource:integration-tests-python-XXXX-sync-metrics_python314", + "memorysize:1024", + "cold_start:false", + "runtime:python3.14", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python314_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "integration-tests-python-XXXX-sync-metrics_python314", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python314", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python314", + "functionname": "integration-tests-python-XXXX-sync-metrics_python314", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "POST /api/v1/distribution_points", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python314", + "resource:integration-tests-python-XXXX-sync-metrics_python314", + "memorysize:1024", + "cold_start:false", + "runtime:python3.14", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python314_X.X.X" + ] +} +{ + "m": "datadog.serverless.dynamodb.stream.type", + "v": 1, + "e": XXXX, + "t": [ + "streamtype:NEW_AND_OLD_IMAGES", + "dd_lambda_layer:datadog-python314_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "ExampleTableWithStream", + "resource": "ExampleTableWithStream", + "name": "aws.dynamodb", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.dynamodb", + "resource_names": "ExampleTableWithStream", + "span.kind": "server", + "tablename": "ExampleTableWithStream", + "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", + "event_id": "XXXX", + "event_name": "INSERT", + "event_version": "1.1", + "stream_view_type": "NEW_AND_OLD_IMAGES", + "size_bytes": "26", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + }, + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + }, + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.dynamodb.item", + "ptr.dir": "u", + "ptr.hash": "e2af34d333891f765c7f02d2da80895e", + "link.kind": "span-pointer" + } + } + ] + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "integration-tests-python-XXXX-sync-metrics_python314", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python314", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python314", + "functionname": "integration-tests-python-XXXX-sync-metrics_python314", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "dynamodb", + "function_trigger.event_source_arn": "XXXX" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "POST /api/v1/distribution_points", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python314", + "resource:integration-tests-python-XXXX-sync-metrics_python314", + "memorysize:1024", + "cold_start:false", + "runtime:python3.14", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python314_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "eventbridge.custom.event.sender", + "resource": "eventbridge.custom.event.sender", + "name": "aws.eventbridge", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.eventbridge", + "resource_names": "eventbridge.custom.event.sender", + "span.kind": "server", + "detail_type": "testdetail", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "integration-tests-python-XXXX-sync-metrics_python314", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python314", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python314", + "functionname": "integration-tests-python-XXXX-sync-metrics_python314", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "eventbridge" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "POST /api/v1/distribution_points", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python314", + "resource:integration-tests-python-XXXX-sync-metrics_python314", + "memorysize:1024", + "cold_start:false", + "runtime:python3.14", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python314_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", + "resource": "GET /httpapi/get", + "name": "aws.httpapi", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.httpapi", + "endpoint": "/httpapi/get", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.method": "GET", + "http.protocol": "HTTP/1.1", + "http.source_ip": "XXXX", + "http.user_agent": "XXXX/7.64.1", + "resource_names": "GET /httpapi/get", + "request_id": "XXXX", + "apiid": "XXXX", + "apiname": "XXXX", + "stage": "$default", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "http.status_code": "200", + "http.route": "/httpapi/get", + "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "integration-tests-python-XXXX-sync-metrics_python314", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python314", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python314", + "functionname": "integration-tests-python-XXXX-sync-metrics_python314", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "api-gateway", + "function_trigger.event_source_arn": "XXXX$default", + "span.kind": "server", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.method": "GET", + "http.route": "/httpapi/get", + "http.status_code": "200" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "POST /api/v1/distribution_points", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python314", + "resource:integration-tests-python-XXXX-sync-metrics_python314", + "memorysize:1024", + "cold_start:false", + "runtime:python3.14", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python314_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "EXAMPLE", + "resource": "EXAMPLE", + "name": "aws.kinesis", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.kinesis", + "resource_names": "EXAMPLE", + "span.kind": "server", + "streamname": "EXAMPLE", + "shardid": "shardId-XXXX", + "event_source_arn": "arn:aws:kinesis:EXAMPLE", + "event_id": "XXXX", + "event_name": "aws:kinesis:record", + "event_version": "1.0", + "partition_key": "XXXX", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "integration-tests-python-XXXX-sync-metrics_python314", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python314", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python314", + "functionname": "integration-tests-python-XXXX-sync-metrics_python314", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "kinesis", + "function_trigger.event_source_arn": "XXXX" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "POST /api/v1/distribution_points", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python314", + "resource:integration-tests-python-XXXX-sync-metrics_python314", + "memorysize:1024", + "cold_start:false", + "runtime:python3.14", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python314_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "example-bucket", + "resource": "example-bucket", + "name": "aws.s3", + "error": 0, + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.s3", + "resource_names": "example-bucket", + "span.kind": "server", + "event_name": "ObjectCreated:Put", + "bucketname": "example-bucket", + "bucket_arn": "arn:aws:s3:::example-bucket", + "object_key": "test/key", + "object_size": "1024", + "object_etag": "XXXX", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web", + "span_links": [ + { + "trace_id": "XXXX", + "span_id": "XXXX", + "attributes": { + "ptr.kind": "aws.s3.object", + "ptr.dir": "u", + "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", + "link.kind": "span-pointer" + } + } + ] + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "integration-tests-python-XXXX-sync-metrics_python314", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python314", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python314", + "functionname": "integration-tests-python-XXXX-sync-metrics_python314", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "s3", + "function_trigger.event_source_arn": "XXXX" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "POST /api/v1/distribution_points", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python314", + "resource:integration-tests-python-XXXX-sync-metrics_python314", + "memorysize:1024", + "cold_start:false", + "runtime:python3.14", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python314_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "sns-lambda", + "resource": "sns-lambda", + "name": "aws.sns", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.sns", + "resource_names": "sns-lambda", + "span.kind": "server", + "topicname": "sns-lambda", + "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", + "message_id": "XXXX", + "type": "Notification", + "subject": "TestInvoke", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "integration-tests-python-XXXX-sync-metrics_python314", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python314", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python314", + "functionname": "integration-tests-python-XXXX-sync-metrics_python314", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "sns", + "function_trigger.event_source_arn": "XXXX" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "POST /api/v1/distribution_points", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python314", + "resource:integration-tests-python-XXXX-sync-metrics_python314", + "memorysize:1024", + "cold_start:false", + "runtime:python3.14", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python314_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "my-queue", + "resource": "my-queue", + "name": "aws.sqs", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.sqs", + "resource_names": "my-queue", + "span.kind": "server", + "queuename": "my-queue", + "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", + "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", + "sender_id": "AIDAIENQZJOLO23YVJ4VO", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "integration-tests-python-XXXX-sync-metrics_python314", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python314", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python314", + "functionname": "integration-tests-python-XXXX-sync-metrics_python314", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "sqs", + "function_trigger.event_source_arn": "XXXX" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "POST /api/v1/distribution_points", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB +START +{ + "m": "aws.lambda.enhanced.invocations", + "v": 1, + "e": XXXX, + "t": [ + "region:eu-west-1", + "account_id:XXXX", + "functionname:integration-tests-python-XXXX-sync-metrics_python314", + "resource:integration-tests-python-XXXX-sync-metrics_python314", + "memorysize:1024", + "cold_start:false", + "runtime:python3.14", + "datadog_lambda:vXX", + "dd_lambda_layer:datadog-python314_X.X.X" + ] +} +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", + "resource": "$default", + "name": "aws.apigateway.websocket", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "operation_name": "aws.apigateway.websocket", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com$default", + "endpoint": "$default", + "resource_names": "$default", + "span.kind": "server", + "apiid": "XXXX", + "apiname": "XXXX", + "stage": "dev", + "request_id": "XXXX", + "connection_id": "XXXX=", + "event_type": "MESSAGE", + "message_direction": "IN", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "http.status_code": "200", + "peer.service": "integration-tests-python", + "_dd.peer.service.source": "peer.service", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "web" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "integration-tests-python", + "resource": "integration-tests-python-XXXX-sync-metrics_python314", + "name": "aws.lambda", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "cold_start": "false", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python314", + "function_version": "$LATEST", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python314", + "functionname": "integration-tests-python-XXXX-sync-metrics_python314", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", + "span.name": "aws.lambda", + "function_trigger.event_source": "api-gateway", + "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", + "http.status_code": "200" + }, + "metrics": { + "_dd.top_level": 1 + }, + "type": "serverless" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://datadoghq.com/", + "out.host": "datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1 + }, + "type": "http" + }, + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "GET /", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "_dd.p.tid": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "GET", + "http.url": "https://www.datadoghq.com/", + "out.host": "www.datadoghq.com", + "http.status_code": "200", + "http.useragent": "python-requests/X.X.X" + }, + "metrics": { + "_dd.measured": 1 + }, + "type": "http" + } + ] + ] +} +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX +{ + "traces": [ + [ + { + "trace_id": "XXXX", + "parent_id": "XXXX", + "span_id": "XXXX", + "service": "requests", + "resource": "POST /api/v1/distribution_points", + "name": "requests.request", + "error": 0, + "start": "XXXX", + "duration": "XXXX", + "meta": { + "runtime-id": "XXXX", + "_dd.origin": "lambda", + "component": "requests", + "span.kind": "client", + "http.method": "POST", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", + "out.host": "api.datadoghq.com", + "http.status_code": "202", + "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "language": "python" + }, + "metrics": { + "process_id": XXXX, + "_dd.measured": 1, + "_dd.top_level": 1, + "_sampling_priority_v1": 1 + }, + "type": "http" + } + ] + ] +} +END Duration: XXXX ms Memory Used: XXXX MB diff --git a/tests/test_api.py b/tests/test_api.py index 7fcc3c221..35a179b1c 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -33,9 +33,9 @@ def test_secrets_manager_fips_endpoint(self, mock_boto3_client): mock_boto3_client.return_value = mock_client os.environ["AWS_REGION"] = "us-gov-east-1" - os.environ[ - "DD_API_KEY_SECRET_ARN" - ] = "arn:aws:secretsmanager:us-gov-east-1:1234567890:secret:key-name-123ABC" + os.environ["DD_API_KEY_SECRET_ARN"] = ( + "arn:aws:secretsmanager:us-gov-east-1:1234567890:secret:key-name-123ABC" + ) api_key = api.get_api_key() @@ -53,9 +53,9 @@ def test_secrets_manager_different_region(self, mock_boto3_client): mock_boto3_client.return_value = mock_client os.environ["AWS_REGION"] = "us-east-1" - os.environ[ - "DD_API_KEY_SECRET_ARN" - ] = "arn:aws:secretsmanager:us-west-1:1234567890:secret:key-name-123ABC" + os.environ["DD_API_KEY_SECRET_ARN"] = ( + "arn:aws:secretsmanager:us-west-1:1234567890:secret:key-name-123ABC" + ) api_key = api.get_api_key() @@ -74,9 +74,9 @@ def test_secrets_manager_different_region_but_still_fips(self, mock_boto3_client mock_boto3_client.return_value = mock_client os.environ["AWS_REGION"] = "us-east-1" - os.environ[ - "DD_API_KEY_SECRET_ARN" - ] = "arn:aws:secretsmanager:us-west-1:1234567890:secret:key-name-123ABC" + os.environ["DD_API_KEY_SECRET_ARN"] = ( + "arn:aws:secretsmanager:us-west-1:1234567890:secret:key-name-123ABC" + ) api_key = api.get_api_key() @@ -132,9 +132,9 @@ def test_no_fips_for_standard_regions(self, mock_boto3_client): os.environ.clear() os.environ["AWS_REGION"] = "us-west-2" - os.environ[ - "DD_API_KEY_SECRET_ARN" - ] = "arn:aws:secretsmanager:us-west-2:1234567890:secret:key-name-123ABC" + os.environ["DD_API_KEY_SECRET_ARN"] = ( + "arn:aws:secretsmanager:us-west-2:1234567890:secret:key-name-123ABC" + ) api.get_api_key() diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index 512a51f89..1a5edfc55 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -3,6 +3,8 @@ import os import unittest import importlib +import sys +import pytest from unittest.mock import MagicMock, patch, call, ANY from datadog_lambda.constants import TraceHeader @@ -834,6 +836,9 @@ def lambda_handler(event, context): @patch("datadog_lambda.config.Config.profiling_enabled", True) +@pytest.mark.skipif( + sys.version_info >= (3, 14), reason="profiling not yet supported in python 3.14" +) def test_profiling_enabled(monkeypatch): importlib.reload(wrapper) diff --git a/tests/test_xray.py b/tests/test_xray.py index 7f33f8915..8177e46e8 100644 --- a/tests/test_xray.py +++ b/tests/test_xray.py @@ -34,9 +34,9 @@ def test_get_xray_host_port_success(self): def test_send_segment_sampled_out(self): os.environ["AWS_XRAY_DAEMON_ADDRESS"] = "fake-agent.com:8080" - os.environ[ - "_X_AMZN_TRACE_ID" - ] = "Root=1-5e272390-8c398be037738dc042009320;Parent=94ae789b969f1cc5;Sampled=0;Lineage=c6c5b1b9:0" + os.environ["_X_AMZN_TRACE_ID"] = ( + "Root=1-5e272390-8c398be037738dc042009320;Parent=94ae789b969f1cc5;Sampled=0;Lineage=c6c5b1b9:0" + ) with patch( "datadog_lambda.xray.sock.send", MagicMock(return_value=None) @@ -47,9 +47,9 @@ def test_send_segment_sampled_out(self): def test_send_segment_sampled(self): os.environ["AWS_XRAY_DAEMON_ADDRESS"] = "fake-agent.com:8080" - os.environ[ - "_X_AMZN_TRACE_ID" - ] = "Root=1-5e272390-8c398be037738dc042009320;Parent=94ae789b969f1cc5;Sampled=1;Lineage=c6c5b1b9:0" + os.environ["_X_AMZN_TRACE_ID"] = ( + "Root=1-5e272390-8c398be037738dc042009320;Parent=94ae789b969f1cc5;Sampled=1;Lineage=c6c5b1b9:0" + ) with patch( "datadog_lambda.xray.sock.send", MagicMock(return_value=None) ) as mock_send: From f74f9ca9d10f8153d7bd4fcd726540bd903845ba Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Mon, 1 Dec 2025 12:53:35 -0500 Subject: [PATCH 319/403] Stop running update-snapshots nightly. (#692) --- .github/workflows/update-snapshots.yml | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/.github/workflows/update-snapshots.yml b/.github/workflows/update-snapshots.yml index ed7097aed..81e0c5394 100644 --- a/.github/workflows/update-snapshots.yml +++ b/.github/workflows/update-snapshots.yml @@ -1,8 +1,7 @@ name: update-snapshots on: - schedule: - - cron: "0 15 * * *" # every day 11am EST + workflow_dispatch: jobs: check: @@ -47,8 +46,19 @@ jobs: working-directory: tests/integration run: yarn install - - name: Update Snapshots + - name: Update Snapshots (amd64) env: + ARCH: amd64 + UPDATE_SNAPSHOTS: true + BUILD_LAYERS: true + DD_API_KEY: ${{ secrets.DD_API_KEY }} + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + run: ./scripts/run_integration_tests.sh + + - name: Update Snapshots (arm64) + env: + ARCH: arm64 UPDATE_SNAPSHOTS: true BUILD_LAYERS: true DD_API_KEY: ${{ secrets.DD_API_KEY }} From 36d7df23b802ab41639498e049727160dcd3033a Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Mon, 1 Dec 2025 13:03:58 -0500 Subject: [PATCH 320/403] chore: release v8.118.0 (#691) * v8.118.0 * remove build for 3.8 for system tests (3.8 is no longer supported after https://github.com/DataDog/dd-trace-py/commit/469a7b8f2543b9a0efc79669c395de65cf046921) --- .github/workflows/build_layer.yml | 2 +- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build_layer.yml b/.github/workflows/build_layer.yml index 8eef0c661..d5d65ec4a 100644 --- a/.github/workflows/build_layer.yml +++ b/.github/workflows/build_layer.yml @@ -15,7 +15,7 @@ jobs: fail-fast: false matrix: arch: [arm64, amd64] - python_version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13", "3.14"] + python_version: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"] steps: - name: Checkout diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index 26394e220..a23e0df67 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "8.118.0.dev0" +__version__ = "8.118.0" diff --git a/pyproject.toml b/pyproject.toml index 5f91a97d7..0d08814fd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "8.118.0.dev0" +version = "8.118.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From eba810afe9f0b46ccfb68ce5aa77c989b349e5a8 Mon Sep 17 00:00:00 2001 From: Florentin Labelle Date: Mon, 1 Dec 2025 19:27:40 +0100 Subject: [PATCH 321/403] ci(system-tests): reuse dd-trace-py artifacts instead of building (#689) --- .github/workflows/build_layer.yml | 55 +++++++++++++++++++++++++++++-- 1 file changed, 53 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build_layer.yml b/.github/workflows/build_layer.yml index d5d65ec4a..fc22e9ce4 100644 --- a/.github/workflows/build_layer.yml +++ b/.github/workflows/build_layer.yml @@ -8,9 +8,32 @@ on: - "main" jobs: + get-ddtrace-run-id: + runs-on: ubuntu-latest + outputs: + run-id: ${{ steps.get-ddtrace-run-id.outputs.run_id }} + steps: + - name: Resolve Run ID of latest dd-trace-py build + id: get-ddtrace-run-id + env: + GH_TOKEN: ${{ github.token }} + run: | + RUN_ID=$(gh run list \ + --repo DataDog/dd-trace-py \ + --workflow build_deploy.yml \ + --branch main \ + --status success \ + --limit 1 \ + --json databaseId \ + --jq '.[0].databaseId') + + echo "run_id=$RUN_ID" >> $GITHUB_OUTPUT + build: runs-on: ${{ matrix.arch == 'arm64' && 'ubuntu-24.04-arm' || 'ubuntu-latest' }} + needs: get-ddtrace-run-id + strategy: fail-fast: false matrix: @@ -21,10 +44,38 @@ jobs: - name: Checkout uses: actions/checkout@v4 + - name: Build artifact name + id: build-artifact-name + run: | + if [ "${{ matrix.arch }}" == "amd64" ]; then + ARCH="x86_64" + else + ARCH="aarch64" + fi + + VER="${{ matrix.python_version }}" + PY_VERSION_NO_DOT="${VER//./}" + + echo "artifact_name=wheels-cp${PY_VERSION_NO_DOT}-manylinux_${ARCH}" >> $GITHUB_OUTPUT + + - name: Download ddtrace Wheel + uses: actions/download-artifact@v4 + with: + name: ${{ steps.build-artifact-name.outputs.artifact_name }} + repository: DataDog/dd-trace-py + run-id: ${{ needs.get-ddtrace-run-id.outputs.run-id }} + github-token: ${{ secrets.GITHUB_TOKEN }} + path: ./artifacts + + - name: Find ddtrace Wheel + id: find-ddtrace-wheel + run: | + echo "wheel_path=$(find ./artifacts -name "*.whl" | head -n 1)" >> $GITHUB_OUTPUT + - name: Patch pyproject.toml run: | - echo "Patching pyproject.toml to use main branch of dd-trace-py" - sed -i 's|^ddtrace =.*$|ddtrace = { git = "https://github.com/DataDog/dd-trace-py.git" }|' pyproject.toml + echo "Patching pyproject.toml to use latest build of dd-trace-py" + sed -i 's|^ddtrace =.*$|ddtrace = { file = "${{ steps.find-ddtrace-wheel.outputs.wheel_path }}" }|' pyproject.toml - name: Build layer for Python ${{ matrix.python_version }} on ${{ matrix.arch }} run: | From 31df03d95965c834fe7e455a2e5e52cd6ef392c7 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Tue, 2 Dec 2025 11:47:43 -0500 Subject: [PATCH 322/403] v8.119.0.dev0 --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index a23e0df67..b3c11170f 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "8.118.0" +__version__ = "8.119.0.dev0" diff --git a/pyproject.toml b/pyproject.toml index 0d08814fd..c0046097c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "8.118.0" +version = "8.119.0.dev0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 58d0e3496d73b50f0fac3f45c62a4797ac3094c1 Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Wed, 3 Dec 2025 15:37:30 -0500 Subject: [PATCH 323/403] Catch errors when importing profiler. (#695) * Catch errors when importing profiler. * Test import of profiler catches error and disables profiling. * Update linting. --- datadog_lambda/wrapper.py | 14 +++++++++----- tests/test_wrapper.py | 10 ++++++++++ 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 8dbd7e359..ee740221c 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -46,6 +46,8 @@ extract_http_status_code_tag, ) +logger = logging.getLogger(__name__) + # ddtrace imports are also tested in # dd-trace-py/tests/internal/test_serverless.py please update those tests when # making changes to any ddtrace import. @@ -61,8 +63,12 @@ start() +profiler = None if config.profiling_enabled: - from ddtrace.profiling import profiler + try: + from ddtrace.profiling import profiler + except Exception as e: + logger.error(f"Failed to initialize profiler: [{e.__class__.__name__})] {e}") if config.llmobs_enabled: from ddtrace.llmobs import LLMObs @@ -75,8 +81,6 @@ except ImportError: from ddtrace.debugging._uploader import LogsIntakeUploaderV1 as SignalUploader -logger = logging.getLogger(__name__) - DD_REQUESTS_SERVICE_NAME = "DD_REQUESTS_SERVICE_NAME" DD_SERVICE = "DD_SERVICE" @@ -141,7 +145,7 @@ def __init__(self, func): self.response = None self.blocking_response = None - if config.profiling_enabled: + if config.profiling_enabled and profiler: self.prof = profiler.Profiler(env=config.env, service=config.service) if config.trace_extractor: @@ -283,7 +287,7 @@ def _before(self, event, context): self.blocking_response = get_asm_blocked_response(self.event_source) else: set_correlation_ids() - if config.profiling_enabled and is_new_sandbox(): + if config.profiling_enabled and profiler and is_new_sandbox(): self.prof.start(stop_on_exit=False, profile_children=True) logger.debug("datadog_lambda_wrapper _before() done") except Exception as e: diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index 1a5edfc55..95dfc3040 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -962,3 +962,13 @@ def lambda_handler(event, context): mock_submit.assert_called_once() call_args = mock_submit.call_args[0] assert call_args[0] is None + + +@patch("datadog_lambda.config.Config.profiling_enabled", True) +def test_profiling_import_errors_caught(monkeypatch): + # when importing profiler fails, disable profiling instead of crashing app + monkeypatch.setitem( + sys.modules, "ddtrace.profiling", None + ) # force ModuleNotFoundError + importlib.reload(wrapper) + assert not hasattr(wrapper.datadog_lambda_wrapper, "prof") From df6df8e20209ff07510165a5de3ceab5503e6c8c Mon Sep 17 00:00:00 2001 From: Rithika Narayan <93233069+rithikanarayan@users.noreply.github.com> Date: Thu, 4 Dec 2025 13:44:16 -0500 Subject: [PATCH 324/403] Updating to v119 (#696) --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index b3c11170f..ce72d946d 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "8.119.0.dev0" +__version__ = "8.119.0" diff --git a/pyproject.toml b/pyproject.toml index c0046097c..3a2fb53b1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "8.119.0.dev0" +version = "8.119.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From ed75966b952cf4c897f6535e8d3b88cb3818a21d Mon Sep 17 00:00:00 2001 From: shreyamalpani Date: Fri, 5 Dec 2025 16:27:14 -0500 Subject: [PATCH 325/403] Fix SSM endpoint for Gov regions (#693) * only override ssm endpoint url in commercial fips * lint * check ssm-fips supported regions * fix --- datadog_lambda/api.py | 25 +++++++++++++++++----- tests/test_api.py | 48 ++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 65 insertions(+), 8 deletions(-) diff --git a/datadog_lambda/api.py b/datadog_lambda/api.py index 4921dae90..88f2cbe27 100644 --- a/datadog_lambda/api.py +++ b/datadog_lambda/api.py @@ -5,6 +5,14 @@ logger = logging.getLogger(__name__) KMS_ENCRYPTION_CONTEXT_KEY = "LambdaFunctionName" +SSM_FIPS_SUPPORTED_REGIONS = { + "us-east-1", + "us-east-2", + "us-west-1", + "us-west-2", + "ca-central-1", + "ca-west-1", +} api_key = None @@ -92,11 +100,18 @@ def get_api_key() -> str: )["SecretString"] elif DD_API_KEY_SSM_NAME: # SSM endpoints: https://docs.aws.amazon.com/general/latest/gr/ssm.html - fips_endpoint = ( - f"https://ssm-fips.{LAMBDA_REGION}.amazonaws.com" - if config.fips_mode_enabled - else None - ) + fips_endpoint = None + if config.fips_mode_enabled: + if LAMBDA_REGION in SSM_FIPS_SUPPORTED_REGIONS: + fips_endpoint = f"https://ssm-fips.{LAMBDA_REGION}.amazonaws.com" + else: + # Log warning if SSM FIPS endpoint is not supported for commercial region + if not config.is_gov_region: + logger.warning( + "FIPS mode is enabled, but '%s' does not support SSM FIPS endpoints. " + "Using standard SSM endpoint.", + LAMBDA_REGION, + ) ssm_client = _boto3_client("ssm", endpoint_url=fips_endpoint) api_key = ssm_client.get_parameter( Name=DD_API_KEY_SSM_NAME, WithDecryption=True diff --git a/tests/test_api.py b/tests/test_api.py index 35a179b1c..3b42cfd76 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -89,23 +89,65 @@ def test_secrets_manager_different_region_but_still_fips(self, mock_boto3_client @patch("datadog_lambda.config.Config.fips_mode_enabled", True) @patch("botocore.session.Session.create_client") - def test_ssm_fips_endpoint(self, mock_boto3_client): + def test_ssm_fips_endpoint_supported_region(self, mock_boto3_client): mock_client = MagicMock() mock_client.get_parameter.return_value = { "Parameter": {"Value": "test-api-key"} } mock_boto3_client.return_value = mock_client - os.environ["AWS_REGION"] = "us-gov-west-1" + os.environ["AWS_REGION"] = "us-east-1" os.environ["DD_API_KEY_SSM_NAME"] = "test-ssm-param" api_key = api.get_api_key() mock_boto3_client.assert_called_with( - "ssm", endpoint_url="https://ssm-fips.us-gov-west-1.amazonaws.com" + "ssm", endpoint_url="https://ssm-fips.us-east-1.amazonaws.com" ) self.assertEqual(api_key, "test-api-key") + @patch("datadog_lambda.config.Config.fips_mode_enabled", True) + @patch("datadog_lambda.config.Config.is_gov_region", True) + @patch("botocore.session.Session.create_client") + def test_ssm_gov_endpoint(self, mock_boto3_client): + mock_client = MagicMock() + mock_client.get_parameter.return_value = { + "Parameter": {"Value": "test-api-key"} + } + mock_boto3_client.return_value = mock_client + + os.environ["AWS_REGION"] = "us-gov-west-1" + os.environ["DD_API_KEY_SSM_NAME"] = "test-ssm-param" + + api_key = api.get_api_key() + + mock_boto3_client.assert_called_with("ssm", endpoint_url=None) + self.assertEqual(api_key, "test-api-key") + + @patch("datadog_lambda.config.Config.fips_mode_enabled", True) + @patch("botocore.session.Session.create_client") + def test_ssm_fips_endpoint_unsupported_region(self, mock_boto3_client): + mock_client = MagicMock() + mock_client.get_parameter.return_value = { + "Parameter": {"Value": "test-api-key"} + } + mock_boto3_client.return_value = mock_client + + os.environ["AWS_REGION"] = "eu-west-1" + os.environ["DD_API_KEY_SSM_NAME"] = "test-ssm-param" + + with self.assertLogs("datadog_lambda.api", level="WARNING") as log_context: + api_key = api.get_api_key() + + mock_boto3_client.assert_called_with("ssm", endpoint_url=None) + self.assertEqual(api_key, "test-api-key") + self.assertTrue( + any( + "does not support SSM FIPS endpoints" in log_msg + for log_msg in log_context.output + ) + ) + @patch("datadog_lambda.config.Config.fips_mode_enabled", True) @patch("botocore.session.Session.create_client") @patch("datadog_lambda.api.decrypt_kms_api_key") From 82e7f701f1ca436d7892954742468d25e10a7931 Mon Sep 17 00:00:00 2001 From: Alberto Vara Date: Wed, 10 Dec 2025 16:59:26 +0100 Subject: [PATCH 326/403] Clean up unnecessary files in Dockerfile (#683) * Clean up unnecessary files in Dockerfile Removes files that are unnecessary for Lambda * Update Dockerfile --- Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Dockerfile b/Dockerfile index ce59438db..974419ed8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -33,6 +33,7 @@ RUN rm -rf ./python/lib/$runtime/site-packages/botocore* RUN rm -rf ./python/lib/$runtime/site-packages/setuptools RUN rm -rf ./python/lib/$runtime/site-packages/jsonschema/tests RUN rm -f ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_ast/iastpatch*.so +RUN rm -rf ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_taint_tracking/_vendor RUN rm -f ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_taint_tracking/*.so RUN rm -f ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_stacktrace*.so # remove *.dist-info directories except any entry_points.txt files and METADATA files required for Appsec Software Composition Analysis From 90140fbb24e51b9c76cbd05168adea894258cf24 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Thu, 11 Dec 2025 14:21:10 -0500 Subject: [PATCH 327/403] v8.120.0 (#699) * v8.120.0 * update integration test snapshots --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- .../logs/async-metrics_python314.log | 40 ++++++------- .../snapshots/logs/sync-metrics_python314.log | 60 +++++++++---------- 4 files changed, 52 insertions(+), 52 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index ce72d946d..aacab86a1 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "8.119.0" +__version__ = "8.120.0" diff --git a/pyproject.toml b/pyproject.toml index 3a2fb53b1..87c309f70 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "8.119.0" +version = "8.120.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" diff --git a/tests/integration/snapshots/logs/async-metrics_python314.log b/tests/integration/snapshots/logs/async-metrics_python314.log index 8983a83c4..b14df308a 100644 --- a/tests/integration/snapshots/logs/async-metrics_python314.log +++ b/tests/integration/snapshots/logs/async-metrics_python314.log @@ -36,8 +36,8 @@ START "dd_lambda_layer:datadog-python314_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -208,8 +208,8 @@ START "dd_lambda_layer:datadog-python314_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -345,8 +345,8 @@ START "dd_lambda_layer:datadog-python314_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -542,8 +542,8 @@ START "dd_lambda_layer:datadog-python314_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -700,8 +700,8 @@ START "dd_lambda_layer:datadog-python314_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -874,8 +874,8 @@ START "dd_lambda_layer:datadog-python314_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1039,8 +1039,8 @@ START "dd_lambda_layer:datadog-python314_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1213,8 +1213,8 @@ START "dd_lambda_layer:datadog-python314_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1376,8 +1376,8 @@ START "dd_lambda_layer:datadog-python314_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1538,8 +1538,8 @@ START "dd_lambda_layer:datadog-python314_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ diff --git a/tests/integration/snapshots/logs/sync-metrics_python314.log b/tests/integration/snapshots/logs/sync-metrics_python314.log index 442d83b48..cab7fcbba 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python314.log +++ b/tests/integration/snapshots/logs/sync-metrics_python314.log @@ -16,8 +16,8 @@ START "dd_lambda_layer:datadog-python314_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -150,7 +150,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -207,8 +207,8 @@ START "dd_lambda_layer:datadog-python314_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -297,7 +297,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -363,8 +363,8 @@ START "dd_lambda_layer:datadog-python314_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -522,7 +522,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -579,8 +579,8 @@ START "dd_lambda_layer:datadog-python314_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -699,7 +699,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -756,8 +756,8 @@ START "dd_lambda_layer:datadog-python314_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -892,7 +892,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -949,8 +949,8 @@ START "dd_lambda_layer:datadog-python314_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1076,7 +1076,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1133,8 +1133,8 @@ START "dd_lambda_layer:datadog-python314_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1269,7 +1269,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1326,8 +1326,8 @@ START "dd_lambda_layer:datadog-python314_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1451,7 +1451,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1508,8 +1508,8 @@ START "dd_lambda_layer:datadog-python314_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1632,7 +1632,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1689,8 +1689,8 @@ START "dd_lambda_layer:datadog-python314_X.X.X" ] } -HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX -HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX { "traces": [ [ @@ -1822,7 +1822,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A ] ] } -HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX +HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","Content-Encoding:deflate","Content-Length:XXXX","Content-Type:application/json","DD-API-KEY:XXXX","User-Agent:datadogpy/XX (python XX; os linux; arch XXXX)","traceparent:XXX","tracestate:XXX { "traces": [ [ From e1a0bac4bc73a40ab0edd1c3e024c9c4e337eb4a Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Thu, 11 Dec 2025 16:15:55 -0500 Subject: [PATCH 328/403] v8.121.0.dev0 --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index aacab86a1..9ce3b4e79 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "8.120.0" +__version__ = "8.121.0.dev0" diff --git a/pyproject.toml b/pyproject.toml index 87c309f70..29e9c7f2a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "8.120.0" +version = "8.121.0.dev0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 49710e639f323d700f5b2f0f8514bcb2028d9e62 Mon Sep 17 00:00:00 2001 From: Florentin Labelle Date: Fri, 12 Dec 2025 10:02:01 +0100 Subject: [PATCH 329/403] feat(aap): update api gateway inferred span tags for better correlation (#697) --- datadog_lambda/tracing.py | 24 ++++++-- datadog_lambda/wrapper.py | 12 +++- .../logs/async-metrics_python310.log | 26 ++++++-- .../logs/async-metrics_python311.log | 26 ++++++-- .../logs/async-metrics_python312.log | 26 ++++++-- .../logs/async-metrics_python313.log | 26 ++++++-- .../logs/async-metrics_python314.log | 26 ++++++-- .../snapshots/logs/async-metrics_python38.log | 26 ++++++-- .../snapshots/logs/async-metrics_python39.log | 26 ++++++-- .../snapshots/logs/sync-metrics_python310.log | 26 ++++++-- .../snapshots/logs/sync-metrics_python311.log | 26 ++++++-- .../snapshots/logs/sync-metrics_python312.log | 26 ++++++-- .../snapshots/logs/sync-metrics_python313.log | 26 ++++++-- .../snapshots/logs/sync-metrics_python314.log | 26 ++++++-- .../snapshots/logs/sync-metrics_python38.log | 26 ++++++-- .../snapshots/logs/sync-metrics_python39.log | 26 ++++++-- tests/test_tracing.py | 59 ++++++++----------- 17 files changed, 348 insertions(+), 111 deletions(-) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 225f5dd82..e7dca1f32 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -927,6 +927,7 @@ def create_inferred_span_from_lambda_function_url_event(event, context): InferredSpanInfo.set_tags(tags, tag_source="self", synchronicity="sync") if span: span.set_tags(tags) + span.set_metric(InferredSpanInfo.METRIC, 1.0) span.start_ns = int(request_time_epoch * 1e6) return span @@ -1047,6 +1048,7 @@ def create_inferred_span_from_api_gateway_websocket_event( span = tracer.trace("aws.apigateway.websocket", **args) if span: span.set_tags(tags) + span.set_metric(InferredSpanInfo.METRIC, 1.0) span.start_ns = int( finish_time_ns if finish_time_ns is not None @@ -1061,6 +1063,8 @@ def create_inferred_span_from_api_gateway_event( event, context, decode_authorizer_context: bool = True ): request_context = event.get("requestContext") + identity = request_context.get("identity") + domain = request_context.get("domainName", "") api_id = request_context.get("apiId") service_name = determine_service_name( @@ -1072,11 +1076,11 @@ def create_inferred_span_from_api_gateway_event( resource_path = _get_resource_path(event, request_context) resource = f"{method} {resource_path}" tags = { - "operation_name": "aws.apigateway.rest", "http.url": http_url, "endpoint": path, "http.method": method, "resource_names": resource, + "http.useragent": identity.get("userAgent"), "span.kind": "server", "apiid": api_id, "apiname": api_id, @@ -1091,7 +1095,7 @@ def create_inferred_span_from_api_gateway_event( args = { "service": service_name, "resource": resource, - "span_type": "http", + "span_type": "web", } tracer.set_tags(_dd_origin) upstream_authorizer_span = None @@ -1103,6 +1107,7 @@ def create_inferred_span_from_api_gateway_event( span = tracer.trace("aws.apigateway", **args) if span: span.set_tags(tags) + span.set_metric(InferredSpanInfo.METRIC, 1.0) # start time pushed by the inserted authorizer span span.start_ns = int( finish_time_ns @@ -1140,13 +1145,12 @@ def create_inferred_span_from_http_api_event( resource_path = _get_resource_path(event, request_context) resource = f"{method} {resource_path}" tags = { - "operation_name": "aws.httpapi", "endpoint": path, "http.url": http_url, "http.method": http.get("method"), "http.protocol": http.get("protocol"), "http.source_ip": http.get("sourceIp"), - "http.user_agent": http.get("userAgent"), + "http.useragent": http.get("userAgent"), "resource_names": resource, "request_id": context.aws_request_id, "apiid": api_id, @@ -1167,10 +1171,11 @@ def create_inferred_span_from_http_api_event( Headers.Parent_Span_Finish_Time ) span = tracer.trace( - "aws.httpapi", service=service_name, resource=resource, span_type="http" + "aws.httpapi", service=service_name, resource=resource, span_type="web" ) if span: span.set_tags(tags) + span.set_metric(InferredSpanInfo.METRIC, 1.0) span.start_ns = int(inferred_span_start_ns) return span @@ -1237,6 +1242,7 @@ def create_inferred_span_from_sqs_event(event, context): ) if span: span.set_tags(tags) + span.set_metric(InferredSpanInfo.METRIC, 1.0) span.start = start_time if upstream_span: span.parent_id = upstream_span.span_id @@ -1278,6 +1284,7 @@ def create_inferred_span_from_sns_event(event, context): ) if span: span.set_tags(tags) + span.set_metric(InferredSpanInfo.METRIC, 1.0) span.start = dt.replace(tzinfo=timezone.utc).timestamp() return span @@ -1313,6 +1320,7 @@ def create_inferred_span_from_kinesis_event(event, context): ) if span: span.set_tags(tags) + span.set_metric(InferredSpanInfo.METRIC, 1.0) span.start = request_time_epoch return span @@ -1345,6 +1353,7 @@ def create_inferred_span_from_dynamodb_event(event, context): ) if span: span.set_tags(tags) + span.set_metric(InferredSpanInfo.METRIC, 1.0) span.start = int(request_time_epoch) return span @@ -1381,6 +1390,7 @@ def create_inferred_span_from_s3_event(event, context): ) if span: span.set_tags(tags) + span.set_metric(InferredSpanInfo.METRIC, 1.0) span.start = dt.replace(tzinfo=timezone.utc).timestamp() return span @@ -1421,10 +1431,11 @@ def create_inferred_span_from_eventbridge_event(event, context): ) if span: span.set_tags(tags) + span.set_metric(InferredSpanInfo.METRIC, 1.0) span.start = dt.replace(tzinfo=timezone.utc).timestamp() # Since inferred span will later parent Lambda, preserve Lambda's current parent - if dd_trace_context.span_id: + if dd_trace_context and getattr(dd_trace_context, "span_id", None): span.parent_id = dd_trace_context.span_id return span @@ -1512,6 +1523,7 @@ class InferredSpanInfo(object): BASE_NAME = "_inferred_span" SYNCHRONICITY = f"{BASE_NAME}.synchronicity" TAG_SOURCE = f"{BASE_NAME}.tag_source" + METRIC = f"_dd.{BASE_NAME}" @staticmethod def set_tags( diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index ee740221c..5a32e2ff9 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -346,8 +346,16 @@ def _after(self, event, context): if status_code: self.inferred_span.set_tag("http.status_code", status_code) - if self.trigger_tags and (route := self.trigger_tags.get("http.route")): - self.inferred_span.set_tag("http.route", route) + if self.trigger_tags: + route = self.trigger_tags.get("http.route") + if route: + self.inferred_span.set_tag("http.route", route) + + event_source_arn = self.trigger_tags.get( + "function_trigger.event_source_arn" + ) + if event_source_arn: + self.inferred_span.set_tag("dd_resource_key", event_source_arn) if config.service: self.inferred_span.set_tag("peer.service", config.service) diff --git a/tests/integration/snapshots/logs/async-metrics_python310.log b/tests/integration/snapshots/logs/async-metrics_python310.log index 6779d7ddb..356d82439 100644 --- a/tests/integration/snapshots/logs/async-metrics_python310.log +++ b/tests/integration/snapshots/logs/async-metrics_python310.log @@ -54,11 +54,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", - "operation_name": "aws.apigateway.rest", "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/", "endpoint": "/", "http.method": "GET", "resource_names": "GET /", + "http.useragent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36", "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", @@ -68,6 +68,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "http.status_code": "200", "http.route": "/", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/70ixmpl4fl/stages/Prod", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -76,10 +77,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "http" + "type": "web" }, { "trace_id": "XXXX", @@ -375,6 +377,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "size_bytes": "26", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -383,6 +386,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -574,6 +578,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -718,13 +723,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", - "operation_name": "aws.httpapi", "endpoint": "/httpapi/get", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.protocol": "HTTP/1.1", "http.source_ip": "XXXX", - "http.user_agent": "XXXX/7.64.1", + "http.useragent": "curl/7.64.1", "resource_names": "GET /httpapi/get", "request_id": "XXXX", "apiid": "XXXX", @@ -734,6 +738,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "http.status_code": "200", "http.route": "/httpapi/get", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/x02yirxc7a/stages/$default", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -742,10 +747,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "http" + "type": "web" }, { "trace_id": "XXXX", @@ -904,6 +910,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "partition_key": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:kinesis:EXAMPLE", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -912,6 +919,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1066,6 +1074,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "object_etag": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:s3:::example-bucket", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -1074,6 +1083,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1241,6 +1251,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "subject": "TestInvoke", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -1249,6 +1260,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1403,6 +1415,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "sender_id": "AIDAIENQZJOLO23YVJ4VO", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -1411,6 +1424,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1571,6 +1585,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/p62c47itsb/stages/dev", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -1579,6 +1594,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, diff --git a/tests/integration/snapshots/logs/async-metrics_python311.log b/tests/integration/snapshots/logs/async-metrics_python311.log index 9f14ff15c..fa140a85a 100644 --- a/tests/integration/snapshots/logs/async-metrics_python311.log +++ b/tests/integration/snapshots/logs/async-metrics_python311.log @@ -54,11 +54,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", - "operation_name": "aws.apigateway.rest", "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/", "endpoint": "/", "http.method": "GET", "resource_names": "GET /", + "http.useragent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36", "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", @@ -68,6 +68,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "http.status_code": "200", "http.route": "/", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/70ixmpl4fl/stages/Prod", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -76,10 +77,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "http" + "type": "web" }, { "trace_id": "XXXX", @@ -375,6 +377,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "size_bytes": "26", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -383,6 +386,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -574,6 +578,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -718,13 +723,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", - "operation_name": "aws.httpapi", "endpoint": "/httpapi/get", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.protocol": "HTTP/1.1", "http.source_ip": "XXXX", - "http.user_agent": "XXXX/7.64.1", + "http.useragent": "curl/7.64.1", "resource_names": "GET /httpapi/get", "request_id": "XXXX", "apiid": "XXXX", @@ -734,6 +738,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "http.status_code": "200", "http.route": "/httpapi/get", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/x02yirxc7a/stages/$default", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -742,10 +747,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "http" + "type": "web" }, { "trace_id": "XXXX", @@ -904,6 +910,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "partition_key": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:kinesis:EXAMPLE", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -912,6 +919,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1066,6 +1074,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "object_etag": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:s3:::example-bucket", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -1074,6 +1083,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1241,6 +1251,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "subject": "TestInvoke", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -1249,6 +1260,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1403,6 +1415,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "sender_id": "AIDAIENQZJOLO23YVJ4VO", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -1411,6 +1424,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1571,6 +1585,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/p62c47itsb/stages/dev", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -1579,6 +1594,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, diff --git a/tests/integration/snapshots/logs/async-metrics_python312.log b/tests/integration/snapshots/logs/async-metrics_python312.log index 789a39551..c2ea06475 100644 --- a/tests/integration/snapshots/logs/async-metrics_python312.log +++ b/tests/integration/snapshots/logs/async-metrics_python312.log @@ -54,11 +54,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", - "operation_name": "aws.apigateway.rest", "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/", "endpoint": "/", "http.method": "GET", "resource_names": "GET /", + "http.useragent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36", "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", @@ -68,6 +68,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "http.status_code": "200", "http.route": "/", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/70ixmpl4fl/stages/Prod", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -76,10 +77,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "http" + "type": "web" }, { "trace_id": "XXXX", @@ -375,6 +377,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "size_bytes": "26", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -383,6 +386,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -574,6 +578,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -718,13 +723,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", - "operation_name": "aws.httpapi", "endpoint": "/httpapi/get", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.protocol": "HTTP/1.1", "http.source_ip": "XXXX", - "http.user_agent": "XXXX/7.64.1", + "http.useragent": "curl/7.64.1", "resource_names": "GET /httpapi/get", "request_id": "XXXX", "apiid": "XXXX", @@ -734,6 +738,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "http.status_code": "200", "http.route": "/httpapi/get", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/x02yirxc7a/stages/$default", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -742,10 +747,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "http" + "type": "web" }, { "trace_id": "XXXX", @@ -904,6 +910,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "partition_key": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:kinesis:EXAMPLE", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -912,6 +919,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1066,6 +1074,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "object_etag": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:s3:::example-bucket", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -1074,6 +1083,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1241,6 +1251,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "subject": "TestInvoke", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -1249,6 +1260,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1403,6 +1415,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "sender_id": "AIDAIENQZJOLO23YVJ4VO", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -1411,6 +1424,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1571,6 +1585,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/p62c47itsb/stages/dev", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -1579,6 +1594,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, diff --git a/tests/integration/snapshots/logs/async-metrics_python313.log b/tests/integration/snapshots/logs/async-metrics_python313.log index 78ade6a7a..b6a4f68e8 100644 --- a/tests/integration/snapshots/logs/async-metrics_python313.log +++ b/tests/integration/snapshots/logs/async-metrics_python313.log @@ -54,11 +54,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", - "operation_name": "aws.apigateway.rest", "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/", "endpoint": "/", "http.method": "GET", "resource_names": "GET /", + "http.useragent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36", "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", @@ -68,6 +68,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "http.status_code": "200", "http.route": "/", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/70ixmpl4fl/stages/Prod", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -76,10 +77,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "http" + "type": "web" }, { "trace_id": "XXXX", @@ -375,6 +377,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "size_bytes": "26", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -383,6 +386,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -574,6 +578,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -718,13 +723,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", - "operation_name": "aws.httpapi", "endpoint": "/httpapi/get", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.protocol": "HTTP/1.1", "http.source_ip": "XXXX", - "http.user_agent": "XXXX/7.64.1", + "http.useragent": "curl/7.64.1", "resource_names": "GET /httpapi/get", "request_id": "XXXX", "apiid": "XXXX", @@ -734,6 +738,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "http.status_code": "200", "http.route": "/httpapi/get", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/x02yirxc7a/stages/$default", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -742,10 +747,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "http" + "type": "web" }, { "trace_id": "XXXX", @@ -904,6 +910,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "partition_key": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:kinesis:EXAMPLE", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -912,6 +919,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1066,6 +1074,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "object_etag": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:s3:::example-bucket", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -1074,6 +1083,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1241,6 +1251,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "subject": "TestInvoke", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -1249,6 +1260,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1403,6 +1415,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "sender_id": "AIDAIENQZJOLO23YVJ4VO", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -1411,6 +1424,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1571,6 +1585,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/p62c47itsb/stages/dev", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -1579,6 +1594,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, diff --git a/tests/integration/snapshots/logs/async-metrics_python314.log b/tests/integration/snapshots/logs/async-metrics_python314.log index b14df308a..a430b6449 100644 --- a/tests/integration/snapshots/logs/async-metrics_python314.log +++ b/tests/integration/snapshots/logs/async-metrics_python314.log @@ -54,11 +54,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", - "operation_name": "aws.apigateway.rest", "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/", "endpoint": "/", "http.method": "GET", "resource_names": "GET /", + "http.useragent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36", "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", @@ -68,6 +68,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "_inferred_span.tag_source": "self", "http.status_code": "200", "http.route": "/", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/70ixmpl4fl/stages/Prod", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -76,10 +77,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "http" + "type": "web" }, { "trace_id": "XXXX", @@ -375,6 +377,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "size_bytes": "26", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -383,6 +386,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -574,6 +578,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -718,13 +723,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", - "operation_name": "aws.httpapi", "endpoint": "/httpapi/get", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.protocol": "HTTP/1.1", "http.source_ip": "XXXX", - "http.user_agent": "XXXX/7.64.1", + "http.useragent": "curl/7.64.1", "resource_names": "GET /httpapi/get", "request_id": "XXXX", "apiid": "XXXX", @@ -734,6 +738,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "_inferred_span.tag_source": "self", "http.status_code": "200", "http.route": "/httpapi/get", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/x02yirxc7a/stages/$default", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -742,10 +747,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "http" + "type": "web" }, { "trace_id": "XXXX", @@ -904,6 +910,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "partition_key": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:kinesis:EXAMPLE", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -912,6 +919,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1066,6 +1074,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "object_etag": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:s3:::example-bucket", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -1074,6 +1083,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1241,6 +1251,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "subject": "TestInvoke", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -1249,6 +1260,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1403,6 +1415,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "sender_id": "AIDAIENQZJOLO23YVJ4VO", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -1411,6 +1424,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1571,6 +1585,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/p62c47itsb/stages/dev", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -1579,6 +1594,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, diff --git a/tests/integration/snapshots/logs/async-metrics_python38.log b/tests/integration/snapshots/logs/async-metrics_python38.log index 5375fafec..e37090ff9 100644 --- a/tests/integration/snapshots/logs/async-metrics_python38.log +++ b/tests/integration/snapshots/logs/async-metrics_python38.log @@ -54,11 +54,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", - "operation_name": "aws.apigateway.rest", "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/", "endpoint": "/", "http.method": "GET", "resource_names": "GET /", + "http.useragent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36", "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", @@ -68,6 +68,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "http.status_code": "200", "http.route": "/", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/70ixmpl4fl/stages/Prod", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -76,10 +77,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "http" + "type": "web" }, { "trace_id": "XXXX", @@ -375,6 +377,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "size_bytes": "26", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -383,6 +386,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -574,6 +578,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -718,13 +723,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", - "operation_name": "aws.httpapi", "endpoint": "/httpapi/get", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.protocol": "HTTP/1.1", "http.source_ip": "XXXX", - "http.user_agent": "XXXX/7.64.1", + "http.useragent": "curl/7.64.1", "resource_names": "GET /httpapi/get", "request_id": "XXXX", "apiid": "XXXX", @@ -734,6 +738,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "http.status_code": "200", "http.route": "/httpapi/get", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/x02yirxc7a/stages/$default", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -742,10 +747,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "http" + "type": "web" }, { "trace_id": "XXXX", @@ -904,6 +910,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "partition_key": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:kinesis:EXAMPLE", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -912,6 +919,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1066,6 +1074,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "object_etag": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:s3:::example-bucket", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -1074,6 +1083,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1241,6 +1251,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "subject": "TestInvoke", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -1249,6 +1260,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1403,6 +1415,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "sender_id": "AIDAIENQZJOLO23YVJ4VO", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -1411,6 +1424,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1571,6 +1585,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/p62c47itsb/stages/dev", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -1579,6 +1594,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, diff --git a/tests/integration/snapshots/logs/async-metrics_python39.log b/tests/integration/snapshots/logs/async-metrics_python39.log index f16e9e2d5..46c361126 100644 --- a/tests/integration/snapshots/logs/async-metrics_python39.log +++ b/tests/integration/snapshots/logs/async-metrics_python39.log @@ -54,11 +54,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", - "operation_name": "aws.apigateway.rest", "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/", "endpoint": "/", "http.method": "GET", "resource_names": "GET /", + "http.useragent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36", "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", @@ -68,6 +68,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "http.status_code": "200", "http.route": "/", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/70ixmpl4fl/stages/Prod", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -76,10 +77,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "http" + "type": "web" }, { "trace_id": "XXXX", @@ -375,6 +377,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "size_bytes": "26", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -383,6 +386,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -574,6 +578,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -718,13 +723,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", - "operation_name": "aws.httpapi", "endpoint": "/httpapi/get", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.protocol": "HTTP/1.1", "http.source_ip": "XXXX", - "http.user_agent": "XXXX/7.64.1", + "http.useragent": "curl/7.64.1", "resource_names": "GET /httpapi/get", "request_id": "XXXX", "apiid": "XXXX", @@ -734,6 +738,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "http.status_code": "200", "http.route": "/httpapi/get", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/x02yirxc7a/stages/$default", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -742,10 +747,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "http" + "type": "web" }, { "trace_id": "XXXX", @@ -904,6 +910,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "partition_key": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:kinesis:EXAMPLE", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -912,6 +919,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1066,6 +1074,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "object_etag": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:s3:::example-bucket", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -1074,6 +1083,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1241,6 +1251,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "subject": "TestInvoke", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -1249,6 +1260,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1403,6 +1415,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "sender_id": "AIDAIENQZJOLO23YVJ4VO", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -1411,6 +1424,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1571,6 +1585,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/p62c47itsb/stages/dev", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -1579,6 +1594,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python310.log b/tests/integration/snapshots/logs/sync-metrics_python310.log index 1cbd91dd8..a9170abd9 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python310.log +++ b/tests/integration/snapshots/logs/sync-metrics_python310.log @@ -34,11 +34,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", - "operation_name": "aws.apigateway.rest", "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/", "endpoint": "/", "http.method": "GET", "resource_names": "GET /", + "http.useragent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36", "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", @@ -48,6 +48,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "http.status_code": "200", "http.route": "/", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/70ixmpl4fl/stages/Prod", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -56,10 +57,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "http" + "type": "web" }, { "trace_id": "XXXX", @@ -393,6 +395,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "size_bytes": "26", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -401,6 +404,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -611,6 +615,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -774,13 +779,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", - "operation_name": "aws.httpapi", "endpoint": "/httpapi/get", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.protocol": "HTTP/1.1", "http.source_ip": "XXXX", - "http.user_agent": "XXXX/7.64.1", + "http.useragent": "curl/7.64.1", "resource_names": "GET /httpapi/get", "request_id": "XXXX", "apiid": "XXXX", @@ -790,6 +794,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "http.status_code": "200", "http.route": "/httpapi/get", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/x02yirxc7a/stages/$default", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -798,10 +803,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "http" + "type": "web" }, { "trace_id": "XXXX", @@ -979,6 +985,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "partition_key": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:kinesis:EXAMPLE", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -987,6 +994,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1160,6 +1168,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "object_etag": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:s3:::example-bucket", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -1168,6 +1177,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1354,6 +1364,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "subject": "TestInvoke", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -1362,6 +1373,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1535,6 +1547,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "sender_id": "AIDAIENQZJOLO23YVJ4VO", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -1543,6 +1556,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1722,6 +1736,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/p62c47itsb/stages/dev", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -1730,6 +1745,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python311.log b/tests/integration/snapshots/logs/sync-metrics_python311.log index b043a8f47..490fcc635 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python311.log +++ b/tests/integration/snapshots/logs/sync-metrics_python311.log @@ -34,11 +34,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", - "operation_name": "aws.apigateway.rest", "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/", "endpoint": "/", "http.method": "GET", "resource_names": "GET /", + "http.useragent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36", "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", @@ -48,6 +48,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "http.status_code": "200", "http.route": "/", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/70ixmpl4fl/stages/Prod", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -56,10 +57,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "http" + "type": "web" }, { "trace_id": "XXXX", @@ -393,6 +395,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "size_bytes": "26", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -401,6 +404,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -611,6 +615,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -774,13 +779,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", - "operation_name": "aws.httpapi", "endpoint": "/httpapi/get", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.protocol": "HTTP/1.1", "http.source_ip": "XXXX", - "http.user_agent": "XXXX/7.64.1", + "http.useragent": "curl/7.64.1", "resource_names": "GET /httpapi/get", "request_id": "XXXX", "apiid": "XXXX", @@ -790,6 +794,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "http.status_code": "200", "http.route": "/httpapi/get", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/x02yirxc7a/stages/$default", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -798,10 +803,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "http" + "type": "web" }, { "trace_id": "XXXX", @@ -979,6 +985,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "partition_key": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:kinesis:EXAMPLE", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -987,6 +994,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1160,6 +1168,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "object_etag": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:s3:::example-bucket", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -1168,6 +1177,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1354,6 +1364,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "subject": "TestInvoke", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -1362,6 +1373,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1535,6 +1547,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "sender_id": "AIDAIENQZJOLO23YVJ4VO", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -1543,6 +1556,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1722,6 +1736,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/p62c47itsb/stages/dev", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -1730,6 +1745,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python312.log b/tests/integration/snapshots/logs/sync-metrics_python312.log index ff9bbdb75..509d1bfe4 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python312.log +++ b/tests/integration/snapshots/logs/sync-metrics_python312.log @@ -34,11 +34,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", - "operation_name": "aws.apigateway.rest", "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/", "endpoint": "/", "http.method": "GET", "resource_names": "GET /", + "http.useragent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36", "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", @@ -48,6 +48,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "http.status_code": "200", "http.route": "/", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/70ixmpl4fl/stages/Prod", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -56,10 +57,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "http" + "type": "web" }, { "trace_id": "XXXX", @@ -393,6 +395,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "size_bytes": "26", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -401,6 +404,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -611,6 +615,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -774,13 +779,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", - "operation_name": "aws.httpapi", "endpoint": "/httpapi/get", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.protocol": "HTTP/1.1", "http.source_ip": "XXXX", - "http.user_agent": "XXXX/7.64.1", + "http.useragent": "curl/7.64.1", "resource_names": "GET /httpapi/get", "request_id": "XXXX", "apiid": "XXXX", @@ -790,6 +794,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "http.status_code": "200", "http.route": "/httpapi/get", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/x02yirxc7a/stages/$default", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -798,10 +803,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "http" + "type": "web" }, { "trace_id": "XXXX", @@ -979,6 +985,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "partition_key": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:kinesis:EXAMPLE", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -987,6 +994,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1160,6 +1168,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "object_etag": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:s3:::example-bucket", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -1168,6 +1177,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1354,6 +1364,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "subject": "TestInvoke", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -1362,6 +1373,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1535,6 +1547,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "sender_id": "AIDAIENQZJOLO23YVJ4VO", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -1543,6 +1556,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1722,6 +1736,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/p62c47itsb/stages/dev", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -1730,6 +1745,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python313.log b/tests/integration/snapshots/logs/sync-metrics_python313.log index 87352f25e..03a8e8c26 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python313.log +++ b/tests/integration/snapshots/logs/sync-metrics_python313.log @@ -34,11 +34,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", - "operation_name": "aws.apigateway.rest", "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/", "endpoint": "/", "http.method": "GET", "resource_names": "GET /", + "http.useragent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36", "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", @@ -48,6 +48,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "http.status_code": "200", "http.route": "/", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/70ixmpl4fl/stages/Prod", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -56,10 +57,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "http" + "type": "web" }, { "trace_id": "XXXX", @@ -393,6 +395,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "size_bytes": "26", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -401,6 +404,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -611,6 +615,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -774,13 +779,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", - "operation_name": "aws.httpapi", "endpoint": "/httpapi/get", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.protocol": "HTTP/1.1", "http.source_ip": "XXXX", - "http.user_agent": "XXXX/7.64.1", + "http.useragent": "curl/7.64.1", "resource_names": "GET /httpapi/get", "request_id": "XXXX", "apiid": "XXXX", @@ -790,6 +794,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "http.status_code": "200", "http.route": "/httpapi/get", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/x02yirxc7a/stages/$default", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -798,10 +803,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "http" + "type": "web" }, { "trace_id": "XXXX", @@ -979,6 +985,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "partition_key": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:kinesis:EXAMPLE", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -987,6 +994,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1160,6 +1168,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "object_etag": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:s3:::example-bucket", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -1168,6 +1177,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1354,6 +1364,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "subject": "TestInvoke", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -1362,6 +1373,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1535,6 +1547,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "sender_id": "AIDAIENQZJOLO23YVJ4VO", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -1543,6 +1556,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1722,6 +1736,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/p62c47itsb/stages/dev", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -1730,6 +1745,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python314.log b/tests/integration/snapshots/logs/sync-metrics_python314.log index cab7fcbba..7261153e1 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python314.log +++ b/tests/integration/snapshots/logs/sync-metrics_python314.log @@ -34,11 +34,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", - "operation_name": "aws.apigateway.rest", "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/", "endpoint": "/", "http.method": "GET", "resource_names": "GET /", + "http.useragent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36", "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", @@ -48,6 +48,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "_inferred_span.tag_source": "self", "http.status_code": "200", "http.route": "/", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/70ixmpl4fl/stages/Prod", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -56,10 +57,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "http" + "type": "web" }, { "trace_id": "XXXX", @@ -393,6 +395,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "size_bytes": "26", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -401,6 +404,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -611,6 +615,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -774,13 +779,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", - "operation_name": "aws.httpapi", "endpoint": "/httpapi/get", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.protocol": "HTTP/1.1", "http.source_ip": "XXXX", - "http.user_agent": "XXXX/7.64.1", + "http.useragent": "curl/7.64.1", "resource_names": "GET /httpapi/get", "request_id": "XXXX", "apiid": "XXXX", @@ -790,6 +794,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "_inferred_span.tag_source": "self", "http.status_code": "200", "http.route": "/httpapi/get", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/x02yirxc7a/stages/$default", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -798,10 +803,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "http" + "type": "web" }, { "trace_id": "XXXX", @@ -979,6 +985,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "partition_key": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:kinesis:EXAMPLE", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -987,6 +994,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1160,6 +1168,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "object_etag": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:s3:::example-bucket", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -1168,6 +1177,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1354,6 +1364,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "subject": "TestInvoke", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -1362,6 +1373,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1535,6 +1547,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "sender_id": "AIDAIENQZJOLO23YVJ4VO", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -1543,6 +1556,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1722,6 +1736,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/p62c47itsb/stages/dev", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -1730,6 +1745,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python38.log b/tests/integration/snapshots/logs/sync-metrics_python38.log index ae41bc18d..37bbff6e9 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python38.log +++ b/tests/integration/snapshots/logs/sync-metrics_python38.log @@ -34,11 +34,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", - "operation_name": "aws.apigateway.rest", "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/", "endpoint": "/", "http.method": "GET", "resource_names": "GET /", + "http.useragent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36", "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", @@ -48,6 +48,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "http.status_code": "200", "http.route": "/", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/70ixmpl4fl/stages/Prod", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -56,10 +57,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "http" + "type": "web" }, { "trace_id": "XXXX", @@ -393,6 +395,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "size_bytes": "26", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -401,6 +404,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -611,6 +615,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -774,13 +779,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", - "operation_name": "aws.httpapi", "endpoint": "/httpapi/get", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.protocol": "HTTP/1.1", "http.source_ip": "XXXX", - "http.user_agent": "XXXX/7.64.1", + "http.useragent": "curl/7.64.1", "resource_names": "GET /httpapi/get", "request_id": "XXXX", "apiid": "XXXX", @@ -790,6 +794,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "http.status_code": "200", "http.route": "/httpapi/get", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/x02yirxc7a/stages/$default", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -798,10 +803,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "http" + "type": "web" }, { "trace_id": "XXXX", @@ -979,6 +985,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "partition_key": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:kinesis:EXAMPLE", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -987,6 +994,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1160,6 +1168,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "object_etag": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:s3:::example-bucket", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -1168,6 +1177,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1354,6 +1364,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "subject": "TestInvoke", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -1362,6 +1373,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1535,6 +1547,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "sender_id": "AIDAIENQZJOLO23YVJ4VO", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -1543,6 +1556,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1722,6 +1736,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/p62c47itsb/stages/dev", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -1730,6 +1745,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python39.log b/tests/integration/snapshots/logs/sync-metrics_python39.log index 1acb7f0da..cd2a74e04 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -34,11 +34,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", - "operation_name": "aws.apigateway.rest", "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/", "endpoint": "/", "http.method": "GET", "resource_names": "GET /", + "http.useragent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36", "span.kind": "server", "apiid": "XXXX", "apiname": "XXXX", @@ -48,6 +48,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "http.status_code": "200", "http.route": "/", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/70ixmpl4fl/stages/Prod", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -56,10 +57,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "http" + "type": "web" }, { "trace_id": "XXXX", @@ -393,6 +395,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "size_bytes": "26", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -401,6 +404,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -611,6 +615,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -774,13 +779,12 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", - "operation_name": "aws.httpapi", "endpoint": "/httpapi/get", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.protocol": "HTTP/1.1", "http.source_ip": "XXXX", - "http.user_agent": "XXXX/7.64.1", + "http.useragent": "curl/7.64.1", "resource_names": "GET /httpapi/get", "request_id": "XXXX", "apiid": "XXXX", @@ -790,6 +794,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.tag_source": "self", "http.status_code": "200", "http.route": "/httpapi/get", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/x02yirxc7a/stages/$default", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -798,10 +803,11 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, - "type": "http" + "type": "web" }, { "trace_id": "XXXX", @@ -979,6 +985,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "partition_key": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:kinesis:EXAMPLE", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -987,6 +994,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1160,6 +1168,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "object_etag": "XXXX", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:s3:::example-bucket", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -1168,6 +1177,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1354,6 +1364,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "subject": "TestInvoke", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -1362,6 +1373,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1535,6 +1547,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "sender_id": "AIDAIENQZJOLO23YVJ4VO", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -1543,6 +1556,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, @@ -1722,6 +1736,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", "http.status_code": "200", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/p62c47itsb/stages/dev", "peer.service": "integration-tests-python", "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", @@ -1730,6 +1745,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A }, "metrics": { "process_id": XXXX, + "_dd._inferred_span": 1, "_dd.top_level": 1, "_sampling_priority_v1": 1 }, diff --git a/tests/test_tracing.py b/tests/test_tracing.py index 0fddd52ba..ec78265a6 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -1380,7 +1380,6 @@ def test_remaps_all_inferred_span_service_names_from_api_gateway_event(self): ctx.aws_request_id = "123" span1 = create_inferred_span(original_event, ctx) - self.assertEqual(span1.get_tag("operation_name"), "aws.apigateway.rest") self.assertEqual(span1.service, "new-name") # Testing the second event @@ -1389,7 +1388,6 @@ def test_remaps_all_inferred_span_service_names_from_api_gateway_event(self): "domainName" ] = "different.execute-api.us-east-2.amazonaws.com" span2 = create_inferred_span(event2, ctx) - self.assertEqual(span2.get_tag("operation_name"), "aws.apigateway.rest") self.assertEqual(span2.service, "new-name") def test_remaps_specific_inferred_span_service_names_from_api_gateway_event( @@ -1406,14 +1404,12 @@ def test_remaps_specific_inferred_span_service_names_from_api_gateway_event( ctx.aws_request_id = "123" span1 = create_inferred_span(original_event, ctx) - self.assertEqual(span1.get_tag("operation_name"), "aws.apigateway.rest") self.assertEqual(span1.service, "new-name") # Testing the second event event2 = copy.deepcopy(original_event) event2["requestContext"]["apiId"] = "different" span2 = create_inferred_span(event2, ctx) - self.assertEqual(span2.get_tag("operation_name"), "aws.apigateway.rest") self.assertEqual( span2.service, "70ixmpl4fl.execute-api.us-east-2.amazonaws.com" ) @@ -1456,14 +1452,12 @@ def test_remaps_specific_inferred_span_service_names_from_api_gateway_http_event ctx.aws_request_id = "123" span1 = create_inferred_span(original_event, ctx) - self.assertEqual(span1.get_tag("operation_name"), "aws.httpapi") self.assertEqual(span1.service, "new-name") # Testing the second event event2 = copy.deepcopy(original_event) event2["requestContext"]["apiId"] = "different" span2 = create_inferred_span(event2, ctx) - self.assertEqual(span2.get_tag("operation_name"), "aws.httpapi") self.assertEqual( span2.service, "x02yirxc7a.execute-api.eu-west-1.amazonaws.com" ) @@ -1804,7 +1798,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): _Span( service="70ixmpl4fl.execute-api.us-east-2.amazonaws.com", start=1428582896.0, - span_type="http", + span_type="web", tags={ "_dd.origin": "lambda", "_inferred_span.synchronicity": "sync", @@ -1814,7 +1808,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): "endpoint": "/path/to/resource", "http.method": "POST", "http.url": "https://70ixmpl4fl.execute-api.us-east-2.amazonaws.com/path/to/resource", - "operation_name": "aws.apigateway.rest", + "http.useragent": "Custom User Agent String", "request_id": "123", "resource_names": "POST /{proxy+}", "stage": "prod", @@ -1826,7 +1820,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): _Span( service="lgxbo6a518.execute-api.eu-west-1.amazonaws.com", start=1631210915.2510002, - span_type="http", + span_type="web", tags={ "_dd.origin": "lambda", "_inferred_span.synchronicity": "async", @@ -1836,7 +1830,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): "endpoint": "/http/get", "http.method": "GET", "http.url": "https://lgxbo6a518.execute-api.eu-west-1.amazonaws.com/http/get", - "operation_name": "aws.apigateway.rest", + "http.useragent": "curl/7.64.1", "request_id": "123", "resource_names": "GET /http/get", "stage": "dev", @@ -1848,7 +1842,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): _Span( service="lgxbo6a518.execute-api.eu-west-1.amazonaws.com", start=1631210915.2510002, - span_type="http", + span_type="web", tags={ "_dd.origin": "lambda", "_inferred_span.synchronicity": "sync", @@ -1858,7 +1852,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): "endpoint": "/http/get", "http.method": "GET", "http.url": "https://lgxbo6a518.execute-api.eu-west-1.amazonaws.com/http/get", - "operation_name": "aws.apigateway.rest", + "http.useragent": "curl/7.64.1", "request_id": "123", "resource_names": "GET /http/get", "stage": "dev", @@ -1870,7 +1864,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): _Span( service="x02yirxc7a.execute-api.eu-west-1.amazonaws.com", start=1631212283.738, - span_type="http", + span_type="web", tags={ "_dd.origin": "lambda", "_inferred_span.synchronicity": "sync", @@ -1882,8 +1876,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): "http.protocol": "HTTP/1.1", "http.source_ip": "38.122.226.210", "http.url": "https://x02yirxc7a.execute-api.eu-west-1.amazonaws.com/httpapi/get", - "http.user_agent": "curl/7.64.1", - "operation_name": "aws.httpapi", + "http.useragent": "curl/7.64.1", "request_id": "123", "resource_names": "GET /httpapi/get", "stage": "$default", @@ -1895,7 +1888,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): _Span( service="mcwkra0ya4.execute-api.sa-east-1.amazonaws.com", start=1710529824.52, - span_type="http", + span_type="web", tags={ "_dd.origin": "lambda", "_inferred_span.synchronicity": "sync", @@ -1905,7 +1898,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): "endpoint": "/user/42", "http.method": "GET", "http.url": "https://mcwkra0ya4.execute-api.sa-east-1.amazonaws.com/user/42", - "operation_name": "aws.apigateway.rest", + "http.useragent": "curl/8.1.2", "request_id": "123", "resource_names": "GET /user/{id}", "stage": "dev", @@ -1917,7 +1910,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): _Span( service="9vj54we5ih.execute-api.sa-east-1.amazonaws.com", start=1710529905.066, - span_type="http", + span_type="web", tags={ "_dd.origin": "lambda", "_inferred_span.synchronicity": "sync", @@ -1927,7 +1920,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): "endpoint": "/user/42", "http.method": "GET", "http.url": "https://9vj54we5ih.execute-api.sa-east-1.amazonaws.com/user/42", - "operation_name": "aws.httpapi", + "http.useragent": "curl/8.1.2", "request_id": "123", "resource_names": "GET /user/{id}", "stage": "$default", @@ -2186,7 +2179,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): _Span( service="70ixmpl4fl.execute-api.us-east-2.amazonaws.com", start=1428582896.0, - span_type="http", + span_type="web", tags={ "_dd.origin": "lambda", "_inferred_span.synchronicity": "sync", @@ -2196,7 +2189,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): "endpoint": "/path/to/resource", "http.method": "POST", "http.url": "https://70ixmpl4fl.execute-api.us-east-2.amazonaws.com/path/to/resource", - "operation_name": "aws.apigateway.rest", + "http.useragent": "Custom User Agent String", "request_id": "123", "resource_names": "POST /{proxy+}", "stage": "prod", @@ -2208,7 +2201,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): _Span( service="amddr1rix9.execute-api.eu-west-1.amazonaws.com", start=1663295021.832, - span_type="http", + span_type="web", parent_name="aws.apigateway.authorizer", tags={ "_dd.origin": "lambda", @@ -2219,7 +2212,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): "endpoint": "/hello", "http.method": "GET", "http.url": "https://amddr1rix9.execute-api.eu-west-1.amazonaws.com/hello", - "operation_name": "aws.apigateway.rest", + "http.useragent": "PostmanRuntime/7.29.2", "request_id": "123", "resource_names": "GET /hello", "stage": "dev", @@ -2231,7 +2224,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): _Span( service="amddr1rix9.execute-api.eu-west-1.amazonaws.com", start=1666714653.636, - span_type="http", + span_type="web", tags={ "_dd.origin": "lambda", "_inferred_span.synchronicity": "sync", @@ -2241,7 +2234,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): "endpoint": "/hello", "http.method": "GET", "http.url": "https://amddr1rix9.execute-api.eu-west-1.amazonaws.com/hello", - "operation_name": "aws.apigateway.rest", + "http.useragent": "PostmanRuntime/7.29.2", "request_id": "123", "resource_names": "GET /hello", "stage": "dev", @@ -2253,7 +2246,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): _Span( service="amddr1rix9.execute-api.eu-west-1.amazonaws.com", start=1663295021.832, - span_type="http", + span_type="web", parent_name="aws.apigateway.authorizer", tags={ "_dd.origin": "lambda", @@ -2264,7 +2257,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): "endpoint": "/hello", "http.method": "GET", "http.url": "https://amddr1rix9.execute-api.eu-west-1.amazonaws.com/hello", - "operation_name": "aws.apigateway.rest", + "http.useragent": "PostmanRuntime/7.29.2", "request_id": "123", "resource_names": "GET /hello", "stage": "dev", @@ -2276,7 +2269,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): _Span( service="amddr1rix9.execute-api.eu-west-1.amazonaws.com", start=1666803622.99, - span_type="http", + span_type="web", tags={ "_dd.origin": "lambda", "_inferred_span.synchronicity": "sync", @@ -2286,7 +2279,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): "endpoint": "/hello", "http.method": "GET", "http.url": "https://amddr1rix9.execute-api.eu-west-1.amazonaws.com/hello", - "operation_name": "aws.apigateway.rest", + "http.useragent": "PostmanRuntime/7.29.2", "request_id": "123", "resource_names": "GET /hello", "stage": "dev", @@ -2298,7 +2291,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): _Span( service="amddr1rix9.execute-api.eu-west-1.amazonaws.com", start=1664228639.5337753, - span_type="http", + span_type="web", tags={ "_dd.origin": "lambda", "_inferred_span.synchronicity": "sync", @@ -2308,7 +2301,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): "endpoint": "/hello", "http.method": "GET", "http.url": "https://amddr1rix9.execute-api.eu-west-1.amazonaws.com/hello", - "operation_name": "aws.httpapi", + "http.useragent": "curl/7.64.1", "request_id": "123", "resource_names": "GET /hello", "stage": "dev", @@ -2320,7 +2313,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): _Span( service="amddr1rix9.execute-api.eu-west-1.amazonaws.com", start=1666715429.349, - span_type="http", + span_type="web", tags={ "_dd.origin": "lambda", "_inferred_span.synchronicity": "sync", @@ -2330,7 +2323,7 @@ def __init__(self, service, start, span_type, parent_name=None, tags=None): "endpoint": "/hello", "http.method": "GET", "http.url": "https://amddr1rix9.execute-api.eu-west-1.amazonaws.com/hello", - "operation_name": "aws.httpapi", + "http.useragent": "PostmanRuntime/7.29.2", "request_id": "123", "resource_names": "GET /hello", "stage": "dev", From f2a704c251cddbbbb644dc3f8bd6300763b6c97a Mon Sep 17 00:00:00 2001 From: Rithika Narayan <93233069+rithikanarayan@users.noreply.github.com> Date: Fri, 12 Dec 2025 11:39:38 -0500 Subject: [PATCH 330/403] Update Asm Blocked Response (#681) * use block config for block id * linting * Using existing block config * Update dd-trace-py version * update to ddtracepy v3.19.1 --- datadog_lambda/asm.py | 4 +++- pyproject.toml | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/asm.py b/datadog_lambda/asm.py index 6c65a9465..29648021a 100644 --- a/datadog_lambda/asm.py +++ b/datadog_lambda/asm.py @@ -223,7 +223,9 @@ def get_asm_blocked_response( content = "" else: content_type = blocked.get("content-type", "application/json") - content = http_utils._get_blocked_template(content_type) + content = http_utils._get_blocked_template( + content_type, blocked.get("block_id", "default") + ) response = { "statusCode": blocked.get("status_code", 403), diff --git a/pyproject.toml b/pyproject.toml index 29e9c7f2a..6ca4f1476 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -29,7 +29,7 @@ classifiers = [ python = ">=3.8.0,<4" datadog = ">=0.51.0,<1.0.0" wrapt = "^1.11.2" -ddtrace = ">=3.16.2,<3.19.0" +ddtrace = ">=3.19.1,<4" ujson = ">=5.9.0" botocore = { version = "^1.34.0", optional = true } requests = { version ="^2.22.0", optional = true } From 73650f9a0a9ea667a060d7b63d2d41da039e8349 Mon Sep 17 00:00:00 2001 From: Rithika Narayan <93233069+rithikanarayan@users.noreply.github.com> Date: Tue, 16 Dec 2025 14:56:11 -0500 Subject: [PATCH 331/403] Running Gitlab jobs based on skip_e2e_tests variable (#700) * Running Gitlab jobs based on upstream pipeline existence * check value of env var * more prints * removing gate on e2e tests * another print * print * using upstream project name variable * colons * when on success * Replace commit branch with project name * force fail * remove force fail * Use skip e2e tests global variable * check skip_e2e_test=true explicitly * make variable a string --- .gitlab-ci.yml | 7 ++++++- ci/input_files/build.yaml.tpl | 10 ++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 0f36a781d..417398ec4 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,3 +1,6 @@ +variables: + SKIP_E2E_TESTS: "false" + stages: - pre - build @@ -25,5 +28,7 @@ build-layers: - artifact: ci/build-pipeline.yaml job: generator strategy: depend + forward: + pipeline_variables: true rules: - - when: on_success + - when: on_success \ No newline at end of file diff --git a/ci/input_files/build.yaml.tpl b/ci/input_files/build.yaml.tpl index 599160fbf..10ff9984a 100644 --- a/ci/input_files/build.yaml.tpl +++ b/ci/input_files/build.yaml.tpl @@ -142,6 +142,8 @@ publish-layer-{{ $environment_name }} ({{ $runtime.name }}-{{ $runtime.arch }}): tags: ["arch:amd64"] image: registry.ddbuild.io/images/docker:20.10-py3 rules: + - if: '$SKIP_E2E_TESTS == "true"' + when: never - if: '"{{ $environment_name }}" == "sandbox" && $REGION == "{{ $e2e_region }}" && "{{ $runtime.arch }}" == "amd64"' when: on_success - if: '"{{ $environment_name }}" == "sandbox"' @@ -247,6 +249,10 @@ e2e-test: trigger: project: DataDog/serverless-e2e-tests strategy: depend + rules: + - if: '$SKIP_E2E_TESTS == "true"' + when: never + - when: on_success variables: LANGUAGES_SUBSET: python # These env vars are inherited from the dotenv reports of the publish-layer jobs @@ -267,6 +273,10 @@ e2e-test-status: image: registry.ddbuild.io/images/docker:20.10-py3 tags: ["arch:amd64"] timeout: 3h + rules: + - if: '$SKIP_E2E_TESTS == "true"' + when: never + - when: on_success script: | GITLAB_API_TOKEN=$(aws ssm get-parameter --region us-east-1 --name "ci.${CI_PROJECT_NAME}.serverless-e2e-gitlab-token" --with-decryption --query "Parameter.Value" --out text) URL="${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/pipelines/${CI_PIPELINE_ID}/bridges" From 8395f838ec1ecc98a6f2109184f1ec1c2b196a64 Mon Sep 17 00:00:00 2001 From: Rithika Narayan <93233069+rithikanarayan@users.noreply.github.com> Date: Wed, 24 Dec 2025 12:38:34 -0500 Subject: [PATCH 332/403] Address flakiness of Gitlab jobs (#703) * Add retries to build, unit test, and integration test Gitlab jobs * Don't trigger integration tests from dd-trace-py * Add timeout to build jobs --- ci/input_files/build.yaml.tpl | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/ci/input_files/build.yaml.tpl b/ci/input_files/build.yaml.tpl index 10ff9984a..67f13706f 100644 --- a/ci/input_files/build.yaml.tpl +++ b/ci/input_files/build.yaml.tpl @@ -54,6 +54,8 @@ build-layer ({{ $runtime.name }}-{{ $runtime.arch }}): CI_ENABLE_CONTAINER_IMAGE_BUILDS: "true" script: - PYTHON_VERSION={{ $runtime.python_version }} ARCH={{ $runtime.arch }} ./scripts/build_layers.sh + timeout: 15m + retry: 2 check-layer-size ({{ $runtime.name }}-{{ $runtime.arch }}): stage: test @@ -85,11 +87,16 @@ unit-test ({{ $runtime.name }}-{{ $runtime.arch }}): script: - source venv/bin/activate - pytest -vv + retry: 2 integration-test ({{ $runtime.name }}-{{ $runtime.arch }}): stage: test tags: ["arch:amd64"] image: registry.ddbuild.io/images/docker:20.10-py3 + rules: + - if: '$SKIP_E2E_TESTS == "true"' + when: never + - when: on_success needs: - build-layer ({{ $runtime.name }}-{{ $runtime.arch }}) dependencies: @@ -105,6 +112,7 @@ integration-test ({{ $runtime.name }}-{{ $runtime.arch }}): - cd integration_tests && yarn install && cd .. script: - RUNTIME_PARAM={{ $runtime.python_version }} ARCH={{ $runtime.arch }} ./scripts/run_integration_tests.sh + retry: 2 sign-layer ({{ $runtime.name }}-{{ $runtime.arch }}): stage: sign From 23dfcd2f740f5efb69f6f51a23f2ef7e586ced6b Mon Sep 17 00:00:00 2001 From: Rithika Narayan <93233069+rithikanarayan@users.noreply.github.com> Date: Fri, 26 Dec 2025 15:04:23 -0500 Subject: [PATCH 333/403] Support ddtrace v4 (#701) * Runtime dependent pyproject.toml * brackets * remove additional quotation marks * overwrote ddtrace value * refactoring pyproject.toml dependencies * rename to project * update authors * move python requirement * have tool.poetry and project * duplicate * fix python requires * have both tool.poetry.dependencies and project.dependencies * re-add tool.poetry.extras * optional dependencies in poetry * conditional ddtrace version * reducing diff * re-add python dependency in poetry * downgrade for python 3.9 * Use dd-trace-py v4.1.1 or above for runtime >= 3.10 * Removing duplicated sections --- pyproject.toml | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index 6ca4f1476..a9eeca237 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,8 +3,12 @@ name = "datadog_lambda" version = "8.121.0.dev0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] + +[project] +name = "datadog_lambda" license = "Apache-2.0" readme = "README.md" +requires-python = ">=3.8.0,<4" repository = "https://github.com/DataDog/datadog-lambda-python" keywords = [ "datadog", @@ -12,10 +16,18 @@ keywords = [ "lambda", "layer", ] +dependencies = [ + "datadog>=0.51.0,<1.0.0", + "wrapt>=1.11.2,<2", + "ddtrace>=3.19.1,<4; python_version>='3.9.0' and python_version < '3.10'", + "ddtrace>=4.1.1,<5; python_version>='3.10.0'", + "ujson>=5.9.0", +] packages = [ { include = "datadog_lambda" } ] classifiers = [ + "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", @@ -25,6 +37,8 @@ classifiers = [ "Programming Language :: Python :: 3.14", ] +# can remove tool.poetry.depencies and tool.poetry.extras +# after deprecation of Python 3.8 [tool.poetry.dependencies] python = ">=3.8.0,<4" datadog = ">=0.51.0,<1.0.0" @@ -46,6 +60,15 @@ dev = [ "requests", ] +[project.optional-dependencies] +dev = [ + "botocore>=1.34.0,<2", + "requests>=2.22.0,<3", + "pytest>=8.0.0,<9", + "pytest-benchmark>=4.0,<5", + "flake8>=5.0.4,<6", +] + [build-system] requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api" From 1f9a316263131ec8022e784855df34e6fba9a9e0 Mon Sep 17 00:00:00 2001 From: Rithika Narayan <93233069+rithikanarayan@users.noreply.github.com> Date: Tue, 30 Dec 2025 12:05:13 -0500 Subject: [PATCH 334/403] Trigger layer version update in documentation (#704) * Trigger version update in documentation * typo * Move input to variables * Needs pypi package * both pypi and layers * testing trigger * Remove testing --- ci/input_files/build.yaml.tpl | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/ci/input_files/build.yaml.tpl b/ci/input_files/build.yaml.tpl index 67f13706f..6820057dd 100644 --- a/ci/input_files/build.yaml.tpl +++ b/ci/input_files/build.yaml.tpl @@ -206,6 +206,22 @@ publish-pypi-package: script: - ./ci/publish_pypi.sh +update-layer-versions-docs: + stage: publish + trigger: + project: DataDog/serverless-ci + rules: + - if: '$CI_COMMIT_TAG =~ /^v.*/' + needs: {{ range $runtime := (ds "runtimes").runtimes }} + - publish-layer-prod ({{ $runtime.name }}-{{ $runtime.arch}}) + {{- end }} + - publish-pypi-package + variables: + RUN_LAMBDA_LAYER_DOCUMENTATION: "true" + RUN_LAMBDA_DATADOG_CI: "true" + RUN_LAMBDA_UI_LAYER_VERSIONS: "true" + RUN_LAMBDA_RUNTIMES: "true" + layer bundle: stage: build tags: ["arch:amd64"] From 8c6590128608bb616387d1965ecba59a4bb8daaf Mon Sep 17 00:00:00 2001 From: Rithika Narayan <93233069+rithikanarayan@users.noreply.github.com> Date: Tue, 6 Jan 2026 09:59:47 -0500 Subject: [PATCH 335/403] v121 (#705) --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index 9ce3b4e79..537f13a73 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "8.121.0.dev0" +__version__ = "8.121.0" diff --git a/pyproject.toml b/pyproject.toml index a9eeca237..3f152b9d8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "8.121.0.dev0" +version = "8.121.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] From f83c1c314347f947af45ea0579c2ede34fa735fd Mon Sep 17 00:00:00 2001 From: Rithika Narayan <93233069+rithikanarayan@users.noreply.github.com> Date: Tue, 6 Jan 2026 10:46:54 -0500 Subject: [PATCH 336/403] Revert "v121 (#705)" (#706) This reverts commit 8c6590128608bb616387d1965ecba59a4bb8daaf. --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index 537f13a73..9ce3b4e79 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "8.121.0" +__version__ = "8.121.0.dev0" diff --git a/pyproject.toml b/pyproject.toml index 3f152b9d8..a9eeca237 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "8.121.0" +version = "8.121.0.dev0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] From cb34422f2c35435d46306adb2f26fb5c99f5ec97 Mon Sep 17 00:00:00 2001 From: Rithika Narayan <93233069+rithikanarayan@users.noreply.github.com> Date: Tue, 6 Jan 2026 16:22:25 -0500 Subject: [PATCH 337/403] Revert "Trigger layer version update in documentation (#704)" (#708) This reverts commit 1f9a316263131ec8022e784855df34e6fba9a9e0. --- ci/input_files/build.yaml.tpl | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/ci/input_files/build.yaml.tpl b/ci/input_files/build.yaml.tpl index 6820057dd..67f13706f 100644 --- a/ci/input_files/build.yaml.tpl +++ b/ci/input_files/build.yaml.tpl @@ -206,22 +206,6 @@ publish-pypi-package: script: - ./ci/publish_pypi.sh -update-layer-versions-docs: - stage: publish - trigger: - project: DataDog/serverless-ci - rules: - - if: '$CI_COMMIT_TAG =~ /^v.*/' - needs: {{ range $runtime := (ds "runtimes").runtimes }} - - publish-layer-prod ({{ $runtime.name }}-{{ $runtime.arch}}) - {{- end }} - - publish-pypi-package - variables: - RUN_LAMBDA_LAYER_DOCUMENTATION: "true" - RUN_LAMBDA_DATADOG_CI: "true" - RUN_LAMBDA_UI_LAYER_VERSIONS: "true" - RUN_LAMBDA_RUNTIMES: "true" - layer bundle: stage: build tags: ["arch:amd64"] From 9951c3d49e1e97b4228a4a05ab26cd83d47cb4c2 Mon Sep 17 00:00:00 2001 From: Brett Langdon Date: Wed, 7 Jan 2026 10:54:25 -0500 Subject: [PATCH 338/403] ci: fix broken dd-trace-py wheel downloading (#710) * ci: fix broken dd-trace-py wheel downloading * debug * fix platform tag * add necessary --no-index --- .github/workflows/build_layer.yml | 54 +++++-------------------------- 1 file changed, 8 insertions(+), 46 deletions(-) diff --git a/.github/workflows/build_layer.yml b/.github/workflows/build_layer.yml index fc22e9ce4..1725975f7 100644 --- a/.github/workflows/build_layer.yml +++ b/.github/workflows/build_layer.yml @@ -8,32 +8,9 @@ on: - "main" jobs: - get-ddtrace-run-id: - runs-on: ubuntu-latest - outputs: - run-id: ${{ steps.get-ddtrace-run-id.outputs.run_id }} - steps: - - name: Resolve Run ID of latest dd-trace-py build - id: get-ddtrace-run-id - env: - GH_TOKEN: ${{ github.token }} - run: | - RUN_ID=$(gh run list \ - --repo DataDog/dd-trace-py \ - --workflow build_deploy.yml \ - --branch main \ - --status success \ - --limit 1 \ - --json databaseId \ - --jq '.[0].databaseId') - - echo "run_id=$RUN_ID" >> $GITHUB_OUTPUT - build: runs-on: ${{ matrix.arch == 'arm64' && 'ubuntu-24.04-arm' || 'ubuntu-latest' }} - needs: get-ddtrace-run-id - strategy: fail-fast: false matrix: @@ -44,33 +21,18 @@ jobs: - name: Checkout uses: actions/checkout@v4 - - name: Build artifact name - id: build-artifact-name + - name: Download ddtrace Wheel + id: find-ddtrace-wheel run: | - if [ "${{ matrix.arch }}" == "amd64" ]; then - ARCH="x86_64" + # Convert matrix.arch into pip platform tag + if [ "${{ matrix.arch }}" = "amd64" ]; then + PLATFORM_TAG="manylinux_2_17_x86_64" else - ARCH="aarch64" + PLATFORM_TAG="manylinux_2_17_aarch64" fi - VER="${{ matrix.python_version }}" - PY_VERSION_NO_DOT="${VER//./}" - - echo "artifact_name=wheels-cp${PY_VERSION_NO_DOT}-manylinux_${ARCH}" >> $GITHUB_OUTPUT - - - name: Download ddtrace Wheel - uses: actions/download-artifact@v4 - with: - name: ${{ steps.build-artifact-name.outputs.artifact_name }} - repository: DataDog/dd-trace-py - run-id: ${{ needs.get-ddtrace-run-id.outputs.run-id }} - github-token: ${{ secrets.GITHUB_TOKEN }} - path: ./artifacts - - - name: Find ddtrace Wheel - id: find-ddtrace-wheel - run: | - echo "wheel_path=$(find ./artifacts -name "*.whl" | head -n 1)" >> $GITHUB_OUTPUT + pip download --no-index --no-deps --find-links https://dd-trace-py-builds.s3.amazonaws.com/main/index.html --pre --python-version "${{ matrix.python_version}}" --platform "${PLATFORM_TAG}" ddtrace + echo "wheel_path=$(find . -name "*.whl" | head -n 1)" >> $GITHUB_OUTPUT - name: Patch pyproject.toml run: | From b2a82fa8f0c5aefe6feb68c489b9e58282b93f6c Mon Sep 17 00:00:00 2001 From: Rithika Narayan <93233069+rithikanarayan@users.noreply.github.com> Date: Mon, 12 Jan 2026 10:32:59 -0500 Subject: [PATCH 339/403] Revert "Revert "v121 (#705)" (#706)" (#711) This reverts commit f83c1c314347f947af45ea0579c2ede34fa735fd. --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index 9ce3b4e79..537f13a73 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "8.121.0.dev0" +__version__ = "8.121.0" diff --git a/pyproject.toml b/pyproject.toml index a9eeca237..3f152b9d8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "8.121.0.dev0" +version = "8.121.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] From 3ece8ec868c9a6158d164bfb6cbce55d1b59c1a4 Mon Sep 17 00:00:00 2001 From: Rithika Narayan Date: Mon, 12 Jan 2026 12:44:49 -0500 Subject: [PATCH 340/403] v8.122.0.dev0 --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index 537f13a73..2c988bd81 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "8.121.0" +__version__ = "8.122.0.dev0" diff --git a/pyproject.toml b/pyproject.toml index 3f152b9d8..cf1b2507e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "8.121.0" +version = "8.122.0.dev0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] From aee684256a0d97449320ed6c4af83c76d166398e Mon Sep 17 00:00:00 2001 From: Rithika Narayan <93233069+rithikanarayan@users.noreply.github.com> Date: Mon, 2 Feb 2026 12:42:02 -0500 Subject: [PATCH 341/403] Clean up pyproject.toml (#714) * Remove project sections * fixing github actions --- .github/workflows/build_layer.yml | 2 +- pyproject.toml | 30 +++++------------------------- 2 files changed, 6 insertions(+), 26 deletions(-) diff --git a/.github/workflows/build_layer.yml b/.github/workflows/build_layer.yml index 1725975f7..db8329b5e 100644 --- a/.github/workflows/build_layer.yml +++ b/.github/workflows/build_layer.yml @@ -37,7 +37,7 @@ jobs: - name: Patch pyproject.toml run: | echo "Patching pyproject.toml to use latest build of dd-trace-py" - sed -i 's|^ddtrace =.*$|ddtrace = { file = "${{ steps.find-ddtrace-wheel.outputs.wheel_path }}" }|' pyproject.toml + sed -zEi 's|^ddtrace =.*$|ddtrace = { file = "${{ steps.find-ddtrace-wheel.outputs.wheel_path }}" }|' pyproject.toml - name: Build layer for Python ${{ matrix.python_version }} on ${{ matrix.arch }} run: | diff --git a/pyproject.toml b/pyproject.toml index cf1b2507e..355dee300 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,12 +3,8 @@ name = "datadog_lambda" version = "8.122.0.dev0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] - -[project] -name = "datadog_lambda" license = "Apache-2.0" readme = "README.md" -requires-python = ">=3.8.0,<4" repository = "https://github.com/DataDog/datadog-lambda-python" keywords = [ "datadog", @@ -16,18 +12,10 @@ keywords = [ "lambda", "layer", ] -dependencies = [ - "datadog>=0.51.0,<1.0.0", - "wrapt>=1.11.2,<2", - "ddtrace>=3.19.1,<4; python_version>='3.9.0' and python_version < '3.10'", - "ddtrace>=4.1.1,<5; python_version>='3.10.0'", - "ujson>=5.9.0", -] packages = [ { include = "datadog_lambda" } ] classifiers = [ - "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", @@ -37,13 +25,14 @@ classifiers = [ "Programming Language :: Python :: 3.14", ] -# can remove tool.poetry.depencies and tool.poetry.extras -# after deprecation of Python 3.8 [tool.poetry.dependencies] python = ">=3.8.0,<4" datadog = ">=0.51.0,<1.0.0" wrapt = "^1.11.2" -ddtrace = ">=3.19.1,<4" +ddtrace = [ + {version = ">=3.19.1,<4", python = ">=3.8,<3.10"}, + {version = ">=4.1.1,<5", python = ">=3.10"} +] ujson = ">=5.9.0" botocore = { version = "^1.34.0", optional = true } requests = { version ="^2.22.0", optional = true } @@ -60,18 +49,9 @@ dev = [ "requests", ] -[project.optional-dependencies] -dev = [ - "botocore>=1.34.0,<2", - "requests>=2.22.0,<3", - "pytest>=8.0.0,<9", - "pytest-benchmark>=4.0,<5", - "flake8>=5.0.4,<6", -] - [build-system] requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api" [tool.pytest.ini_options] -addopts = "--benchmark-disable --benchmark-autosave" +addopts = "--benchmark-disable --benchmark-autosave" \ No newline at end of file From 0287c5de1299f5c6511b0e7088d94b30e700dd5d Mon Sep 17 00:00:00 2001 From: Rithika Narayan <93233069+rithikanarayan@users.noreply.github.com> Date: Mon, 2 Feb 2026 12:56:48 -0500 Subject: [PATCH 342/403] v8.122.0 (#715) --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index 2c988bd81..09b00f329 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "8.122.0.dev0" +__version__ = "8.122.0" diff --git a/pyproject.toml b/pyproject.toml index 355dee300..ab95de194 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "8.122.0.dev0" +version = "8.122.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 7c36e9a97ed43eb919309d3853e027cd23eea1af Mon Sep 17 00:00:00 2001 From: Rithika Narayan Date: Mon, 2 Feb 2026 15:01:56 -0500 Subject: [PATCH 343/403] v8.123.0.dev0 --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index 09b00f329..a329cafa0 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "8.122.0" +__version__ = "8.123.0.dev0" diff --git a/pyproject.toml b/pyproject.toml index ab95de194..f5a49eadc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "8.122.0" +version = "8.123.0.dev0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From aa9cbba18b15a579a4e9f4964fa725ff8abb09ca Mon Sep 17 00:00:00 2001 From: Rithika Narayan <93233069+rithikanarayan@users.noreply.github.com> Date: Tue, 3 Feb 2026 09:36:24 -0500 Subject: [PATCH 344/403] Revert "Clean up pyproject.toml (#714)" (#719) This reverts commit aee684256a0d97449320ed6c4af83c76d166398e. --- .github/workflows/build_layer.yml | 2 +- pyproject.toml | 30 +++++++++++++++++++++++++----- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build_layer.yml b/.github/workflows/build_layer.yml index db8329b5e..1725975f7 100644 --- a/.github/workflows/build_layer.yml +++ b/.github/workflows/build_layer.yml @@ -37,7 +37,7 @@ jobs: - name: Patch pyproject.toml run: | echo "Patching pyproject.toml to use latest build of dd-trace-py" - sed -zEi 's|^ddtrace =.*$|ddtrace = { file = "${{ steps.find-ddtrace-wheel.outputs.wheel_path }}" }|' pyproject.toml + sed -i 's|^ddtrace =.*$|ddtrace = { file = "${{ steps.find-ddtrace-wheel.outputs.wheel_path }}" }|' pyproject.toml - name: Build layer for Python ${{ matrix.python_version }} on ${{ matrix.arch }} run: | diff --git a/pyproject.toml b/pyproject.toml index f5a49eadc..d8aa42018 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,8 +3,12 @@ name = "datadog_lambda" version = "8.123.0.dev0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] + +[project] +name = "datadog_lambda" license = "Apache-2.0" readme = "README.md" +requires-python = ">=3.8.0,<4" repository = "https://github.com/DataDog/datadog-lambda-python" keywords = [ "datadog", @@ -12,10 +16,18 @@ keywords = [ "lambda", "layer", ] +dependencies = [ + "datadog>=0.51.0,<1.0.0", + "wrapt>=1.11.2,<2", + "ddtrace>=3.19.1,<4; python_version>='3.9.0' and python_version < '3.10'", + "ddtrace>=4.1.1,<5; python_version>='3.10.0'", + "ujson>=5.9.0", +] packages = [ { include = "datadog_lambda" } ] classifiers = [ + "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", @@ -25,14 +37,13 @@ classifiers = [ "Programming Language :: Python :: 3.14", ] +# can remove tool.poetry.depencies and tool.poetry.extras +# after deprecation of Python 3.8 [tool.poetry.dependencies] python = ">=3.8.0,<4" datadog = ">=0.51.0,<1.0.0" wrapt = "^1.11.2" -ddtrace = [ - {version = ">=3.19.1,<4", python = ">=3.8,<3.10"}, - {version = ">=4.1.1,<5", python = ">=3.10"} -] +ddtrace = ">=3.19.1,<4" ujson = ">=5.9.0" botocore = { version = "^1.34.0", optional = true } requests = { version ="^2.22.0", optional = true } @@ -49,9 +60,18 @@ dev = [ "requests", ] +[project.optional-dependencies] +dev = [ + "botocore>=1.34.0,<2", + "requests>=2.22.0,<3", + "pytest>=8.0.0,<9", + "pytest-benchmark>=4.0,<5", + "flake8>=5.0.4,<6", +] + [build-system] requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api" [tool.pytest.ini_options] -addopts = "--benchmark-disable --benchmark-autosave" \ No newline at end of file +addopts = "--benchmark-disable --benchmark-autosave" From 88bf2f2a5cae91396fff83a57ff2d950f7d2eade Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?jordan=20gonz=C3=A1lez?= <30836115+duncanista@users.noreply.github.com> Date: Thu, 5 Feb 2026 12:00:50 -0800 Subject: [PATCH 345/403] fix: omit creating cold start on LMI (#716) * omit creating cold start on LMI * set env in config instead of using os to do it --- datadog_lambda/cold_start.py | 17 +++++++++++++ datadog_lambda/config.py | 1 + datadog_lambda/wrapper.py | 9 ++++++- tests/test_cold_start.py | 46 ++++++++++++++++++++++++++++++++++++ 4 files changed, 72 insertions(+), 1 deletion(-) diff --git a/datadog_lambda/cold_start.py b/datadog_lambda/cold_start.py index a40e2fcb3..260d491b8 100644 --- a/datadog_lambda/cold_start.py +++ b/datadog_lambda/cold_start.py @@ -63,6 +63,19 @@ def get_proactive_init_tag(): ) +def is_managed_instances_mode(): + """ + Checks if the Lambda function is running in managed instances mode. + In managed instances mode, we should not create cold start tracing spans + as the gap between the sandbox initialization and the first + invocation might not be be a great experience. + + Returns: + bool: True if running in managed instances mode, False otherwise + """ + return config.aws_lambda_initialization_type == "lambda-managed-instances" + + class ImportNode(object): def __init__(self, module_name, full_file_path, start_time_ns, end_time_ns=None): self.module_name = module_name @@ -145,6 +158,10 @@ def wrapped_find_spec(*args, **kwargs): def initialize_cold_start_tracing(): + # Skip cold start tracing initialization in managed instances mode + if is_managed_instances_mode(): + return + if is_new_sandbox() and config.cold_start_tracing: from sys import meta_path diff --git a/datadog_lambda/config.py b/datadog_lambda/config.py index eda6b5828..9960953ec 100644 --- a/datadog_lambda/config.py +++ b/datadog_lambda/config.py @@ -98,6 +98,7 @@ def _resolve_env(self, key, default=None, cast=None, depends_on_tracing=False): integration_test = _get_env("DD_INTEGRATION_TEST", "false", as_bool) aws_lambda_function_name = _get_env("AWS_LAMBDA_FUNCTION_NAME") + aws_lambda_initialization_type = _get_env("AWS_LAMBDA_INITIALIZATION_TYPE") @property def function_name(self): diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 5a32e2ff9..b2f83f138 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -16,6 +16,7 @@ is_cold_start, is_proactive_init, is_new_sandbox, + is_managed_instances_mode, ColdStartTracer, ) from datadog_lambda.config import config @@ -338,7 +339,13 @@ def _after(self, event, context): create_dd_dummy_metadata_subsegment( self.trigger_tags, XraySubsegment.LAMBDA_FUNCTION_TAGS_KEY ) - should_trace_cold_start = config.cold_start_tracing and is_new_sandbox() + # Skip creating cold start spans in managed instances mode + # In managed instances, the tracer library handles cold start independently + should_trace_cold_start = ( + config.cold_start_tracing + and is_new_sandbox() + and not is_managed_instances_mode() + ) if should_trace_cold_start: trace_ctx = tracer.current_trace_context() diff --git a/tests/test_cold_start.py b/tests/test_cold_start.py index d75b5f43a..858db9a51 100644 --- a/tests/test_cold_start.py +++ b/tests/test_cold_start.py @@ -12,6 +12,52 @@ class TestColdStartTracingSetup(unittest.TestCase): + def test_is_managed_instances_mode_when_set(self): + os.environ["AWS_LAMBDA_INITIALIZATION_TYPE"] = "lambda-managed-instances" + self.assertTrue(cold_start.is_managed_instances_mode()) + # Clean up + if "AWS_LAMBDA_INITIALIZATION_TYPE" in os.environ: + del os.environ["AWS_LAMBDA_INITIALIZATION_TYPE"] + + def test_is_not_managed_instances_mode_when_not_set(self): + if "AWS_LAMBDA_INITIALIZATION_TYPE" in os.environ: + del os.environ["AWS_LAMBDA_INITIALIZATION_TYPE"] + self.assertFalse(cold_start.is_managed_instances_mode()) + + def test_is_not_managed_instances_mode_with_different_value(self): + os.environ["AWS_LAMBDA_INITIALIZATION_TYPE"] = "on-demand" + self.assertFalse(cold_start.is_managed_instances_mode()) + # Clean up + if "AWS_LAMBDA_INITIALIZATION_TYPE" in os.environ: + del os.environ["AWS_LAMBDA_INITIALIZATION_TYPE"] + + def test_initialize_cold_start_tracing_skips_in_managed_instances(self): + # Set managed instances mode + os.environ["AWS_LAMBDA_INITIALIZATION_TYPE"] = "lambda-managed-instances" + os.environ["DD_COLD_START_TRACING"] = "true" + cold_start._cold_start = True + cold_start._lambda_container_initialized = False + + # Reset node stacks and wrapped loaders to get clean state + cold_start.reset_node_stacks() + cold_start.already_wrapped_loaders.clear() + + # Count wrapped loaders before + wrapped_loaders_before = len(cold_start.already_wrapped_loaders) + + # Initialize cold start tracing - should skip in managed instances mode + cold_start.initialize_cold_start_tracing() + + # Verify no loaders were wrapped + wrapped_loaders_after = len(cold_start.already_wrapped_loaders) + self.assertEqual(wrapped_loaders_before, wrapped_loaders_after) + + # Clean up + if "AWS_LAMBDA_INITIALIZATION_TYPE" in os.environ: + del os.environ["AWS_LAMBDA_INITIALIZATION_TYPE"] + if "DD_COLD_START_TRACING" in os.environ: + del os.environ["DD_COLD_START_TRACING"] + def test_proactive_init(self): cold_start._cold_start = True cold_start._proactive_initialization = False From 8cfa94f84c88b0e000b39763e1ce99be4937fb06 Mon Sep 17 00:00:00 2001 From: Rithika Narayan <93233069+rithikanarayan@users.noreply.github.com> Date: Fri, 6 Feb 2026 10:08:46 -0500 Subject: [PATCH 346/403] Revert pyproject.toml changes, refactor sed command (#720) * Revert pyproject.toml changes and add environment variable for ddtrace wheel sed command * version typo * add commit branch variable * prints * fix environment variable checks * Remove debug prints * eof newline --- .github/workflows/build_layer.yml | 7 +------ pyproject.toml | 28 ++++------------------------ scripts/build_layers.sh | 8 ++++++++ 3 files changed, 13 insertions(+), 30 deletions(-) diff --git a/.github/workflows/build_layer.yml b/.github/workflows/build_layer.yml index 1725975f7..e21f16336 100644 --- a/.github/workflows/build_layer.yml +++ b/.github/workflows/build_layer.yml @@ -34,15 +34,10 @@ jobs: pip download --no-index --no-deps --find-links https://dd-trace-py-builds.s3.amazonaws.com/main/index.html --pre --python-version "${{ matrix.python_version}}" --platform "${PLATFORM_TAG}" ddtrace echo "wheel_path=$(find . -name "*.whl" | head -n 1)" >> $GITHUB_OUTPUT - - name: Patch pyproject.toml - run: | - echo "Patching pyproject.toml to use latest build of dd-trace-py" - sed -i 's|^ddtrace =.*$|ddtrace = { file = "${{ steps.find-ddtrace-wheel.outputs.wheel_path }}" }|' pyproject.toml - - name: Build layer for Python ${{ matrix.python_version }} on ${{ matrix.arch }} run: | echo "Building layer for Python ${{ matrix.python_version }} on ${{ matrix.arch }}" - ARCH=${{ matrix.arch }} PYTHON_VERSION=${{ matrix.python_version }} ./scripts/build_layers.sh + ARCH=${{ matrix.arch }} PYTHON_VERSION=${{ matrix.python_version }} DD_TRACE_WHEEL="${{ steps.find-ddtrace-wheel.outputs.wheel_path }}" ./scripts/build_layers.sh - name: Upload layer artifact uses: actions/upload-artifact@v4 diff --git a/pyproject.toml b/pyproject.toml index d8aa42018..ee15e3876 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,12 +3,8 @@ name = "datadog_lambda" version = "8.123.0.dev0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] - -[project] -name = "datadog_lambda" license = "Apache-2.0" readme = "README.md" -requires-python = ">=3.8.0,<4" repository = "https://github.com/DataDog/datadog-lambda-python" keywords = [ "datadog", @@ -16,18 +12,10 @@ keywords = [ "lambda", "layer", ] -dependencies = [ - "datadog>=0.51.0,<1.0.0", - "wrapt>=1.11.2,<2", - "ddtrace>=3.19.1,<4; python_version>='3.9.0' and python_version < '3.10'", - "ddtrace>=4.1.1,<5; python_version>='3.10.0'", - "ujson>=5.9.0", -] packages = [ { include = "datadog_lambda" } ] classifiers = [ - "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", @@ -37,13 +25,14 @@ classifiers = [ "Programming Language :: Python :: 3.14", ] -# can remove tool.poetry.depencies and tool.poetry.extras -# after deprecation of Python 3.8 [tool.poetry.dependencies] python = ">=3.8.0,<4" datadog = ">=0.51.0,<1.0.0" wrapt = "^1.11.2" -ddtrace = ">=3.19.1,<4" +ddtrace = [ + {version = ">=3.19.1,<4", python = ">=3.8,<3.10"}, + {version = ">=4.1.1,<5", python = ">=3.10"} +] ujson = ">=5.9.0" botocore = { version = "^1.34.0", optional = true } requests = { version ="^2.22.0", optional = true } @@ -60,15 +49,6 @@ dev = [ "requests", ] -[project.optional-dependencies] -dev = [ - "botocore>=1.34.0,<2", - "requests>=2.22.0,<3", - "pytest>=8.0.0,<9", - "pytest-benchmark>=4.0,<5", - "flake8>=5.0.4,<6", -] - [build-system] requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api" diff --git a/scripts/build_layers.sh b/scripts/build_layers.sh index b78ca9abe..f10b9dbf9 100755 --- a/scripts/build_layers.sh +++ b/scripts/build_layers.sh @@ -46,6 +46,14 @@ else PYTHON_VERSIONS=$PYTHON_VERSION fi +# Replace ddtrace wheel used if necessary +if [ -n "$DD_TRACE_COMMIT_BRANCH" ]; then + sed -z -E -i 's|(ddtrace = )\[[^]]*]|\1{ git = "https://github.com/DataDog/dd-trace-py.git", branch = \"'"$DD_TRACE_COMMIT_BRANCH"'\" }|g' pyproject.toml +else + if [ -n "$DD_TRACE_WHEEL" ]; then + sed -z -E -i 's|(ddtrace = )\[[^]]*]|\1{ file = "'"$DD_TRACE_WHEEL"'" }|g' pyproject.toml + fi +fi function make_path_absolute { echo "$(cd "$(dirname "$1")"; pwd)/$(basename "$1")" From 1031435740d8a86e1365dabfb4061f3f1563b28b Mon Sep 17 00:00:00 2001 From: Yiming Luo Date: Fri, 20 Feb 2026 17:09:37 -0500 Subject: [PATCH 347/403] fix: normalize runtime version format in integration test log comparison (#729) The Lambda runtime now emits versions like `python:3.10.mainlinev2.v3` instead of the old `python:3.10.v3` format, causing snapshot mismatches. Broaden the sed pattern to match any alphanumeric version suffix. Co-authored-by: Claude Sonnet 4.6 --- scripts/run_integration_tests.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/run_integration_tests.sh b/scripts/run_integration_tests.sh index 1dfa72b6b..1ec552897 100755 --- a/scripts/run_integration_tests.sh +++ b/scripts/run_integration_tests.sh @@ -199,7 +199,7 @@ for handler_name in "${LAMBDA_HANDLERS[@]}"; do sed '/^$/d' | # Normalize Lambda runtime REPORT logs sed -E 's/(RequestId|TraceId|SegmentId|Duration|init|Memory Used|"e"): [a-z0-9\.\-]+/\1: XXXX/g' | - sed -E 's/(python:3.[0-9]+\.v)[0-9]+/\1X/g' | + sed -E 's/(python:3\.[0-9]+\.)[a-zA-Z0-9\.]+/\1vX/g' | # Normalize HTTP headers sed -E "s/(x-datadog-parent-id:|x-datadog-trace-id:|Content-Length:)[0-9]+/\1XXXX/g" | # Remove Account ID From 1fafd5edd164bfdb5c949722bfd5ab09bed07241 Mon Sep 17 00:00:00 2001 From: Yiming Luo Date: Mon, 23 Feb 2026 10:13:08 -0500 Subject: [PATCH 348/403] feat: add durable function execution tags to Lambda spans (#728) * feat: add durable function execution tags to Lambda spans Extract DurableExecutionArn from the Lambda event payload and add durable_function_execution_name and durable_function_execution_id as span tags, matching the equivalent feature in datadog-lambda-js#730. Co-Authored-By: Claude Sonnet 4.6 * Change log level from debug to error * Format * fmt * Fix long line --------- Co-authored-by: Claude Sonnet 4.6 --- datadog_lambda/durable.py | 49 +++++++++++++++++++++ datadog_lambda/tracing.py | 3 ++ datadog_lambda/wrapper.py | 3 ++ tests/test_durable.py | 91 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 146 insertions(+) create mode 100644 datadog_lambda/durable.py create mode 100644 tests/test_durable.py diff --git a/datadog_lambda/durable.py b/datadog_lambda/durable.py new file mode 100644 index 000000000..e9443f92d --- /dev/null +++ b/datadog_lambda/durable.py @@ -0,0 +1,49 @@ +# Unless explicitly stated otherwise all files in this repository are licensed +# under the Apache License Version 2.0. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019 Datadog, Inc. +import logging +import re + +logger = logging.getLogger(__name__) + + +def _parse_durable_execution_arn(arn): + """ + Parses a DurableExecutionArn to extract execution name and ID. + ARN format: + arn:aws:lambda:{region}:{account}:function:{func}:{version}/durable-execution/{name}/{id} + Returns (execution_name, execution_id) or None if parsing fails. + """ + match = re.search(r"/durable-execution/([^/]+)/([^/]+)$", arn) + if not match: + return None + execution_name, execution_id = match.group(1), match.group(2) + if not execution_name or not execution_id: + return None + return execution_name, execution_id + + +def extract_durable_function_tags(event): + """ + Extracts durable function tags from the Lambda event payload. + Returns a dict with durable function tags, or an empty dict if the event + is not a durable function invocation. + """ + if not isinstance(event, dict): + return {} + + durable_execution_arn = event.get("DurableExecutionArn") + if not isinstance(durable_execution_arn, str): + return {} + + parsed = _parse_durable_execution_arn(durable_execution_arn) + if not parsed: + logger.error("Failed to parse DurableExecutionArn: %s", durable_execution_arn) + return {} + + execution_name, execution_id = parsed + return { + "durable_function_execution_name": execution_name, + "durable_function_execution_id": execution_id, + } diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index e7dca1f32..bd1389768 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -1449,6 +1449,7 @@ def create_function_execution_span( trace_context_source, merge_xray_traces, trigger_tags, + durable_function_tags=None, parent_span=None, span_pointers=None, ): @@ -1477,6 +1478,8 @@ def create_function_execution_span( if trace_context_source == TraceContextSource.XRAY and merge_xray_traces: tags["_dd.parent_source"] = trace_context_source tags.update(trigger_tags) + if durable_function_tags: + tags.update(durable_function_tags) tracer.set_tags(_dd_origin) # Determine service name based on config and env var if config.service: diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index b2f83f138..aff4a44ec 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -42,6 +42,7 @@ tracer, propagator, ) +from datadog_lambda.durable import extract_durable_function_tags from datadog_lambda.trigger import ( extract_trigger_tags, extract_http_status_code_tag, @@ -243,6 +244,7 @@ def _before(self, event, context): submit_invocations_metric(context) self.trigger_tags = extract_trigger_tags(event, context) + self.durable_function_tags = extract_durable_function_tags(event) # Extract Datadog trace context and source from incoming requests dd_context, trace_context_source, event_source = extract_dd_trace_context( event, @@ -280,6 +282,7 @@ def _before(self, event, context): trace_context_source=trace_context_source, merge_xray_traces=config.merge_xray_traces, trigger_tags=self.trigger_tags, + durable_function_tags=self.durable_function_tags, parent_span=self.inferred_span, span_pointers=calculate_span_pointers(event_source, event), ) diff --git a/tests/test_durable.py b/tests/test_durable.py new file mode 100644 index 000000000..60914934c --- /dev/null +++ b/tests/test_durable.py @@ -0,0 +1,91 @@ +# Unless explicitly stated otherwise all files in this repository are licensed +# under the Apache License Version 2.0. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019 Datadog, Inc. +import unittest + +from datadog_lambda.durable import ( + _parse_durable_execution_arn, + extract_durable_function_tags, +) + + +class TestParseDurableExecutionArn(unittest.TestCase): + def test_returns_name_and_id_for_valid_arn(self): + arn = "arn:aws:lambda:us-east-1:123456789012:function:my-func:$LATEST/durable-execution/order-123/550e8400-e29b-41d4-a716-446655440001" + result = _parse_durable_execution_arn(arn) + self.assertEqual(result, ("order-123", "550e8400-e29b-41d4-a716-446655440001")) + + def test_returns_none_for_arn_without_durable_execution_marker(self): + arn = "arn:aws:lambda:us-east-1:123456789012:function:my-func:$LATEST" + result = _parse_durable_execution_arn(arn) + self.assertIsNone(result) + + def test_returns_none_for_malformed_arn_with_only_execution_name(self): + arn = "arn:aws:lambda:us-east-1:123456789012:function:my-func:$LATEST/durable-execution/order-123" + result = _parse_durable_execution_arn(arn) + self.assertIsNone(result) + + def test_returns_none_for_malformed_arn_with_empty_execution_name(self): + arn = "arn:aws:lambda:us-east-1:123456789012:function:my-func:$LATEST/durable-execution//550e8400-e29b-41d4-a716-446655440002" + result = _parse_durable_execution_arn(arn) + self.assertIsNone(result) + + def test_returns_none_for_malformed_arn_with_empty_execution_id(self): + arn = "arn:aws:lambda:us-east-1:123456789012:function:my-func:$LATEST/durable-execution/order-123/" + result = _parse_durable_execution_arn(arn) + self.assertIsNone(result) + + def test_works_with_numeric_version_qualifier(self): + arn = "arn:aws:lambda:us-east-1:123456789012:function:my-func:1/durable-execution/my-execution/550e8400-e29b-41d4-a716-446655440004" + result = _parse_durable_execution_arn(arn) + self.assertEqual( + result, ("my-execution", "550e8400-e29b-41d4-a716-446655440004") + ) + + +class TestExtractDurableFunctionTags(unittest.TestCase): + def test_extracts_tags_from_event_with_durable_execution_arn(self): + event = { + "DurableExecutionArn": "arn:aws:lambda:us-east-1:123456789012:function:my-func:1/durable-execution/my-execution/550e8400-e29b-41d4-a716-446655440004", + "CheckpointToken": "some-token", + "InitialExecutionState": {"Operations": []}, + } + result = extract_durable_function_tags(event) + self.assertEqual( + result, + { + "durable_function_execution_name": "my-execution", + "durable_function_execution_id": "550e8400-e29b-41d4-a716-446655440004", + }, + ) + + def test_returns_empty_dict_for_regular_lambda_event(self): + event = { + "body": '{"key": "value"}', + "headers": {"Content-Type": "application/json"}, + } + result = extract_durable_function_tags(event) + self.assertEqual(result, {}) + + def test_returns_empty_dict_when_event_is_none(self): + result = extract_durable_function_tags(None) + self.assertEqual(result, {}) + + def test_returns_empty_dict_when_event_is_not_a_dict(self): + result = extract_durable_function_tags("not-a-dict") + self.assertEqual(result, {}) + + def test_returns_empty_dict_when_durable_execution_arn_is_not_a_string(self): + event = {"DurableExecutionArn": 12345} + result = extract_durable_function_tags(event) + self.assertEqual(result, {}) + + def test_returns_empty_dict_when_durable_execution_arn_cannot_be_parsed(self): + event = {"DurableExecutionArn": "invalid-arn-without-durable-execution-marker"} + result = extract_durable_function_tags(event) + self.assertEqual(result, {}) + + def test_returns_empty_dict_when_event_is_empty(self): + result = extract_durable_function_tags({}) + self.assertEqual(result, {}) From d5e91cdb30adf9fc8a857b4c158ca45a73d0b963 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Wed, 25 Feb 2026 10:40:54 -0500 Subject: [PATCH 349/403] release v8.123.0 (#730) --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index a329cafa0..4047ae838 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "8.123.0.dev0" +__version__ = "8.123.0" diff --git a/pyproject.toml b/pyproject.toml index ee15e3876..da3ecccf2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "8.123.0.dev0" +version = "8.123.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 6fd23fcb008f9ecb4fcf9f86005578a5eb1aca8a Mon Sep 17 00:00:00 2001 From: Rithika Narayan <93233069+rithikanarayan@users.noreply.github.com> Date: Thu, 26 Feb 2026 17:11:39 +0100 Subject: [PATCH 350/403] Add profiling enabled test in 3.14 (#731) --- tests/test_wrapper.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index 95dfc3040..5b2afea8c 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -836,9 +836,6 @@ def lambda_handler(event, context): @patch("datadog_lambda.config.Config.profiling_enabled", True) -@pytest.mark.skipif( - sys.version_info >= (3, 14), reason="profiling not yet supported in python 3.14" -) def test_profiling_enabled(monkeypatch): importlib.reload(wrapper) From e5ab49a86d44829843c007ef6f1f55ce5917d460 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Mon, 2 Mar 2026 10:14:36 -0500 Subject: [PATCH 351/403] fix profiling (#733) --- datadog_lambda/wrapper.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index aff4a44ec..c174a5016 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -292,7 +292,7 @@ def _before(self, event, context): else: set_correlation_ids() if config.profiling_enabled and profiler and is_new_sandbox(): - self.prof.start(stop_on_exit=False, profile_children=True) + self.prof.start() logger.debug("datadog_lambda_wrapper _before() done") except Exception as e: logger.error(format_err_with_traceback(e)) From 0a21fe4e800bdeebbc3230d068195f9612960f3f Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Mon, 2 Mar 2026 15:00:17 -0500 Subject: [PATCH 352/403] update to 8.124.0.dev0 --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index 4047ae838..d11f7a1f6 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "8.123.0" +__version__ = "8.124.0.dev0" diff --git a/pyproject.toml b/pyproject.toml index da3ecccf2..ca2c739af 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "8.123.0" +version = "8.124.0.dev0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 544d8f7fd6cea759b4729455dbb2ec34a87c60cf Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Wed, 4 Mar 2026 17:02:09 -0500 Subject: [PATCH 353/403] chore: enable build_layers.sh to build from specific dd-trace-py commit (#734) * enable build_layers.sh to build from specific dd-trace-py commit * make PIN_SETUPTOOLS optional * remove the pin_setuptools option entirely --- Dockerfile | 1 + scripts/build_layers.sh | 70 +++++++++++++++++++++++++++++++++-------- 2 files changed, 58 insertions(+), 13 deletions(-) diff --git a/Dockerfile b/Dockerfile index 974419ed8..b64cd4193 100644 --- a/Dockerfile +++ b/Dockerfile @@ -25,6 +25,7 @@ ENV PATH=/root/.cargo/bin:$PATH # Install datadog_lambda and dependencies from local COPY . . + RUN pip install --no-cache-dir . -t ./python/lib/$runtime/site-packages # Remove botocore (40MB) to reduce package size. aws-xray-sdk diff --git a/scripts/build_layers.sh b/scripts/build_layers.sh index f10b9dbf9..f15002757 100755 --- a/scripts/build_layers.sh +++ b/scripts/build_layers.sh @@ -6,9 +6,27 @@ # Copyright 2019 Datadog, Inc. # Builds datadog-lambda-python layers for Lambda functions - -# Usage: PYTHON_VERSION=3.11 ./build_layers.sh -# If PYTHON_VERSION is not specified, all versions will be built. +# +# Usage: +# PYTHON_VERSION=12 ARCH=arm ./scripts/build_layers.sh +# +# Environment variables: +# PYTHON_VERSION Python minor version. Accepts shorthand (e.g. 12) or full (e.g. 3.12). +# If not set, all supported versions are built. +# ARCH Target architecture. Accepts shorthand: arm, amd, x86, aarch64 +# or full: arm64, amd64. If not set, both are built. +# +# dd-trace-py overrides (mutually exclusive, highest priority first): +# DD_TRACE_COMMIT Specific dd-trace-py commit SHA to build from GitHub. +# DD_TRACE_COMMIT_BRANCH dd-trace-py branch name to build from GitHub. +# DD_TRACE_WHEEL Path to a pre-built ddtrace .whl file. +# +# Examples: +# # Build a single layer for Python 3.12 on arm64 +# PYTHON_VERSION=12 ARCH=arm ./scripts/build_layers.sh +# +# # Build with a specific dd-trace-py commit (for git bisect) +# DD_TRACE_COMMIT=abc123 PYTHON_VERSION=12 ARCH=arm ./scripts/build_layers.sh set -e @@ -17,6 +35,13 @@ LAYER_FILES_PREFIX="datadog_lambda_py" AVAILABLE_PYTHON_VERSIONS=("3.8" "3.9" "3.10" "3.11" "3.12" "3.13" "3.14") AVAILABLE_ARCHS=("arm64" "amd64") +if [ -n "$ARCH" ]; then + case "$ARCH" in + arm|arm64|aarch64) ARCH="arm64" ;; + amd|amd64|x86|x86_64) ARCH="amd64" ;; + esac +fi + if [ -z "$ARCH" ]; then echo "No architectures specified, building layers for all architectures." ARCHS=("${AVAILABLE_ARCHS[@]}") @@ -28,7 +53,14 @@ else echo "EXITING SCRIPT." exit 1 fi - ARCHS=$ARCH + ARCHS=("$ARCH") +fi + +# Normalize Python version shorthand (e.g. 12 -> 3.12, 3.12 -> 3.12) +if [ -n "$PYTHON_VERSION" ]; then + if [[ "$PYTHON_VERSION" =~ ^[0-9]+$ ]]; then + PYTHON_VERSION="3.${PYTHON_VERSION}" + fi fi # Determine which Python versions to build layers for @@ -43,18 +75,30 @@ else echo "EXITING SCRIPT." exit 1 fi - PYTHON_VERSIONS=$PYTHON_VERSION + PYTHON_VERSIONS=("$PYTHON_VERSION") fi -# Replace ddtrace wheel used if necessary -if [ -n "$DD_TRACE_COMMIT_BRANCH" ]; then - sed -z -E -i 's|(ddtrace = )\[[^]]*]|\1{ git = "https://github.com/DataDog/dd-trace-py.git", branch = \"'"$DD_TRACE_COMMIT_BRANCH"'\" }|g' pyproject.toml -else - if [ -n "$DD_TRACE_WHEEL" ]; then - sed -z -E -i 's|(ddtrace = )\[[^]]*]|\1{ file = "'"$DD_TRACE_WHEEL"'" }|g' pyproject.toml - fi -fi +# Backup pyproject.toml so modifications don't persist across runs +cp pyproject.toml pyproject.toml.bak +cleanup() { + mv pyproject.toml.bak pyproject.toml 2>/dev/null || true +} +trap cleanup EXIT +# Helper: replace the multi-line ddtrace dependency in pyproject.toml. +# Uses perl instead of sed -z for macOS/Linux portability. +replace_ddtrace_dep() { + perl -i -0777 -pe "s|ddtrace = \[[^\]]*\]|$1|gs" pyproject.toml +} + +# Replace ddtrace source if necessary +if [ -n "$DD_TRACE_COMMIT" ]; then + replace_ddtrace_dep "ddtrace = { git = \"https://github.com/DataDog/dd-trace-py.git\", rev = \"$DD_TRACE_COMMIT\" }" +elif [ -n "$DD_TRACE_COMMIT_BRANCH" ]; then + replace_ddtrace_dep "ddtrace = { git = \"https://github.com/DataDog/dd-trace-py.git\", branch = \"$DD_TRACE_COMMIT_BRANCH\" }" +elif [ -n "$DD_TRACE_WHEEL" ]; then + replace_ddtrace_dep "ddtrace = { file = \"$DD_TRACE_WHEEL\" }" +fi function make_path_absolute { echo "$(cd "$(dirname "$1")"; pwd)/$(basename "$1")" } From f349c577d94c4fc346a87de0cdc5568786ce75b9 Mon Sep 17 00:00:00 2001 From: Nicolas Catoni Date: Tue, 10 Mar 2026 16:14:28 +0100 Subject: [PATCH 354/403] ci: add test optimization reporting for system-tests (#735) * Adding test optimization reporting for system-tests * Push to test optim * New API key for test optimization --- .github/workflows/system_tests.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/system_tests.yml b/.github/workflows/system_tests.yml index b61725b1a..49e7bf052 100644 --- a/.github/workflows/system_tests.yml +++ b/.github/workflows/system_tests.yml @@ -27,12 +27,15 @@ jobs: needs: - build uses: DataDog/system-tests/.github/workflows/system-tests.yml@main - secrets: inherit + secrets: + DD_API_KEY: ${{ secrets.DD_API_KEY }} + TEST_OPTIMIZATION_API_KEY: ${{ secrets.TEST_OPTIMIZATION_API_KEY }} permissions: contents: read packages: write with: library: python_lambda binaries_artifact: binaries - scenarios_groups: appsec + scenarios_groups: tracer_release skip_empty_scenarios: true + push_to_test_optimization: true From 8fe789e3f8dae35f2cb9ffa42427e68b1df65ed0 Mon Sep 17 00:00:00 2001 From: jchrostek-dd Date: Fri, 13 Mar 2026 10:05:19 -0400 Subject: [PATCH 355/403] Add span.kind=server to aws.lambda spans (#745) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add span.kind=server to aws.lambda span This aligns the tracer-created span with the extension's behavior, enabling server-based features in Datadog APM for Lambda functions. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 * Update integration test snapshots with span.kind: server Add span.kind: server to all aws.lambda spans in integration test snapshot files to match the new behavior added in tracing.py. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --------- Co-authored-by: Claude Opus 4.5 --- datadog_lambda/tracing.py | 1 + .../integration/snapshots/logs/async-metrics_python310.log | 7 +++++++ .../integration/snapshots/logs/async-metrics_python311.log | 7 +++++++ .../integration/snapshots/logs/async-metrics_python312.log | 7 +++++++ .../integration/snapshots/logs/async-metrics_python313.log | 7 +++++++ .../integration/snapshots/logs/async-metrics_python314.log | 7 +++++++ .../integration/snapshots/logs/async-metrics_python38.log | 7 +++++++ .../integration/snapshots/logs/async-metrics_python39.log | 7 +++++++ .../integration/snapshots/logs/sync-metrics_python310.log | 7 +++++++ .../integration/snapshots/logs/sync-metrics_python311.log | 7 +++++++ .../integration/snapshots/logs/sync-metrics_python312.log | 7 +++++++ .../integration/snapshots/logs/sync-metrics_python313.log | 7 +++++++ .../integration/snapshots/logs/sync-metrics_python314.log | 7 +++++++ tests/integration/snapshots/logs/sync-metrics_python38.log | 7 +++++++ tests/integration/snapshots/logs/sync-metrics_python39.log | 7 +++++++ 15 files changed, 99 insertions(+) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index bd1389768..da4c9dd33 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -1460,6 +1460,7 @@ def create_function_execution_span( function_arn = ":".join(tk[0:7]) if len(tk) > 7 else function_arn function_version = tk[7] if len(tk) > 7 else "$LATEST" tags = { + "span.kind": "server", "cold_start": str(is_cold_start).lower(), "function_arn": function_arn, "function_version": function_version, diff --git a/tests/integration/snapshots/logs/async-metrics_python310.log b/tests/integration/snapshots/logs/async-metrics_python310.log index 356d82439..8d47fa129 100644 --- a/tests/integration/snapshots/logs/async-metrics_python310.log +++ b/tests/integration/snapshots/logs/async-metrics_python310.log @@ -237,6 +237,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "language": "python" }, "metrics": { @@ -445,6 +446,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "dynamodb", "function_trigger.event_source_arn": "XXXX" }, @@ -605,6 +607,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "eventbridge" }, "metrics": { @@ -946,6 +949,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "kinesis", "function_trigger.event_source_arn": "XXXX" }, @@ -1122,6 +1126,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "s3", "function_trigger.event_source_arn": "XXXX" }, @@ -1287,6 +1292,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "sns", "function_trigger.event_source_arn": "XXXX" }, @@ -1451,6 +1457,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "sqs", "function_trigger.event_source_arn": "XXXX" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python311.log b/tests/integration/snapshots/logs/async-metrics_python311.log index fa140a85a..3a2dd243e 100644 --- a/tests/integration/snapshots/logs/async-metrics_python311.log +++ b/tests/integration/snapshots/logs/async-metrics_python311.log @@ -237,6 +237,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "language": "python" }, "metrics": { @@ -445,6 +446,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "dynamodb", "function_trigger.event_source_arn": "XXXX" }, @@ -605,6 +607,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "eventbridge" }, "metrics": { @@ -946,6 +949,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "kinesis", "function_trigger.event_source_arn": "XXXX" }, @@ -1122,6 +1126,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "s3", "function_trigger.event_source_arn": "XXXX" }, @@ -1287,6 +1292,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "sns", "function_trigger.event_source_arn": "XXXX" }, @@ -1451,6 +1457,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "sqs", "function_trigger.event_source_arn": "XXXX" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python312.log b/tests/integration/snapshots/logs/async-metrics_python312.log index c2ea06475..910218152 100644 --- a/tests/integration/snapshots/logs/async-metrics_python312.log +++ b/tests/integration/snapshots/logs/async-metrics_python312.log @@ -237,6 +237,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "language": "python" }, "metrics": { @@ -445,6 +446,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "dynamodb", "function_trigger.event_source_arn": "XXXX" }, @@ -605,6 +607,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "eventbridge" }, "metrics": { @@ -946,6 +949,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "kinesis", "function_trigger.event_source_arn": "XXXX" }, @@ -1122,6 +1126,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "s3", "function_trigger.event_source_arn": "XXXX" }, @@ -1287,6 +1292,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "sns", "function_trigger.event_source_arn": "XXXX" }, @@ -1451,6 +1457,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "sqs", "function_trigger.event_source_arn": "XXXX" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python313.log b/tests/integration/snapshots/logs/async-metrics_python313.log index b6a4f68e8..41008f65d 100644 --- a/tests/integration/snapshots/logs/async-metrics_python313.log +++ b/tests/integration/snapshots/logs/async-metrics_python313.log @@ -237,6 +237,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "language": "python" }, "metrics": { @@ -445,6 +446,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "dynamodb", "function_trigger.event_source_arn": "XXXX" }, @@ -605,6 +607,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "eventbridge" }, "metrics": { @@ -946,6 +949,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "kinesis", "function_trigger.event_source_arn": "XXXX" }, @@ -1122,6 +1126,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "s3", "function_trigger.event_source_arn": "XXXX" }, @@ -1287,6 +1292,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "sns", "function_trigger.event_source_arn": "XXXX" }, @@ -1451,6 +1457,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "sqs", "function_trigger.event_source_arn": "XXXX" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python314.log b/tests/integration/snapshots/logs/async-metrics_python314.log index a430b6449..c6979758d 100644 --- a/tests/integration/snapshots/logs/async-metrics_python314.log +++ b/tests/integration/snapshots/logs/async-metrics_python314.log @@ -237,6 +237,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "language": "python" }, "metrics": { @@ -445,6 +446,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "dynamodb", "function_trigger.event_source_arn": "XXXX" }, @@ -605,6 +607,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "eventbridge" }, "metrics": { @@ -946,6 +949,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "kinesis", "function_trigger.event_source_arn": "XXXX" }, @@ -1122,6 +1126,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "s3", "function_trigger.event_source_arn": "XXXX" }, @@ -1287,6 +1292,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "sns", "function_trigger.event_source_arn": "XXXX" }, @@ -1451,6 +1457,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "sqs", "function_trigger.event_source_arn": "XXXX" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python38.log b/tests/integration/snapshots/logs/async-metrics_python38.log index e37090ff9..d4c33fe59 100644 --- a/tests/integration/snapshots/logs/async-metrics_python38.log +++ b/tests/integration/snapshots/logs/async-metrics_python38.log @@ -237,6 +237,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "language": "python" }, "metrics": { @@ -445,6 +446,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "dynamodb", "function_trigger.event_source_arn": "XXXX" }, @@ -605,6 +607,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "eventbridge" }, "metrics": { @@ -946,6 +949,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "kinesis", "function_trigger.event_source_arn": "XXXX" }, @@ -1122,6 +1126,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "s3", "function_trigger.event_source_arn": "XXXX" }, @@ -1287,6 +1292,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "sns", "function_trigger.event_source_arn": "XXXX" }, @@ -1451,6 +1457,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "sqs", "function_trigger.event_source_arn": "XXXX" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python39.log b/tests/integration/snapshots/logs/async-metrics_python39.log index 46c361126..c12ed57fd 100644 --- a/tests/integration/snapshots/logs/async-metrics_python39.log +++ b/tests/integration/snapshots/logs/async-metrics_python39.log @@ -237,6 +237,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "language": "python" }, "metrics": { @@ -445,6 +446,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "dynamodb", "function_trigger.event_source_arn": "XXXX" }, @@ -605,6 +607,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "eventbridge" }, "metrics": { @@ -946,6 +949,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "kinesis", "function_trigger.event_source_arn": "XXXX" }, @@ -1122,6 +1126,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "s3", "function_trigger.event_source_arn": "XXXX" }, @@ -1287,6 +1292,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "sns", "function_trigger.event_source_arn": "XXXX" }, @@ -1451,6 +1457,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "sqs", "function_trigger.event_source_arn": "XXXX" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python310.log b/tests/integration/snapshots/logs/sync-metrics_python310.log index a9170abd9..3747c3aec 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python310.log +++ b/tests/integration/snapshots/logs/sync-metrics_python310.log @@ -236,6 +236,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "language": "python" }, "metrics": { @@ -463,6 +464,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "dynamodb", "function_trigger.event_source_arn": "XXXX" }, @@ -642,6 +644,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "eventbridge" }, "metrics": { @@ -1021,6 +1024,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "kinesis", "function_trigger.event_source_arn": "XXXX" }, @@ -1216,6 +1220,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "s3", "function_trigger.event_source_arn": "XXXX" }, @@ -1400,6 +1405,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "sns", "function_trigger.event_source_arn": "XXXX" }, @@ -1583,6 +1589,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "sqs", "function_trigger.event_source_arn": "XXXX" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python311.log b/tests/integration/snapshots/logs/sync-metrics_python311.log index 490fcc635..b614b1222 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python311.log +++ b/tests/integration/snapshots/logs/sync-metrics_python311.log @@ -236,6 +236,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "language": "python" }, "metrics": { @@ -463,6 +464,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "dynamodb", "function_trigger.event_source_arn": "XXXX" }, @@ -642,6 +644,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "eventbridge" }, "metrics": { @@ -1021,6 +1024,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "kinesis", "function_trigger.event_source_arn": "XXXX" }, @@ -1216,6 +1220,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "s3", "function_trigger.event_source_arn": "XXXX" }, @@ -1400,6 +1405,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "sns", "function_trigger.event_source_arn": "XXXX" }, @@ -1583,6 +1589,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "sqs", "function_trigger.event_source_arn": "XXXX" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python312.log b/tests/integration/snapshots/logs/sync-metrics_python312.log index 509d1bfe4..593d9fbfd 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python312.log +++ b/tests/integration/snapshots/logs/sync-metrics_python312.log @@ -236,6 +236,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "language": "python" }, "metrics": { @@ -463,6 +464,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "dynamodb", "function_trigger.event_source_arn": "XXXX" }, @@ -642,6 +644,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "eventbridge" }, "metrics": { @@ -1021,6 +1024,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "kinesis", "function_trigger.event_source_arn": "XXXX" }, @@ -1216,6 +1220,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "s3", "function_trigger.event_source_arn": "XXXX" }, @@ -1400,6 +1405,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "sns", "function_trigger.event_source_arn": "XXXX" }, @@ -1583,6 +1589,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "sqs", "function_trigger.event_source_arn": "XXXX" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python313.log b/tests/integration/snapshots/logs/sync-metrics_python313.log index 03a8e8c26..c21fcaad0 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python313.log +++ b/tests/integration/snapshots/logs/sync-metrics_python313.log @@ -236,6 +236,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "language": "python" }, "metrics": { @@ -463,6 +464,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "dynamodb", "function_trigger.event_source_arn": "XXXX" }, @@ -642,6 +644,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "eventbridge" }, "metrics": { @@ -1021,6 +1024,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "kinesis", "function_trigger.event_source_arn": "XXXX" }, @@ -1216,6 +1220,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "s3", "function_trigger.event_source_arn": "XXXX" }, @@ -1400,6 +1405,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "sns", "function_trigger.event_source_arn": "XXXX" }, @@ -1583,6 +1589,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "sqs", "function_trigger.event_source_arn": "XXXX" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python314.log b/tests/integration/snapshots/logs/sync-metrics_python314.log index 7261153e1..090c3cbae 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python314.log +++ b/tests/integration/snapshots/logs/sync-metrics_python314.log @@ -236,6 +236,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "language": "python" }, "metrics": { @@ -463,6 +464,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "dynamodb", "function_trigger.event_source_arn": "XXXX" }, @@ -642,6 +644,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "eventbridge" }, "metrics": { @@ -1021,6 +1024,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "kinesis", "function_trigger.event_source_arn": "XXXX" }, @@ -1216,6 +1220,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "s3", "function_trigger.event_source_arn": "XXXX" }, @@ -1400,6 +1405,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "sns", "function_trigger.event_source_arn": "XXXX" }, @@ -1583,6 +1589,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "sqs", "function_trigger.event_source_arn": "XXXX" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python38.log b/tests/integration/snapshots/logs/sync-metrics_python38.log index 37bbff6e9..322961263 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python38.log +++ b/tests/integration/snapshots/logs/sync-metrics_python38.log @@ -236,6 +236,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "language": "python" }, "metrics": { @@ -463,6 +464,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "dynamodb", "function_trigger.event_source_arn": "XXXX" }, @@ -642,6 +644,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "eventbridge" }, "metrics": { @@ -1021,6 +1024,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "kinesis", "function_trigger.event_source_arn": "XXXX" }, @@ -1216,6 +1220,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "s3", "function_trigger.event_source_arn": "XXXX" }, @@ -1400,6 +1405,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "sns", "function_trigger.event_source_arn": "XXXX" }, @@ -1583,6 +1589,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "sqs", "function_trigger.event_source_arn": "XXXX" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python39.log b/tests/integration/snapshots/logs/sync-metrics_python39.log index cd2a74e04..1c1496d32 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -236,6 +236,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "language": "python" }, "metrics": { @@ -463,6 +464,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "dynamodb", "function_trigger.event_source_arn": "XXXX" }, @@ -642,6 +644,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "eventbridge" }, "metrics": { @@ -1021,6 +1024,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "kinesis", "function_trigger.event_source_arn": "XXXX" }, @@ -1216,6 +1220,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "s3", "function_trigger.event_source_arn": "XXXX" }, @@ -1400,6 +1405,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "sns", "function_trigger.event_source_arn": "XXXX" }, @@ -1583,6 +1589,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "sqs", "function_trigger.event_source_arn": "XXXX" }, From 64eba2f834685153f29d68de2da880af8d850f91 Mon Sep 17 00:00:00 2001 From: jchrostek-dd Date: Mon, 16 Mar 2026 11:12:52 -0400 Subject: [PATCH 356/403] fix(cold_start): capture trace context before finishing spans (#746) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Move trace context capture BEFORE span.finish() so ColdStartTracer creates spans with the correct trace_id. Previously, tracer.current_trace_context() was called AFTER span.finish(), which returned a stale context, causing cold start spans (aws.lambda.load and import spans) to have a different trace_id than the main aws.lambda span. Added unit test assertions to verify trace_id consistency. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 4.5 --- datadog_lambda/wrapper.py | 19 ++++++++++--------- tests/test_cold_start.py | 7 ++++++- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index c174a5016..d022988bc 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -305,6 +305,16 @@ def _after(self, event, context): status_code = extract_http_status_code_tag(self.trigger_tags, self.response) + # Skip creating cold start spans in managed instances mode + # In managed instances, the tracer library handles cold start independently + should_trace_cold_start = ( + config.cold_start_tracing + and is_new_sandbox() + and not is_managed_instances_mode() + ) + if should_trace_cold_start: + trace_ctx = tracer.current_trace_context() + if self.span: if config.appsec_enabled and not self.blocking_response: asm_start_response( @@ -342,15 +352,6 @@ def _after(self, event, context): create_dd_dummy_metadata_subsegment( self.trigger_tags, XraySubsegment.LAMBDA_FUNCTION_TAGS_KEY ) - # Skip creating cold start spans in managed instances mode - # In managed instances, the tracer library handles cold start independently - should_trace_cold_start = ( - config.cold_start_tracing - and is_new_sandbox() - and not is_managed_instances_mode() - ) - if should_trace_cold_start: - trace_ctx = tracer.current_trace_context() if self.inferred_span: if status_code: diff --git a/tests/test_cold_start.py b/tests/test_cold_start.py index 858db9a51..5fc11e2cf 100644 --- a/tests/test_cold_start.py +++ b/tests/test_cold_start.py @@ -310,13 +310,18 @@ def handler(event, context): handler.cold_start_tracing = True handler({}, lambda_context) - function_span = import_span = None + function_span = import_span = load_span = None for span in spans: if span.resource == "tabnanny": import_span = span elif span.name == "aws.lambda": function_span = span + elif span.name == "aws.lambda.load": + load_span = span assert function_span is not None assert import_span is not None assert import_span.parent_id == function_span.span_id + assert import_span.trace_id == function_span.trace_id + assert load_span is not None + assert load_span.trace_id == function_span.trace_id From 0f4c059a8adfe57793de5435fd7a8c7cb1623750 Mon Sep 17 00:00:00 2001 From: Brett Langdon Date: Wed, 18 Mar 2026 15:46:37 -0400 Subject: [PATCH 357/403] ci: skip ddtrace 4.6.* version (#750) * ci: skip ddtrace 4.6.* version * Update pyproject.toml --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index ca2c739af..f289867cd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -31,7 +31,7 @@ datadog = ">=0.51.0,<1.0.0" wrapt = "^1.11.2" ddtrace = [ {version = ">=3.19.1,<4", python = ">=3.8,<3.10"}, - {version = ">=4.1.1,<5", python = ">=3.10"} + {version = ">=4.1.1,<5,!=4.6.*", python = ">=3.10"} ] ujson = ">=5.9.0" botocore = { version = "^1.34.0", optional = true } From 1bcf24370f0b35bcfd24457edbc8568b78d6bd7e Mon Sep 17 00:00:00 2001 From: Nicolas Catoni Date: Thu, 19 Mar 2026 13:26:11 +0100 Subject: [PATCH 358/403] ci: adding schedule to system-tests workflow (#744) * Adding schedule to system-tests workflow * Update .github/workflows/system_tests.yml Co-authored-by: Charles de Beauchesne --------- Co-authored-by: Charles de Beauchesne --- .github/workflows/system_tests.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/system_tests.yml b/.github/workflows/system_tests.yml index 49e7bf052..f6e23a0f0 100644 --- a/.github/workflows/system_tests.yml +++ b/.github/workflows/system_tests.yml @@ -7,6 +7,8 @@ on: pull_request: branches: - "**" + schedule: + - cron: '00 03 * * *' jobs: build: From 91d24869566fae968b2a7ca21cfcf70a99804ede Mon Sep 17 00:00:00 2001 From: Brett Langdon Date: Thu, 19 Mar 2026 11:00:15 -0400 Subject: [PATCH 359/403] ci: install dd-trace-py pipeline wheels when run as child pipeline (#749) * ci: allow installing dd-trace-py pipeline artifacts * we don't have python/pip available * don't fail if wheels aren't available * don't delete local wheels --- scripts/build_layers.sh | 41 +++++++++++++++++++++++++++++++++-------- 1 file changed, 33 insertions(+), 8 deletions(-) diff --git a/scripts/build_layers.sh b/scripts/build_layers.sh index f15002757..7456a38bf 100755 --- a/scripts/build_layers.sh +++ b/scripts/build_layers.sh @@ -20,6 +20,9 @@ # DD_TRACE_COMMIT Specific dd-trace-py commit SHA to build from GitHub. # DD_TRACE_COMMIT_BRANCH dd-trace-py branch name to build from GitHub. # DD_TRACE_WHEEL Path to a pre-built ddtrace .whl file. +# UPSTREAM_PIPELINE_ID GitLab pipeline ID from dd-trace-py. Downloads the +# matching pre-built wheel from S3 (via +# index-manylinux2014.html) for each python/arch. # # Examples: # # Build a single layer for Python 3.12 on arm64 @@ -91,14 +94,6 @@ replace_ddtrace_dep() { perl -i -0777 -pe "s|ddtrace = \[[^\]]*\]|$1|gs" pyproject.toml } -# Replace ddtrace source if necessary -if [ -n "$DD_TRACE_COMMIT" ]; then - replace_ddtrace_dep "ddtrace = { git = \"https://github.com/DataDog/dd-trace-py.git\", rev = \"$DD_TRACE_COMMIT\" }" -elif [ -n "$DD_TRACE_COMMIT_BRANCH" ]; then - replace_ddtrace_dep "ddtrace = { git = \"https://github.com/DataDog/dd-trace-py.git\", branch = \"$DD_TRACE_COMMIT_BRANCH\" }" -elif [ -n "$DD_TRACE_WHEEL" ]; then - replace_ddtrace_dep "ddtrace = { file = \"$DD_TRACE_WHEEL\" }" -fi function make_path_absolute { echo "$(cd "$(dirname "$1")"; pwd)/$(basename "$1")" } @@ -109,6 +104,36 @@ function docker_build_zip { destination=$(make_path_absolute $2) arch=$3 + # Restore pyproject.toml to a clean state for each build iteration + cp pyproject.toml.bak pyproject.toml + + # Replace ddtrace source if necessary + if [ -n "$DD_TRACE_COMMIT" ]; then + replace_ddtrace_dep "ddtrace = { git = \"https://github.com/DataDog/dd-trace-py.git\", rev = \"$DD_TRACE_COMMIT\" }" + elif [ -n "$DD_TRACE_COMMIT_BRANCH" ]; then + replace_ddtrace_dep "ddtrace = { git = \"https://github.com/DataDog/dd-trace-py.git\", branch = \"$DD_TRACE_COMMIT_BRANCH\" }" + elif [ -n "$DD_TRACE_WHEEL" ]; then + replace_ddtrace_dep "ddtrace = { file = \"$DD_TRACE_WHEEL\" }" + elif [ -n "$UPSTREAM_PIPELINE_ID" ]; then + S3_BASE="https://dd-trace-py-builds.s3.amazonaws.com/${UPSTREAM_PIPELINE_ID}" + if [ "${arch}" = "amd64" ]; then + PLATFORM="manylinux2014_x86_64" + else + PLATFORM="manylinux2014_aarch64" + fi + PY_TAG="cp$(echo "$1" | tr -d '.')" + WHEEL_FILE=$(curl -sSfL "${S3_BASE}/index-manylinux2014.html" \ + | grep -o "ddtrace-[^\"]*${PY_TAG}[^\"]*${PLATFORM}[^\"]*\.whl" \ + | head -n 1) + if [ -z "${WHEEL_FILE}" ]; then + echo "No S3 wheel found for ${PY_TAG} ${PLATFORM}, using default pyproject.toml version" + else + curl -sSfL "${S3_BASE}/${WHEEL_FILE}" -o "${WHEEL_FILE}" + echo "Using S3 wheel: ${WHEEL_FILE}" + replace_ddtrace_dep "ddtrace = { file = \"${WHEEL_FILE}\" }" + fi + fi + # Install datadogpy in a docker container to avoid the mess from switching # between different python runtimes. temp_dir=$(mktemp -d) From 8f20b9faceb487953e8e09c526ab73c7d8b9a3f1 Mon Sep 17 00:00:00 2001 From: Juanjo Alvarez Martinez Date: Mon, 23 Mar 2026 15:20:06 +0100 Subject: [PATCH 360/403] feat: slim down the zip ddtrace package (#753) Remove more things from the ddtrace package Signed-off-by: Juanjo Alvarez simplify appsec removal Signed-off-by: Juanjo Alvarez Merge branch 'main' into juanjux/remove-ddtrace-stuff simplify appsec removal Signed-off-by: Juanjo Alvarez Merge branch 'juanjux/remove-ddtrace-stuff' of https://github.com/juanjux/datadog-lambda-python into juanjux/remove-ddtrace-stuff Add more extensions to delete Signed-off-by: Juanjo Alvarez Merge branch 'main' into juanjux/remove-ddtrace-stuff simplify appsec removal Signed-off-by: Juanjo Alvarez Merge branch 'juanjux/remove-ddtrace-stuff' of https://github.com/juanjux/datadog-lambda-python into juanjux/remove-ddtrace-stuff Also delete .pyi Signed-off-by: Juanjo Alvarez Co-authored-by: juanjo.alvarezmartinez --- Dockerfile | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/Dockerfile b/Dockerfile index b64cd4193..6d9eb756e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -33,10 +33,12 @@ RUN pip install --no-cache-dir . -t ./python/lib/$runtime/site-packages RUN rm -rf ./python/lib/$runtime/site-packages/botocore* RUN rm -rf ./python/lib/$runtime/site-packages/setuptools RUN rm -rf ./python/lib/$runtime/site-packages/jsonschema/tests -RUN rm -f ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_ast/iastpatch*.so -RUN rm -rf ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_taint_tracking/_vendor -RUN rm -f ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_taint_tracking/*.so -RUN rm -f ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast/_stacktrace*.so +RUN rm -rf ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast +RUN rm -rf ./python/lib/$runtime/site-packages/ddtrace/internal/test_visibility +# Dogshell +RUN rm -rf ./python/lib/$runtime/site-packages/datadog/dogshell +RUN rm -rf ./python/lib/$runtime/site-packages/bin/dog* + # remove *.dist-info directories except any entry_points.txt files and METADATA files required for Appsec Software Composition Analysis RUN find ./python/lib/$runtime/site-packages/*.dist-info \ -type f \ @@ -50,7 +52,8 @@ RUN rm -rf \ ./python/lib/$runtime/site-packages/urllib3* \ ./python/lib/$runtime/site-packages/certifi* \ ./python/lib/$runtime/site-packages/idna* \ - ./python/lib/$runtime/site-packages/charset_normalizer* + ./python/lib/$runtime/site-packages/charset_normalizer* \ + ./python/lib/$runtime/site-packages/*__mypyc*.so # from charset_normalizer # Precompile all .pyc files and remove .py files. This speeds up load time. # Compile with optimization level 2 (-OO) and PYTHONNODEBUGRANGES=1 to redtce @@ -73,6 +76,7 @@ RUN find ./python/lib/$runtime/site-packages/ddtrace -name \*.cc -delete RUN find ./python/lib/$runtime/site-packages/ddtrace -name \*.h -delete RUN find ./python/lib/$runtime/site-packages/ddtrace -name \*.hpp -delete RUN find ./python/lib/$runtime/site-packages/ddtrace -name \*.pyx -delete +RUN find ./python/lib/$runtime/site-packages/ddtrace -name \*.pyi -delete # Strip debug symbols and symbols that are not needed for relocation # processing using strip --strip-unneeded for all .so files. This is to From 52bcf2180771dad19cfed6ed55fe4037c038ac12 Mon Sep 17 00:00:00 2001 From: Olivier Nzia Date: Mon, 23 Mar 2026 16:28:54 -0400 Subject: [PATCH 361/403] fix: disable Client Side Stats by default (#756) * set DD_TRACE_COMPUTE_STATS to false by default * lint * add comment * add alias, and warning * lint * disable css invariably --- datadog_lambda/config.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/datadog_lambda/config.py b/datadog_lambda/config.py index 9960953ec..4458bd9aa 100644 --- a/datadog_lambda/config.py +++ b/datadog_lambda/config.py @@ -141,6 +141,12 @@ def _reset(self): "enabled" if config.fips_mode_enabled else "not enabled", ) +# disable css to prevent double counting in lambda +os.environ["DD_TRACE_STATS_COMPUTATION_ENABLED"] = "false" + +# unset css aliases to ensure it is disabled +if "DD_TRACE_COMPUTE_STATS" in os.environ: + del os.environ["DD_TRACE_COMPUTE_STATS"] if ( "DD_INSTRUMENTATION_TELEMETRY_ENABLED" not in os.environ From 12a2a5a785642b6fe230e0a545c96573f42d7da1 Mon Sep 17 00:00:00 2001 From: jchrostek-dd Date: Thu, 26 Mar 2026 11:28:11 -0400 Subject: [PATCH 362/403] feat: add durable_function_execution_status tag to aws.lambda span (#751) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: add durable_function_execution_status tag to aws.lambda span When using AWS Lambda Durable Execution SDK, extract the execution status from the handler response and add it as a tag to the aws.lambda span. The tag captures the Status field from durable function responses: - SUCCEEDED: Execution completed successfully - FAILED: Execution failed - PENDING: Execution is still in progress The tag is only added when: 1. The event contains a DurableExecutionArn (indicates durable invocation) 2. The response is a dict with a valid Status field 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 * refactor: simplify durable status extraction Return status string directly instead of wrapping in a dict. Remove redundant comments. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 * remove redundant docstrings * restore docstring for existing function * fix: black formatting * fix: apply black formatting * fix: use correct durable execution status values (SUCCEEDED, FAILED, STOPPED, TIMED_OUT) * fix: rename tag to aws_lambda.durable_function.execution_status 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --------- Co-authored-by: Claude Opus 4.5 --- datadog_lambda/durable.py | 14 ++++++++ datadog_lambda/wrapper.py | 14 ++++++-- tests/test_durable.py | 70 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 96 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/durable.py b/datadog_lambda/durable.py index e9443f92d..3174cd6cf 100644 --- a/datadog_lambda/durable.py +++ b/datadog_lambda/durable.py @@ -47,3 +47,17 @@ def extract_durable_function_tags(event): "durable_function_execution_name": execution_name, "durable_function_execution_id": execution_id, } + + +VALID_DURABLE_STATUSES = {"SUCCEEDED", "FAILED", "STOPPED", "TIMED_OUT"} + + +def extract_durable_execution_status(response, event): + if not isinstance(event, dict) or "DurableExecutionArn" not in event: + return None + if not isinstance(response, dict): + return None + status = response.get("Status") + if status not in VALID_DURABLE_STATUSES: + return None + return status diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index d022988bc..36b00efd9 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -42,7 +42,10 @@ tracer, propagator, ) -from datadog_lambda.durable import extract_durable_function_tags +from datadog_lambda.durable import ( + extract_durable_function_tags, + extract_durable_execution_status, +) from datadog_lambda.trigger import ( extract_trigger_tags, extract_http_status_code_tag, @@ -153,7 +156,7 @@ def __init__(self, func): if config.trace_extractor: extractor_parts = config.trace_extractor.rsplit(".", 1) if len(extractor_parts) == 2: - (mod_name, extractor_name) = extractor_parts + mod_name, extractor_name = extractor_parts modified_extractor_name = modify_module_name(mod_name) extractor_module = import_module(modified_extractor_name) self.trace_extractor = getattr(extractor_module, extractor_name) @@ -340,6 +343,13 @@ def _after(self, event, context): if status_code: self.span.set_tag("http.status_code", status_code) + durable_status = extract_durable_execution_status(self.response, event) + if durable_status: + self.span.set_tag( + "aws_lambda.durable_function.execution_status", + durable_status, + ) + self.span.finish() if status_code: diff --git a/tests/test_durable.py b/tests/test_durable.py index 60914934c..e668b45f0 100644 --- a/tests/test_durable.py +++ b/tests/test_durable.py @@ -7,6 +7,7 @@ from datadog_lambda.durable import ( _parse_durable_execution_arn, extract_durable_function_tags, + extract_durable_execution_status, ) @@ -89,3 +90,72 @@ def test_returns_empty_dict_when_durable_execution_arn_cannot_be_parsed(self): def test_returns_empty_dict_when_event_is_empty(self): result = extract_durable_function_tags({}) self.assertEqual(result, {}) + + +class TestExtractDurableExecutionStatus(unittest.TestCase): + def test_returns_succeeded(self): + event = { + "DurableExecutionArn": "arn:aws:lambda:us-east-1:123:function:f:1/durable-execution/n/id" + } + response = {"Status": "SUCCEEDED", "Result": "some-result"} + self.assertEqual(extract_durable_execution_status(response, event), "SUCCEEDED") + + def test_returns_failed(self): + event = { + "DurableExecutionArn": "arn:aws:lambda:us-east-1:123:function:f:1/durable-execution/n/id" + } + response = {"Status": "FAILED", "Error": "some-error"} + self.assertEqual(extract_durable_execution_status(response, event), "FAILED") + + def test_returns_stopped(self): + event = { + "DurableExecutionArn": "arn:aws:lambda:us-east-1:123:function:f:1/durable-execution/n/id" + } + response = {"Status": "STOPPED"} + self.assertEqual(extract_durable_execution_status(response, event), "STOPPED") + + def test_returns_timed_out(self): + event = { + "DurableExecutionArn": "arn:aws:lambda:us-east-1:123:function:f:1/durable-execution/n/id" + } + response = {"Status": "TIMED_OUT"} + self.assertEqual(extract_durable_execution_status(response, event), "TIMED_OUT") + + def test_returns_none_for_non_durable_event(self): + event = {"key": "value"} + response = {"Status": "SUCCEEDED"} + self.assertIsNone(extract_durable_execution_status(response, event)) + + def test_returns_none_for_non_dict_response(self): + event = { + "DurableExecutionArn": "arn:aws:lambda:us-east-1:123:function:f:1/durable-execution/n/id" + } + self.assertIsNone(extract_durable_execution_status("string", event)) + + def test_returns_none_for_missing_status(self): + event = { + "DurableExecutionArn": "arn:aws:lambda:us-east-1:123:function:f:1/durable-execution/n/id" + } + response = {"Result": "some-result"} + self.assertIsNone(extract_durable_execution_status(response, event)) + + def test_returns_none_for_invalid_status(self): + event = { + "DurableExecutionArn": "arn:aws:lambda:us-east-1:123:function:f:1/durable-execution/n/id" + } + response = {"Status": "INVALID"} + self.assertIsNone(extract_durable_execution_status(response, event)) + + def test_returns_none_for_non_dict_event(self): + response = {"Status": "SUCCEEDED"} + self.assertIsNone(extract_durable_execution_status(response, "not-a-dict")) + + def test_returns_none_for_none_event(self): + response = {"Status": "SUCCEEDED"} + self.assertIsNone(extract_durable_execution_status(response, None)) + + def test_returns_none_for_none_response(self): + event = { + "DurableExecutionArn": "arn:aws:lambda:us-east-1:123:function:f:1/durable-execution/n/id" + } + self.assertIsNone(extract_durable_execution_status(None, event)) From 38cabf2f6fa25d99072b1571d1c329293305a21e Mon Sep 17 00:00:00 2001 From: Emmett Butler <723615+emmettbutler@users.noreply.github.com> Date: Fri, 27 Mar 2026 08:16:00 -0700 Subject: [PATCH 363/403] tiny increase of lambda layer size limit (#760) * tiny increase of lambda layer size limit * Update scripts/check_layer_size.sh Co-authored-by: Brett Langdon --------- Co-authored-by: Brett Langdon --- scripts/check_layer_size.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/check_layer_size.sh b/scripts/check_layer_size.sh index ce67d92d9..de9a8c4d4 100755 --- a/scripts/check_layer_size.sh +++ b/scripts/check_layer_size.sh @@ -8,7 +8,7 @@ # Compares layer size to threshold, and fails if below that threshold set -e -MAX_LAYER_COMPRESSED_SIZE_KB=$(expr 9 \* 1024) # 9216 KB +MAX_LAYER_COMPRESSED_SIZE_KB=$(expr 9 \* 1024 + 15) # 9231 KB MAX_LAYER_UNCOMPRESSED_SIZE_KB=$(expr 25 \* 1024) # 25600 KB From 63f81be017154ceaf594dd46a1de6a745c53c510 Mon Sep 17 00:00:00 2001 From: Brett Langdon Date: Mon, 30 Mar 2026 17:16:16 -0400 Subject: [PATCH 364/403] chore: remove ddtrace patch.py files from layer (#763) chore: remove ddtrace patch.py files from layer version gate the patch.py file removing Apply suggestion from @brettlangdon Co-authored-by: brett.langdon --- Dockerfile | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index 6d9eb756e..12e1f7cad 100644 --- a/Dockerfile +++ b/Dockerfile @@ -62,10 +62,16 @@ RUN rm -rf \ # https://docs.python.org/3.11/using/cmdline.html#cmdoption-O # https://docs.python.org/3/using/cmdline.html#envvar-PYTHONNODEBUGRANGES RUN PYTHONNODEBUGRANGES=1 python -OO -m compileall -b ./python/lib/$runtime/site-packages -# remove all .py files except ddtrace/contrib/*/patch.py which are necessary -# for ddtrace.patch to discover instrumationation packages. -RUN find ./python/lib/$runtime/site-packages -name \*.py | grep -v ddtrace/contrib | xargs rm -rf -RUN find ./python/lib/$runtime/site-packages/ddtrace/contrib -name \*.py | grep -v patch.py | xargs rm -rf +# remove all .py files +# DEV: ddtrace>=4.7.0rc4 checks for .pyc files in addition to .py files for instrumentation +# discovery (DataDog/dd-trace-py#17196), so we can safely remove all .py files. +# For older versions, we need to keep patch.py files for instrumentation discovery. +RUN if python -c "from packaging.version import Version; import ddtrace; exit(0 if Version(ddtrace.__version__) >= Version('4.7.0rc3') else 1)"; then \ + find ./python/lib/$runtime/site-packages -name \*.py | xargs rm -rf; \ + else \ + find ./python/lib/$runtime/site-packages -name \*.py | grep -v ddtrace/contrib | xargs rm -rf && \ + find ./python/lib/$runtime/site-packages/ddtrace/contrib -name \*.py | grep -v patch.py | xargs rm -rf; \ + fi RUN find ./python/lib/$runtime/site-packages -name __pycache__ -type d -exec rm -r {} \+ # When building ddtrace from branch, remove extra source files. These are From ea8d01594abb24207feaef59c9d0047917adac67 Mon Sep 17 00:00:00 2001 From: Yiming Luo Date: Mon, 30 Mar 2026 17:24:08 -0400 Subject: [PATCH 365/403] feat: [SVLS-8493] rename durable function tags to use aws_lambda prefix (#757) * feat: [SVLS-8493] rename durable function execution tags to use aws.lambda prefix Co-Authored-By: Claude Sonnet 4.6 * feat: [SVLS-8493] use aws_lambda prefix for durable function tags Co-Authored-By: Claude Sonnet 4.6 --------- Co-authored-by: Claude Sonnet 4.6 --- datadog_lambda/durable.py | 4 ++-- tests/test_durable.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/datadog_lambda/durable.py b/datadog_lambda/durable.py index 3174cd6cf..0064f9bc8 100644 --- a/datadog_lambda/durable.py +++ b/datadog_lambda/durable.py @@ -44,8 +44,8 @@ def extract_durable_function_tags(event): execution_name, execution_id = parsed return { - "durable_function_execution_name": execution_name, - "durable_function_execution_id": execution_id, + "aws_lambda.durable_function.execution_name": execution_name, + "aws_lambda.durable_function.execution_id": execution_id, } diff --git a/tests/test_durable.py b/tests/test_durable.py index e668b45f0..51a49a877 100644 --- a/tests/test_durable.py +++ b/tests/test_durable.py @@ -56,8 +56,8 @@ def test_extracts_tags_from_event_with_durable_execution_arn(self): self.assertEqual( result, { - "durable_function_execution_name": "my-execution", - "durable_function_execution_id": "550e8400-e29b-41d4-a716-446655440004", + "aws_lambda.durable_function.execution_name": "my-execution", + "aws_lambda.durable_function.execution_id": "550e8400-e29b-41d4-a716-446655440004", }, ) From f313c46ae1b7b0a33287771bbec5b08e9fccfdd2 Mon Sep 17 00:00:00 2001 From: Brett Langdon Date: Tue, 31 Mar 2026 09:22:36 -0400 Subject: [PATCH 366/403] ci: fix ddtrace version detection (#764) --- Dockerfile | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 12e1f7cad..329556c5e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -63,10 +63,12 @@ RUN rm -rf \ # https://docs.python.org/3/using/cmdline.html#envvar-PYTHONNODEBUGRANGES RUN PYTHONNODEBUGRANGES=1 python -OO -m compileall -b ./python/lib/$runtime/site-packages # remove all .py files -# DEV: ddtrace>=4.7.0rc4 checks for .pyc files in addition to .py files for instrumentation +# DEV: ddtrace>=4.7.0rc3 checks for .pyc files in addition to .py files for instrumentation # discovery (DataDog/dd-trace-py#17196), so we can safely remove all .py files. # For older versions, we need to keep patch.py files for instrumentation discovery. -RUN if python -c "from packaging.version import Version; import ddtrace; exit(0 if Version(ddtrace.__version__) >= Version('4.7.0rc3') else 1)"; then \ +RUN pip install --quiet packaging && \ + DDTRACE_VERSION=$(grep "^Version:" ./python/lib/$runtime/site-packages/ddtrace-*.dist-info/METADATA | awk '{print $2}') && \ + if python -c "from packaging.version import Version; exit(0 if Version('$DDTRACE_VERSION') >= Version('4.7.0rc3') else 1)"; then \ find ./python/lib/$runtime/site-packages -name \*.py | xargs rm -rf; \ else \ find ./python/lib/$runtime/site-packages -name \*.py | grep -v ddtrace/contrib | xargs rm -rf && \ From 354a07453d7adbb5f304e4ca9996464c7094af50 Mon Sep 17 00:00:00 2001 From: Brett Langdon Date: Tue, 31 Mar 2026 11:42:17 -0400 Subject: [PATCH 367/403] chore: remove all ddtrace ci viz paths from layer (#765) --- Dockerfile | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 329556c5e..b5635dea1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -34,7 +34,21 @@ RUN rm -rf ./python/lib/$runtime/site-packages/botocore* RUN rm -rf ./python/lib/$runtime/site-packages/setuptools RUN rm -rf ./python/lib/$runtime/site-packages/jsonschema/tests RUN rm -rf ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast -RUN rm -rf ./python/lib/$runtime/site-packages/ddtrace/internal/test_visibility +# CI Visibility paths/integrations +RUN rm -rf \ + ./python/lib/$runtime/site-packages/ddtrace/contrib/coverage/ \ + ./python/lib/$runtime/site-packages/ddtrace/contrib/pytest/ \ + ./python/lib/$runtime/site-packages/ddtrace/contrib/pytest_bdd/ \ + ./python/lib/$runtime/site-packages/ddtrace/contrib/pytest_benchmark/ \ + ./python/lib/$runtime/site-packages/ddtrace/contrib/selenium/ \ + ./python/lib/$runtime/site-packages/ddtrace/contrib/unittest/ \ + ./python/lib/$runtime/site-packages/ddtrace/ext/ci_visibility \ + ./python/lib/$runtime/site-packages/ddtrace/ext/test_visibility \ + ./python/lib/$runtime/site-packages/ddtrace/internal/ci_visibility \ + ./python/lib/$runtime/site-packages/ddtrace/internal/coverage \ + ./python/lib/$runtime/site-packages/ddtrace/internal/test_visibility \ + ./python/lib/$runtime/site-packages/ddtrace/testing/ + # Dogshell RUN rm -rf ./python/lib/$runtime/site-packages/datadog/dogshell RUN rm -rf ./python/lib/$runtime/site-packages/bin/dog* From d8a256537af6ffaa9cb05e22c797138455326e57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?jordan=20gonz=C3=A1lez?= <30836115+duncanista@users.noreply.github.com> Date: Wed, 1 Apr 2026 10:22:36 -0400 Subject: [PATCH 368/403] ci: migrate CI secrets from AWS SSM to Vault KV (#766) Move secret retrieval in get_secrets.sh from aws ssm get-parameter to vault kv get, aligning with the pattern used by datadog-lambda-js. --- ci/get_secrets.sh | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/ci/get_secrets.sh b/ci/get_secrets.sh index 9d9c957c0..d854a9a40 100755 --- a/ci/get_secrets.sh +++ b/ci/get_secrets.sh @@ -21,21 +21,11 @@ fi printf "Getting AWS External ID...\n" -EXTERNAL_ID=$(aws ssm get-parameter \ - --region us-east-1 \ - --name "ci.datadog-lambda-python.$EXTERNAL_ID_NAME" \ - --with-decryption \ - --query "Parameter.Value" \ - --out text) +EXTERNAL_ID=$(vault kv get -field="$EXTERNAL_ID_NAME" kv/k8s/gitlab-runner/datadog-lambda-python/secrets) printf "Getting DD API KEY...\n" -export DD_API_KEY=$(aws ssm get-parameter \ - --region us-east-1 \ - --name ci.datadog-lambda-python.dd-api-key \ - --with-decryption \ - --query "Parameter.Value" \ - --out text) +export DD_API_KEY=$(vault kv get -field=dd-api-key kv/k8s/gitlab-runner/datadog-lambda-python/secrets) printf "Assuming role...\n" From c6c307eef460510684f4ecb108ea04b4a4c7c201 Mon Sep 17 00:00:00 2001 From: Emmett Butler <723615+emmettbutler@users.noreply.github.com> Date: Wed, 1 Apr 2026 11:59:44 -0700 Subject: [PATCH 369/403] use serverless-specific wheel in layer (#762) * use serverless-specific wheel in layer * missing underscore * change index * use proper wheel name * print search pattern * backward compatibility * backward compatibility * wrong copypasta * silly typo * debug output --- scripts/build_layers.sh | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/scripts/build_layers.sh b/scripts/build_layers.sh index 7456a38bf..216ab617c 100755 --- a/scripts/build_layers.sh +++ b/scripts/build_layers.sh @@ -98,6 +98,23 @@ function make_path_absolute { echo "$(cd "$(dirname "$1")"; pwd)/$(basename "$1")" } +function search_wheel { + # Args: [wheel base name] [index] + + WHEEL_BASENAME=$1 + INDEX=$2 + + SEARCH_PATTERN="${WHEEL_BASENAME}-[^\"]*${PY_TAG}[^\"]*${PLATFORM}[^\"]*\.whl" + INDEX_URL="${S3_BASE}/index-${INDEX}.html" + echo "Searching for wheel ${SEARCH_PATTERN}" + export WHEEL_FILE=$(curl -sSfL ${INDEX_URL} | grep -o "$SEARCH_PATTERN" | head -n 1) + if [ ! -z "${WHEEL_FILE}" ]; then + curl -sSfL "${S3_BASE}/${WHEEL_FILE}" -o "${WHEEL_FILE}" + echo "Using S3 wheel: ${WHEEL_FILE}" + replace_ddtrace_dep "${WHEEL_BASENAME} = { file = \"${WHEEL_FILE}\" }" + fi +} + function docker_build_zip { # Args: [python version] [zip destination] @@ -122,15 +139,12 @@ function docker_build_zip { PLATFORM="manylinux2014_aarch64" fi PY_TAG="cp$(echo "$1" | tr -d '.')" - WHEEL_FILE=$(curl -sSfL "${S3_BASE}/index-manylinux2014.html" \ - | grep -o "ddtrace-[^\"]*${PY_TAG}[^\"]*${PLATFORM}[^\"]*\.whl" \ - | head -n 1) + search_wheel "ddtrace_serverless" "serverless" + if [ -z "${WHEEL_FILE}" ]; then + search_wheel "ddtrace" "manylinux2014" + fi if [ -z "${WHEEL_FILE}" ]; then echo "No S3 wheel found for ${PY_TAG} ${PLATFORM}, using default pyproject.toml version" - else - curl -sSfL "${S3_BASE}/${WHEEL_FILE}" -o "${WHEEL_FILE}" - echo "Using S3 wheel: ${WHEEL_FILE}" - replace_ddtrace_dep "ddtrace = { file = \"${WHEEL_FILE}\" }" fi fi From 332e7315d663536f8efe9676ee99bacbbf723620 Mon Sep 17 00:00:00 2001 From: Emmett Butler <723615+emmettbutler@users.noreply.github.com> Date: Wed, 1 Apr 2026 13:21:58 -0700 Subject: [PATCH 370/403] more complete backward compatibility (#775) --- scripts/build_layers.sh | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/scripts/build_layers.sh b/scripts/build_layers.sh index 216ab617c..eabba1012 100755 --- a/scripts/build_layers.sh +++ b/scripts/build_layers.sh @@ -116,21 +116,23 @@ function search_wheel { } function docker_build_zip { - # Args: [python version] [zip destination] + # Args: [python version] [zip destination] [wheel base name] [index] destination=$(make_path_absolute $2) arch=$3 + wheel_basename=$4 + index=$5 # Restore pyproject.toml to a clean state for each build iteration cp pyproject.toml.bak pyproject.toml # Replace ddtrace source if necessary if [ -n "$DD_TRACE_COMMIT" ]; then - replace_ddtrace_dep "ddtrace = { git = \"https://github.com/DataDog/dd-trace-py.git\", rev = \"$DD_TRACE_COMMIT\" }" + replace_ddtrace_dep "${wheel_basename} = { git = \"https://github.com/DataDog/dd-trace-py.git\", rev = \"$DD_TRACE_COMMIT\" }" elif [ -n "$DD_TRACE_COMMIT_BRANCH" ]; then - replace_ddtrace_dep "ddtrace = { git = \"https://github.com/DataDog/dd-trace-py.git\", branch = \"$DD_TRACE_COMMIT_BRANCH\" }" + replace_ddtrace_dep "${wheel_basename} = { git = \"https://github.com/DataDog/dd-trace-py.git\", branch = \"$DD_TRACE_COMMIT_BRANCH\" }" elif [ -n "$DD_TRACE_WHEEL" ]; then - replace_ddtrace_dep "ddtrace = { file = \"$DD_TRACE_WHEEL\" }" + replace_ddtrace_dep "${wheel_basename} = { file = \"$DD_TRACE_WHEEL\" }" elif [ -n "$UPSTREAM_PIPELINE_ID" ]; then S3_BASE="https://dd-trace-py-builds.s3.amazonaws.com/${UPSTREAM_PIPELINE_ID}" if [ "${arch}" = "amd64" ]; then @@ -139,10 +141,7 @@ function docker_build_zip { PLATFORM="manylinux2014_aarch64" fi PY_TAG="cp$(echo "$1" | tr -d '.')" - search_wheel "ddtrace_serverless" "serverless" - if [ -z "${WHEEL_FILE}" ]; then - search_wheel "ddtrace" "manylinux2014" - fi + search_wheel ${wheel_basename} ${index} if [ -z "${WHEEL_FILE}" ]; then echo "No S3 wheel found for ${PY_TAG} ${PLATFORM}, using default pyproject.toml version" fi @@ -163,6 +162,7 @@ function docker_build_zip { rm -rf $temp_dir echo "Done creating archive $destination" + rm pyproject.toml.bak } rm -rf $LAYER_DIR @@ -173,7 +173,10 @@ do for architecture in "${ARCHS[@]}" do echo "Building layer for Python ${python_version} arch=${architecture}" - docker_build_zip ${python_version} $LAYER_DIR/${LAYER_FILES_PREFIX}-${architecture}-${python_version}.zip ${architecture} + docker_build_zip ${python_version} $LAYER_DIR/${LAYER_FILES_PREFIX}-${architecture}-${python_version}.zip ${architecture} "ddtrace_serverless" "serverless" || true + if [ -f pyproject.toml.bak ]; then # true means the previous attempt failed + docker_build_zip ${python_version} $LAYER_DIR/${LAYER_FILES_PREFIX}-${architecture}-${python_version}.zip ${architecture} "ddtrace" "manylinux2014" + fi done done From a3f0640029679ed0a28e51be0eaf1a7b0edd6fa1 Mon Sep 17 00:00:00 2001 From: Brett Langdon Date: Thu, 2 Apr 2026 09:39:05 -0400 Subject: [PATCH 371/403] ci: revert PRs #762 and #775 (#776) * Revert "more complete backward compatibility (#775)" This reverts commit 332e7315d663536f8efe9676ee99bacbbf723620. * Revert "use serverless-specific wheel in layer (#762)" This reverts commit c6c307eef460510684f4ecb108ea04b4a4c7c201. --- scripts/build_layers.sh | 41 ++++++++++++----------------------------- 1 file changed, 12 insertions(+), 29 deletions(-) diff --git a/scripts/build_layers.sh b/scripts/build_layers.sh index eabba1012..7456a38bf 100755 --- a/scripts/build_layers.sh +++ b/scripts/build_layers.sh @@ -98,41 +98,22 @@ function make_path_absolute { echo "$(cd "$(dirname "$1")"; pwd)/$(basename "$1")" } -function search_wheel { - # Args: [wheel base name] [index] - - WHEEL_BASENAME=$1 - INDEX=$2 - - SEARCH_PATTERN="${WHEEL_BASENAME}-[^\"]*${PY_TAG}[^\"]*${PLATFORM}[^\"]*\.whl" - INDEX_URL="${S3_BASE}/index-${INDEX}.html" - echo "Searching for wheel ${SEARCH_PATTERN}" - export WHEEL_FILE=$(curl -sSfL ${INDEX_URL} | grep -o "$SEARCH_PATTERN" | head -n 1) - if [ ! -z "${WHEEL_FILE}" ]; then - curl -sSfL "${S3_BASE}/${WHEEL_FILE}" -o "${WHEEL_FILE}" - echo "Using S3 wheel: ${WHEEL_FILE}" - replace_ddtrace_dep "${WHEEL_BASENAME} = { file = \"${WHEEL_FILE}\" }" - fi -} - function docker_build_zip { - # Args: [python version] [zip destination] [wheel base name] [index] + # Args: [python version] [zip destination] destination=$(make_path_absolute $2) arch=$3 - wheel_basename=$4 - index=$5 # Restore pyproject.toml to a clean state for each build iteration cp pyproject.toml.bak pyproject.toml # Replace ddtrace source if necessary if [ -n "$DD_TRACE_COMMIT" ]; then - replace_ddtrace_dep "${wheel_basename} = { git = \"https://github.com/DataDog/dd-trace-py.git\", rev = \"$DD_TRACE_COMMIT\" }" + replace_ddtrace_dep "ddtrace = { git = \"https://github.com/DataDog/dd-trace-py.git\", rev = \"$DD_TRACE_COMMIT\" }" elif [ -n "$DD_TRACE_COMMIT_BRANCH" ]; then - replace_ddtrace_dep "${wheel_basename} = { git = \"https://github.com/DataDog/dd-trace-py.git\", branch = \"$DD_TRACE_COMMIT_BRANCH\" }" + replace_ddtrace_dep "ddtrace = { git = \"https://github.com/DataDog/dd-trace-py.git\", branch = \"$DD_TRACE_COMMIT_BRANCH\" }" elif [ -n "$DD_TRACE_WHEEL" ]; then - replace_ddtrace_dep "${wheel_basename} = { file = \"$DD_TRACE_WHEEL\" }" + replace_ddtrace_dep "ddtrace = { file = \"$DD_TRACE_WHEEL\" }" elif [ -n "$UPSTREAM_PIPELINE_ID" ]; then S3_BASE="https://dd-trace-py-builds.s3.amazonaws.com/${UPSTREAM_PIPELINE_ID}" if [ "${arch}" = "amd64" ]; then @@ -141,9 +122,15 @@ function docker_build_zip { PLATFORM="manylinux2014_aarch64" fi PY_TAG="cp$(echo "$1" | tr -d '.')" - search_wheel ${wheel_basename} ${index} + WHEEL_FILE=$(curl -sSfL "${S3_BASE}/index-manylinux2014.html" \ + | grep -o "ddtrace-[^\"]*${PY_TAG}[^\"]*${PLATFORM}[^\"]*\.whl" \ + | head -n 1) if [ -z "${WHEEL_FILE}" ]; then echo "No S3 wheel found for ${PY_TAG} ${PLATFORM}, using default pyproject.toml version" + else + curl -sSfL "${S3_BASE}/${WHEEL_FILE}" -o "${WHEEL_FILE}" + echo "Using S3 wheel: ${WHEEL_FILE}" + replace_ddtrace_dep "ddtrace = { file = \"${WHEEL_FILE}\" }" fi fi @@ -162,7 +149,6 @@ function docker_build_zip { rm -rf $temp_dir echo "Done creating archive $destination" - rm pyproject.toml.bak } rm -rf $LAYER_DIR @@ -173,10 +159,7 @@ do for architecture in "${ARCHS[@]}" do echo "Building layer for Python ${python_version} arch=${architecture}" - docker_build_zip ${python_version} $LAYER_DIR/${LAYER_FILES_PREFIX}-${architecture}-${python_version}.zip ${architecture} "ddtrace_serverless" "serverless" || true - if [ -f pyproject.toml.bak ]; then # true means the previous attempt failed - docker_build_zip ${python_version} $LAYER_DIR/${LAYER_FILES_PREFIX}-${architecture}-${python_version}.zip ${architecture} "ddtrace" "manylinux2014" - fi + docker_build_zip ${python_version} $LAYER_DIR/${LAYER_FILES_PREFIX}-${architecture}-${python_version}.zip ${architecture} done done From 55dc3f497930df620fd2e6bf739c36e35de7a69a Mon Sep 17 00:00:00 2001 From: Yiming Luo Date: Thu, 2 Apr 2026 14:20:37 -0400 Subject: [PATCH 372/403] feat: [SVLS-8720] Add span tag aws_lambda.durable_function.first_invocation (#747) * Add durable_function_first_invocation tag to aws.lambda spans Extends extract_durable_function_tags() to accept context.state and sets durable_function_first_invocation ("true"/"false") using not state.is_replaying(). wrapper._before() passes context.state to the function. Co-Authored-By: Claude Sonnet 4.6 * Add durable_function_first_invocation tag to aws.lambda spans Extends extract_durable_function_tags() to set durable_function_first_invocation ("true"/"false") by checking len(InitialExecutionState.Operations) <= 1, mirroring the SDK's own replay detection logic (ReplayStatus.REPLAY when len > 1). Co-Authored-By: Claude Sonnet 4.6 * Add comment * Change <= 1 to == 1 * Update comments * fmt * feat: [SVLS-8493] use aws_lambda prefix for durable function tags Co-Authored-By: Claude Sonnet 4.6 --------- Co-authored-by: Claude Sonnet 4.6 --- datadog_lambda/durable.py | 8 +++++++- tests/test_durable.py | 28 ++++++++++++++++++++++++++-- 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/datadog_lambda/durable.py b/datadog_lambda/durable.py index 0064f9bc8..c77b43b04 100644 --- a/datadog_lambda/durable.py +++ b/datadog_lambda/durable.py @@ -41,11 +41,17 @@ def extract_durable_function_tags(event): if not parsed: logger.error("Failed to parse DurableExecutionArn: %s", durable_execution_arn) return {} - execution_name, execution_id = parsed + # Use the number of operations to determine if it's the first invocation. This is + # what the durable execution SDK does to determine the replay status. + operations = event.get("InitialExecutionState", {}).get("Operations", []) + is_first_invocation = len(operations) == 1 return { "aws_lambda.durable_function.execution_name": execution_name, "aws_lambda.durable_function.execution_id": execution_id, + "aws_lambda.durable_function.first_invocation": str( + is_first_invocation + ).lower(), } diff --git a/tests/test_durable.py b/tests/test_durable.py index 51a49a877..203548d12 100644 --- a/tests/test_durable.py +++ b/tests/test_durable.py @@ -46,11 +46,12 @@ def test_works_with_numeric_version_qualifier(self): class TestExtractDurableFunctionTags(unittest.TestCase): - def test_extracts_tags_from_event_with_durable_execution_arn(self): + def test_sets_first_invocation_true_when_only_execution_operation(self): + # One operation (the current EXECUTION operation itself) → not replaying → first invocation event = { "DurableExecutionArn": "arn:aws:lambda:us-east-1:123456789012:function:my-func:1/durable-execution/my-execution/550e8400-e29b-41d4-a716-446655440004", "CheckpointToken": "some-token", - "InitialExecutionState": {"Operations": []}, + "InitialExecutionState": {"Operations": [{"OperationType": "EXECUTION"}]}, } result = extract_durable_function_tags(event) self.assertEqual( @@ -58,6 +59,29 @@ def test_extracts_tags_from_event_with_durable_execution_arn(self): { "aws_lambda.durable_function.execution_name": "my-execution", "aws_lambda.durable_function.execution_id": "550e8400-e29b-41d4-a716-446655440004", + "aws_lambda.durable_function.first_invocation": "true", + }, + ) + + def test_sets_first_invocation_false_when_multiple_operations(self): + # More than one operation → replaying → not first invocation + event = { + "DurableExecutionArn": "arn:aws:lambda:us-east-1:123456789012:function:my-func:1/durable-execution/my-execution/550e8400-e29b-41d4-a716-446655440004", + "CheckpointToken": "some-token", + "InitialExecutionState": { + "Operations": [ + {"OperationType": "EXECUTION"}, + {"OperationType": "STEP"}, + ] + }, + } + result = extract_durable_function_tags(event) + self.assertEqual( + result, + { + "aws_lambda.durable_function.execution_name": "my-execution", + "aws_lambda.durable_function.execution_id": "550e8400-e29b-41d4-a716-446655440004", + "aws_lambda.durable_function.first_invocation": "false", }, ) From 88b4e1f8c4cf982e59b3eb89c79e98a34bd34e5b Mon Sep 17 00:00:00 2001 From: Jordan Storms Date: Thu, 2 Apr 2026 16:27:04 -0400 Subject: [PATCH 373/403] =?UTF-8?q?fix:=20remove=20return=20from=20finally?= =?UTF-8?q?=20block=20to=20resolve=20Python=203.14=20SyntaxWa=E2=80=A6=20(?= =?UTF-8?q?#767)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: remove return from finally block to resolve Python 3.14 SyntaxWarning Python 3.14 raises a SyntaxWarning for inside a block. Move the blocking_response return to after the try/except/finally in _LambdaDecorator.__call__, preserving all AppSec blocking execution paths. Add a regression test confirming handler exceptions still propagate when AppSec is enabled and no blocking response is active. Signed-off-by: Jordan * update snapshots Signed-off-by: Jordan * Co-authored-by: melissa.j.womack@gmail.com Signed-off-by: Jordan --------- Signed-off-by: Jordan Co-authored-by: Melissa Womack --- datadog_lambda/wrapper.py | 7 ++-- .../snapshots/logs/sync-metrics_python310.log | 40 +++++++++---------- .../snapshots/logs/sync-metrics_python311.log | 40 +++++++++---------- .../snapshots/logs/sync-metrics_python312.log | 40 +++++++++---------- .../snapshots/logs/sync-metrics_python313.log | 40 +++++++++---------- .../snapshots/logs/sync-metrics_python314.log | 40 +++++++++---------- .../snapshots/logs/sync-metrics_python38.log | 40 +++++++++---------- .../snapshots/logs/sync-metrics_python39.log | 40 +++++++++---------- tests/test_wrapper.py | 17 ++++++++ 9 files changed, 161 insertions(+), 143 deletions(-) diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 36b00efd9..f8eed8aa1 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -191,7 +191,6 @@ def __call__(self, event, context, **kwargs): if self.blocking_response: return self.blocking_response self.response = self.func(event, context, **kwargs) - return self.response except BlockingException: self.blocking_response = get_asm_blocked_response(self.event_source) except Exception: @@ -204,8 +203,10 @@ def __call__(self, event, context, **kwargs): raise finally: self._after(event, context) - if self.blocking_response: - return self.blocking_response + + if self.blocking_response: + return self.blocking_response + return self.response def _inject_authorizer_span_headers(self, request_id): reference_span = self.inferred_span if self.inferred_span else self.span diff --git a/tests/integration/snapshots/logs/sync-metrics_python310.log b/tests/integration/snapshots/logs/sync-metrics_python310.log index 3747c3aec..757b6fc6c 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python310.log +++ b/tests/integration/snapshots/logs/sync-metrics_python310.log @@ -75,6 +75,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "true", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", "function_version": "$LATEST", @@ -86,7 +87,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "span.kind": "server", "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", "http.method": "GET", "http.route": "/", @@ -174,7 +174,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -227,6 +227,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", "function_version": "$LATEST", @@ -236,7 +237,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "language": "python" }, "metrics": { @@ -322,7 +322,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -455,6 +455,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", "function_version": "$LATEST", @@ -464,7 +465,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "dynamodb", "function_trigger.event_source_arn": "XXXX" }, @@ -550,7 +550,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -635,6 +635,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", "function_version": "$LATEST", @@ -644,7 +645,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "eventbridge" }, "metrics": { @@ -729,7 +729,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -824,6 +824,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", "function_version": "$LATEST", @@ -835,7 +836,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", @@ -923,7 +923,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1015,6 +1015,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", "function_version": "$LATEST", @@ -1024,7 +1025,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "kinesis", "function_trigger.event_source_arn": "XXXX" }, @@ -1110,7 +1110,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1211,6 +1211,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", "function_version": "$LATEST", @@ -1220,7 +1221,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "s3", "function_trigger.event_source_arn": "XXXX" }, @@ -1306,7 +1306,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1396,6 +1396,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", "function_version": "$LATEST", @@ -1405,7 +1406,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "sns", "function_trigger.event_source_arn": "XXXX" }, @@ -1491,7 +1491,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1580,6 +1580,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", "function_version": "$LATEST", @@ -1589,7 +1590,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "sqs", "function_trigger.event_source_arn": "XXXX" }, @@ -1675,7 +1675,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1770,6 +1770,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", "function_version": "$LATEST", @@ -1781,7 +1782,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.status_code": "200" }, @@ -1867,7 +1867,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", diff --git a/tests/integration/snapshots/logs/sync-metrics_python311.log b/tests/integration/snapshots/logs/sync-metrics_python311.log index b614b1222..a6a3931a9 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python311.log +++ b/tests/integration/snapshots/logs/sync-metrics_python311.log @@ -75,6 +75,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "true", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", "function_version": "$LATEST", @@ -86,7 +87,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "span.kind": "server", "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", "http.method": "GET", "http.route": "/", @@ -174,7 +174,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -227,6 +227,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", "function_version": "$LATEST", @@ -236,7 +237,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "language": "python" }, "metrics": { @@ -322,7 +322,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -455,6 +455,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", "function_version": "$LATEST", @@ -464,7 +465,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "dynamodb", "function_trigger.event_source_arn": "XXXX" }, @@ -550,7 +550,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -635,6 +635,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", "function_version": "$LATEST", @@ -644,7 +645,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "eventbridge" }, "metrics": { @@ -729,7 +729,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -824,6 +824,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", "function_version": "$LATEST", @@ -835,7 +836,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", @@ -923,7 +923,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1015,6 +1015,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", "function_version": "$LATEST", @@ -1024,7 +1025,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "kinesis", "function_trigger.event_source_arn": "XXXX" }, @@ -1110,7 +1110,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1211,6 +1211,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", "function_version": "$LATEST", @@ -1220,7 +1221,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "s3", "function_trigger.event_source_arn": "XXXX" }, @@ -1306,7 +1306,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1396,6 +1396,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", "function_version": "$LATEST", @@ -1405,7 +1406,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "sns", "function_trigger.event_source_arn": "XXXX" }, @@ -1491,7 +1491,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1580,6 +1580,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", "function_version": "$LATEST", @@ -1589,7 +1590,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "sqs", "function_trigger.event_source_arn": "XXXX" }, @@ -1675,7 +1675,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1770,6 +1770,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", "function_version": "$LATEST", @@ -1781,7 +1782,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.status_code": "200" }, @@ -1867,7 +1867,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", diff --git a/tests/integration/snapshots/logs/sync-metrics_python312.log b/tests/integration/snapshots/logs/sync-metrics_python312.log index 593d9fbfd..572fb9bd1 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python312.log +++ b/tests/integration/snapshots/logs/sync-metrics_python312.log @@ -75,6 +75,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "true", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", "function_version": "$LATEST", @@ -86,7 +87,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "span.kind": "server", "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", "http.method": "GET", "http.route": "/", @@ -174,7 +174,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -227,6 +227,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", "function_version": "$LATEST", @@ -236,7 +237,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "language": "python" }, "metrics": { @@ -322,7 +322,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -455,6 +455,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", "function_version": "$LATEST", @@ -464,7 +465,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "dynamodb", "function_trigger.event_source_arn": "XXXX" }, @@ -550,7 +550,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -635,6 +635,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", "function_version": "$LATEST", @@ -644,7 +645,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "eventbridge" }, "metrics": { @@ -729,7 +729,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -824,6 +824,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", "function_version": "$LATEST", @@ -835,7 +836,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", @@ -923,7 +923,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1015,6 +1015,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", "function_version": "$LATEST", @@ -1024,7 +1025,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "kinesis", "function_trigger.event_source_arn": "XXXX" }, @@ -1110,7 +1110,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1211,6 +1211,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", "function_version": "$LATEST", @@ -1220,7 +1221,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "s3", "function_trigger.event_source_arn": "XXXX" }, @@ -1306,7 +1306,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1396,6 +1396,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", "function_version": "$LATEST", @@ -1405,7 +1406,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "sns", "function_trigger.event_source_arn": "XXXX" }, @@ -1491,7 +1491,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1580,6 +1580,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", "function_version": "$LATEST", @@ -1589,7 +1590,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "sqs", "function_trigger.event_source_arn": "XXXX" }, @@ -1675,7 +1675,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1770,6 +1770,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", "function_version": "$LATEST", @@ -1781,7 +1782,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.status_code": "200" }, @@ -1867,7 +1867,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", diff --git a/tests/integration/snapshots/logs/sync-metrics_python313.log b/tests/integration/snapshots/logs/sync-metrics_python313.log index c21fcaad0..b79ab7fef 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python313.log +++ b/tests/integration/snapshots/logs/sync-metrics_python313.log @@ -75,6 +75,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "true", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", "function_version": "$LATEST", @@ -86,7 +87,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "span.kind": "server", "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", "http.method": "GET", "http.route": "/", @@ -174,7 +174,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -227,6 +227,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", "function_version": "$LATEST", @@ -236,7 +237,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "language": "python" }, "metrics": { @@ -322,7 +322,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -455,6 +455,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", "function_version": "$LATEST", @@ -464,7 +465,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "dynamodb", "function_trigger.event_source_arn": "XXXX" }, @@ -550,7 +550,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -635,6 +635,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", "function_version": "$LATEST", @@ -644,7 +645,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "eventbridge" }, "metrics": { @@ -729,7 +729,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -824,6 +824,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", "function_version": "$LATEST", @@ -835,7 +836,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", @@ -923,7 +923,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1015,6 +1015,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", "function_version": "$LATEST", @@ -1024,7 +1025,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "kinesis", "function_trigger.event_source_arn": "XXXX" }, @@ -1110,7 +1110,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1211,6 +1211,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", "function_version": "$LATEST", @@ -1220,7 +1221,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "s3", "function_trigger.event_source_arn": "XXXX" }, @@ -1306,7 +1306,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1396,6 +1396,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", "function_version": "$LATEST", @@ -1405,7 +1406,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "sns", "function_trigger.event_source_arn": "XXXX" }, @@ -1491,7 +1491,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1580,6 +1580,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", "function_version": "$LATEST", @@ -1589,7 +1590,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "sqs", "function_trigger.event_source_arn": "XXXX" }, @@ -1675,7 +1675,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1770,6 +1770,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", "function_version": "$LATEST", @@ -1781,7 +1782,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.status_code": "200" }, @@ -1867,7 +1867,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", diff --git a/tests/integration/snapshots/logs/sync-metrics_python314.log b/tests/integration/snapshots/logs/sync-metrics_python314.log index 090c3cbae..3e523a0f2 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python314.log +++ b/tests/integration/snapshots/logs/sync-metrics_python314.log @@ -75,6 +75,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "true", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python314", "function_version": "$LATEST", @@ -86,7 +87,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "span.kind": "server", "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", "http.method": "GET", "http.route": "/", @@ -174,7 +174,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -227,6 +227,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python314", "function_version": "$LATEST", @@ -236,7 +237,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "language": "python" }, "metrics": { @@ -322,7 +322,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -455,6 +455,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python314", "function_version": "$LATEST", @@ -464,7 +465,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "dynamodb", "function_trigger.event_source_arn": "XXXX" }, @@ -550,7 +550,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -635,6 +635,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python314", "function_version": "$LATEST", @@ -644,7 +645,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "eventbridge" }, "metrics": { @@ -729,7 +729,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -824,6 +824,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python314", "function_version": "$LATEST", @@ -835,7 +836,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", @@ -923,7 +923,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1015,6 +1015,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python314", "function_version": "$LATEST", @@ -1024,7 +1025,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "kinesis", "function_trigger.event_source_arn": "XXXX" }, @@ -1110,7 +1110,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1211,6 +1211,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python314", "function_version": "$LATEST", @@ -1220,7 +1221,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "s3", "function_trigger.event_source_arn": "XXXX" }, @@ -1306,7 +1306,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1396,6 +1396,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python314", "function_version": "$LATEST", @@ -1405,7 +1406,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "sns", "function_trigger.event_source_arn": "XXXX" }, @@ -1491,7 +1491,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1580,6 +1580,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python314", "function_version": "$LATEST", @@ -1589,7 +1590,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "sqs", "function_trigger.event_source_arn": "XXXX" }, @@ -1675,7 +1675,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1770,6 +1770,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python314", "function_version": "$LATEST", @@ -1781,7 +1782,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.status_code": "200" }, @@ -1867,7 +1867,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", diff --git a/tests/integration/snapshots/logs/sync-metrics_python38.log b/tests/integration/snapshots/logs/sync-metrics_python38.log index 322961263..9dd3f2c1d 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python38.log +++ b/tests/integration/snapshots/logs/sync-metrics_python38.log @@ -75,6 +75,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "true", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python38", "function_version": "$LATEST", @@ -86,7 +87,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "span.kind": "server", "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", "http.method": "GET", "http.route": "/", @@ -174,7 +174,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -227,6 +227,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python38", "function_version": "$LATEST", @@ -236,7 +237,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "language": "python" }, "metrics": { @@ -322,7 +322,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -455,6 +455,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python38", "function_version": "$LATEST", @@ -464,7 +465,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "dynamodb", "function_trigger.event_source_arn": "XXXX" }, @@ -550,7 +550,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -635,6 +635,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python38", "function_version": "$LATEST", @@ -644,7 +645,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "eventbridge" }, "metrics": { @@ -729,7 +729,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -824,6 +824,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python38", "function_version": "$LATEST", @@ -835,7 +836,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", @@ -923,7 +923,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1015,6 +1015,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python38", "function_version": "$LATEST", @@ -1024,7 +1025,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "kinesis", "function_trigger.event_source_arn": "XXXX" }, @@ -1110,7 +1110,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1211,6 +1211,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python38", "function_version": "$LATEST", @@ -1220,7 +1221,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "s3", "function_trigger.event_source_arn": "XXXX" }, @@ -1306,7 +1306,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1396,6 +1396,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python38", "function_version": "$LATEST", @@ -1405,7 +1406,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "sns", "function_trigger.event_source_arn": "XXXX" }, @@ -1491,7 +1491,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1580,6 +1580,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python38", "function_version": "$LATEST", @@ -1589,7 +1590,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "sqs", "function_trigger.event_source_arn": "XXXX" }, @@ -1675,7 +1675,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1770,6 +1770,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python38", "function_version": "$LATEST", @@ -1781,7 +1782,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.status_code": "200" }, @@ -1867,7 +1867,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", diff --git a/tests/integration/snapshots/logs/sync-metrics_python39.log b/tests/integration/snapshots/logs/sync-metrics_python39.log index 1c1496d32..5fd09c8e4 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -75,6 +75,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "true", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python39", "function_version": "$LATEST", @@ -86,7 +87,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "span.kind": "server", "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", "http.method": "GET", "http.route": "/", @@ -174,7 +174,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -227,6 +227,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python39", "function_version": "$LATEST", @@ -236,7 +237,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "language": "python" }, "metrics": { @@ -322,7 +322,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -455,6 +455,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python39", "function_version": "$LATEST", @@ -464,7 +465,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "dynamodb", "function_trigger.event_source_arn": "XXXX" }, @@ -550,7 +550,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -635,6 +635,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python39", "function_version": "$LATEST", @@ -644,7 +645,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "eventbridge" }, "metrics": { @@ -729,7 +729,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -824,6 +824,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python39", "function_version": "$LATEST", @@ -835,7 +836,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", @@ -923,7 +923,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1015,6 +1015,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python39", "function_version": "$LATEST", @@ -1024,7 +1025,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "kinesis", "function_trigger.event_source_arn": "XXXX" }, @@ -1110,7 +1110,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1211,6 +1211,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python39", "function_version": "$LATEST", @@ -1220,7 +1221,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "s3", "function_trigger.event_source_arn": "XXXX" }, @@ -1306,7 +1306,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1396,6 +1396,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python39", "function_version": "$LATEST", @@ -1405,7 +1406,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "sns", "function_trigger.event_source_arn": "XXXX" }, @@ -1491,7 +1491,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1580,6 +1580,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python39", "function_version": "$LATEST", @@ -1589,7 +1590,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "sqs", "function_trigger.event_source_arn": "XXXX" }, @@ -1675,7 +1675,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1770,6 +1770,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python39", "function_version": "$LATEST", @@ -1781,7 +1782,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.status_code": "200" }, @@ -1867,7 +1867,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "202", + "http.status_code": "403", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index 5b2afea8c..b1aa1ae86 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -765,6 +765,23 @@ def lambda_handler(event, context): assert lambda_handler.span.get_tag("http.status_code") == "403" + def test_handler_exception_propagates_when_appsec_enabled(self): + # Regression guard: before the fix, `return` in the `finally` block + # would silently swallow handler exceptions when no blocking response + # was set, preventing them from reaching the caller. + self.mock_get_asm_blocking_response.return_value = None + + class HandlerError(Exception): + pass + + def lambda_handler(event, context): + raise HandlerError("handler error") + + lambda_handler = wrapper.datadog_lambda_wrapper(lambda_handler) + + with self.assertRaises(HandlerError): + lambda_handler(self.api_gateway_request, get_mock_context()) + def test_no_blocking_appsec_disabled(self): os.environ["DD_APPSEC_ENABLED"] = "false" From 8051f4496fb841f6c2c92788bfc9a66d25992a7e Mon Sep 17 00:00:00 2001 From: Emmett Butler <723615+emmettbutler@users.noreply.github.com> Date: Thu, 2 Apr 2026 14:03:37 -0700 Subject: [PATCH 374/403] Add ability to use ddtrace_serverless wheels in layer build (#777) * Revert "ci: revert PRs #762 and #775 (#776)" This reverts commit a3f0640029679ed0a28e51be0eaf1a7b0edd6fa1. * try a different way of checking success * refactor to only do docker build once * oh yeah * catch error code * bite the proverbial bullet * *shakes fist* ....bash!!! * more handling * debug output * construct basename when given a wheel directly * handle dotslash in basename --- scripts/build_layers.sh | 57 +++++++++++++++++++++++++++++++---------- 1 file changed, 43 insertions(+), 14 deletions(-) diff --git a/scripts/build_layers.sh b/scripts/build_layers.sh index 7456a38bf..b3f733857 100755 --- a/scripts/build_layers.sh +++ b/scripts/build_layers.sh @@ -91,6 +91,7 @@ trap cleanup EXIT # Helper: replace the multi-line ddtrace dependency in pyproject.toml. # Uses perl instead of sed -z for macOS/Linux portability. replace_ddtrace_dep() { + echo "Replacing dep with $1" perl -i -0777 -pe "s|ddtrace = \[[^\]]*\]|$1|gs" pyproject.toml } @@ -98,22 +99,41 @@ function make_path_absolute { echo "$(cd "$(dirname "$1")"; pwd)/$(basename "$1")" } -function docker_build_zip { - # Args: [python version] [zip destination] +function search_wheel { + # Args: [wheel base name] [index] - destination=$(make_path_absolute $2) - arch=$3 + WHEEL_BASENAME=$1 + INDEX=$2 + + SEARCH_PATTERN="${WHEEL_BASENAME}-[^\"]*${PY_TAG}[^\"]*${PLATFORM}[^\"]*\.whl" + INDEX_URL="${S3_BASE}/index-${INDEX}.html" + echo "Searching for wheel ${SEARCH_PATTERN}" + export WHEEL_FILE=$(curl -sSfL ${INDEX_URL} | grep -o "$SEARCH_PATTERN" | head -n 1) + if [ ! -z "${WHEEL_FILE}" ]; then + curl -sSfL "${S3_BASE}/${WHEEL_FILE}" -o "${WHEEL_FILE}" + echo "Using S3 wheel: ${WHEEL_FILE}" + replace_ddtrace_dep "${WHEEL_BASENAME} = { file = \"${WHEEL_FILE}\" }" + fi +} + +function find_and_spec_wheel { + # Args: [python version] [wheel base name] [index] + + arch=$2 + wheel_basename=$3 + index=$4 # Restore pyproject.toml to a clean state for each build iteration cp pyproject.toml.bak pyproject.toml # Replace ddtrace source if necessary if [ -n "$DD_TRACE_COMMIT" ]; then - replace_ddtrace_dep "ddtrace = { git = \"https://github.com/DataDog/dd-trace-py.git\", rev = \"$DD_TRACE_COMMIT\" }" + replace_ddtrace_dep "${wheel_basename} = { git = \"https://github.com/DataDog/dd-trace-py.git\", rev = \"$DD_TRACE_COMMIT\" }" elif [ -n "$DD_TRACE_COMMIT_BRANCH" ]; then - replace_ddtrace_dep "ddtrace = { git = \"https://github.com/DataDog/dd-trace-py.git\", branch = \"$DD_TRACE_COMMIT_BRANCH\" }" + replace_ddtrace_dep "${wheel_basename} = { git = \"https://github.com/DataDog/dd-trace-py.git\", branch = \"$DD_TRACE_COMMIT_BRANCH\" }" elif [ -n "$DD_TRACE_WHEEL" ]; then - replace_ddtrace_dep "ddtrace = { file = \"$DD_TRACE_WHEEL\" }" + wheel_basename=$(sed 's/^\.\///' <<< ${DD_TRACE_WHEEL%%-*}) + replace_ddtrace_dep "${wheel_basename} = { file = \"$DD_TRACE_WHEEL\" }" elif [ -n "$UPSTREAM_PIPELINE_ID" ]; then S3_BASE="https://dd-trace-py-builds.s3.amazonaws.com/${UPSTREAM_PIPELINE_ID}" if [ "${arch}" = "amd64" ]; then @@ -122,18 +142,19 @@ function docker_build_zip { PLATFORM="manylinux2014_aarch64" fi PY_TAG="cp$(echo "$1" | tr -d '.')" - WHEEL_FILE=$(curl -sSfL "${S3_BASE}/index-manylinux2014.html" \ - | grep -o "ddtrace-[^\"]*${PY_TAG}[^\"]*${PLATFORM}[^\"]*\.whl" \ - | head -n 1) + search_wheel ${wheel_basename} ${index} if [ -z "${WHEEL_FILE}" ]; then echo "No S3 wheel found for ${PY_TAG} ${PLATFORM}, using default pyproject.toml version" - else - curl -sSfL "${S3_BASE}/${WHEEL_FILE}" -o "${WHEEL_FILE}" - echo "Using S3 wheel: ${WHEEL_FILE}" - replace_ddtrace_dep "ddtrace = { file = \"${WHEEL_FILE}\" }" + return 1 fi fi +} + +function docker_build_zip { + # Args: [python version] [zip destination] + destination=$(make_path_absolute $2) + arch=$3 # Install datadogpy in a docker container to avoid the mess from switching # between different python runtimes. temp_dir=$(mktemp -d) @@ -159,6 +180,14 @@ do for architecture in "${ARCHS[@]}" do echo "Building layer for Python ${python_version} arch=${architecture}" + set +e + find_and_spec_wheel ${python_version} ${architecture} "ddtrace_serverless" "serverless" + FAILURE=$? + if [ $FAILURE != 0 ]; then + echo "Attempting layer build again with package ddtrace" + find_and_spec_wheel ${python_version} ${architecture} "ddtrace" "manylinux2014" + fi + set -e docker_build_zip ${python_version} $LAYER_DIR/${LAYER_FILES_PREFIX}-${architecture}-${python_version}.zip ${architecture} done done From db826eb82fa7de85cc701880e1c58e9a98104a7a Mon Sep 17 00:00:00 2001 From: Rithika Narayan <93233069+rithikanarayan@users.noreply.github.com> Date: Fri, 3 Apr 2026 10:29:52 -0400 Subject: [PATCH 375/403] =?UTF-8?q?Revert=20"fix:=20remove=20return=20from?= =?UTF-8?q?=20finally=20block=20to=20resolve=20Python=203.14=20SyntaxWa?= =?UTF-8?q?=E2=80=A6"=20(#780)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 88b4e1f8c4cf982e59b3eb89c79e98a34bd34e5b. --- datadog_lambda/wrapper.py | 7 ++-- .../snapshots/logs/sync-metrics_python310.log | 40 +++++++++---------- .../snapshots/logs/sync-metrics_python311.log | 40 +++++++++---------- .../snapshots/logs/sync-metrics_python312.log | 40 +++++++++---------- .../snapshots/logs/sync-metrics_python313.log | 40 +++++++++---------- .../snapshots/logs/sync-metrics_python314.log | 40 +++++++++---------- .../snapshots/logs/sync-metrics_python38.log | 40 +++++++++---------- .../snapshots/logs/sync-metrics_python39.log | 40 +++++++++---------- tests/test_wrapper.py | 17 -------- 9 files changed, 143 insertions(+), 161 deletions(-) diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index f8eed8aa1..36b00efd9 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -191,6 +191,7 @@ def __call__(self, event, context, **kwargs): if self.blocking_response: return self.blocking_response self.response = self.func(event, context, **kwargs) + return self.response except BlockingException: self.blocking_response = get_asm_blocked_response(self.event_source) except Exception: @@ -203,10 +204,8 @@ def __call__(self, event, context, **kwargs): raise finally: self._after(event, context) - - if self.blocking_response: - return self.blocking_response - return self.response + if self.blocking_response: + return self.blocking_response def _inject_authorizer_span_headers(self, request_id): reference_span = self.inferred_span if self.inferred_span else self.span diff --git a/tests/integration/snapshots/logs/sync-metrics_python310.log b/tests/integration/snapshots/logs/sync-metrics_python310.log index 757b6fc6c..3747c3aec 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python310.log +++ b/tests/integration/snapshots/logs/sync-metrics_python310.log @@ -75,7 +75,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "true", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", "function_version": "$LATEST", @@ -87,6 +86,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", "http.method": "GET", "http.route": "/", @@ -174,7 +174,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -227,7 +227,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", "function_version": "$LATEST", @@ -237,6 +236,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "language": "python" }, "metrics": { @@ -322,7 +322,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -455,7 +455,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", "function_version": "$LATEST", @@ -465,6 +464,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "dynamodb", "function_trigger.event_source_arn": "XXXX" }, @@ -550,7 +550,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -635,7 +635,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", "function_version": "$LATEST", @@ -645,6 +644,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "eventbridge" }, "metrics": { @@ -729,7 +729,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -824,7 +824,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", "function_version": "$LATEST", @@ -836,6 +835,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", + "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", @@ -923,7 +923,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1015,7 +1015,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", "function_version": "$LATEST", @@ -1025,6 +1024,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "kinesis", "function_trigger.event_source_arn": "XXXX" }, @@ -1110,7 +1110,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1211,7 +1211,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", "function_version": "$LATEST", @@ -1221,6 +1220,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "s3", "function_trigger.event_source_arn": "XXXX" }, @@ -1306,7 +1306,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1396,7 +1396,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", "function_version": "$LATEST", @@ -1406,6 +1405,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "sns", "function_trigger.event_source_arn": "XXXX" }, @@ -1491,7 +1491,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1580,7 +1580,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", "function_version": "$LATEST", @@ -1590,6 +1589,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "sqs", "function_trigger.event_source_arn": "XXXX" }, @@ -1675,7 +1675,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1770,7 +1770,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", "function_version": "$LATEST", @@ -1782,6 +1781,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.status_code": "200" }, @@ -1867,7 +1867,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", diff --git a/tests/integration/snapshots/logs/sync-metrics_python311.log b/tests/integration/snapshots/logs/sync-metrics_python311.log index a6a3931a9..b614b1222 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python311.log +++ b/tests/integration/snapshots/logs/sync-metrics_python311.log @@ -75,7 +75,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "true", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", "function_version": "$LATEST", @@ -87,6 +86,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", "http.method": "GET", "http.route": "/", @@ -174,7 +174,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -227,7 +227,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", "function_version": "$LATEST", @@ -237,6 +236,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "language": "python" }, "metrics": { @@ -322,7 +322,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -455,7 +455,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", "function_version": "$LATEST", @@ -465,6 +464,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "dynamodb", "function_trigger.event_source_arn": "XXXX" }, @@ -550,7 +550,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -635,7 +635,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", "function_version": "$LATEST", @@ -645,6 +644,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "eventbridge" }, "metrics": { @@ -729,7 +729,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -824,7 +824,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", "function_version": "$LATEST", @@ -836,6 +835,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", + "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", @@ -923,7 +923,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1015,7 +1015,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", "function_version": "$LATEST", @@ -1025,6 +1024,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "kinesis", "function_trigger.event_source_arn": "XXXX" }, @@ -1110,7 +1110,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1211,7 +1211,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", "function_version": "$LATEST", @@ -1221,6 +1220,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "s3", "function_trigger.event_source_arn": "XXXX" }, @@ -1306,7 +1306,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1396,7 +1396,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", "function_version": "$LATEST", @@ -1406,6 +1405,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "sns", "function_trigger.event_source_arn": "XXXX" }, @@ -1491,7 +1491,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1580,7 +1580,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", "function_version": "$LATEST", @@ -1590,6 +1589,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "sqs", "function_trigger.event_source_arn": "XXXX" }, @@ -1675,7 +1675,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1770,7 +1770,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", "function_version": "$LATEST", @@ -1782,6 +1781,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.status_code": "200" }, @@ -1867,7 +1867,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", diff --git a/tests/integration/snapshots/logs/sync-metrics_python312.log b/tests/integration/snapshots/logs/sync-metrics_python312.log index 572fb9bd1..593d9fbfd 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python312.log +++ b/tests/integration/snapshots/logs/sync-metrics_python312.log @@ -75,7 +75,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "true", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", "function_version": "$LATEST", @@ -87,6 +86,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", "http.method": "GET", "http.route": "/", @@ -174,7 +174,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -227,7 +227,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", "function_version": "$LATEST", @@ -237,6 +236,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "language": "python" }, "metrics": { @@ -322,7 +322,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -455,7 +455,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", "function_version": "$LATEST", @@ -465,6 +464,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "dynamodb", "function_trigger.event_source_arn": "XXXX" }, @@ -550,7 +550,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -635,7 +635,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", "function_version": "$LATEST", @@ -645,6 +644,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "eventbridge" }, "metrics": { @@ -729,7 +729,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -824,7 +824,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", "function_version": "$LATEST", @@ -836,6 +835,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", + "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", @@ -923,7 +923,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1015,7 +1015,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", "function_version": "$LATEST", @@ -1025,6 +1024,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "kinesis", "function_trigger.event_source_arn": "XXXX" }, @@ -1110,7 +1110,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1211,7 +1211,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", "function_version": "$LATEST", @@ -1221,6 +1220,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "s3", "function_trigger.event_source_arn": "XXXX" }, @@ -1306,7 +1306,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1396,7 +1396,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", "function_version": "$LATEST", @@ -1406,6 +1405,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "sns", "function_trigger.event_source_arn": "XXXX" }, @@ -1491,7 +1491,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1580,7 +1580,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", "function_version": "$LATEST", @@ -1590,6 +1589,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "sqs", "function_trigger.event_source_arn": "XXXX" }, @@ -1675,7 +1675,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1770,7 +1770,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", "function_version": "$LATEST", @@ -1782,6 +1781,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.status_code": "200" }, @@ -1867,7 +1867,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", diff --git a/tests/integration/snapshots/logs/sync-metrics_python313.log b/tests/integration/snapshots/logs/sync-metrics_python313.log index b79ab7fef..c21fcaad0 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python313.log +++ b/tests/integration/snapshots/logs/sync-metrics_python313.log @@ -75,7 +75,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "true", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", "function_version": "$LATEST", @@ -87,6 +86,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", "http.method": "GET", "http.route": "/", @@ -174,7 +174,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -227,7 +227,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", "function_version": "$LATEST", @@ -237,6 +236,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "language": "python" }, "metrics": { @@ -322,7 +322,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -455,7 +455,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", "function_version": "$LATEST", @@ -465,6 +464,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "dynamodb", "function_trigger.event_source_arn": "XXXX" }, @@ -550,7 +550,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -635,7 +635,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", "function_version": "$LATEST", @@ -645,6 +644,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "eventbridge" }, "metrics": { @@ -729,7 +729,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -824,7 +824,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", "function_version": "$LATEST", @@ -836,6 +835,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", + "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", @@ -923,7 +923,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1015,7 +1015,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", "function_version": "$LATEST", @@ -1025,6 +1024,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "kinesis", "function_trigger.event_source_arn": "XXXX" }, @@ -1110,7 +1110,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1211,7 +1211,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", "function_version": "$LATEST", @@ -1221,6 +1220,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "s3", "function_trigger.event_source_arn": "XXXX" }, @@ -1306,7 +1306,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1396,7 +1396,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", "function_version": "$LATEST", @@ -1406,6 +1405,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "sns", "function_trigger.event_source_arn": "XXXX" }, @@ -1491,7 +1491,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1580,7 +1580,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", "function_version": "$LATEST", @@ -1590,6 +1589,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "sqs", "function_trigger.event_source_arn": "XXXX" }, @@ -1675,7 +1675,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1770,7 +1770,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", "function_version": "$LATEST", @@ -1782,6 +1781,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.status_code": "200" }, @@ -1867,7 +1867,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", diff --git a/tests/integration/snapshots/logs/sync-metrics_python314.log b/tests/integration/snapshots/logs/sync-metrics_python314.log index 3e523a0f2..090c3cbae 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python314.log +++ b/tests/integration/snapshots/logs/sync-metrics_python314.log @@ -75,7 +75,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "true", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python314", "function_version": "$LATEST", @@ -87,6 +86,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", "http.method": "GET", "http.route": "/", @@ -174,7 +174,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -227,7 +227,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python314", "function_version": "$LATEST", @@ -237,6 +236,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "language": "python" }, "metrics": { @@ -322,7 +322,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -455,7 +455,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python314", "function_version": "$LATEST", @@ -465,6 +464,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "dynamodb", "function_trigger.event_source_arn": "XXXX" }, @@ -550,7 +550,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -635,7 +635,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python314", "function_version": "$LATEST", @@ -645,6 +644,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "eventbridge" }, "metrics": { @@ -729,7 +729,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -824,7 +824,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python314", "function_version": "$LATEST", @@ -836,6 +835,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", + "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", @@ -923,7 +923,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1015,7 +1015,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python314", "function_version": "$LATEST", @@ -1025,6 +1024,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "kinesis", "function_trigger.event_source_arn": "XXXX" }, @@ -1110,7 +1110,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1211,7 +1211,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python314", "function_version": "$LATEST", @@ -1221,6 +1220,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "s3", "function_trigger.event_source_arn": "XXXX" }, @@ -1306,7 +1306,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1396,7 +1396,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python314", "function_version": "$LATEST", @@ -1406,6 +1405,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "sns", "function_trigger.event_source_arn": "XXXX" }, @@ -1491,7 +1491,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1580,7 +1580,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python314", "function_version": "$LATEST", @@ -1590,6 +1589,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "sqs", "function_trigger.event_source_arn": "XXXX" }, @@ -1675,7 +1675,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1770,7 +1770,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python314", "function_version": "$LATEST", @@ -1782,6 +1781,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.status_code": "200" }, @@ -1867,7 +1867,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", diff --git a/tests/integration/snapshots/logs/sync-metrics_python38.log b/tests/integration/snapshots/logs/sync-metrics_python38.log index 9dd3f2c1d..322961263 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python38.log +++ b/tests/integration/snapshots/logs/sync-metrics_python38.log @@ -75,7 +75,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "true", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python38", "function_version": "$LATEST", @@ -87,6 +86,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", "http.method": "GET", "http.route": "/", @@ -174,7 +174,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -227,7 +227,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python38", "function_version": "$LATEST", @@ -237,6 +236,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "language": "python" }, "metrics": { @@ -322,7 +322,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -455,7 +455,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python38", "function_version": "$LATEST", @@ -465,6 +464,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "dynamodb", "function_trigger.event_source_arn": "XXXX" }, @@ -550,7 +550,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -635,7 +635,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python38", "function_version": "$LATEST", @@ -645,6 +644,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "eventbridge" }, "metrics": { @@ -729,7 +729,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -824,7 +824,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python38", "function_version": "$LATEST", @@ -836,6 +835,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", + "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", @@ -923,7 +923,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1015,7 +1015,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python38", "function_version": "$LATEST", @@ -1025,6 +1024,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "kinesis", "function_trigger.event_source_arn": "XXXX" }, @@ -1110,7 +1110,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1211,7 +1211,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python38", "function_version": "$LATEST", @@ -1221,6 +1220,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "s3", "function_trigger.event_source_arn": "XXXX" }, @@ -1306,7 +1306,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1396,7 +1396,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python38", "function_version": "$LATEST", @@ -1406,6 +1405,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "sns", "function_trigger.event_source_arn": "XXXX" }, @@ -1491,7 +1491,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1580,7 +1580,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python38", "function_version": "$LATEST", @@ -1590,6 +1589,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "sqs", "function_trigger.event_source_arn": "XXXX" }, @@ -1675,7 +1675,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1770,7 +1770,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python38", "function_version": "$LATEST", @@ -1782,6 +1781,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.status_code": "200" }, @@ -1867,7 +1867,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", diff --git a/tests/integration/snapshots/logs/sync-metrics_python39.log b/tests/integration/snapshots/logs/sync-metrics_python39.log index 5fd09c8e4..1c1496d32 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -75,7 +75,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "true", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python39", "function_version": "$LATEST", @@ -87,6 +86,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", "http.method": "GET", "http.route": "/", @@ -174,7 +174,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -227,7 +227,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python39", "function_version": "$LATEST", @@ -237,6 +236,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "language": "python" }, "metrics": { @@ -322,7 +322,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -455,7 +455,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python39", "function_version": "$LATEST", @@ -465,6 +464,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "dynamodb", "function_trigger.event_source_arn": "XXXX" }, @@ -550,7 +550,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -635,7 +635,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python39", "function_version": "$LATEST", @@ -645,6 +644,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "eventbridge" }, "metrics": { @@ -729,7 +729,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -824,7 +824,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python39", "function_version": "$LATEST", @@ -836,6 +835,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", + "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", @@ -923,7 +923,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1015,7 +1015,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python39", "function_version": "$LATEST", @@ -1025,6 +1024,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "kinesis", "function_trigger.event_source_arn": "XXXX" }, @@ -1110,7 +1110,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1211,7 +1211,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python39", "function_version": "$LATEST", @@ -1221,6 +1220,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "s3", "function_trigger.event_source_arn": "XXXX" }, @@ -1306,7 +1306,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1396,7 +1396,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python39", "function_version": "$LATEST", @@ -1406,6 +1405,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "sns", "function_trigger.event_source_arn": "XXXX" }, @@ -1491,7 +1491,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1580,7 +1580,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python39", "function_version": "$LATEST", @@ -1590,6 +1589,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", + "span.kind": "server", "function_trigger.event_source": "sqs", "function_trigger.event_source_arn": "XXXX" }, @@ -1675,7 +1675,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", @@ -1770,7 +1770,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", - "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python39", "function_version": "$LATEST", @@ -1782,6 +1781,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.status_code": "200" }, @@ -1867,7 +1867,7 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.method": "POST", "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "out.host": "api.datadoghq.com", - "http.status_code": "403", + "http.status_code": "202", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index b1aa1ae86..5b2afea8c 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -765,23 +765,6 @@ def lambda_handler(event, context): assert lambda_handler.span.get_tag("http.status_code") == "403" - def test_handler_exception_propagates_when_appsec_enabled(self): - # Regression guard: before the fix, `return` in the `finally` block - # would silently swallow handler exceptions when no blocking response - # was set, preventing them from reaching the caller. - self.mock_get_asm_blocking_response.return_value = None - - class HandlerError(Exception): - pass - - def lambda_handler(event, context): - raise HandlerError("handler error") - - lambda_handler = wrapper.datadog_lambda_wrapper(lambda_handler) - - with self.assertRaises(HandlerError): - lambda_handler(self.api_gateway_request, get_mock_context()) - def test_no_blocking_appsec_disabled(self): os.environ["DD_APPSEC_ENABLED"] = "false" From c43d2b23cb2c0dab1f428a2727f4612d5e55ce4e Mon Sep 17 00:00:00 2001 From: Emmett Butler <723615+emmettbutler@users.noreply.github.com> Date: Fri, 3 Apr 2026 07:42:31 -0700 Subject: [PATCH 376/403] handle any preceding directory name (#778) --- scripts/build_layers.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/build_layers.sh b/scripts/build_layers.sh index b3f733857..8cdfc1534 100755 --- a/scripts/build_layers.sh +++ b/scripts/build_layers.sh @@ -132,7 +132,7 @@ function find_and_spec_wheel { elif [ -n "$DD_TRACE_COMMIT_BRANCH" ]; then replace_ddtrace_dep "${wheel_basename} = { git = \"https://github.com/DataDog/dd-trace-py.git\", branch = \"$DD_TRACE_COMMIT_BRANCH\" }" elif [ -n "$DD_TRACE_WHEEL" ]; then - wheel_basename=$(sed 's/^\.\///' <<< ${DD_TRACE_WHEEL%%-*}) + wheel_basename=$(sed 's/^.*\///' <<< ${DD_TRACE_WHEEL%%-*}) replace_ddtrace_dep "${wheel_basename} = { file = \"$DD_TRACE_WHEEL\" }" elif [ -n "$UPSTREAM_PIPELINE_ID" ]; then S3_BASE="https://dd-trace-py-builds.s3.amazonaws.com/${UPSTREAM_PIPELINE_ID}" From 3883ffd51ba5f6c7a007b88258cd942516bebdfe Mon Sep 17 00:00:00 2001 From: pablomartinezbernardo <134320516+pablomartinezbernardo@users.noreply.github.com> Date: Mon, 6 Apr 2026 16:24:30 +0200 Subject: [PATCH 377/403] fix: negative duration on aws.apigateway.authorizer span (#782) --- datadog_lambda/tracing.py | 16 ++++------ .../authorizer-request-api-gateway-v1.json | 2 +- tests/test_tracing.py | 32 +++++++++++++++++++ 3 files changed, 39 insertions(+), 11 deletions(-) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index da4c9dd33..3c7d9f115 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -977,16 +977,12 @@ def process_injected_data(event, request_time_epoch_ms, args, tags): start_time_ns = int( injected_authorizer_data.get(Headers.Parent_Span_Finish_Time) ) - finish_time_ns = ( - request_time_epoch_ms - + ( - int( - event["requestContext"]["authorizer"].get( - "integrationLatency", 0 - ) - ) - ) - ) * 1e6 + integration_latency = int( + event["requestContext"]["authorizer"].get("integrationLatency", 0) + ) + finish_time_ns = max( + start_time_ns, (request_time_epoch_ms + integration_latency) * 1e6 + ) upstream_authorizer_span = insert_upstream_authorizer_span( args, tags, start_time_ns, finish_time_ns ) diff --git a/tests/event_samples/authorizer-request-api-gateway-v1.json b/tests/event_samples/authorizer-request-api-gateway-v1.json index d14b7aa01..7496c5ed2 100644 --- a/tests/event_samples/authorizer-request-api-gateway-v1.json +++ b/tests/event_samples/authorizer-request-api-gateway-v1.json @@ -55,7 +55,7 @@ "requestContext": { "resourceId": "0et54l", "authorizer": { - "_datadog": "eyJ4LWRhdGFkb2ctdHJhY2UtaWQiOiAiMTM0Nzg3MDU5OTU3OTcyMjEyMDkiLCAieC1kYXRhZG9nLXBhcmVudC1pZCI6ICI4NDcxMjg4MjYzMzg0MjE2ODk2IiwgIngtZGF0YWRvZy1zYW1wbGluZy1wcmlvcml0eSI6ICIxIiwgIngtZGF0YWRvZy1wYXJlbnQtc3Bhbi1maW5pc2gtdGltZSI6IDE2NjMyOTUwMjE4MjcuNTIxLCAieC1kYXRhZG9nLWF1dGhvcml6aW5nLXJlcXVlc3RpZCI6ICJhYmMxMjMifQ==", + "_datadog": "eyJ4LWRhdGFkb2ctdHJhY2UtaWQiOiAiMTM0Nzg3MDU5OTU3OTcyMjEyMDkiLCAieC1kYXRhZG9nLXBhcmVudC1pZCI6ICI4NDcxMjg4MjYzMzg0MjE2ODk2IiwgIngtZGF0YWRvZy1zYW1wbGluZy1wcmlvcml0eSI6ICIxIiwgIngtZGF0YWRvZy1wYXJlbnQtc3Bhbi1maW5pc2gtdGltZSI6IDE2NjMyOTUwMjE4Mjc1MjEwMDAsICJ4LWRhdGFkb2ctYXV0aG9yaXppbmctcmVxdWVzdGlkIjogImFiYzEyMyJ9", "scope": "this is just a string", "principalId": "foo", "integrationLatency": 1897 diff --git a/tests/test_tracing.py b/tests/test_tracing.py index ec78265a6..3a3d9e895 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -2408,6 +2408,38 @@ def test_create_inferred_span(mock_span_finish, source, expect): assert mock_span_finish.call_count == 0 +@patch("ddtrace.trace.Span.finish", autospec=True) +def test_authorizer_span_no_negative_duration_when_clock_skew(mock_span_finish): + """ + Simulate the case where requestTimeEpoch + integrationLatency < parentSpanFinishTime + (i.e., API Gateway's reported end is before the authorizer lambda's self-reported finish). + This 1ms discrepancy would produce a negative duration. + """ + with open(f"{event_samples}authorizer-request-api-gateway-v1.json") as f: + event = json.load(f) + + authorizer_ctx = json.loads( + base64.b64decode(event["requestContext"]["authorizer"]["_datadog"]) + ) + parent_finish_time_ns = authorizer_ctx["x-datadog-parent-span-finish-time"] + request_time_epoch_ms = event["requestContext"]["requestTimeEpoch"] + # Set integrationLatency 1ms below the parent span's finish time to simulate clock skew. + event["requestContext"]["authorizer"]["integrationLatency"] = ( + parent_finish_time_ns // 1_000_000 - request_time_epoch_ms - 1 + ) + + ctx = get_mock_context(aws_request_id="123") + create_inferred_span(event, ctx) + + args = mock_span_finish.call_args_list[0].args + authorizer_span, finish_time = args[0], args[1] + + assert finish_time >= authorizer_span.start, ( + f"Authorizer span has negative duration: " + f"finish_time={finish_time} < start={authorizer_span.start}" + ) + + class TestInferredSpans(unittest.TestCase): @patch("datadog_lambda.tracing.submit_errors_metric") def test_mark_trace_as_error_for_5xx_responses_getting_400_response_code( From 8badbdb9b9bd4c197e81351ab678395c834187a2 Mon Sep 17 00:00:00 2001 From: Rithika Narayan <93233069+rithikanarayan@users.noreply.github.com> Date: Mon, 6 Apr 2026 13:47:27 -0400 Subject: [PATCH 378/403] fix: remove return from finally block to resolve Python 3.14 SyntaxWarning (#783) * test * linting * Adding coauthor Co-authored-by: Melissa Womack --------- Co-authored-by: Melissa Womack --- datadog_lambda/wrapper.py | 6 +++--- tests/test_wrapper.py | 17 +++++++++++++++++ 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 36b00efd9..767816a50 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -191,7 +191,6 @@ def __call__(self, event, context, **kwargs): if self.blocking_response: return self.blocking_response self.response = self.func(event, context, **kwargs) - return self.response except BlockingException: self.blocking_response = get_asm_blocked_response(self.event_source) except Exception: @@ -204,8 +203,9 @@ def __call__(self, event, context, **kwargs): raise finally: self._after(event, context) - if self.blocking_response: - return self.blocking_response + if self.blocking_response: + return self.blocking_response + return self.response def _inject_authorizer_span_headers(self, request_id): reference_span = self.inferred_span if self.inferred_span else self.span diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index 5b2afea8c..b1aa1ae86 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -765,6 +765,23 @@ def lambda_handler(event, context): assert lambda_handler.span.get_tag("http.status_code") == "403" + def test_handler_exception_propagates_when_appsec_enabled(self): + # Regression guard: before the fix, `return` in the `finally` block + # would silently swallow handler exceptions when no blocking response + # was set, preventing them from reaching the caller. + self.mock_get_asm_blocking_response.return_value = None + + class HandlerError(Exception): + pass + + def lambda_handler(event, context): + raise HandlerError("handler error") + + lambda_handler = wrapper.datadog_lambda_wrapper(lambda_handler) + + with self.assertRaises(HandlerError): + lambda_handler(self.api_gateway_request, get_mock_context()) + def test_no_blocking_appsec_disabled(self): os.environ["DD_APPSEC_ENABLED"] = "false" From 2c57e69cfdbf881b19ab14e11ea0ae564327327e Mon Sep 17 00:00:00 2001 From: Rithika Narayan <93233069+rithikanarayan@users.noreply.github.com> Date: Mon, 6 Apr 2026 16:14:24 -0400 Subject: [PATCH 379/403] Migrate e2e status to short-lived token (#784) * Migrate e2e status to short-lived token * Executable mode --- ci/input_files/build.yaml.tpl | 29 ++------------------------ ci/poll_e2e.sh | 38 +++++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 27 deletions(-) create mode 100755 ci/poll_e2e.sh diff --git a/ci/input_files/build.yaml.tpl b/ci/input_files/build.yaml.tpl index 67f13706f..420eea649 100644 --- a/ci/input_files/build.yaml.tpl +++ b/ci/input_files/build.yaml.tpl @@ -285,30 +285,5 @@ e2e-test-status: - if: '$SKIP_E2E_TESTS == "true"' when: never - when: on_success - script: | - GITLAB_API_TOKEN=$(aws ssm get-parameter --region us-east-1 --name "ci.${CI_PROJECT_NAME}.serverless-e2e-gitlab-token" --with-decryption --query "Parameter.Value" --out text) - URL="${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/pipelines/${CI_PIPELINE_ID}/bridges" - echo "Fetching E2E job status from: $URL" - while true; do - RESPONSE=$(curl -s --header "PRIVATE-TOKEN: ${GITLAB_API_TOKEN}" "$URL") - E2E_JOB_STATUS=$(echo "$RESPONSE" | jq -r '.[] | select(.name=="e2e-test") | .downstream_pipeline.status') - echo -n "E2E job status: $E2E_JOB_STATUS, " - if [ "$E2E_JOB_STATUS" == "success" ]; then - echo "✅ E2E tests completed successfully" - exit 0 - elif [ "$E2E_JOB_STATUS" == "failed" ]; then - echo "❌ E2E tests failed" - exit 1 - elif [ "$E2E_JOB_STATUS" == "running" ]; then - echo "⏳ E2E tests are still running, retrying in 1 minute..." - elif [ "$E2E_JOB_STATUS" == "canceled" ]; then - echo "🚫 E2E tests were canceled" - exit 1 - elif [ "$E2E_JOB_STATUS" == "skipped" ]; then - echo "⏭️ E2E tests were skipped" - exit 0 - else - echo "❓ Unknown E2E test status: $E2E_JOB_STATUS, retrying in 1 minute..." - fi - sleep 60 - done + script: + - ci/poll_e2e.sh diff --git a/ci/poll_e2e.sh b/ci/poll_e2e.sh new file mode 100755 index 000000000..3d56926a6 --- /dev/null +++ b/ci/poll_e2e.sh @@ -0,0 +1,38 @@ +curl -OL "binaries.ddbuild.io/dd-source/authanywhere/LATEST/authanywhere-linux-amd64" && mv "authanywhere-linux-amd64" /bin/authanywhere && chmod +x /bin/authanywhere + +BTI_CI_API_TOKEN=$(authanywhere --audience rapid-devex-ci) + +BTI_RESPONSE=$(curl --silent --request GET \ + --header "$BTI_CI_API_TOKEN" \ + --header "Content-Type: application/vnd.api+json" \ + "https://bti-ci-api.us1.ddbuild.io/internal/ci/gitlab/token?owner=DataDog&repository=datadog-lambda-python") + +GITLAB_TOKEN=$(echo "$BTI_RESPONSE" | jq -r '.token // empty') + +URL="${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/pipelines/${CI_PIPELINE_ID}/bridges" + +echo "Fetching E2E job status from: $URL" + +while true; do + RESPONSE=$(curl -s --header "PRIVATE-TOKEN: ${GITLAB_TOKEN}" "$URL") + E2E_JOB_STATUS=$(echo "$RESPONSE" | jq -r '.[] | select(.name=="e2e-test") | .downstream_pipeline.status') + echo -n "E2E job status: $E2E_JOB_STATUS, " + if [ "$E2E_JOB_STATUS" == "success" ]; then + echo "✅ E2E tests completed successfully" + exit 0 + elif [ "$E2E_JOB_STATUS" == "failed" ]; then + echo "❌ E2E tests failed" + exit 1 + elif [ "$E2E_JOB_STATUS" == "running" ]; then + echo "⏳ E2E tests are still running, retrying in 2 minutes..." + elif [ "$E2E_JOB_STATUS" == "canceled" ]; then + echo "🚫 E2E tests were canceled" + exit 1 + elif [ "$E2E_JOB_STATUS" == "skipped" ]; then + echo "⏭️ E2E tests were skipped" + exit 0 + else + echo "❓ Unknown E2E test status: $E2E_JOB_STATUS, retrying in 2 minutes..." + fi + sleep 120 +done \ No newline at end of file From affe9c78f77625c96409dda5a9c28aa47b1c9891 Mon Sep 17 00:00:00 2001 From: Alberto Vara Date: Tue, 7 Apr 2026 09:36:21 +0200 Subject: [PATCH 380/403] Remove unused ddtrace appsec packages (#761) * Remove unused ddtrace appsec packages Remove additional ddtrace appsec packages from site-packages. * Update Dockerfile Co-authored-by: Brett Langdon --------- Co-authored-by: Brett Langdon --- Dockerfile | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index b5635dea1..1e112f81d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -33,7 +33,13 @@ RUN pip install --no-cache-dir . -t ./python/lib/$runtime/site-packages RUN rm -rf ./python/lib/$runtime/site-packages/botocore* RUN rm -rf ./python/lib/$runtime/site-packages/setuptools RUN rm -rf ./python/lib/$runtime/site-packages/jsonschema/tests -RUN rm -rf ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast + +# Remove unsupported appsec modules +RUN rm -rf \ + ./python/lib/$runtime/site-packages/ddtrace/appsec/_iast \ + ./python/lib/$runtime/site-packages/ddtrace/appsec/sca \ + ./python/lib/$runtime/site-packages/ddtrace/appsec/_shared + # CI Visibility paths/integrations RUN rm -rf \ ./python/lib/$runtime/site-packages/ddtrace/contrib/coverage/ \ From 81d57acb951c1f37241b67b549963da4b1611949 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Thu, 9 Apr 2026 11:19:19 -0400 Subject: [PATCH 381/403] fix: Bump ujson minimum version to 5.10.0 (#787) * fix CVE-2026-32874 and CVE-2026-32875 * split the ujson constraint by Python version --- pyproject.toml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index f289867cd..ec95a7385 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -33,7 +33,10 @@ ddtrace = [ {version = ">=3.19.1,<4", python = ">=3.8,<3.10"}, {version = ">=4.1.1,<5,!=4.6.*", python = ">=3.10"} ] -ujson = ">=5.9.0" +ujson = [ + {version = ">=5.10.0,<5.12.0", python = ">=3.8,<3.10"}, + {version = ">=5.12.0", python = ">=3.10"} +] botocore = { version = "^1.34.0", optional = true } requests = { version ="^2.22.0", optional = true } pytest = { version= "^8.0.0", optional = true } From 5e8feaa4ad7bd9a12c8d5891847fcfed9f868fa1 Mon Sep 17 00:00:00 2001 From: Rithika Narayan <93233069+rithikanarayan@users.noreply.github.com> Date: Mon, 13 Apr 2026 12:39:23 -0400 Subject: [PATCH 382/403] Update integration test snapshots (#792) * Updated integration test snapshots * remove extra file --- .../logs/async-metrics_python310.log | 50 +++++++----- .../logs/async-metrics_python311.log | 50 +++++++----- .../logs/async-metrics_python312.log | 50 +++++++----- .../logs/async-metrics_python313.log | 50 +++++++----- .../logs/async-metrics_python314.log | 50 +++++++----- .../snapshots/logs/sync-metrics_python310.log | 80 ++++++++++++------- .../snapshots/logs/sync-metrics_python311.log | 80 ++++++++++++------- .../snapshots/logs/sync-metrics_python312.log | 80 ++++++++++++------- .../snapshots/logs/sync-metrics_python313.log | 80 ++++++++++++------- .../snapshots/logs/sync-metrics_python314.log | 80 ++++++++++++------- 10 files changed, 400 insertions(+), 250 deletions(-) diff --git a/tests/integration/snapshots/logs/async-metrics_python310.log b/tests/integration/snapshots/logs/async-metrics_python310.log index 8d47fa129..5aef301ef 100644 --- a/tests/integration/snapshots/logs/async-metrics_python310.log +++ b/tests/integration/snapshots/logs/async-metrics_python310.log @@ -73,7 +73,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -95,6 +96,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "true", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python310", "function_version": "$LATEST", @@ -106,7 +108,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "span.kind": "server", "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", "http.method": "GET", "http.route": "/", @@ -228,6 +229,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python310", "function_version": "$LATEST", @@ -237,8 +239,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -383,7 +385,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -437,6 +440,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python310", "function_version": "$LATEST", @@ -446,7 +450,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "dynamodb", "function_trigger.event_source_arn": "XXXX" }, @@ -576,7 +579,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -598,6 +602,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python310", "function_version": "$LATEST", @@ -607,7 +612,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "eventbridge" }, "metrics": { @@ -746,7 +750,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -768,6 +773,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python310", "function_version": "$LATEST", @@ -779,7 +785,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", @@ -918,7 +923,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -940,6 +946,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python310", "function_version": "$LATEST", @@ -949,7 +956,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "kinesis", "function_trigger.event_source_arn": "XXXX" }, @@ -1083,7 +1089,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1117,6 +1124,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python310", "function_version": "$LATEST", @@ -1126,7 +1134,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "s3", "function_trigger.event_source_arn": "XXXX" }, @@ -1261,7 +1268,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1283,6 +1291,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python310", "function_version": "$LATEST", @@ -1292,7 +1301,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "sns", "function_trigger.event_source_arn": "XXXX" }, @@ -1426,7 +1434,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1448,6 +1457,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python310", "function_version": "$LATEST", @@ -1457,7 +1467,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "sqs", "function_trigger.event_source_arn": "XXXX" }, @@ -1597,7 +1606,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1619,6 +1629,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python310", "function_version": "$LATEST", @@ -1630,7 +1641,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.status_code": "200" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python311.log b/tests/integration/snapshots/logs/async-metrics_python311.log index 3a2dd243e..d662cb7af 100644 --- a/tests/integration/snapshots/logs/async-metrics_python311.log +++ b/tests/integration/snapshots/logs/async-metrics_python311.log @@ -73,7 +73,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -95,6 +96,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "true", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python311", "function_version": "$LATEST", @@ -106,7 +108,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "span.kind": "server", "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", "http.method": "GET", "http.route": "/", @@ -228,6 +229,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python311", "function_version": "$LATEST", @@ -237,8 +239,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -383,7 +385,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -437,6 +440,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python311", "function_version": "$LATEST", @@ -446,7 +450,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "dynamodb", "function_trigger.event_source_arn": "XXXX" }, @@ -576,7 +579,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -598,6 +602,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python311", "function_version": "$LATEST", @@ -607,7 +612,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "eventbridge" }, "metrics": { @@ -746,7 +750,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -768,6 +773,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python311", "function_version": "$LATEST", @@ -779,7 +785,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", @@ -918,7 +923,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -940,6 +946,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python311", "function_version": "$LATEST", @@ -949,7 +956,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "kinesis", "function_trigger.event_source_arn": "XXXX" }, @@ -1083,7 +1089,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1117,6 +1124,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python311", "function_version": "$LATEST", @@ -1126,7 +1134,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "s3", "function_trigger.event_source_arn": "XXXX" }, @@ -1261,7 +1268,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1283,6 +1291,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python311", "function_version": "$LATEST", @@ -1292,7 +1301,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "sns", "function_trigger.event_source_arn": "XXXX" }, @@ -1426,7 +1434,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1448,6 +1457,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python311", "function_version": "$LATEST", @@ -1457,7 +1467,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "sqs", "function_trigger.event_source_arn": "XXXX" }, @@ -1597,7 +1606,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1619,6 +1629,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python311", "function_version": "$LATEST", @@ -1630,7 +1641,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.status_code": "200" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python312.log b/tests/integration/snapshots/logs/async-metrics_python312.log index 910218152..0e492dac2 100644 --- a/tests/integration/snapshots/logs/async-metrics_python312.log +++ b/tests/integration/snapshots/logs/async-metrics_python312.log @@ -73,7 +73,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -95,6 +96,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "true", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python312", "function_version": "$LATEST", @@ -106,7 +108,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "span.kind": "server", "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", "http.method": "GET", "http.route": "/", @@ -228,6 +229,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python312", "function_version": "$LATEST", @@ -237,8 +239,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -383,7 +385,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -437,6 +440,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python312", "function_version": "$LATEST", @@ -446,7 +450,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "dynamodb", "function_trigger.event_source_arn": "XXXX" }, @@ -576,7 +579,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -598,6 +602,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python312", "function_version": "$LATEST", @@ -607,7 +612,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "eventbridge" }, "metrics": { @@ -746,7 +750,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -768,6 +773,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python312", "function_version": "$LATEST", @@ -779,7 +785,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", @@ -918,7 +923,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -940,6 +946,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python312", "function_version": "$LATEST", @@ -949,7 +956,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "kinesis", "function_trigger.event_source_arn": "XXXX" }, @@ -1083,7 +1089,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1117,6 +1124,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python312", "function_version": "$LATEST", @@ -1126,7 +1134,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "s3", "function_trigger.event_source_arn": "XXXX" }, @@ -1261,7 +1268,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1283,6 +1291,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python312", "function_version": "$LATEST", @@ -1292,7 +1301,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "sns", "function_trigger.event_source_arn": "XXXX" }, @@ -1426,7 +1434,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1448,6 +1457,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python312", "function_version": "$LATEST", @@ -1457,7 +1467,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "sqs", "function_trigger.event_source_arn": "XXXX" }, @@ -1597,7 +1606,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1619,6 +1629,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python312", "function_version": "$LATEST", @@ -1630,7 +1641,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.status_code": "200" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python313.log b/tests/integration/snapshots/logs/async-metrics_python313.log index 41008f65d..6466246c2 100644 --- a/tests/integration/snapshots/logs/async-metrics_python313.log +++ b/tests/integration/snapshots/logs/async-metrics_python313.log @@ -73,7 +73,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -95,6 +96,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "true", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python313", "function_version": "$LATEST", @@ -106,7 +108,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "span.kind": "server", "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", "http.method": "GET", "http.route": "/", @@ -228,6 +229,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python313", "function_version": "$LATEST", @@ -237,8 +239,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -383,7 +385,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -437,6 +440,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python313", "function_version": "$LATEST", @@ -446,7 +450,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "dynamodb", "function_trigger.event_source_arn": "XXXX" }, @@ -576,7 +579,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -598,6 +602,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python313", "function_version": "$LATEST", @@ -607,7 +612,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "eventbridge" }, "metrics": { @@ -746,7 +750,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -768,6 +773,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python313", "function_version": "$LATEST", @@ -779,7 +785,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", @@ -918,7 +923,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -940,6 +946,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python313", "function_version": "$LATEST", @@ -949,7 +956,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "kinesis", "function_trigger.event_source_arn": "XXXX" }, @@ -1083,7 +1089,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1117,6 +1124,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python313", "function_version": "$LATEST", @@ -1126,7 +1134,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "s3", "function_trigger.event_source_arn": "XXXX" }, @@ -1261,7 +1268,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1283,6 +1291,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python313", "function_version": "$LATEST", @@ -1292,7 +1301,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "sns", "function_trigger.event_source_arn": "XXXX" }, @@ -1426,7 +1434,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1448,6 +1457,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python313", "function_version": "$LATEST", @@ -1457,7 +1467,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "sqs", "function_trigger.event_source_arn": "XXXX" }, @@ -1597,7 +1606,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1619,6 +1629,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python313", "function_version": "$LATEST", @@ -1630,7 +1641,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.status_code": "200" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python314.log b/tests/integration/snapshots/logs/async-metrics_python314.log index c6979758d..2ff4a6c16 100644 --- a/tests/integration/snapshots/logs/async-metrics_python314.log +++ b/tests/integration/snapshots/logs/async-metrics_python314.log @@ -73,7 +73,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -95,6 +96,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "true", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python314", "function_version": "$LATEST", @@ -106,7 +108,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "span.kind": "server", "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", "http.method": "GET", "http.route": "/", @@ -228,6 +229,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python314", "function_version": "$LATEST", @@ -237,8 +239,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -383,7 +385,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -437,6 +440,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python314", "function_version": "$LATEST", @@ -446,7 +450,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "dynamodb", "function_trigger.event_source_arn": "XXXX" }, @@ -576,7 +579,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -598,6 +602,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python314", "function_version": "$LATEST", @@ -607,7 +612,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "eventbridge" }, "metrics": { @@ -746,7 +750,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -768,6 +773,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python314", "function_version": "$LATEST", @@ -779,7 +785,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", @@ -918,7 +923,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -940,6 +946,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python314", "function_version": "$LATEST", @@ -949,7 +956,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "kinesis", "function_trigger.event_source_arn": "XXXX" }, @@ -1083,7 +1089,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1117,6 +1124,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python314", "function_version": "$LATEST", @@ -1126,7 +1134,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "s3", "function_trigger.event_source_arn": "XXXX" }, @@ -1261,7 +1268,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1283,6 +1291,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python314", "function_version": "$LATEST", @@ -1292,7 +1301,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "sns", "function_trigger.event_source_arn": "XXXX" }, @@ -1426,7 +1434,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1448,6 +1457,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python314", "function_version": "$LATEST", @@ -1457,7 +1467,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "sqs", "function_trigger.event_source_arn": "XXXX" }, @@ -1597,7 +1606,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1619,6 +1629,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python314", "function_version": "$LATEST", @@ -1630,7 +1641,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.status_code": "200" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python310.log b/tests/integration/snapshots/logs/sync-metrics_python310.log index 3747c3aec..997cc0e36 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python310.log +++ b/tests/integration/snapshots/logs/sync-metrics_python310.log @@ -53,7 +53,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -75,6 +76,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "true", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", "function_version": "$LATEST", @@ -86,7 +88,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "span.kind": "server", "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", "http.method": "GET", "http.route": "/", @@ -178,7 +179,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -227,6 +229,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", "function_version": "$LATEST", @@ -236,8 +239,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -326,7 +329,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -401,7 +405,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -455,6 +460,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", "function_version": "$LATEST", @@ -464,7 +470,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "dynamodb", "function_trigger.event_source_arn": "XXXX" }, @@ -554,7 +559,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -613,7 +619,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -635,6 +642,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", "function_version": "$LATEST", @@ -644,7 +652,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "eventbridge" }, "metrics": { @@ -733,7 +740,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -802,7 +810,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -824,6 +833,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", "function_version": "$LATEST", @@ -835,7 +845,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", @@ -927,7 +936,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -993,7 +1003,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1015,6 +1026,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", "function_version": "$LATEST", @@ -1024,7 +1036,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "kinesis", "function_trigger.event_source_arn": "XXXX" }, @@ -1114,7 +1125,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1177,7 +1189,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1211,6 +1224,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", "function_version": "$LATEST", @@ -1220,7 +1234,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "s3", "function_trigger.event_source_arn": "XXXX" }, @@ -1310,7 +1323,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1374,7 +1388,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1396,6 +1411,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", "function_version": "$LATEST", @@ -1405,7 +1421,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "sns", "function_trigger.event_source_arn": "XXXX" }, @@ -1495,7 +1510,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1558,7 +1574,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1580,6 +1597,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", "function_version": "$LATEST", @@ -1589,7 +1607,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "sqs", "function_trigger.event_source_arn": "XXXX" }, @@ -1679,7 +1696,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1748,7 +1766,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1770,6 +1789,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", "function_version": "$LATEST", @@ -1781,7 +1801,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.status_code": "200" }, @@ -1871,7 +1890,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, diff --git a/tests/integration/snapshots/logs/sync-metrics_python311.log b/tests/integration/snapshots/logs/sync-metrics_python311.log index b614b1222..4880a9049 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python311.log +++ b/tests/integration/snapshots/logs/sync-metrics_python311.log @@ -53,7 +53,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -75,6 +76,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "true", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", "function_version": "$LATEST", @@ -86,7 +88,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "span.kind": "server", "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", "http.method": "GET", "http.route": "/", @@ -178,7 +179,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -227,6 +229,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", "function_version": "$LATEST", @@ -236,8 +239,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -326,7 +329,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -401,7 +405,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -455,6 +460,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", "function_version": "$LATEST", @@ -464,7 +470,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "dynamodb", "function_trigger.event_source_arn": "XXXX" }, @@ -554,7 +559,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -613,7 +619,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -635,6 +642,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", "function_version": "$LATEST", @@ -644,7 +652,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "eventbridge" }, "metrics": { @@ -733,7 +740,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -802,7 +810,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -824,6 +833,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", "function_version": "$LATEST", @@ -835,7 +845,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", @@ -927,7 +936,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -993,7 +1003,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1015,6 +1026,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", "function_version": "$LATEST", @@ -1024,7 +1036,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "kinesis", "function_trigger.event_source_arn": "XXXX" }, @@ -1114,7 +1125,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1177,7 +1189,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1211,6 +1224,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", "function_version": "$LATEST", @@ -1220,7 +1234,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "s3", "function_trigger.event_source_arn": "XXXX" }, @@ -1310,7 +1323,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1374,7 +1388,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1396,6 +1411,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", "function_version": "$LATEST", @@ -1405,7 +1421,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "sns", "function_trigger.event_source_arn": "XXXX" }, @@ -1495,7 +1510,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1558,7 +1574,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1580,6 +1597,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", "function_version": "$LATEST", @@ -1589,7 +1607,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "sqs", "function_trigger.event_source_arn": "XXXX" }, @@ -1679,7 +1696,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1748,7 +1766,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1770,6 +1789,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", "function_version": "$LATEST", @@ -1781,7 +1801,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.status_code": "200" }, @@ -1871,7 +1890,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, diff --git a/tests/integration/snapshots/logs/sync-metrics_python312.log b/tests/integration/snapshots/logs/sync-metrics_python312.log index 593d9fbfd..0ed8cb0f4 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python312.log +++ b/tests/integration/snapshots/logs/sync-metrics_python312.log @@ -53,7 +53,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -75,6 +76,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "true", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", "function_version": "$LATEST", @@ -86,7 +88,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "span.kind": "server", "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", "http.method": "GET", "http.route": "/", @@ -178,7 +179,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -227,6 +229,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", "function_version": "$LATEST", @@ -236,8 +239,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -326,7 +329,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -401,7 +405,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -455,6 +460,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", "function_version": "$LATEST", @@ -464,7 +470,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "dynamodb", "function_trigger.event_source_arn": "XXXX" }, @@ -554,7 +559,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -613,7 +619,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -635,6 +642,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", "function_version": "$LATEST", @@ -644,7 +652,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "eventbridge" }, "metrics": { @@ -733,7 +740,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -802,7 +810,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -824,6 +833,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", "function_version": "$LATEST", @@ -835,7 +845,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", @@ -927,7 +936,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -993,7 +1003,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1015,6 +1026,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", "function_version": "$LATEST", @@ -1024,7 +1036,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "kinesis", "function_trigger.event_source_arn": "XXXX" }, @@ -1114,7 +1125,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1177,7 +1189,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1211,6 +1224,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", "function_version": "$LATEST", @@ -1220,7 +1234,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "s3", "function_trigger.event_source_arn": "XXXX" }, @@ -1310,7 +1323,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1374,7 +1388,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1396,6 +1411,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", "function_version": "$LATEST", @@ -1405,7 +1421,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "sns", "function_trigger.event_source_arn": "XXXX" }, @@ -1495,7 +1510,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1558,7 +1574,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1580,6 +1597,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", "function_version": "$LATEST", @@ -1589,7 +1607,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "sqs", "function_trigger.event_source_arn": "XXXX" }, @@ -1679,7 +1696,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1748,7 +1766,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1770,6 +1789,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", "function_version": "$LATEST", @@ -1781,7 +1801,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.status_code": "200" }, @@ -1871,7 +1890,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, diff --git a/tests/integration/snapshots/logs/sync-metrics_python313.log b/tests/integration/snapshots/logs/sync-metrics_python313.log index c21fcaad0..fca4631cd 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python313.log +++ b/tests/integration/snapshots/logs/sync-metrics_python313.log @@ -53,7 +53,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -75,6 +76,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "true", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", "function_version": "$LATEST", @@ -86,7 +88,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "span.kind": "server", "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", "http.method": "GET", "http.route": "/", @@ -178,7 +179,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -227,6 +229,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", "function_version": "$LATEST", @@ -236,8 +239,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -326,7 +329,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -401,7 +405,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -455,6 +460,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", "function_version": "$LATEST", @@ -464,7 +470,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "dynamodb", "function_trigger.event_source_arn": "XXXX" }, @@ -554,7 +559,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -613,7 +619,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -635,6 +642,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", "function_version": "$LATEST", @@ -644,7 +652,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "eventbridge" }, "metrics": { @@ -733,7 +740,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -802,7 +810,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -824,6 +833,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", "function_version": "$LATEST", @@ -835,7 +845,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", @@ -927,7 +936,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -993,7 +1003,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1015,6 +1026,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", "function_version": "$LATEST", @@ -1024,7 +1036,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "kinesis", "function_trigger.event_source_arn": "XXXX" }, @@ -1114,7 +1125,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1177,7 +1189,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1211,6 +1224,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", "function_version": "$LATEST", @@ -1220,7 +1234,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "s3", "function_trigger.event_source_arn": "XXXX" }, @@ -1310,7 +1323,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1374,7 +1388,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1396,6 +1411,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", "function_version": "$LATEST", @@ -1405,7 +1421,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "sns", "function_trigger.event_source_arn": "XXXX" }, @@ -1495,7 +1510,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1558,7 +1574,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1580,6 +1597,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", "function_version": "$LATEST", @@ -1589,7 +1607,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "sqs", "function_trigger.event_source_arn": "XXXX" }, @@ -1679,7 +1696,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1748,7 +1766,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1770,6 +1789,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", "function_version": "$LATEST", @@ -1781,7 +1801,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.status_code": "200" }, @@ -1871,7 +1890,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, diff --git a/tests/integration/snapshots/logs/sync-metrics_python314.log b/tests/integration/snapshots/logs/sync-metrics_python314.log index 090c3cbae..8b6eb8f06 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python314.log +++ b/tests/integration/snapshots/logs/sync-metrics_python314.log @@ -53,7 +53,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -75,6 +76,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "true", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python314", "function_version": "$LATEST", @@ -86,7 +88,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "span.kind": "server", "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", "http.method": "GET", "http.route": "/", @@ -178,7 +179,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -227,6 +229,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "meta": { "runtime-id": "XXXX", "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python314", "function_version": "$LATEST", @@ -236,8 +239,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -326,7 +329,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -401,7 +405,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -455,6 +460,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python314", "function_version": "$LATEST", @@ -464,7 +470,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "dynamodb", "function_trigger.event_source_arn": "XXXX" }, @@ -554,7 +559,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -613,7 +619,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -635,6 +642,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python314", "function_version": "$LATEST", @@ -644,7 +652,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "eventbridge" }, "metrics": { @@ -733,7 +740,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -802,7 +810,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -824,6 +833,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python314", "function_version": "$LATEST", @@ -835,7 +845,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", @@ -927,7 +936,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -993,7 +1003,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1015,6 +1026,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python314", "function_version": "$LATEST", @@ -1024,7 +1036,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "kinesis", "function_trigger.event_source_arn": "XXXX" }, @@ -1114,7 +1125,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1177,7 +1189,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1211,6 +1224,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python314", "function_version": "$LATEST", @@ -1220,7 +1234,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "s3", "function_trigger.event_source_arn": "XXXX" }, @@ -1310,7 +1323,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1374,7 +1388,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1396,6 +1411,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python314", "function_version": "$LATEST", @@ -1405,7 +1421,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "sns", "function_trigger.event_source_arn": "XXXX" }, @@ -1495,7 +1510,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1558,7 +1574,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1580,6 +1597,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python314", "function_version": "$LATEST", @@ -1589,7 +1607,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", "span.name": "aws.lambda", - "span.kind": "server", "function_trigger.event_source": "sqs", "function_trigger.event_source_arn": "XXXX" }, @@ -1679,7 +1696,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1748,7 +1766,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, @@ -1770,6 +1789,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "duration": "XXXX", "meta": { "_dd.origin": "lambda", + "span.kind": "server", "cold_start": "false", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python314", "function_version": "$LATEST", @@ -1781,7 +1801,6 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "span.kind": "server", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", "http.status_code": "200" }, @@ -1871,7 +1890,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" }, "metrics": { "process_id": XXXX, From 39f48d556c22e3816eec6ccf9268ff51ad6d9bd4 Mon Sep 17 00:00:00 2001 From: Zarir Hamza Date: Wed, 15 Apr 2026 13:42:44 -0400 Subject: [PATCH 383/403] fix: disable remote configuration by default in Lambda (#797) --- datadog_lambda/config.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/datadog_lambda/config.py b/datadog_lambda/config.py index 4458bd9aa..ce4924af8 100644 --- a/datadog_lambda/config.py +++ b/datadog_lambda/config.py @@ -141,6 +141,11 @@ def _reset(self): "enabled" if config.fips_mode_enabled else "not enabled", ) +# Remote configuration relies on /dev/shm which is unavailable in Lambda. +# Disable it before ddtrace loads to avoid the shared-memory warning. +if "DD_REMOTE_CONFIGURATION_ENABLED" not in os.environ: + os.environ["DD_REMOTE_CONFIGURATION_ENABLED"] = "false" + # disable css to prevent double counting in lambda os.environ["DD_TRACE_STATS_COMPUTATION_ENABLED"] = "false" From 5b292db0a2295bfa4cfa7d183c492d0956803f94 Mon Sep 17 00:00:00 2001 From: Yiming Luo <10097700+lym953@users.noreply.github.com> Date: Wed, 15 Apr 2026 14:18:09 -0400 Subject: [PATCH 384/403] fix: correct durable execution statuses to match Python SDK InvocationStatus enum (#793) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit SUCCEEDED, FAILED, STOPPED, TIMED_OUT → SUCCEEDED, FAILED, PENDING. STOPPED and TIMED_OUT are OperationStatus values; InvocationStatus only defines SUCCEEDED, FAILED, and PENDING. Co-authored-by: Claude Sonnet 4.6 --- datadog_lambda/durable.py | 2 +- tests/test_durable.py | 13 +++---------- 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/datadog_lambda/durable.py b/datadog_lambda/durable.py index c77b43b04..9a28b36bd 100644 --- a/datadog_lambda/durable.py +++ b/datadog_lambda/durable.py @@ -55,7 +55,7 @@ def extract_durable_function_tags(event): } -VALID_DURABLE_STATUSES = {"SUCCEEDED", "FAILED", "STOPPED", "TIMED_OUT"} +VALID_DURABLE_STATUSES = {"SUCCEEDED", "FAILED", "PENDING"} def extract_durable_execution_status(response, event): diff --git a/tests/test_durable.py b/tests/test_durable.py index 203548d12..36a3e8c5f 100644 --- a/tests/test_durable.py +++ b/tests/test_durable.py @@ -131,19 +131,12 @@ def test_returns_failed(self): response = {"Status": "FAILED", "Error": "some-error"} self.assertEqual(extract_durable_execution_status(response, event), "FAILED") - def test_returns_stopped(self): + def test_returns_pending(self): event = { "DurableExecutionArn": "arn:aws:lambda:us-east-1:123:function:f:1/durable-execution/n/id" } - response = {"Status": "STOPPED"} - self.assertEqual(extract_durable_execution_status(response, event), "STOPPED") - - def test_returns_timed_out(self): - event = { - "DurableExecutionArn": "arn:aws:lambda:us-east-1:123:function:f:1/durable-execution/n/id" - } - response = {"Status": "TIMED_OUT"} - self.assertEqual(extract_durable_execution_status(response, event), "TIMED_OUT") + response = {"Status": "PENDING"} + self.assertEqual(extract_durable_execution_status(response, event), "PENDING") def test_returns_none_for_non_durable_event(self): event = {"key": "value"} From 5d8417db23f14e2555dfdd734e2bd148bbe123be Mon Sep 17 00:00:00 2001 From: Olivier Nzia Date: Wed, 15 Apr 2026 15:36:52 -0400 Subject: [PATCH 385/403] bump vulnerable dependencies (#796) * bump pytest * use compatible depedency versions and prevent major version upgrades * upgrade minimatch * upgrade urllib3 for transitive dependencies * remove upper python version limit from urllib3 * upgrade requests to ^2.33.0 * undo requests upgrade in requirements.txt * add python version markers for requests in requirements.txt --- poetry.lock | 483 ++++++++++++++++++++-------- pyproject.toml | 18 +- tests/integration/package-lock.json | 123 +++++-- tests/integration/package.json | 6 + tests/integration/requirements.txt | 3 +- tests/integration/yarn.lock | 287 ++++++++++------- 6 files changed, 627 insertions(+), 293 deletions(-) diff --git a/poetry.lock b/poetry.lock index 4c37bf871..bf6c6fec4 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 2.1.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.2.1 and should not be changed by hand. [[package]] name = "botocore" @@ -31,6 +31,7 @@ description = "Python module to generate and modify bytecode" optional = false python-versions = ">=3.8" groups = ["main"] +markers = "python_version < \"3.10\"" files = [ {file = "bytecode-0.16.1-py3-none-any.whl", hash = "sha256:1d4b61ed6bade4bff44127c8283bef8131a664ce4dbe09d64a88caf329939f35"}, {file = "bytecode-0.16.1.tar.gz", hash = "sha256:8fbbb637c880f339e564858bc6c7984ede67ae97bc71343379a535a9a4baf398"}, @@ -39,6 +40,19 @@ files = [ [package.dependencies] typing_extensions = {version = "*", markers = "python_version < \"3.10\""} +[[package]] +name = "bytecode" +version = "0.17.0" +description = "Python module to generate and modify bytecode" +optional = false +python-versions = ">=3.9" +groups = ["main"] +markers = "python_version >= \"3.10\"" +files = [ + {file = "bytecode-0.17.0-py3-none-any.whl", hash = "sha256:64fb10cde1db7ef5cc39bd414ecebd54ba3b40e1c4cf8121ca5e72f170916ff8"}, + {file = "bytecode-0.17.0.tar.gz", hash = "sha256:0c37efa5bd158b1b873f530cceea2c645611d55bd2dc2a4758b09f185749b6fd"}, +] + [[package]] name = "certifi" version = "2024.12.14" @@ -183,100 +197,179 @@ requests = ">=2.6.0" [[package]] name = "ddtrace" -version = "2.20.0" +version = "3.19.7" description = "Datadog APM client library" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" groups = ["main"] +markers = "python_version < \"3.10\"" files = [ - {file = "ddtrace-2.20.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:e1dee099099b95acf7d0e552179925cfec58a52315cc914d153506367b195bc4"}, - {file = "ddtrace-2.20.0-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:9d209bef14caafcd53be8c14e04741d86c08f76496c1bf755e2eaa38605ce3e0"}, - {file = "ddtrace-2.20.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f37966012078151713d61382de2a7ed710a8f375820e0db41930436b813b651"}, - {file = "ddtrace-2.20.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:879b963baf0b97d5ddd26185ab496b79efd25bbfdc2c25dbb1113ec19dc5abf9"}, - {file = "ddtrace-2.20.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13e9b9a87c9df8a029fd3583ac660538dfa9d53207fee82b7f04749148bf8a3b"}, - {file = "ddtrace-2.20.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:eb76547a4bbf285d03ffc6e065bbad61761954741da2df0e4683d68d46ef2159"}, - {file = "ddtrace-2.20.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:194973afa1e357c68b6a6eceaabbddcef01130d167775126c2a15b3c1827f683"}, - {file = "ddtrace-2.20.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:a71d2fc753b8fa2c3435b6f4d5f820d8deb51f49df59a4886b4da68b67f923d3"}, - {file = "ddtrace-2.20.0-cp310-cp310-win32.whl", hash = "sha256:567054d0c01dc552a8a24c4c9eeb98d778be720d2c4c9536acf1b86d6969a5e4"}, - {file = "ddtrace-2.20.0-cp310-cp310-win_amd64.whl", hash = "sha256:d39f96e2fdfdf7ab43ee89a20d914f5ab12f8f361c390663eacb0e5da6e6e7fb"}, - {file = "ddtrace-2.20.0-cp311-cp311-macosx_12_0_universal2.whl", hash = "sha256:0a1d7eaf6c9a5e0eabb8396f7d19faffc8f76a1ae37f34814c3432a9ca6f31da"}, - {file = "ddtrace-2.20.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:301a7787a34113b56cc9067a593c4717f6e158f2393883c30b59d0a37ebc06fa"}, - {file = "ddtrace-2.20.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d76ce49eb42588766db6756240d746441a66f03932547bfca9c62a8aecdbb38"}, - {file = "ddtrace-2.20.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a84d2e2411496c1b4ca3ce0cfb407d186cb3d13f1769c321fec30e677d815cd8"}, - {file = "ddtrace-2.20.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da47746a24242d805a800bca0a10b1354353e18b0bc4b6caf9c9c1724ba286b0"}, - {file = "ddtrace-2.20.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6f89e6003a738800beeb9948c847366976c73de2e24cc469b644a125f418c0a8"}, - {file = "ddtrace-2.20.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4fca20220bf668ebcac7051d28648b62aa95d2afeb5036ecad167cb454c7dcf1"}, - {file = "ddtrace-2.20.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1197e89fcaaca4ce419e3c812d04c73b8d16973202472cf3f674b4698b967697"}, - {file = "ddtrace-2.20.0-cp311-cp311-win32.whl", hash = "sha256:44bcd604a1d9095f4eb6813db6a677a208bd47884aff9ddc5aa46f596765f38e"}, - {file = "ddtrace-2.20.0-cp311-cp311-win_amd64.whl", hash = "sha256:0a5f092df1ee4d0afe96502866ff0fb446a07c6a23d445ed616f1302c883e1d3"}, - {file = "ddtrace-2.20.0-cp312-cp312-macosx_12_0_universal2.whl", hash = "sha256:f77103d36e6ab52cb45781766620d3874d0a728565afa7fd57f8ce2d5087e8e7"}, - {file = "ddtrace-2.20.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:d1cec952ce2ca9efbb34c8a9ee522e1cc588fe454b9115120b30fd5d0f821512"}, - {file = "ddtrace-2.20.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a4a1da150e92b6d43047f2a91a7d3b7133207f94b82613625abf82662359b30e"}, - {file = "ddtrace-2.20.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:91ab68c1facc6cf04085fdeea53210ed9928e95116809fd9bfe2dea54e83375d"}, - {file = "ddtrace-2.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4fd7ec6410225e64ca875d1bc9bd6bd8489f52dd8558462fbb52447fb8f66ad3"}, - {file = "ddtrace-2.20.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:57864590ddb84da4eb99332fe4b521e6fd747992178e3eabcf4f87406e908bb1"}, - {file = "ddtrace-2.20.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:37693555704a0cbd4a925e4ffe9c6df696146c85557c5f66ce3a7a88406772d9"}, - {file = "ddtrace-2.20.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ae5e802aaefc0cd3b63e3fd46e051a39e9f960a02e89f44a5bb820f445b736f9"}, - {file = "ddtrace-2.20.0-cp312-cp312-win32.whl", hash = "sha256:14fe4f583bec105c40e233c74fcbaea185658651c626ce1609750d83d93a00ae"}, - {file = "ddtrace-2.20.0-cp312-cp312-win_amd64.whl", hash = "sha256:cfbc926ddfeece0312e82f9e00a68001647666d11ceb050a5bbe66ca8931e3d2"}, - {file = "ddtrace-2.20.0-cp313-cp313-macosx_12_0_universal2.whl", hash = "sha256:eeca6b6bd48794d48de438981dccbc96a06366edde798c12b2b3348ca5e03717"}, - {file = "ddtrace-2.20.0-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:3f526e75d1b61019db2cd715e8c7298325e21c3584f8677a7decf37aa81e7284"}, - {file = "ddtrace-2.20.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:96441189ccc772ef4871e23a35cec58a748c16ebfb2293eccaaa719dcbc368fd"}, - {file = "ddtrace-2.20.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4d31d769f222c9a5bde1d4a594da1341014bf02db1a7194f5a41ed7e5c4c9fa8"}, - {file = "ddtrace-2.20.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:54068dbf034e1f607ef5d58a9fa1b26bd78b4f3db0618ce0a3e9c4b04fff7209"}, - {file = "ddtrace-2.20.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:62e86d9b00277fe2b9bdfbc51ca1bc34aa5c1200aa6bc5084c7eaaab28b022de"}, - {file = "ddtrace-2.20.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:c83c2458de1cf1bbac48689c6541a85d54ad94ae6608961e1089cc2959a8c77a"}, - {file = "ddtrace-2.20.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:569d7a92a88ba9b2a203addea688b0585901534c92c2d148ef9f971b6d7b3805"}, - {file = "ddtrace-2.20.0-cp37-cp37m-macosx_12_0_x86_64.whl", hash = "sha256:df413d646fc14b4be51a15ed8e484bcdf3b21e370e2644a586283bcc7e0b2355"}, - {file = "ddtrace-2.20.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:33e4406a436278722df193c93d49e662a8891e8a440fddb273dca9a56fa27947"}, - {file = "ddtrace-2.20.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b9d358bc7b4b1daa2d6e6bc697244b39db653ddd5ae139045941d3db28950bfe"}, - {file = "ddtrace-2.20.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a523924382d2f8f87731e4ad86bbf4721fba9eb807ed3b0c862db6d768e1e81c"}, - {file = "ddtrace-2.20.0-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:0af78a424e9d87250a8648a35b7de5653f27b3f6f6803c1b33780816a07e6d26"}, - {file = "ddtrace-2.20.0-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:2723378e670d27927f7d1ab878c8668fc392a5656a66453b9808e7c4025431fd"}, - {file = "ddtrace-2.20.0-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:01f76fc9bf1413a188ddd59851eb3b668d3de936afed73a5914a817f36e11005"}, - {file = "ddtrace-2.20.0-cp37-cp37m-win32.whl", hash = "sha256:3a615ae95ef8f889304b2958655ac8cda23cf2f2c8faf5d8ff88bd14bdcf3fb4"}, - {file = "ddtrace-2.20.0-cp37-cp37m-win_amd64.whl", hash = "sha256:b90333661ffd3460bae6dbbd7a5f35d8467cff36bd7a689a47b014edb19c0fe6"}, - {file = "ddtrace-2.20.0-cp38-cp38-macosx_12_0_universal2.whl", hash = "sha256:ab27596e82bdfe9c0c5580f6886ec943ae2fe615a446c22470f6a1f9742dec62"}, - {file = "ddtrace-2.20.0-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:e2de7371291283cba1afdd7e919a577637099da0d6872d33b4008e1cad6e1b8b"}, - {file = "ddtrace-2.20.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fa4f90f472768aef8ce023a924505c9d1d09428fc9d6ab81bc0e3ab183e3ff48"}, - {file = "ddtrace-2.20.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:05b68ba6fe4da5317396100669edf91b3d54b95ae979a2a22ca880cfcc6c249d"}, - {file = "ddtrace-2.20.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1512d07e6c7cde13ae251906d57d31613fe5ee99fab2894e90679053b4256953"}, - {file = "ddtrace-2.20.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:dcadc60aa60e11f2db56065a834aaa5e52a9be02e8edc8d14aa7015fb54092ce"}, - {file = "ddtrace-2.20.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:698207d88941ea3e4e5f3add6071e6651caa12fcffe079359507391382251759"}, - {file = "ddtrace-2.20.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:9f95a251f84725df055202d933b4a8fb39cefd51341e10cad17d2a8b4d64700e"}, - {file = "ddtrace-2.20.0-cp38-cp38-win32.whl", hash = "sha256:0b121285459693ae9f3c9ce54cc4be981a2e73d4c52b8a5eb038cf41df9974dd"}, - {file = "ddtrace-2.20.0-cp38-cp38-win_amd64.whl", hash = "sha256:4c840dc91c622138a4a6abdbcbee56897d4c55d9e7bf16b1902ee676f20b22f2"}, - {file = "ddtrace-2.20.0-cp39-cp39-macosx_12_0_universal2.whl", hash = "sha256:c74d69e6a4cbd91f6fe411519d753f34893d6d40a68829b43485690df8a7f30f"}, - {file = "ddtrace-2.20.0-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:4902b64ba89a8e4008228e7a5007e20b2bb8071c6c7689abd47dddc159e2baf1"}, - {file = "ddtrace-2.20.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:758ba828eddd144a4804af692869e7278376efa740932a7453e8fdc0ed6ef6a7"}, - {file = "ddtrace-2.20.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:37995326df811236c9d92d1b5713378a7f11270bf1e21c64914653a3e12d7d01"}, - {file = "ddtrace-2.20.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ab7f1babd7a8e73edf70c957a5b3bbeb4c615b232a078a0fe4da566e1663d1aa"}, - {file = "ddtrace-2.20.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:1cd1b240f465c98e226ab896b1b1c3696752d5eb1051a0aafb8a3db701d2ddc1"}, - {file = "ddtrace-2.20.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3a300515c3327af4fd5c6c83e6ca63cd0a20e4243381d4b712e3f406d9ddf201"}, - {file = "ddtrace-2.20.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:f1ce886b112e0e8aa66ba8cf3593f00f7f6ae6b48dd09bd8ce90c59adad59d66"}, - {file = "ddtrace-2.20.0-cp39-cp39-win32.whl", hash = "sha256:bb77464849b092f93839d5c257df9eaeb018521ddea2deef97dfc6e3501a2516"}, - {file = "ddtrace-2.20.0-cp39-cp39-win_amd64.whl", hash = "sha256:b95f14f0634fe3f02dcebb7b8a124207b3d44168fd0dfc6bfff1e4db93978089"}, - {file = "ddtrace-2.20.0.tar.gz", hash = "sha256:f185c6dd88cd04884f0ad27b37f14d837274e8fc4dc43407781334d92d41c3bc"}, + {file = "ddtrace-3.19.7-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:640847ed52bef189da0d2403c21be80c0dd425da19e65fb1b099b69db4506111"}, + {file = "ddtrace-3.19.7-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:428ef5a4bf0abaead6b24e422feb9121a29303246b70d4ea78cd892bfa0c9a58"}, + {file = "ddtrace-3.19.7-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:04169fddab36fcbb82248d6e02b3231e8fe732772d8f7b58b2342e414fdfe5fe"}, + {file = "ddtrace-3.19.7-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:9d48387bb79f3ed3d0e812ce17545c065d8fa03336069cac1bae32b87e8e0b2f"}, + {file = "ddtrace-3.19.7-cp310-cp310-manylinux_2_28_i686.whl", hash = "sha256:35a41266f309911797da7be1f8b3dd2cef440814be59edf48b11c5496f6fa585"}, + {file = "ddtrace-3.19.7-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:7c7f885aacac5959b210ec86cf861d54c1bf778bedde72cf22a0e11b4e3342da"}, + {file = "ddtrace-3.19.7-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:bb0c758cd60783e4ac29d98afb2ccdc00f918304f0191381b3bd9df7ba15bb64"}, + {file = "ddtrace-3.19.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:1fa535aa2795bf776270e3373227cf14ef5164ce3b6e0953b7b66da3a3cf9d0f"}, + {file = "ddtrace-3.19.7-cp310-cp310-win32.whl", hash = "sha256:31993a4eb521e28eb52921ed2112ad813b779a2cabf5fafc620224bb6e661a53"}, + {file = "ddtrace-3.19.7-cp310-cp310-win_amd64.whl", hash = "sha256:306a5c803aa38c6808449c543ef4a00430da7fa959b801438a144a8d964055cb"}, + {file = "ddtrace-3.19.7-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:2c8bbfa3ab83e6a66ed69a2897479158040cc126b561eb33fec002323afc1507"}, + {file = "ddtrace-3.19.7-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:c708d863ce44762bf219554b47ae7f9fd28348d8502b498f7910a24d4bcb3526"}, + {file = "ddtrace-3.19.7-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:52d30d1fe4b4751de0909d11966c9fb3db509cb795a98ea40633a78ff39daa18"}, + {file = "ddtrace-3.19.7-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c9fe721ede05f197893664361873177df8551a820b7e5ac6d84da39e82bf175c"}, + {file = "ddtrace-3.19.7-cp311-cp311-manylinux_2_28_i686.whl", hash = "sha256:74b25220346fdac217d1b334c1d88bbae2c3ae5e101e53460f8193ed226d2759"}, + {file = "ddtrace-3.19.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:259261612982b1222731560d166edf4125f53d2a4a5468778a91b9b3d8577452"}, + {file = "ddtrace-3.19.7-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:3b1a59d4347d0176ffe9841f2a01ca9b42bfd65760baf90337fd3b0718cceba5"}, + {file = "ddtrace-3.19.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:119b60f006944af39ec6eaa2ed3a9b96defbb537ad51592a60a8285643217094"}, + {file = "ddtrace-3.19.7-cp311-cp311-win32.whl", hash = "sha256:74e31b295267f6b5d02192566e382a33dd3c2254f545f43f2d241f1266de06d4"}, + {file = "ddtrace-3.19.7-cp311-cp311-win_amd64.whl", hash = "sha256:8e00eaca60b53c206370b69641534d251b68f114406a7cdd96aa505be1e8a4e3"}, + {file = "ddtrace-3.19.7-cp311-cp311-win_arm64.whl", hash = "sha256:54fa6ccf40f9ad09787b4ccc2cfb6524ce87997a3424e3f92efe3f4bfed2008d"}, + {file = "ddtrace-3.19.7-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:2a1b4ccf33d82cc03334f6f54b8e37711f0e46fddaade56769ac42e6c6683d98"}, + {file = "ddtrace-3.19.7-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:b6037dba7f0b7fa59b8e1ab44a2750fccc3e619917d451a94cc1bc108b16d3cb"}, + {file = "ddtrace-3.19.7-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:38b515c8b5100e6b3c513e58160eb268bddbd9783fa2cb6f7f65ee7c387936ee"}, + {file = "ddtrace-3.19.7-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:300807941a2f005aacf4ef3d81e94dd4034d9acf1bf3786e73c382659bd8b617"}, + {file = "ddtrace-3.19.7-cp312-cp312-manylinux_2_28_i686.whl", hash = "sha256:c74524559e7d21beb29b8e13c5090644525b5df03a6a7450e9286997e31ac9c9"}, + {file = "ddtrace-3.19.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:817abdd18b24ec0f881843af4c6bae55c4ecd997dc0c3688c4a45b0a18a1368c"}, + {file = "ddtrace-3.19.7-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:c59faed5fa5330ffd5fe60284b1ec1a0525d7fc063787de227a418810851c2f3"}, + {file = "ddtrace-3.19.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:af3f1200c3e4c850a9c408047a6f83f5b87cbb0c641022a4107e566e5064c434"}, + {file = "ddtrace-3.19.7-cp312-cp312-win32.whl", hash = "sha256:6fd3409777c2549b5bf743abc3c1ab17ba7a1a399c3a580e2a4bac383a576e35"}, + {file = "ddtrace-3.19.7-cp312-cp312-win_amd64.whl", hash = "sha256:69448c80f440aee4d1a3e19295e66c44a84ae014da6c05a52d846b4b7ac821c9"}, + {file = "ddtrace-3.19.7-cp312-cp312-win_arm64.whl", hash = "sha256:30827b6bbbbb75f883717c59339e43feef31a7a31da623f2f291ac6e9a044c6f"}, + {file = "ddtrace-3.19.7-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:425bacf644a772aa3faca075234f3bc5d37972fa1f32932343b00653190cdab5"}, + {file = "ddtrace-3.19.7-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:dec566649d660bfe179d2d97d8217304a466c0294ac6cec84ab9ee5bd2c20056"}, + {file = "ddtrace-3.19.7-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:91e62d9d206150ddc360af2628615572f3bcc314ae420ab59041e6e493477993"}, + {file = "ddtrace-3.19.7-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:251607dec183356cfe1ec8f102f01ac556a38136216f74e31b5748b6fa994d97"}, + {file = "ddtrace-3.19.7-cp313-cp313-manylinux_2_28_i686.whl", hash = "sha256:6952e2e78f126dce55d4d988490bc76c24e439d52d2686ff618f8d7640534e61"}, + {file = "ddtrace-3.19.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:82b7fbfedac7986274d2c947d247affdb9d918edcb6d65587ab9c1d8d81af9bf"}, + {file = "ddtrace-3.19.7-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b96f689ab0225d2d8934c4aa42a7ce1001b91fbf1ff8e8158a6428e0f0faece6"}, + {file = "ddtrace-3.19.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9a0995ac17c3e43fae6f6c2ac0d9a90d035ea13d629342f84ba7596ac002ce87"}, + {file = "ddtrace-3.19.7-cp313-cp313-win32.whl", hash = "sha256:846b695964580cb4d91c4600907119f38b57b792d7ff1f21793d2140157b820b"}, + {file = "ddtrace-3.19.7-cp313-cp313-win_amd64.whl", hash = "sha256:de1aabc50c663f27c1ae341d16b31bdc3b8fb1c28c4b8a683e9000cbfd11fa44"}, + {file = "ddtrace-3.19.7-cp313-cp313-win_arm64.whl", hash = "sha256:2d41fd500ec915be8b3b95cd7a5535f87323acbdc7e9b2c02797d83b6985b451"}, + {file = "ddtrace-3.19.7-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:528fb2565048e669cfe5ad0e24f4f39f73747977982c78339f9ece7e39430180"}, + {file = "ddtrace-3.19.7-cp314-cp314-macosx_12_0_x86_64.whl", hash = "sha256:29202bdd4496098b27907dfdfd85000549901461ebea6f0f90d19eb4ebac2b76"}, + {file = "ddtrace-3.19.7-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:abb3b5b8cac3247b01d381fe71aeb56b20f8759275619701418e53f0306eb6a0"}, + {file = "ddtrace-3.19.7-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7d27d310e272aa7772fdf7087bd5056966448d8051586de75577076ad8c8e323"}, + {file = "ddtrace-3.19.7-cp314-cp314-manylinux_2_28_i686.whl", hash = "sha256:aec1ec1fbcdafa76362c7f468aab240224d14060c4cda73e9a0676293be471c5"}, + {file = "ddtrace-3.19.7-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:26c300dbb6d8c29b6fcd4847da29010a988150a28426c4cc46e7e1f3816ea195"}, + {file = "ddtrace-3.19.7-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:8c3a74eda7907e5d4a5a36c62e02ee41fca10de83ae2f592e0a63530d8eda7aa"}, + {file = "ddtrace-3.19.7-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:79cdb4246da2a6e32b768a0c7f952890ddeb9c8bea9228adf2d82bcf66849177"}, + {file = "ddtrace-3.19.7-cp314-cp314-win32.whl", hash = "sha256:759d49298575079e31da354780ca37220775c80a007bbe2ae7fb756a11210740"}, + {file = "ddtrace-3.19.7-cp314-cp314-win_amd64.whl", hash = "sha256:054ebbdd1e02e90874cda803b31721f4e4ab6d0d3833bc8e82de8b78f1fc9d57"}, + {file = "ddtrace-3.19.7-cp314-cp314-win_arm64.whl", hash = "sha256:ff953b2d7dc8a7d8e8d452aa0f9ac1e094e9deba371f3715bc73613bc1fa0069"}, + {file = "ddtrace-3.19.7-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:c0139817f0acce19aa0bd07e09bd9be0844c5561e1d8d3d6c0a46f13256587c4"}, + {file = "ddtrace-3.19.7-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:f67b6129039b91447e8f412b5fca83c264c8b471d688d1c3a1fd7c2dc05b3b03"}, + {file = "ddtrace-3.19.7-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:c35e49e472e3639e8827c9b78d99a64caba74bf96a920c74c62c6ed36df5dbf2"}, + {file = "ddtrace-3.19.7-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:9411e4ad0fbf9ebf7afd2420f171408bb0468b8c714657124ae1f1f2391193cf"}, + {file = "ddtrace-3.19.7-cp38-cp38-manylinux_2_28_i686.whl", hash = "sha256:482a43cb3f33a8373a207965579eded1a2699fb0e624f80746455c8a9c839b63"}, + {file = "ddtrace-3.19.7-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:79e6e53a290901b7df39bd2c176865ca906f66d7a0ed6ca6e862abbdd4b85b6b"}, + {file = "ddtrace-3.19.7-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:5fa9aa40d7fedc5682a7ca82ec9e68d96fd5714e89c17342e76f8ef37300238d"}, + {file = "ddtrace-3.19.7-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:6feaf4786d6b419a5fb225e91d97010273dfc1b7d046ed1d0996b6bd9b03aec0"}, + {file = "ddtrace-3.19.7-cp38-cp38-win32.whl", hash = "sha256:52a465d4509f1bd8154bfd7e0198e4f8d209cb3e7d30202299189b174fdab034"}, + {file = "ddtrace-3.19.7-cp38-cp38-win_amd64.whl", hash = "sha256:dfa876c29b4694db345eadacbd03d94dfc19569990da0488680039b985d84f62"}, + {file = "ddtrace-3.19.7-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:a7e978e52a718b01e71cce740ed77fca96a65ca2ff9c17c8e7be2757532057ee"}, + {file = "ddtrace-3.19.7-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:8e0dd6fa57f71f9adfc088aa9cf86e27ba86e94406329060742e362131ad49e5"}, + {file = "ddtrace-3.19.7-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:22b712f9bab0471599ed8462b1640a81ea07aee7532c666fef6e6334d0b9c09e"}, + {file = "ddtrace-3.19.7-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:51043397868ce03c5c629d1d03d15c29b9379f574b03ffa3bc2149892445c465"}, + {file = "ddtrace-3.19.7-cp39-cp39-manylinux_2_28_i686.whl", hash = "sha256:80f967464f04c2a4455ff2994af6cd12971f09e33f8c33c475dc9150cd1b5aad"}, + {file = "ddtrace-3.19.7-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:f6712f94b8a08fe6746e7e48b76582c7c261c9a83474c4a8cc8ec1349e3810ad"}, + {file = "ddtrace-3.19.7-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:a31cbe6c75fe6c07befd744993fb61159f02dc70689230b69161547cfbf5892b"}, + {file = "ddtrace-3.19.7-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:3b7173b6395e3b9c8a20ca94433033b8647971b61648add055a24819fa3ce72f"}, + {file = "ddtrace-3.19.7-cp39-cp39-win32.whl", hash = "sha256:8d3066532620ea1e74639db041fb4aabbead9057a48adcd00c9aae65ca096bc9"}, + {file = "ddtrace-3.19.7-cp39-cp39-win_amd64.whl", hash = "sha256:4d7abb09a7a672efecc560c110c2668bfdfce8f6c28e45903af96441476872d2"}, + {file = "ddtrace-3.19.7.tar.gz", hash = "sha256:e531a7c6370458d0e61b498714969471514033f6851a4603ac62f2cac1adc925"}, +] + +[package.dependencies] +bytecode = {version = ">=0.13.0,<1", markers = "python_version < \"3.11\""} +envier = ">=0.6.1,<0.7.0" +opentelemetry-api = ">=1,<2" +wrapt = ">=1,<3" + +[package.extras] +opentelemetry = ["opentelemetry-exporter-otlp (>=1,<2)"] +opentracing = ["opentracing (>=2,<3)"] + +[[package]] +name = "ddtrace" +version = "4.7.1" +description = "Datadog APM client library" +optional = false +python-versions = "<3.15,>=3.9" +groups = ["main"] +markers = "python_version >= \"3.10\"" +files = [ + {file = "ddtrace-4.7.1-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:74ba511e6669bd88dba1f9fe5d03170bc741305a97f6b8331f3d35ca754d8c82"}, + {file = "ddtrace-4.7.1-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:8149302841f058c68c57f1c89e4ee273d9f7de30fdeb2ae047d90a32dc1b6096"}, + {file = "ddtrace-4.7.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:44c15ab0f7bb7cc932e3ca7481eb0d9f3fa917247cc03375887bf50b9c6ece54"}, + {file = "ddtrace-4.7.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7d3fe0451fddfacbed5ee62a91c632f01cacd57ec7152a6be67b916f4716f2e3"}, + {file = "ddtrace-4.7.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:be57f6a30560d92a01c780ead970df73fcf458a20c6aa4d936af8d1b0892a786"}, + {file = "ddtrace-4.7.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:67726c736a02131f062bd63e18a0badfc0f000e2462a0a69c4e8680f54e37d66"}, + {file = "ddtrace-4.7.1-cp310-cp310-win32.whl", hash = "sha256:279397251be2d8b3fc848b231c04fc1be5d299b91c51b831d34795f9ec387e95"}, + {file = "ddtrace-4.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:ae1872e10c138827fb7cb759cdde26d1fe2f66449b95e19f5cc22609fe1ca02b"}, + {file = "ddtrace-4.7.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:df5b3716e47421bb9e925a1ae8592cf2169eadf9a3e62be56baa16d0656be876"}, + {file = "ddtrace-4.7.1-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:78da43378062c4905f09d1ff58d4b49bd61f9440977f2b7be5dc0dc427ddbbe3"}, + {file = "ddtrace-4.7.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7cb6ae35e377e987c59a42971c550937404079fea4666a158849a47587b39cf7"}, + {file = "ddtrace-4.7.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b07a9c689f115e70a8946d3002275808c01b31a350d8159e3e6562ddee379ad0"}, + {file = "ddtrace-4.7.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e717ee7b8484ea85882fb5d0c349fcead2b023ff8ab6e965072d5c4064d607ba"}, + {file = "ddtrace-4.7.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:613a74ce4ea692e2a8435266ad361d44bfd018d1d694ab38709ebf7df692af14"}, + {file = "ddtrace-4.7.1-cp311-cp311-win32.whl", hash = "sha256:b5f5cdc530a8baf28647dae8ea85d446534770d70ea8a30a8d3dde00af412a5b"}, + {file = "ddtrace-4.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:27c8812da8a73e239eb0bece274ef8cc95eb3093910f049b2ca0542756e2fcb8"}, + {file = "ddtrace-4.7.1-cp311-cp311-win_arm64.whl", hash = "sha256:bad60c97ca058580c62e0ea4340d9dd86971c825fd65491a8e67d0998b2e6da3"}, + {file = "ddtrace-4.7.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:0331d57f4c21cabebc9819092a0527dc4677f7f509c877229d216255236d8b65"}, + {file = "ddtrace-4.7.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:be562ef7187e61a4c835e37fbd8a6d81f445d6811660929c94a9e6a9462c6fb4"}, + {file = "ddtrace-4.7.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5dd9d7fbd678bfa8d8e71278ea05cc257b0230221749554e87e4f1e9704c4efe"}, + {file = "ddtrace-4.7.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:57cff66524ed7e441cb14d98f402eb52a22455964375f8f5a696afddc1684eb9"}, + {file = "ddtrace-4.7.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9c5b4a96d19e905b4845a86aa7d94698414f1f427ffc0f092b80228f6b2b71a3"}, + {file = "ddtrace-4.7.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d353a200d9443e7db6e0528a9f148f98f9359dab7abec41571bf46f155de6bd9"}, + {file = "ddtrace-4.7.1-cp312-cp312-win32.whl", hash = "sha256:e998ef9d9a29648a06581a6ca8f53e8d1e67700b61105587909a69297e98660d"}, + {file = "ddtrace-4.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:51d671f2e2d8a4f0abe82511186849be3246b7d4dfb3a207465c7e1c772c42c2"}, + {file = "ddtrace-4.7.1-cp312-cp312-win_arm64.whl", hash = "sha256:a95c13794f61f8016d117d28a9e301a2eba04121bf1fc90e20264ef8c7fab0a6"}, + {file = "ddtrace-4.7.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:d8c4c19d21331611a3f98e10489125eee426205043577013d1095b1c4b55f220"}, + {file = "ddtrace-4.7.1-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:f679951bb2cf749cf53214a7b4d76ac6912dc4f05a3371b094d4d679615d3446"}, + {file = "ddtrace-4.7.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2f64a6e9e7df59873e4ab60cd6ca707c7943379d572c4836acbebfc357b3e050"}, + {file = "ddtrace-4.7.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b7323dcd5d78a8c7d65955e4dcd3db560d00c9e7f2f2138705a6fde67603adb5"}, + {file = "ddtrace-4.7.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6103fb99c84c0d1bedb121ad085f89b69dd4712ad49f3a1745bbaf5573e93901"}, + {file = "ddtrace-4.7.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:57aa50af618880335fa813315034428811aecb6c78715436eeeaf7ff0b11ba49"}, + {file = "ddtrace-4.7.1-cp313-cp313-win32.whl", hash = "sha256:803b4b94f333e563a4521e545bc6d07ed2d2f4bad4843a9df29bf279c5d43cde"}, + {file = "ddtrace-4.7.1-cp313-cp313-win_amd64.whl", hash = "sha256:c270b7d956c3186a17de358fb8c0600cb79c9028b769a0e1a975deab42a539d7"}, + {file = "ddtrace-4.7.1-cp313-cp313-win_arm64.whl", hash = "sha256:de62971f25321416ac59f65afb2165482bc5b0ffbd450afa4ad586f3e0aa1c46"}, + {file = "ddtrace-4.7.1-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:022b058263acd3b8e8534d5cd2446330b9be296cab48d24d33f489d4da0f999e"}, + {file = "ddtrace-4.7.1-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:fc0c89c7ba67582a2fd4d6e2d803b94fd800dd4489cd777398a80c87fc0b216f"}, + {file = "ddtrace-4.7.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:89776d556ff27f95bcac17fcac4aeaf2173058e167c1923047007e7861079bdb"}, + {file = "ddtrace-4.7.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:26ad10decfd1072ec803aaf94ec5bf499cdbafe9d85fbf1608b6217d495b3edb"}, + {file = "ddtrace-4.7.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:0424306e0668f0adaa57d6b327948f5775c568afa91c5603559cc6a82d934515"}, + {file = "ddtrace-4.7.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:f5ffd1dfdee50236bf3b1a4dc699884387d04518a0bca5db7559e9fde932d744"}, + {file = "ddtrace-4.7.1-cp314-cp314-win32.whl", hash = "sha256:b7f6196521f00cf220ed4575de8832f9c77f110c5e05038a226f4bd39e89c688"}, + {file = "ddtrace-4.7.1-cp314-cp314-win_amd64.whl", hash = "sha256:4906a58c510f00851aacd6033c0687a7d6db82a7c5d6ed9399dac247f49335ba"}, + {file = "ddtrace-4.7.1-cp314-cp314-win_arm64.whl", hash = "sha256:ae9c3429e304cf0b1b6852213f29af20eee9997cda575b3dc8a267bb66f04b1f"}, + {file = "ddtrace-4.7.1-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:1e3244d00daaa0560b806fd71383b39e1cdf268292fd08b9823beacaa4131cc9"}, + {file = "ddtrace-4.7.1-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:4183df7ba4efe3e1d3a0e204dbd51badb2de826dc9c3da57477d0a17f2640752"}, + {file = "ddtrace-4.7.1-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f0159bcf3b07916dfb5b6cc6cc7f80b08740b9c55f114657ab15563b17eb269e"}, + {file = "ddtrace-4.7.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:8d35c1e41c5c65fb705eb0eadb51686eca4432af36c48555570558b6f57eae1c"}, + {file = "ddtrace-4.7.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:55555cb48a23892b5e3a89d84555de369df1fbd967b0397698b4178e6aff66ec"}, + {file = "ddtrace-4.7.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:622f8ae6ddf9167557d40b59134df94a72ee0b7318cb6aa03466883c9d972289"}, + {file = "ddtrace-4.7.1-cp39-cp39-win32.whl", hash = "sha256:4a601fe4e5c6bd31e0470420771eaf82576e30311b401bdb79c8dec68ef30d3d"}, + {file = "ddtrace-4.7.1-cp39-cp39-win_amd64.whl", hash = "sha256:c4f778ae3fbe708a8360d68af8f36bd60be9d64af7d4cf670832f4a737ed252e"}, + {file = "ddtrace-4.7.1.tar.gz", hash = "sha256:51695b8b34881432ea9d46c42aa41343d5531d9fdddc1c65b721aa4b051ed848"}, ] [package.dependencies] bytecode = [ - {version = ">=0.13.0", markers = "python_version < \"3.11\""}, - {version = ">=0.16.0", markers = "python_version >= \"3.13.0\""}, - {version = ">=0.15.0", markers = "python_version ~= \"3.12.0\""}, - {version = ">=0.14.0", markers = "python_version ~= \"3.11.0\""}, -] -envier = ">=0.5,<1.0" -legacy-cgi = {version = ">=2.0.0", markers = "python_version >= \"3.13.0\""} -opentelemetry-api = ">=1" -protobuf = ">=3" -typing_extensions = "*" -wrapt = ">=1" -xmltodict = ">=0.12" + {version = ">=0.17.0,<1", markers = "python_version >= \"3.14.0\""}, + {version = ">=0.16.0,<1", markers = "python_version >= \"3.13.0\" and python_version < \"3.14.0\""}, + {version = ">=0.15.1,<1", markers = "python_version ~= \"3.12.0\""}, + {version = ">=0.14.0,<1", markers = "python_version ~= \"3.11.0\""}, + {version = ">=0.13.0,<1", markers = "python_version < \"3.11.0\""}, +] +envier = ">=0.6.1,<0.7.0" +opentelemetry-api = ">=1,<2" +wrapt = ">=1,<3" [package.extras] -openai = ["tiktoken"] -opentracing = ["opentracing (>=2.0.0)"] +opentelemetry = ["opentelemetry-exporter-otlp (>=1,<2)"] +opentracing = ["opentracing (>=2,<3)"] [[package]] name = "deprecated" @@ -410,19 +503,6 @@ files = [ {file = "jmespath-1.0.1.tar.gz", hash = "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe"}, ] -[[package]] -name = "legacy-cgi" -version = "2.6.2" -description = "Fork of the standard library cgi and cgitb modules, being deprecated in PEP-594" -optional = false -python-versions = ">=3.10" -groups = ["main"] -markers = "python_version >= \"3.13.0\"" -files = [ - {file = "legacy_cgi-2.6.2-py3-none-any.whl", hash = "sha256:a7b83afb1baf6ebeb56522537c5943ef9813cf933f6715e88a803f7edbce0bff"}, - {file = "legacy_cgi-2.6.2.tar.gz", hash = "sha256:9952471ceb304043b104c22d00b4f333cac27a6abe446d8a528fc437cf13c85f"}, -] - [[package]] name = "mccabe" version = "0.7.0" @@ -482,27 +562,6 @@ files = [ dev = ["pre-commit", "tox"] testing = ["pytest", "pytest-benchmark"] -[[package]] -name = "protobuf" -version = "5.29.5" -description = "" -optional = false -python-versions = ">=3.8" -groups = ["main"] -files = [ - {file = "protobuf-5.29.5-cp310-abi3-win32.whl", hash = "sha256:3f1c6468a2cfd102ff4703976138844f78ebd1fb45f49011afc5139e9e283079"}, - {file = "protobuf-5.29.5-cp310-abi3-win_amd64.whl", hash = "sha256:3f76e3a3675b4a4d867b52e4a5f5b78a2ef9565549d4037e06cf7b0942b1d3fc"}, - {file = "protobuf-5.29.5-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e38c5add5a311f2a6eb0340716ef9b039c1dfa428b28f25a7838ac329204a671"}, - {file = "protobuf-5.29.5-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:fa18533a299d7ab6c55a238bf8629311439995f2e7eca5caaff08663606e9015"}, - {file = "protobuf-5.29.5-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:63848923da3325e1bf7e9003d680ce6e14b07e55d0473253a690c3a8b8fd6e61"}, - {file = "protobuf-5.29.5-cp38-cp38-win32.whl", hash = "sha256:ef91363ad4faba7b25d844ef1ada59ff1604184c0bcd8b39b8a6bef15e1af238"}, - {file = "protobuf-5.29.5-cp38-cp38-win_amd64.whl", hash = "sha256:7318608d56b6402d2ea7704ff1e1e4597bee46d760e7e4dd42a3d45e24b87f2e"}, - {file = "protobuf-5.29.5-cp39-cp39-win32.whl", hash = "sha256:6f642dc9a61782fa72b90878af134c5afe1917c89a568cd3476d758d3c3a0736"}, - {file = "protobuf-5.29.5-cp39-cp39-win_amd64.whl", hash = "sha256:470f3af547ef17847a28e1f47200a1cbf0ba3ff57b7de50d22776607cd2ea353"}, - {file = "protobuf-5.29.5-py3-none-any.whl", hash = "sha256:6cf42630262c59b2d8de33954443d94b746c952b01434fc58a417fdbd2e84bd5"}, - {file = "protobuf-5.29.5.tar.gz", hash = "sha256:bc1463bafd4b0929216c35f437a8e28731a2b7fe3d98bb77a600efced5a15c84"}, -] - [[package]] name = "py-cpuinfo" version = "9.0.0" @@ -542,6 +601,22 @@ files = [ {file = "pyflakes-2.5.0.tar.gz", hash = "sha256:491feb020dca48ccc562a8c0cbe8df07ee13078df59813b83959cbdada312ea3"}, ] +[[package]] +name = "pygments" +version = "2.20.0" +description = "Pygments is a syntax highlighting package written in Python." +optional = true +python-versions = ">=3.9" +groups = ["main"] +markers = "python_version >= \"3.10\" and extra == \"dev\"" +files = [ + {file = "pygments-2.20.0-py3-none-any.whl", hash = "sha256:81a9e26dd42fd28a23a2d169d86d7ac03b46e2f8b59ed4698fb4785f946d0176"}, + {file = "pygments-2.20.0.tar.gz", hash = "sha256:6757cd03768053ff99f3039c1a36d6c0aa0b263438fcab17520b30a303a82b5f"}, +] + +[package.extras] +windows-terminal = ["colorama (>=0.4.6)"] + [[package]] name = "pytest" version = "8.3.4" @@ -549,7 +624,7 @@ description = "pytest: simple powerful testing with Python" optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\"" +markers = "python_version < \"3.10\" and extra == \"dev\"" files = [ {file = "pytest-8.3.4-py3-none-any.whl", hash = "sha256:50e16d954148559c9a74109af1eaf0c945ba2d8f30f0a3d3335edde19788b6f6"}, {file = "pytest-8.3.4.tar.gz", hash = "sha256:965370d062bce11e73868e0335abac31b4d3de0e82f4007408d242b4f8610761"}, @@ -566,6 +641,31 @@ tomli = {version = ">=1", markers = "python_version < \"3.11\""} [package.extras] dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] +[[package]] +name = "pytest" +version = "9.0.3" +description = "pytest: simple powerful testing with Python" +optional = true +python-versions = ">=3.10" +groups = ["main"] +markers = "python_version >= \"3.10\" and extra == \"dev\"" +files = [ + {file = "pytest-9.0.3-py3-none-any.whl", hash = "sha256:2c5efc453d45394fdd706ade797c0a81091eccd1d6e4bccfcd476e2b8e0ab5d9"}, + {file = "pytest-9.0.3.tar.gz", hash = "sha256:b86ada508af81d19edeb213c681b1d48246c1a91d304c6c81a427674c17eb91c"}, +] + +[package.dependencies] +colorama = {version = ">=0.4", markers = "sys_platform == \"win32\""} +exceptiongroup = {version = ">=1", markers = "python_version < \"3.11\""} +iniconfig = ">=1.0.1" +packaging = ">=22" +pluggy = ">=1.5,<2" +pygments = ">=2.7.2" +tomli = {version = ">=1", markers = "python_version < \"3.11\""} + +[package.extras] +dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "requests", "setuptools", "xmlschema"] + [[package]] name = "pytest-benchmark" version = "4.0.0" @@ -611,6 +711,7 @@ description = "Python HTTP for Humans." optional = false python-versions = ">=3.8" groups = ["main"] +markers = "python_version < \"3.10\"" files = [ {file = "requests-2.32.4-py3-none-any.whl", hash = "sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c"}, {file = "requests-2.32.4.tar.gz", hash = "sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422"}, @@ -626,6 +727,29 @@ urllib3 = ">=1.21.1,<3" socks = ["PySocks (>=1.5.6,!=1.5.7)"] use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] +[[package]] +name = "requests" +version = "2.33.1" +description = "Python HTTP for Humans." +optional = false +python-versions = ">=3.10" +groups = ["main"] +markers = "python_version >= \"3.10\"" +files = [ + {file = "requests-2.33.1-py3-none-any.whl", hash = "sha256:4e6d1ef462f3626a1f0a0a9c42dd93c63bad33f9f1c1937509b8c5c8718ab56a"}, + {file = "requests-2.33.1.tar.gz", hash = "sha256:18817f8c57c6263968bc123d237e3b8b08ac046f5456bd1e307ee8f4250d3517"}, +] + +[package.dependencies] +certifi = ">=2023.5.7" +charset_normalizer = ">=2,<4" +idna = ">=2.5,<4" +urllib3 = ">=1.26,<3" + +[package.extras] +socks = ["PySocks (>=1.5.6,!=1.5.7)"] +use-chardet-on-py3 = ["chardet (>=3.0.2,<8)"] + [[package]] name = "six" version = "1.17.0" @@ -689,6 +813,7 @@ description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" groups = ["main"] +markers = "python_version < \"3.10\"" files = [ {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, @@ -701,6 +826,7 @@ description = "Ultra fast JSON encoder and decoder for Python" optional = false python-versions = ">=3.8" groups = ["main"] +markers = "python_version < \"3.10\"" files = [ {file = "ujson-5.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2601aa9ecdbee1118a1c2065323bda35e2c5a2cf0797ef4522d485f9d3ef65bd"}, {file = "ujson-5.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:348898dd702fc1c4f1051bc3aacbf894caa0927fe2c53e68679c073375f732cf"}, @@ -782,6 +908,95 @@ files = [ {file = "ujson-5.10.0.tar.gz", hash = "sha256:b3cd8f3c5d8c7738257f1018880444f7b7d9b66232c64649f562d7ba86ad4bc1"}, ] +[[package]] +name = "ujson" +version = "5.12.0" +description = "Ultra fast JSON encoder and decoder for Python" +optional = false +python-versions = ">=3.10" +groups = ["main"] +markers = "python_version >= \"3.10\"" +files = [ + {file = "ujson-5.12.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:38051f36423f084b909aaadb3b41c9c6a2958e86956ba21a8489636911e87504"}, + {file = "ujson-5.12.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:457fabc2700a8e6ddb85bc5a1d30d3345fe0d3ec3ee8161a4e032ec585801dfa"}, + {file = "ujson-5.12.0-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:57930ac9519099b852e190d2c04b1fb5d97ea128db33bce77ed874eccb4c7f09"}, + {file = "ujson-5.12.0-cp310-cp310-manylinux_2_24_i686.manylinux_2_28_i686.whl", hash = "sha256:9b3b86ec3e818f3dd3e13a9de628e88a9990f4af68ecb0b12dd3de81227f0a26"}, + {file = "ujson-5.12.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:460e76a4daff214ae33ab959494962c93918cb44714ea3e3f748b14aa37f8a87"}, + {file = "ujson-5.12.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e584d0cdd37cac355aca52ed788d1a2d939d6837e2870d3b70e585db24025a50"}, + {file = "ujson-5.12.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:0fe9128e75c6aa6e9ae06c1408d6edd9179a2fef0fe6d9cda3166b887eba521d"}, + {file = "ujson-5.12.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3ed5cb149892141b1e77ef312924a327f2cc718b34247dae346ed66329e1b8be"}, + {file = "ujson-5.12.0-cp310-cp310-win32.whl", hash = "sha256:973b7d7145b1ac553a7466a64afa8b31ec2693d7c7fff6a755059e0a2885dfd2"}, + {file = "ujson-5.12.0-cp310-cp310-win_amd64.whl", hash = "sha256:1d072a403d82aef8090c6d4f728e3a727dfdba1ad3b7fa3a052c3ecbd37e73cb"}, + {file = "ujson-5.12.0-cp310-cp310-win_arm64.whl", hash = "sha256:55ede2a7a051b3b7e71a394978a098d71b3783e6b904702ff45483fad434ae2d"}, + {file = "ujson-5.12.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:58a11cb49482f1a095a2bd9a1d81dd7c8fb5d2357f959ece85db4e46a825fd00"}, + {file = "ujson-5.12.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9b3cf13facf6f77c283af0e1713e5e8c47a0fe295af81326cb3cb4380212e797"}, + {file = "ujson-5.12.0-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fb94245a715b4d6e24689de12772b85329a1f9946cbf6187923a64ecdea39e65"}, + {file = "ujson-5.12.0-cp311-cp311-manylinux_2_24_i686.manylinux_2_28_i686.whl", hash = "sha256:0fe6b8b8968e11dd9b2348bd508f0f57cf49ab3512064b36bc4117328218718e"}, + {file = "ujson-5.12.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:89e302abd3749f6d6699691747969a5d85f7c73081d5ed7e2624c7bd9721a2ab"}, + {file = "ujson-5.12.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0727363b05ab05ee737a28f6200dc4078bce6b0508e10bd8aab507995a15df61"}, + {file = "ujson-5.12.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:b62cb9a7501e1f5c9ffe190485501349c33e8862dde4377df774e40b8166871f"}, + {file = "ujson-5.12.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a6ec5bf6bc361f2f0f9644907a36ce527715b488988a8df534120e5c34eeda94"}, + {file = "ujson-5.12.0-cp311-cp311-win32.whl", hash = "sha256:006428d3813b87477d72d306c40c09f898a41b968e57b15a7d88454ecc42a3fb"}, + {file = "ujson-5.12.0-cp311-cp311-win_amd64.whl", hash = "sha256:40aa43a7a3a8d2f05e79900858053d697a88a605e3887be178b43acbcd781161"}, + {file = "ujson-5.12.0-cp311-cp311-win_arm64.whl", hash = "sha256:561f89cc82deeae82e37d4a4764184926fb432f740a9691563a391b13f7339a4"}, + {file = "ujson-5.12.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:09b4beff9cc91d445d5818632907b85fb06943b61cb346919ce202668bf6794a"}, + {file = "ujson-5.12.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ca0c7ce828bb76ab78b3991904b477c2fd0f711d7815c252d1ef28ff9450b052"}, + {file = "ujson-5.12.0-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a2d79c6635ccffcbfc1d5c045874ba36b594589be81d50d43472570bb8de9c57"}, + {file = "ujson-5.12.0-cp312-cp312-manylinux_2_24_i686.manylinux_2_28_i686.whl", hash = "sha256:7e07f6f644d2c44d53b7a320a084eef98063651912c1b9449b5f45fcbdc6ccd2"}, + {file = "ujson-5.12.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:085b6ce182cdd6657481c7c4003a417e0655c4f6e58b76f26ee18f0ae21db827"}, + {file = "ujson-5.12.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:16b4fe9c97dc605f5e1887a9e1224287291e35c56cbc379f8aa44b6b7bcfe2bb"}, + {file = "ujson-5.12.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0d2e8db5ade3736a163906154ca686203acc7d1d30736cbf577c730d13653d84"}, + {file = "ujson-5.12.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:93bc91fdadcf046da37a214eaa714574e7e9b1913568e93bb09527b2ceb7f759"}, + {file = "ujson-5.12.0-cp312-cp312-win32.whl", hash = "sha256:2a248750abce1c76fbd11b2e1d88b95401e72819295c3b851ec73399d6849b3d"}, + {file = "ujson-5.12.0-cp312-cp312-win_amd64.whl", hash = "sha256:1b5c6ceb65fecd28a1d20d1eba9dbfa992612b86594e4b6d47bb580d2dd6bcb3"}, + {file = "ujson-5.12.0-cp312-cp312-win_arm64.whl", hash = "sha256:9a5fcbe7b949f2e95c47ea8a80b410fcdf2da61c98553b45a4ee875580418b68"}, + {file = "ujson-5.12.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:15d416440148f3e56b9b244fdaf8a09fcf5a72e4944b8e119f5bf60417a2bfc8"}, + {file = "ujson-5.12.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e0dd3676ea0837cd70ea1879765e9e9f6be063be0436de9b3ea4b775caf83654"}, + {file = "ujson-5.12.0-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7bbf05c38debc90d1a195b11340cc85cb43ab3e753dc47558a3a84a38cbc72da"}, + {file = "ujson-5.12.0-cp313-cp313-manylinux_2_24_i686.manylinux_2_28_i686.whl", hash = "sha256:3c2f947e55d3c7cfe124dd4521ee481516f3007d13c6ad4bf6aeb722e190eb1b"}, + {file = "ujson-5.12.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2ea6206043385343aff0b7da65cf73677f6f5e50de8f1c879e557f4298cac36a"}, + {file = "ujson-5.12.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bb349dbba57c76eec25e5917e07f35aabaf0a33b9e67fc13d188002500106487"}, + {file = "ujson-5.12.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:937794042342006f707837f38d721426b11b0774d327a2a45c0bd389eb750a87"}, + {file = "ujson-5.12.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6ad57654570464eb1b040b5c353dee442608e06cff9102b8fcb105565a44c9ed"}, + {file = "ujson-5.12.0-cp313-cp313-win32.whl", hash = "sha256:76bf3e7406cf23a3e1ca6a23fb1fb9ea82f4f6bd226fe226e09146b0194f85dc"}, + {file = "ujson-5.12.0-cp313-cp313-win_amd64.whl", hash = "sha256:15e555c4caca42411270b2ed2b2ebc7b3a42bb04138cef6c956e1f1d49709fe2"}, + {file = "ujson-5.12.0-cp313-cp313-win_arm64.whl", hash = "sha256:bd03472c36fa3a386a6deb887113b9e3fa40efba8203eb4fe786d3c0ccc724f6"}, + {file = "ujson-5.12.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:85833bca01aa5cae326ac759276dc175c5fa3f7b3733b7d543cf27f2df12d1ef"}, + {file = "ujson-5.12.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:d22cad98c2a10bbf6aa083a8980db6ed90d4285a841c4de892890c2b28286ef9"}, + {file = "ujson-5.12.0-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:99cc80facad240b0c2fb5a633044420878aac87a8e7c348b9486450cba93f27c"}, + {file = "ujson-5.12.0-cp314-cp314-manylinux_2_24_i686.manylinux_2_28_i686.whl", hash = "sha256:d1831c07bd4dce53c4b666fa846c7eba4b7c414f2e641a4585b7f50b72f502dc"}, + {file = "ujson-5.12.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0e00cec383eab2406c9e006bd4edb55d284e94bb943fda558326048178d26961"}, + {file = "ujson-5.12.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:f19b3af31d02a2e79c5f9a6deaab0fb3c116456aeb9277d11720ad433de6dfc6"}, + {file = "ujson-5.12.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:bacbd3c69862478cbe1c7ed4325caedec580d8acf31b8ee1b9a1e02a56295cad"}, + {file = "ujson-5.12.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:94c5f1621cbcab83c03be46441f090b68b9f307b6c7ec44d4e3f6d5997383df4"}, + {file = "ujson-5.12.0-cp314-cp314-win32.whl", hash = "sha256:e6369ac293d2cc40d52577e4fa3d75a70c1aae2d01fa3580a34a4e6eff9286b9"}, + {file = "ujson-5.12.0-cp314-cp314-win_amd64.whl", hash = "sha256:31348a0ffbfc815ce78daac569d893349d85a0b57e1cd2cdbba50b7f333784da"}, + {file = "ujson-5.12.0-cp314-cp314-win_arm64.whl", hash = "sha256:6879aed770557f0961b252648d36f6fdaab41079d37a2296b5649fd1b35608e0"}, + {file = "ujson-5.12.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:7ddb08b3c2f9213df1f2e3eb2fbea4963d80ec0f8de21f0b59898e34f3b3d96d"}, + {file = "ujson-5.12.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:0a3ae28f0b209be5af50b54ca3e2123a3de3a57d87b75f1e5aa3d7961e041983"}, + {file = "ujson-5.12.0-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d30ad4359413c8821cc7b3707f7ca38aa8bc852ba3b9c5a759ee2d7740157315"}, + {file = "ujson-5.12.0-cp314-cp314t-manylinux_2_24_i686.manylinux_2_28_i686.whl", hash = "sha256:02f93da7a4115e24f886b04fd56df1ee8741c2ce4ea491b7ab3152f744ad8f8e"}, + {file = "ujson-5.12.0-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3ff4ede90ed771140caa7e1890de17431763a483c54b3c1f88bd30f0cc1affc0"}, + {file = "ujson-5.12.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:a7bf9cc97f05048ac8f3e02cd58f0fe62b901453c24345bfde287f4305dcc31c"}, + {file = "ujson-5.12.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:2324d9a0502317ffc35d38e153c1b2fa9610ae03775c9d0f8d0cca7b8572b04e"}, + {file = "ujson-5.12.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:50524f4f6a1c839714dbaff5386a1afb245d2d5ec8213a01fbc99cea7307811e"}, + {file = "ujson-5.12.0-cp314-cp314t-win32.whl", hash = "sha256:f7a0430d765f9bda043e6aefaba5944d5f21ec43ff4774417d7e296f61917382"}, + {file = "ujson-5.12.0-cp314-cp314t-win_amd64.whl", hash = "sha256:ccbfd94e59aad4a2566c71912b55f0547ac1680bfac25eb138e6703eb3dd434e"}, + {file = "ujson-5.12.0-cp314-cp314t-win_arm64.whl", hash = "sha256:42d875388fbd091c7ea01edfff260f839ba303038ffb23475ef392012e4d63dd"}, + {file = "ujson-5.12.0-graalpy312-graalpy250_312_native-macosx_10_13_x86_64.whl", hash = "sha256:bf85a00ac3b56a1e7a19c5be7b02b5180a0895ac4d3c234d717a55e86960691c"}, + {file = "ujson-5.12.0-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:64df53eef4ac857eb5816a56e2885ccf0d7dff6333c94065c93b39c51063e01d"}, + {file = "ujson-5.12.0-graalpy312-graalpy250_312_native-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6c0aed6a4439994c9666fb8a5b6c4eac94d4ef6ddc95f9b806a599ef83547e3b"}, + {file = "ujson-5.12.0-graalpy312-graalpy250_312_native-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:efae5df7a8cc8bdb1037b0f786b044ce281081441df5418c3a0f0e1f86fe7bb3"}, + {file = "ujson-5.12.0-graalpy312-graalpy250_312_native-win_amd64.whl", hash = "sha256:8712b61eb1b74a4478cfd1c54f576056199e9f093659334aeb5c4a6b385338e5"}, + {file = "ujson-5.12.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:871c0e5102e47995b0e37e8df7819a894a6c3da0d097545cd1f9f1f7d7079927"}, + {file = "ujson-5.12.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:56ba3f7abbd6b0bb282a544dc38406d1a188d8bb9164f49fdb9c2fee62cb29da"}, + {file = "ujson-5.12.0-pp311-pypy311_pp73-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9c5a52987a990eb1bae55f9000994f1afdb0326c154fb089992f839ab3c30688"}, + {file = "ujson-5.12.0-pp311-pypy311_pp73-manylinux_2_24_i686.manylinux_2_28_i686.whl", hash = "sha256:adf28d13a33f9d750fe7a78fb481cac298fa257d8863d8727b2ea4455ea41235"}, + {file = "ujson-5.12.0-pp311-pypy311_pp73-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:51acc750ec7a2df786cdc868fb16fa04abd6269a01d58cf59bafc57978773d8e"}, + {file = "ujson-5.12.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:ab9056d94e5db513d9313b34394f3a3b83e6301a581c28ad67773434f3faccab"}, + {file = "ujson-5.12.0.tar.gz", hash = "sha256:14b2e1eb528d77bc0f4c5bd1a7ebc05e02b5b41beefb7e8567c9675b8b13bcf4"}, +] + [[package]] name = "urllib3" version = "1.26.20" @@ -802,22 +1017,22 @@ socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] [[package]] name = "urllib3" -version = "2.3.0" +version = "2.6.3" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.9" groups = ["main"] markers = "python_version >= \"3.10\"" files = [ - {file = "urllib3-2.3.0-py3-none-any.whl", hash = "sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df"}, - {file = "urllib3-2.3.0.tar.gz", hash = "sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d"}, + {file = "urllib3-2.6.3-py3-none-any.whl", hash = "sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4"}, + {file = "urllib3-2.6.3.tar.gz", hash = "sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed"}, ] [package.extras] -brotli = ["brotli (>=1.0.9) ; platform_python_implementation == \"CPython\"", "brotlicffi (>=0.8.0) ; platform_python_implementation != \"CPython\""] +brotli = ["brotli (>=1.2.0) ; platform_python_implementation == \"CPython\"", "brotlicffi (>=1.2.0.0) ; platform_python_implementation != \"CPython\""] h2 = ["h2 (>=4,<5)"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] -zstd = ["zstandard (>=0.18.0)"] +zstd = ["backports-zstd (>=1.0.0) ; python_version < \"3.14\""] [[package]] name = "wrapt" @@ -908,18 +1123,6 @@ files = [ {file = "wrapt-1.17.2.tar.gz", hash = "sha256:41388e9d4d1522446fe79d3213196bd9e3b301a336965b9e27ca2788ebd122f3"}, ] -[[package]] -name = "xmltodict" -version = "0.14.2" -description = "Makes working with XML feel like you are working with JSON" -optional = false -python-versions = ">=3.6" -groups = ["main"] -files = [ - {file = "xmltodict-0.14.2-py2.py3-none-any.whl", hash = "sha256:20cc7d723ed729276e808f26fb6b3599f786cbc37e06c65e192ba77c40f20aac"}, - {file = "xmltodict-0.14.2.tar.gz", hash = "sha256:201e7c28bb210e374999d1dde6382923ab0ed1a8a5faeece48ab525b7810a553"}, -] - [[package]] name = "zipp" version = "3.20.2" @@ -941,9 +1144,9 @@ test = ["big-O", "importlib-resources ; python_version < \"3.9\"", "jaraco.funct type = ["pytest-mypy"] [extras] -dev = ["botocore", "flake8", "pytest", "pytest-benchmark", "requests"] +dev = ["botocore", "flake8", "pytest", "pytest", "pytest-benchmark", "requests", "requests"] [metadata] lock-version = "2.1" -python-versions = ">=3.8.0,<4" -content-hash = "f6a2f7355200da107aa5b027d6fe4fb6bdb5a898ce8298a56e6ac39fe8d8e34d" +python-versions = ">=3.8.0,<3.15" +content-hash = "3da1bc2540691200481913d90171aa3a6a3700cb32059b9462dfd64f9f51d092" diff --git a/pyproject.toml b/pyproject.toml index ec95a7385..5fe65ae7d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -26,7 +26,7 @@ classifiers = [ ] [tool.poetry.dependencies] -python = ">=3.8.0,<4" +python = ">=3.8.0,<3.15" datadog = ">=0.51.0,<1.0.0" wrapt = "^1.11.2" ddtrace = [ @@ -35,11 +35,21 @@ ddtrace = [ ] ujson = [ {version = ">=5.10.0,<5.12.0", python = ">=3.8,<3.10"}, - {version = ">=5.12.0", python = ">=3.10"} + {version = "^5.12.0", python = ">=3.10"}, +] +urllib3 = [ + {version = ">=1.25.4,<1.27", python = ">=3.8,<3.10"}, + {version = "^2.6.3", python = ">=3.10"}, ] botocore = { version = "^1.34.0", optional = true } -requests = { version ="^2.22.0", optional = true } -pytest = { version= "^8.0.0", optional = true } +requests = [ + { version = "^2.22.0", optional = true, python = ">=3.8,<3.10" }, + { version = "^2.33.0", optional = true, python = ">=3.10" }, +] +pytest = [ + { version = "^8.3.4", optional = true, python = ">=3.8,<3.10" }, + { version = "^9.0.3", optional = true, python = ">=3.10" }, +] pytest-benchmark = { version = "^4.0", optional = true } flake8 = { version = "^5.0.4", optional = true } diff --git a/tests/integration/package-lock.json b/tests/integration/package-lock.json index 5990cc8db..c761c5503 100644 --- a/tests/integration/package-lock.json +++ b/tests/integration/package-lock.json @@ -57,7 +57,6 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/appdirectory/-/appdirectory-0.1.0.tgz", "integrity": "sha512-DJ5DV8vZXBbusyiyPlH28xppwS8eAMRuuyMo88xeEcf4bV64lbLtbxRxqixZuJBXsZzLtXFmA13GwVjJc7vdQw==", - "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "license": "MIT" }, @@ -76,9 +75,9 @@ "license": "MIT" }, "node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", + "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", "dev": true, "license": "MIT", "dependencies": { @@ -355,7 +354,6 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, "license": "ISC", "dependencies": { @@ -405,7 +403,6 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dev": true, "license": "ISC", "dependencies": { @@ -517,9 +514,9 @@ } }, "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", "dev": true, "license": "MIT", "dependencies": { @@ -569,7 +566,6 @@ "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", - "deprecated": "This package is deprecated. Use the optional chaining (?.) operator instead.", "dev": true, "license": "MIT" }, @@ -607,9 +603,9 @@ } }, "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", "dependencies": { @@ -633,6 +629,27 @@ "dev": true, "license": "MIT" }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -763,7 +780,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, "license": "ISC", "dependencies": { @@ -784,9 +800,9 @@ "license": "MIT" }, "node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, "license": "ISC", "bin": { @@ -797,11 +813,14 @@ } }, "node_modules/serverless-plugin-datadog": { - "version": "2.18.0", - "resolved": "https://registry.npmjs.org/serverless-plugin-datadog/-/serverless-plugin-datadog-2.18.0.tgz", - "integrity": "sha512-RUdCNjUk+uUKQYgQBjK0WNeYJ7lM2/RScqg/LjVSfv5EACeJ3iIUPz1c4bS2jtiH05al8qXudNb6QDkv9zxG7w==", + "version": "2.34.1", + "resolved": "https://registry.npmjs.org/serverless-plugin-datadog/-/serverless-plugin-datadog-2.34.1.tgz", + "integrity": "sha512-oDLh+73a7UPgagvWbMGkbTXK2n7+zGeN8aGDhxza5P0jJFpdwICFArkC72CTLOVcY4JYpgB7VAvbbVS9HAamOA==", "dev": true, - "license": "Apache-2.0" + "license": "Apache-2.0", + "dependencies": { + "node-fetch": "^2.6.1" + } }, "node_modules/serverless-python-requirements": { "version": "6.1.2", @@ -895,9 +914,9 @@ } }, "node_modules/shell-quote": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.2.tgz", - "integrity": "sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==", + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz", + "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==", "dev": true, "license": "MIT", "engines": { @@ -932,6 +951,37 @@ "node": ">= 6" } }, + "node_modules/split2/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/split2/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, "node_modules/sprintf-kit": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/sprintf-kit/-/sprintf-kit-2.0.2.tgz", @@ -995,6 +1045,13 @@ "node": ">=8" } }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true, + "license": "MIT" + }, "node_modules/type": { "version": "2.7.3", "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz", @@ -1029,6 +1086,24 @@ "dev": true, "license": "MIT" }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "node_modules/which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", diff --git a/tests/integration/package.json b/tests/integration/package.json index 8dae6acaa..a3ac9ef51 100644 --- a/tests/integration/package.json +++ b/tests/integration/package.json @@ -2,5 +2,11 @@ "devDependencies": { "serverless-plugin-datadog": "^2.18.0", "serverless-python-requirements": "^6.1.2" + }, + "resolutions": { + "minimatch": "^3.1.3" + }, + "overrides": { + "minimatch": "^3.1.3" } } diff --git a/tests/integration/requirements.txt b/tests/integration/requirements.txt index 343ea0257..0275d888c 100644 --- a/tests/integration/requirements.txt +++ b/tests/integration/requirements.txt @@ -1,4 +1,5 @@ certifi==2024.12.14 charset-normalizer==3.4.1 idna==3.10 -requests==2.32.4 +requests==2.32.4; python_version < "3.10" +requests==2.33.1; python_version >= "3.10" diff --git a/tests/integration/yarn.lock b/tests/integration/yarn.lock index 7477e8dae..fc8b4d916 100644 --- a/tests/integration/yarn.lock +++ b/tests/integration/yarn.lock @@ -2,62 +2,62 @@ # yarn lockfile v1 -"@iarna/toml@^2.2.5": - version "2.2.5" - resolved "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz" - integrity sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg== - "2-thenable@^1.0.0": version "1.0.0" - resolved "https://registry.npmjs.org/2-thenable/-/2-thenable-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/2-thenable/-/2-thenable-1.0.0.tgz#56e9a2e363293b1e507f501aac1aa9927670b2fc" integrity sha512-HqiDzaLDFCXkcCO/SwoyhRwqYtINFHF7t9BDRq4x90TOKNAJpiqUt9X5lQ08bwxYzc067HUywDjGySpebHcUpw== dependencies: d "1" es5-ext "^0.10.47" +"@iarna/toml@^2.2.5": + version "2.2.5" + resolved "https://registry.yarnpkg.com/@iarna/toml/-/toml-2.2.5.tgz#b32366c89b43c6f8cefbdefac778b9c828e3ba8c" + integrity sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg== + ansi-regex@^5.0.1: version "5.0.1" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== ansi-styles@^4.0.0: version "4.3.0" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: color-convert "^2.0.1" appdirectory@^0.1.0: version "0.1.0" - resolved "https://registry.npmjs.org/appdirectory/-/appdirectory-0.1.0.tgz" + resolved "https://registry.yarnpkg.com/appdirectory/-/appdirectory-0.1.0.tgz#eb6c816320e7b2ab16f5ed997f28d8205df56375" integrity sha512-DJ5DV8vZXBbusyiyPlH28xppwS8eAMRuuyMo88xeEcf4bV64lbLtbxRxqixZuJBXsZzLtXFmA13GwVjJc7vdQw== balanced-match@^1.0.0: version "1.0.2" - resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== bluebird@^3.7.2: version "3.7.2" - resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== brace-expansion@^1.1.7: - version "1.1.12" - resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz" - integrity sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg== + version "1.1.14" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.14.tgz#d9de602370d91347cd9ddad1224d4fd701eb348b" + integrity sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g== dependencies: balanced-match "^1.0.0" concat-map "0.0.1" camelcase@^5.0.0: version "5.3.1" - resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== child-process-ext@^2.1.1: version "2.1.1" - resolved "https://registry.npmjs.org/child-process-ext/-/child-process-ext-2.1.1.tgz" + resolved "https://registry.yarnpkg.com/child-process-ext/-/child-process-ext-2.1.1.tgz#f7cf4e68fef60c4c8ee911e1b402413191467dc3" integrity sha512-0UQ55f51JBkOFa+fvR76ywRzxiPwQS3Xe8oe5bZRphpv+dIMeerW5Zn5e4cUy4COJwVtJyU0R79RMnw+aCqmGA== dependencies: cross-spawn "^6.0.5" @@ -68,7 +68,7 @@ child-process-ext@^2.1.1: cliui@^6.0.0: version "6.0.0" - resolved "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== dependencies: string-width "^4.2.0" @@ -77,29 +77,29 @@ cliui@^6.0.0: color-convert@^2.0.1: version "2.0.1" - resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== dependencies: color-name "~1.1.4" color-name@~1.1.4: version "1.1.4" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== concat-map@0.0.1: version "0.0.1" - resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== core-util-is@~1.0.0: version "1.0.3" - resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== cross-spawn@^6.0.5: version "6.0.6" - resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.6.tgz#30d0efa0712ddb7eb5a76e1e8721bffafa6b5d57" integrity sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw== dependencies: nice-try "^1.0.4" @@ -108,9 +108,9 @@ cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -d@^1.0.1, d@^1.0.2, d@1: +d@1, d@^1.0.1, d@^1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/d/-/d-1.0.2.tgz" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.2.tgz#2aefd554b81981e7dccf72d6842ae725cb17e5de" integrity sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw== dependencies: es5-ext "^0.10.64" @@ -118,12 +118,12 @@ d@^1.0.1, d@^1.0.2, d@1: decamelize@^1.2.0: version "1.2.0" - resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== duration@^0.2.2: version "0.2.2" - resolved "https://registry.npmjs.org/duration/-/duration-0.2.2.tgz" + resolved "https://registry.yarnpkg.com/duration/-/duration-0.2.2.tgz#ddf149bc3bc6901150fe9017111d016b3357f529" integrity sha512-06kgtea+bGreF5eKYgI/36A6pLXggY7oR4p1pq4SmdFBn1ReOL5D8RhG64VrqfTTKNucqqtBAwEj8aB88mcqrg== dependencies: d "1" @@ -131,12 +131,12 @@ duration@^0.2.2: emoji-regex@^8.0.0: version "8.0.0" - resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== es5-ext@^0.10.35, es5-ext@^0.10.47, es5-ext@^0.10.49, es5-ext@^0.10.53, es5-ext@^0.10.62, es5-ext@^0.10.64, es5-ext@~0.10.14, es5-ext@~0.10.46: version "0.10.64" - resolved "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.64.tgz#12e4ffb48f1ba2ea777f1fcdd1918ef73ea21714" integrity sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg== dependencies: es6-iterator "^2.0.3" @@ -146,7 +146,7 @@ es5-ext@^0.10.35, es5-ext@^0.10.47, es5-ext@^0.10.49, es5-ext@^0.10.53, es5-ext@ es6-iterator@^2.0.3: version "2.0.3" - resolved "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g== dependencies: d "1" @@ -155,7 +155,7 @@ es6-iterator@^2.0.3: es6-symbol@^3.1.1, es6-symbol@^3.1.3: version "3.1.4" - resolved "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.4.tgz#f4e7d28013770b4208ecbf3e0bf14d3bcb557b8c" integrity sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg== dependencies: d "^1.0.2" @@ -163,7 +163,7 @@ es6-symbol@^3.1.1, es6-symbol@^3.1.3: esniff@^2.0.1: version "2.0.1" - resolved "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz" + resolved "https://registry.yarnpkg.com/esniff/-/esniff-2.0.1.tgz#a4d4b43a5c71c7ec51c51098c1d8a29081f9b308" integrity sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg== dependencies: d "^1.0.1" @@ -173,7 +173,7 @@ esniff@^2.0.1: event-emitter@^0.3.5: version "0.3.5" - resolved "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz" + resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" integrity sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA== dependencies: d "1" @@ -181,14 +181,14 @@ event-emitter@^0.3.5: ext@^1.7.0: version "1.7.0" - resolved "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.7.0.tgz#0ea4383c0103d60e70be99e9a7f11027a33c4f5f" integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw== dependencies: type "^2.7.2" find-up@^4.1.0: version "4.1.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== dependencies: locate-path "^5.0.0" @@ -196,7 +196,7 @@ find-up@^4.1.0: fs-extra@^10.1.0: version "10.1.0" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== dependencies: graceful-fs "^4.2.0" @@ -205,17 +205,17 @@ fs-extra@^10.1.0: fs.realpath@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== get-caller-file@^2.0.1: version "2.0.5" - resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== glob-all@^3.3.1: version "3.3.1" - resolved "https://registry.npmjs.org/glob-all/-/glob-all-3.3.1.tgz" + resolved "https://registry.yarnpkg.com/glob-all/-/glob-all-3.3.1.tgz#6be2d5d8276902319f640fbf839fbe15b35e7667" integrity sha512-Y+ESjdI7ZgMwfzanHZYQ87C59jOO0i+Hd+QYtVt9PhLi6d8wlOpzQnfBxWUlaTuAoR3TkybLqqbIoWveU4Ji7Q== dependencies: glob "^7.2.3" @@ -223,7 +223,7 @@ glob-all@^3.3.1: glob@^7.1.3, glob@^7.2.3: version "7.2.3" - resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== dependencies: fs.realpath "^1.0.0" @@ -235,80 +235,80 @@ glob@^7.1.3, glob@^7.2.3: graceful-fs@^4.1.6, graceful-fs@^4.2.0: version "4.2.11" - resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== immediate@~3.0.5: version "3.0.6" - resolved "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz" + resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== inflight@^1.0.4: version "1.0.6" - resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== dependencies: once "^1.3.0" wrappy "1" -inherits@^2.0.3, inherits@~2.0.3, inherits@2: +inherits@2, inherits@^2.0.3, inherits@~2.0.3: version "2.0.4" - resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== is-docker@^2.0.0: version "2.2.1" - resolved "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== is-fullwidth-code-point@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== is-plain-object@^2.0.4: version "2.0.4" - resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== dependencies: isobject "^3.0.1" is-primitive@^3.0.1: version "3.0.1" - resolved "https://registry.npmjs.org/is-primitive/-/is-primitive-3.0.1.tgz" + resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-3.0.1.tgz#98c4db1abff185485a657fc2905052b940524d05" integrity sha512-GljRxhWvlCNRfZyORiH77FwdFwGcMO620o37EOYC0ORWdq+WYNVqW0w2Juzew4M+L81l6/QS3t5gkkihyRqv9w== is-stream@^1.1.0: version "1.1.0" - resolved "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== is-wsl@^2.2.0: version "2.2.0" - resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== dependencies: is-docker "^2.0.0" isarray@~1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== isexe@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== isobject@^3.0.1: version "3.0.1" - resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== jsonfile@^6.0.1: - version "6.1.0" - resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz" - integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + version "6.2.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.2.0.tgz#7c265bd1b65de6977478300087c99f1c84383f62" + integrity sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg== dependencies: universalify "^2.0.0" optionalDependencies: @@ -316,7 +316,7 @@ jsonfile@^6.0.1: jszip@^3.10.1: version "3.10.1" - resolved "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz" + resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.10.1.tgz#34aee70eb18ea1faec2f589208a157d1feb091c2" integrity sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g== dependencies: lie "~3.3.0" @@ -326,36 +326,36 @@ jszip@^3.10.1: lie@~3.3.0: version "3.3.0" - resolved "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz" + resolved "https://registry.yarnpkg.com/lie/-/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a" integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ== dependencies: immediate "~3.0.5" locate-path@^5.0.0: version "5.0.0" - resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== dependencies: p-locate "^4.1.0" lodash.get@^4.4.2: version "4.4.2" - resolved "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz" + resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" integrity sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ== lodash.uniqby@^4.7.0: version "4.7.0" - resolved "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz" + resolved "https://registry.yarnpkg.com/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz#d99c07a669e9e6d24e1362dfe266c67616af1302" integrity sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww== lodash.values@^4.3.0: version "4.3.0" - resolved "https://registry.npmjs.org/lodash.values/-/lodash.values-4.3.0.tgz" + resolved "https://registry.yarnpkg.com/lodash.values/-/lodash.values-4.3.0.tgz#a3a6c2b0ebecc5c2cba1c17e6e620fe81b53d347" integrity sha512-r0RwvdCv8id9TUblb/O7rYPwVy6lerCbcawrfdo9iC/1t1wsNMJknO79WNBgwkH0hIeJ08jmvvESbFpNb4jH0Q== log@^6.0.0: version "6.3.2" - resolved "https://registry.npmjs.org/log/-/log-6.3.2.tgz" + resolved "https://registry.yarnpkg.com/log/-/log-6.3.2.tgz#8e37a672b06161acc994e2b679726c7f3c011016" integrity sha512-ek8NRg/OPvS9ISOJNWNAz5vZcpYacWNFDWNJjj5OXsc6YuKacfey6wF04cXz/tOJIVrZ2nGSkHpAY5qKtF6ISg== dependencies: d "^1.0.2" @@ -366,77 +366,84 @@ log@^6.0.0: type "^2.7.3" uni-global "^1.0.0" -minimatch@^3.1.1: - version "3.1.2" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== +minimatch@^3.1.1, minimatch@^3.1.3: + version "3.1.5" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.5.tgz#580c88f8d5445f2bd6aa8f3cadefa0de79fbd69e" + integrity sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w== dependencies: brace-expansion "^1.1.7" next-tick@^1.1.0: version "1.1.0" - resolved "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== nice-try@^1.0.4: version "1.0.5" - resolved "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== +node-fetch@^2.6.1: + version "2.7.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== + dependencies: + whatwg-url "^5.0.0" + once@^1.3.0: version "1.4.0" - resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== dependencies: wrappy "1" p-limit@^2.2.0: version "2.3.0" - resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== dependencies: p-try "^2.0.0" p-locate@^4.1.0: version "4.1.0" - resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== dependencies: p-limit "^2.2.0" p-try@^2.0.0: version "2.2.0" - resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== pako@~1.0.2: version "1.0.11" - resolved "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== path-exists@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== path-is-absolute@^1.0.0: version "1.0.1" - resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== path-key@^2.0.1: version "2.0.1" - resolved "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== process-nextick-args@~2.0.0: version "2.0.1" - resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== readable-stream@^3.0.0: version "3.6.2" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== dependencies: inherits "^2.0.3" @@ -445,7 +452,7 @@ readable-stream@^3.0.0: readable-stream@~2.3.6: version "2.3.8" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== dependencies: core-util-is "~1.0.0" @@ -458,44 +465,51 @@ readable-stream@~2.3.6: require-directory@^2.1.1: version "2.1.1" - resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== require-main-filename@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== rimraf@^3.0.2: version "3.0.2" - resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: glob "^7.1.3" safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== +safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + semver@^5.5.0: version "5.7.2" - resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== semver@^7.6.0: - version "7.6.3" - resolved "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz" - integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== + version "7.7.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.4.tgz#28464e36060e991fa7a11d0279d2d3f3b57a7e8a" + integrity sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA== serverless-plugin-datadog@^2.18.0: - version "2.18.0" - resolved "https://registry.npmjs.org/serverless-plugin-datadog/-/serverless-plugin-datadog-2.18.0.tgz" - integrity sha512-RUdCNjUk+uUKQYgQBjK0WNeYJ7lM2/RScqg/LjVSfv5EACeJ3iIUPz1c4bS2jtiH05al8qXudNb6QDkv9zxG7w== + version "2.34.1" + resolved "https://registry.yarnpkg.com/serverless-plugin-datadog/-/serverless-plugin-datadog-2.34.1.tgz#be9de0f9515be1211fdb578db650b716340b9470" + integrity sha512-oDLh+73a7UPgagvWbMGkbTXK2n7+zGeN8aGDhxza5P0jJFpdwICFArkC72CTLOVcY4JYpgB7VAvbbVS9HAamOA== + dependencies: + node-fetch "^2.6.1" serverless-python-requirements@^6.1.2: version "6.1.2" - resolved "https://registry.npmjs.org/serverless-python-requirements/-/serverless-python-requirements-6.1.2.tgz" + resolved "https://registry.yarnpkg.com/serverless-python-requirements/-/serverless-python-requirements-6.1.2.tgz#21a222c06ac52736c969b60e251a7e2f606a6a33" integrity sha512-pas27CBxxaLTU5XMYnCVPJc+LVdm65Ys5olNvRWRqfUaZwTfD/7KSSt2XPSRme8BeJubroslaiOtWPP+IrxTVA== dependencies: "@iarna/toml" "^2.2.5" @@ -517,12 +531,12 @@ serverless-python-requirements@^6.1.2: set-blocking@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== set-value@^4.1.0: version "4.1.0" - resolved "https://registry.npmjs.org/set-value/-/set-value-4.1.0.tgz" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-4.1.0.tgz#aa433662d87081b75ad88a4743bd450f044e7d09" integrity sha512-zTEg4HL0RwVrqcWs3ztF+x1vkxfm0lP+MQQFPiMJTKVceBwEV0A569Ou8l9IYQG8jOZdMVI1hGsc0tmeD2o/Lw== dependencies: is-plain-object "^2.0.4" @@ -530,114 +544,139 @@ set-value@^4.1.0: setimmediate@^1.0.5: version "1.0.5" - resolved "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== sha256-file@1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/sha256-file/-/sha256-file-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/sha256-file/-/sha256-file-1.0.0.tgz#02cade5e658da3fbc167c3270bdcdfd5409f1b65" integrity sha512-nqf+g0veqgQAkDx0U2y2Tn2KWyADuuludZTw9A7J3D+61rKlIIl9V5TS4mfnwKuXZOH9B7fQyjYJ9pKRHIsAyg== shebang-command@^1.2.0: version "1.2.0" - resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== dependencies: shebang-regex "^1.0.0" shebang-regex@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== shell-quote@^1.8.1: - version "1.8.2" - resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.2.tgz" - integrity sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA== + version "1.8.3" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.3.tgz#55e40ef33cf5c689902353a3d8cd1a6725f08b4b" + integrity sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw== split2@^3.1.1: version "3.2.2" - resolved "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz" + resolved "https://registry.yarnpkg.com/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f" integrity sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg== dependencies: readable-stream "^3.0.0" sprintf-kit@^2.0.2: version "2.0.2" - resolved "https://registry.npmjs.org/sprintf-kit/-/sprintf-kit-2.0.2.tgz" + resolved "https://registry.yarnpkg.com/sprintf-kit/-/sprintf-kit-2.0.2.tgz#e79f0c6076d2bc656b5fb55fa43b737ca98d3ecf" integrity sha512-lnapdj6W4LflHZGKvl9eVkz5YF0xaTrqpRWVA4cNVOTedwqifIP8ooGImldzT/4IAN5KXFQAyXTdLidYVQdyag== dependencies: es5-ext "^0.10.64" stream-promise@^3.2.0: version "3.2.0" - resolved "https://registry.npmjs.org/stream-promise/-/stream-promise-3.2.0.tgz" + resolved "https://registry.yarnpkg.com/stream-promise/-/stream-promise-3.2.0.tgz#bad976f2d0e1f11d56cc95cc11907cfd869a27ff" integrity sha512-P+7muTGs2C8yRcgJw/PPt61q7O517tDHiwYEzMWo1GSBCcZedUMT/clz7vUNsSxFphIlJ6QUL4GexQKlfJoVtA== dependencies: "2-thenable" "^1.0.0" es5-ext "^0.10.49" is-stream "^1.1.0" -string_decoder@^1.1.1, string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - string-width@^4.1.0, string-width@^4.2.0: version "4.2.3" - resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== dependencies: emoji-regex "^8.0.0" is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: ansi-regex "^5.0.1" +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + type@^2.5.0, type@^2.7.2, type@^2.7.3: version "2.7.3" - resolved "https://registry.npmjs.org/type/-/type-2.7.3.tgz" + resolved "https://registry.yarnpkg.com/type/-/type-2.7.3.tgz#436981652129285cc3ba94f392886c2637ea0486" integrity sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ== uni-global@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/uni-global/-/uni-global-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/uni-global/-/uni-global-1.0.0.tgz#3583c449e87a2d9dc270ea221410a649bcdad040" integrity sha512-WWM3HP+siTxzIWPNUg7hZ4XO8clKi6NoCAJJWnuRL+BAqyFXF8gC03WNyTefGoUXYc47uYgXxpKLIEvo65PEHw== dependencies: type "^2.5.0" universalify@^2.0.0: version "2.0.1" - resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" - resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + which-module@^2.0.0: version "2.0.1" - resolved "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409" integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== which@^1.2.9: version "1.3.1" - resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== dependencies: isexe "^2.0.0" wrap-ansi@^6.2.0: version "6.2.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== dependencies: ansi-styles "^4.0.0" @@ -646,17 +685,17 @@ wrap-ansi@^6.2.0: wrappy@1: version "1.0.2" - resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== y18n@^4.0.0: version "4.0.3" - resolved "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== yargs-parser@^18.1.2: version "18.1.3" - resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== dependencies: camelcase "^5.0.0" @@ -664,7 +703,7 @@ yargs-parser@^18.1.2: yargs@^15.3.1: version "15.4.1" - resolved "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== dependencies: cliui "^6.0.0" From 3137af05ee59b01689cce2700cbb6e4ce13a89ea Mon Sep 17 00:00:00 2001 From: Olivier Nzia Date: Thu, 16 Apr 2026 10:39:26 -0400 Subject: [PATCH 386/403] v8.124.0 (#798) --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index d11f7a1f6..a1dc127d2 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "8.124.0.dev0" +__version__ = "8.124.0" diff --git a/pyproject.toml b/pyproject.toml index 5fe65ae7d..349942457 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "8.124.0.dev0" +version = "8.124.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 714156f80a9c0b258a582e63c0f2989e7dd92a89 Mon Sep 17 00:00:00 2001 From: Nicolas Catoni Date: Thu, 16 Apr 2026 18:36:41 +0200 Subject: [PATCH 387/403] chore(ci): use dd-sts for system-tests test optimization (#788) * chore(ci): use dd-sts for system-tests test optimization * chore(ci): remove dd_sts_policy from system-tests subworkflow * chore(ci): remove unneeded permissions from system-tests subworkflow * chore(ci): pin system-tests workflow to 1e5d6b709 * Remove API key * fix: add contents:read permission to system-tests workflow call * chore(ci): pass ref to system-tests reusable workflow --- .github/workflows/system_tests.yml | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/.github/workflows/system_tests.yml b/.github/workflows/system_tests.yml index f6e23a0f0..04e082460 100644 --- a/.github/workflows/system_tests.yml +++ b/.github/workflows/system_tests.yml @@ -28,15 +28,13 @@ jobs: system-tests: needs: - build - uses: DataDog/system-tests/.github/workflows/system-tests.yml@main - secrets: - DD_API_KEY: ${{ secrets.DD_API_KEY }} - TEST_OPTIMIZATION_API_KEY: ${{ secrets.TEST_OPTIMIZATION_API_KEY }} + uses: DataDog/system-tests/.github/workflows/system-tests.yml@1e5d6b7096279ca43ce4826fda3cc805635b63c1 permissions: contents: read - packages: write + id-token: write with: library: python_lambda + ref: 1e5d6b7096279ca43ce4826fda3cc805635b63c1 binaries_artifact: binaries scenarios_groups: tracer_release skip_empty_scenarios: true From c44193198f8e2305b48e01979b37ce18e0fe8ccb Mon Sep 17 00:00:00 2001 From: Olivier John Ndjike Nzia Date: Fri, 17 Apr 2026 10:27:11 -0400 Subject: [PATCH 388/403] v8.125.0.dev0 --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index a1dc127d2..0c1404f80 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "8.124.0" +__version__ = "8.125.0.dev0" diff --git a/pyproject.toml b/pyproject.toml index 349942457..105fa4d51 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "8.124.0" +version = "8.125.0.dev0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 3e094174172e641e0ddc7581af9c5924334915e5 Mon Sep 17 00:00:00 2001 From: Nicolas Catoni Date: Mon, 20 Apr 2026 18:00:18 +0200 Subject: [PATCH 389/403] Remove system-tests pin (#801) --- .github/workflows/system_tests.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/system_tests.yml b/.github/workflows/system_tests.yml index 04e082460..bc6b05e93 100644 --- a/.github/workflows/system_tests.yml +++ b/.github/workflows/system_tests.yml @@ -28,13 +28,12 @@ jobs: system-tests: needs: - build - uses: DataDog/system-tests/.github/workflows/system-tests.yml@1e5d6b7096279ca43ce4826fda3cc805635b63c1 + uses: DataDog/system-tests/.github/workflows/system-tests.yml@main permissions: contents: read id-token: write with: library: python_lambda - ref: 1e5d6b7096279ca43ce4826fda3cc805635b63c1 binaries_artifact: binaries scenarios_groups: tracer_release skip_empty_scenarios: true From d99780273021614bc0d0b079a12cbc78cd936ec4 Mon Sep 17 00:00:00 2001 From: Olivier Nzia Date: Fri, 24 Apr 2026 12:09:19 -0400 Subject: [PATCH 390/403] Onzia/add us2 (#802) * add us-2 * typo * update aws role * update usage comment --- scripts/publish_govcloud.sh | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/scripts/publish_govcloud.sh b/scripts/publish_govcloud.sh index 5edd3b08e..19c8c17ca 100755 --- a/scripts/publish_govcloud.sh +++ b/scripts/publish_govcloud.sh @@ -9,7 +9,7 @@ # Download button on the `layer bundle` job. This will be a zip file containing # all of the required layers. Run this script as follows: # -# ENVIRONMENT=[us1-staging-fed or us1-fed] [LAYER_NAME_SUFFIX=optional-layer-suffix] [REGIONS=us-gov-west-1] ./scripts/publish_govcloud.sh +# CI_COMMIT_TAG= ENVIRONMENT=[us1-staging-fed|us1-fed|us2-fed] [LAYER_NAME_SUFFIX=optional-layer-suffix] [REGIONS=us-gov-west-1] ./scripts/publish_govcloud.sh # # protip: you can drag the zip file from finder into your terminal to insert # its path. @@ -49,9 +49,17 @@ elif [ $ENVIRONMENT = "us1-fed" ]; then echo "[ERROR]: Unexpected package name: $PACKAGE_NAME" exit 1 fi +elif [ $ENVIRONMENT = "us2-fed" ]; then + AWS_VAULT_ROLE=sso-govcloud-fed-us2-lambda-layer-operator + export STAGE=gov-prod + + if [[ ! "$PACKAGE_NAME" =~ ^datadog_lambda_py-signed-bundle-[0-9]+$ ]]; then + echo "[ERROR]: Unexpected package name: $PACKAGE_NAME" + exit 1 + fi else - printf "[ERROR]: ENVIRONMENT not supported, must be us1-staging-fed or us1-fed.\n" + printf "[ERROR]: ENVIRONMENT not supported, must be us1-staging-fed, us1-fed, or us2-fed.\n" exit 1 fi From 89084d6b80adce5815e37f571f8d6504a711ecbb Mon Sep 17 00:00:00 2001 From: Brett Langdon Date: Fri, 1 May 2026 09:55:16 -0400 Subject: [PATCH 391/403] fix: pin ddtrace to <4.8.0 to avoid import errors (#811) --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 105fa4d51..79dc6ffaf 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -31,7 +31,7 @@ datadog = ">=0.51.0,<1.0.0" wrapt = "^1.11.2" ddtrace = [ {version = ">=3.19.1,<4", python = ">=3.8,<3.10"}, - {version = ">=4.1.1,<5,!=4.6.*", python = ">=3.10"} + {version = ">=4.1.1,<5,!=4.6.*,<4.8.0", python = ">=3.10"} ] ujson = [ {version = ">=5.10.0,<5.12.0", python = ">=3.8,<3.10"}, From d237ec25e87ba62db84ed7c486705685bf094e62 Mon Sep 17 00:00:00 2001 From: Rithika Narayan <93233069+rithikanarayan@users.noreply.github.com> Date: Mon, 4 May 2026 14:46:33 -0400 Subject: [PATCH 392/403] Replace use of _SpanPointer and AgentWriter (#812) * Replace use of _SpanPointer * Use SpanLink * fix * add trace id and span id * change how ids are added * new spanlink * fix new spanlink * cleanup * try not patching agentwriter * try except for Span._get_links * Remove AgentWriter patch * update amd snapshots * remove extra file * arm snapshots * remove extra * trying to fix snapshots * remove file * new amd snapshots? * remove bak --- pyproject.toml | 2 +- scripts/run_integration_tests.sh | 5 +- tests/integration/parse-json.js | 16 +- .../logs/async-metrics_python310.log | 1520 +++++++------- .../logs/async-metrics_python311.log | 1520 +++++++------- .../logs/async-metrics_python312.log | 1522 +++++++------- .../logs/async-metrics_python313.log | 1520 +++++++------- .../logs/async-metrics_python314.log | 1520 +++++++------- .../snapshots/logs/async-metrics_python38.log | 1418 ++++++------- .../snapshots/logs/async-metrics_python39.log | 1418 ++++++------- .../snapshots/logs/sync-metrics_python310.log | 1760 +++++++++-------- .../snapshots/logs/sync-metrics_python311.log | 1760 +++++++++-------- .../snapshots/logs/sync-metrics_python312.log | 1760 +++++++++-------- .../snapshots/logs/sync-metrics_python313.log | 1760 +++++++++-------- .../snapshots/logs/sync-metrics_python314.log | 1760 +++++++++-------- .../snapshots/logs/sync-metrics_python38.log | 1640 +++++++-------- .../snapshots/logs/sync-metrics_python39.log | 1640 +++++++-------- tests/test_tracing.py | 68 +- tests/test_wrapper.py | 1 - 19 files changed, 11717 insertions(+), 10893 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 79dc6ffaf..105fa4d51 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -31,7 +31,7 @@ datadog = ">=0.51.0,<1.0.0" wrapt = "^1.11.2" ddtrace = [ {version = ">=3.19.1,<4", python = ">=3.8,<3.10"}, - {version = ">=4.1.1,<5,!=4.6.*,<4.8.0", python = ">=3.10"} + {version = ">=4.1.1,<5,!=4.6.*", python = ">=3.10"} ] ujson = [ {version = ">=5.10.0,<5.12.0", python = ">=3.8,<3.10"}, diff --git a/scripts/run_integration_tests.sh b/scripts/run_integration_tests.sh index 1ec552897..aa47b279c 100755 --- a/scripts/run_integration_tests.sh +++ b/scripts/run_integration_tests.sh @@ -263,8 +263,9 @@ for handler_name in "${LAMBDA_HANDLERS[@]}"; do echo "Writing logs to $function_snapshot_path because no snapshot exists yet" echo "$logs" >$function_snapshot_path else - # Compare new logs to snapshots - diff_output=$(echo "$logs" | sort | diff -w - <(sort $function_snapshot_path)) + # Compare new logs to snapshots (LC_ALL=C: stable sort; parse-json.js sorts object keys so + # e.g. span meta key order / trailing-comma lines do not vary between runs) + diff_output=$(echo "$logs" | LC_ALL=C sort | diff -w - <(LC_ALL=C sort $function_snapshot_path)) if [ $? -eq 1 ]; then if [ -n "$UPDATE_SNAPSHOTS" ]; then # If $UPDATE_SNAPSHOTS is set to true write the new logs over the current snapshot diff --git a/tests/integration/parse-json.js b/tests/integration/parse-json.js index 0e54e0dc2..5aaed46e6 100644 --- a/tests/integration/parse-json.js +++ b/tests/integration/parse-json.js @@ -7,10 +7,24 @@ var rl = readline.createInterface({ terminal: false }); +function sortKeys (value) { + if (value === null || typeof value !== 'object') { + return value + } + if (Array.isArray(value)) { + return value.map(sortKeys) + } + var sorted = {} + Object.keys(value).sort().forEach(function (key) { + sorted[key] = sortKeys(value[key]) + }) + return sorted +} + rl.on('line', function(line){ try { const obj = JSON.parse(line) - console.log(JSON.stringify(obj, null, 2)) + console.log(JSON.stringify(sortKeys(obj), null, 2)) } catch (e) { console.log(line) } diff --git a/tests/integration/snapshots/logs/async-metrics_python310.log b/tests/integration/snapshots/logs/async-metrics_python310.log index 5aef301ef..78d81a62f 100644 --- a/tests/integration/snapshots/logs/async-metrics_python310.log +++ b/tests/integration/snapshots/logs/async-metrics_python310.log @@ -1,9 +1,8 @@ INIT_START Runtime Version: python:3.10.vX Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -14,27 +13,28 @@ START "runtime:python3.10", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python310_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -42,132 +42,139 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "XXXX.execute-api.us-east-2.amazonaws.com", - "resource": "GET /", - "name": "aws.apigateway", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/", - "endpoint": "/", - "http.method": "GET", - "resource_names": "GET /", - "http.useragent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36", - "span.kind": "server", - "apiid": "XXXX", - "apiname": "XXXX", - "stage": "Prod", - "request_id": "XXXX", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", - "http.status_code": "200", - "http.route": "/", + "apiid": "XXXX", + "apiname": "XXXX", "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/70ixmpl4fl/stages/Prod", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", + "endpoint": "/", + "http.method": "GET", + "http.route": "/", + "http.status_code": "200", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/", + "http.useragent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "peer.service": "integration-tests-python", + "request_id": "XXXX", + "resource_names": "GET /", + "runtime-id": "XXXX", + "span.kind": "server", + "stage": "Prod" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.apigateway", "parent_id": "XXXX", + "resource": "GET /", + "service": "XXXX.execute-api.us-east-2.amazonaws.com", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python310", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "true", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python310", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python310", - "functionname": "integration-tests-python-XXXX-async-metrics_python310", "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", - "span.name": "aws.lambda", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python310", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", + "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python310", "http.method": "GET", "http.route": "/", - "http.status_code": "200" + "http.status_code": "200", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python310", + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python310", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -176,9 +183,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -189,27 +195,28 @@ START "runtime:python3.10", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python310_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -217,87 +224,92 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python310", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python310", "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python310", "functionname": "integration-tests-python-XXXX-async-metrics_python310", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python310", + "runtime-id": "XXXX", + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { - "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python310", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -306,9 +318,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -319,36 +330,37 @@ START "runtime:python3.10", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python310_X.X.X" - ] + ], + "v": 1 } { - "m": "datadog.serverless.dynamodb.stream.type", - "v": 1, "e": XXXX, + "m": "datadog.serverless.dynamodb.stream.type", "t": [ "streamtype:NEW_AND_OLD_IMAGES", "dd_lambda_layer:datadog-python310_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -356,158 +368,165 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "ExampleTableWithStream", - "resource": "ExampleTableWithStream", - "name": "aws.dynamodb", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.dynamodb", - "resource_names": "ExampleTableWithStream", - "span.kind": "server", - "tablename": "ExampleTableWithStream", - "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", - "event_id": "XXXX", - "event_name": "INSERT", - "event_version": "1.1", - "stream_view_type": "NEW_AND_OLD_IMAGES", - "size_bytes": "26", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "dd_resource_key": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", + "event_id": "XXXX", + "event_name": "INSERT", + "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", + "event_version": "1.1", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "operation_name": "aws.dynamodb", + "peer.service": "integration-tests-python", + "resource_names": "ExampleTableWithStream", + "runtime-id": "XXXX", + "size_bytes": "26", + "span.kind": "server", + "stream_view_type": "NEW_AND_OLD_IMAGES", + "tablename": "ExampleTableWithStream" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web", + "name": "aws.dynamodb", + "parent_id": "XXXX", + "resource": "ExampleTableWithStream", + "service": "ExampleTableWithStream", + "span_id": "XXXX", "span_links": [ { - "trace_id": "XXXX", - "span_id": "XXXX", "attributes": { - "ptr.kind": "aws.dynamodb.item", + "link.kind": "span-pointer", "ptr.dir": "u", "ptr.hash": "e2af34d333891f765c7f02d2da80895e", - "link.kind": "span-pointer" - } + "ptr.kind": "aws.dynamodb.item" + }, + "span_id": "XXXX", + "trace_id": "XXXX" }, { - "trace_id": "XXXX", - "span_id": "XXXX", "attributes": { - "ptr.kind": "aws.dynamodb.item", + "link.kind": "span-pointer", "ptr.dir": "u", "ptr.hash": "e2af34d333891f765c7f02d2da80895e", - "link.kind": "span-pointer" - } + "ptr.kind": "aws.dynamodb.item" + }, + "span_id": "XXXX", + "trace_id": "XXXX" }, { - "trace_id": "XXXX", - "span_id": "XXXX", "attributes": { - "ptr.kind": "aws.dynamodb.item", + "link.kind": "span-pointer", "ptr.dir": "u", "ptr.hash": "e2af34d333891f765c7f02d2da80895e", - "link.kind": "span-pointer" - } + "ptr.kind": "aws.dynamodb.item" + }, + "span_id": "XXXX", + "trace_id": "XXXX" } - ] + ], + "start": "XXXX", + "trace_id": "XXXX", + "type": "web" }, { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python310", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python310", + "function_trigger.event_source": "dynamodb", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python310", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python310", - "functionname": "integration-tests-python-XXXX-async-metrics_python310", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX" + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python310", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -516,9 +535,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -529,27 +547,28 @@ START "runtime:python3.10", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python310_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -557,118 +576,125 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "eventbridge.custom.event.sender", - "resource": "eventbridge.custom.event.sender", - "name": "aws.eventbridge", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.eventbridge", - "resource_names": "eventbridge.custom.event.sender", - "span.kind": "server", - "detail_type": "testdetail", - "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "detail_type": "testdetail", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "operation_name": "aws.eventbridge", + "peer.service": "integration-tests-python", + "resource_names": "eventbridge.custom.event.sender", + "runtime-id": "XXXX", + "span.kind": "server" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.eventbridge", "parent_id": "XXXX", + "resource": "eventbridge.custom.event.sender", + "service": "eventbridge.custom.event.sender", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python310", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python310", + "function_trigger.event_source": "eventbridge", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python310", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python310", - "functionname": "integration-tests-python-XXXX-async-metrics_python310", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "eventbridge" + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python310", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -677,9 +703,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -690,27 +715,28 @@ START "runtime:python3.10", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python310_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -718,133 +744,140 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "XXXX.execute-api.eu-west-1.amazonaws.com", - "resource": "GET /httpapi/get", - "name": "aws.httpapi", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "apiid": "XXXX", + "apiname": "XXXX", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/x02yirxc7a/stages/$default", "endpoint": "/httpapi/get", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.protocol": "HTTP/1.1", + "http.route": "/httpapi/get", "http.source_ip": "XXXX", - "http.useragent": "curl/7.64.1", - "resource_names": "GET /httpapi/get", - "request_id": "XXXX", - "apiid": "XXXX", - "apiname": "XXXX", - "stage": "$default", - "_inferred_span.synchronicity": "sync", - "_inferred_span.tag_source": "self", "http.status_code": "200", - "http.route": "/httpapi/get", - "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/x02yirxc7a/stages/$default", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.useragent": "curl/7.64.1", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "peer.service": "integration-tests-python", + "request_id": "XXXX", + "resource_names": "GET /httpapi/get", + "runtime-id": "XXXX", + "stage": "$default" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.httpapi", "parent_id": "XXXX", + "resource": "GET /httpapi/get", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python310", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python310", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python310", - "functionname": "integration-tests-python-XXXX-async-metrics_python310", "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", - "span.name": "aws.lambda", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python310", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python310", "http.method": "GET", "http.route": "/httpapi/get", - "http.status_code": "200" + "http.status_code": "200", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python310", + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python310", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -853,9 +886,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -866,27 +898,28 @@ START "runtime:python3.10", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python310_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -894,126 +927,133 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "EXAMPLE", - "resource": "EXAMPLE", - "name": "aws.kinesis", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.kinesis", - "resource_names": "EXAMPLE", - "span.kind": "server", - "streamname": "EXAMPLE", - "shardid": "shardId-XXXX", - "event_source_arn": "arn:aws:kinesis:EXAMPLE", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:kinesis:EXAMPLE", "event_id": "XXXX", "event_name": "aws:kinesis:record", + "event_source_arn": "arn:aws:kinesis:EXAMPLE", "event_version": "1.0", + "language": "python", + "operation_name": "aws.kinesis", "partition_key": "XXXX", - "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self", - "dd_resource_key": "arn:aws:kinesis:EXAMPLE", "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "resource_names": "EXAMPLE", + "runtime-id": "XXXX", + "shardid": "shardId-XXXX", + "span.kind": "server", + "streamname": "EXAMPLE" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.kinesis", "parent_id": "XXXX", + "resource": "EXAMPLE", + "service": "EXAMPLE", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python310", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python310", + "function_trigger.event_source": "kinesis", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python310", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python310", - "functionname": "integration-tests-python-XXXX-async-metrics_python310", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX" + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python310", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1022,9 +1062,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -1035,27 +1074,28 @@ START "runtime:python3.10", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python310_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -1063,135 +1103,142 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "example-bucket", - "resource": "example-bucket", - "name": "aws.s3", "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.s3", - "resource_names": "example-bucket", - "span.kind": "server", - "event_name": "ObjectCreated:Put", - "bucketname": "example-bucket", - "bucket_arn": "arn:aws:s3:::example-bucket", - "object_key": "test/key", - "object_size": "1024", - "object_etag": "XXXX", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "bucket_arn": "arn:aws:s3:::example-bucket", + "bucketname": "example-bucket", "dd_resource_key": "arn:aws:s3:::example-bucket", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", + "event_name": "ObjectCreated:Put", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "object_etag": "XXXX", + "object_key": "test/key", + "object_size": "1024", + "operation_name": "aws.s3", + "peer.service": "integration-tests-python", + "resource_names": "example-bucket", + "runtime-id": "XXXX", + "span.kind": "server" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web", + "name": "aws.s3", + "parent_id": "XXXX", + "resource": "example-bucket", + "service": "example-bucket", + "span_id": "XXXX", "span_links": [ { - "trace_id": "XXXX", - "span_id": "XXXX", "attributes": { - "ptr.kind": "aws.s3.object", + "link.kind": "span-pointer", "ptr.dir": "u", "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", - "link.kind": "span-pointer" - } + "ptr.kind": "aws.s3.object" + }, + "span_id": "XXXX", + "trace_id": "XXXX" } - ] + ], + "trace_id": "XXXX", + "type": "web" }, { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python310", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python310", + "function_trigger.event_source": "s3", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python310", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python310", - "functionname": "integration-tests-python-XXXX-async-metrics_python310", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX" + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python310", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" }, { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1200,9 +1247,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -1213,27 +1259,28 @@ START "runtime:python3.10", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python310_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -1241,124 +1288,131 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "sns-lambda", - "resource": "sns-lambda", - "name": "aws.sns", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.sns", - "resource_names": "sns-lambda", - "span.kind": "server", - "topicname": "sns-lambda", - "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", - "message_id": "XXXX", - "type": "Notification", - "subject": "TestInvoke", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "dd_resource_key": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "message_id": "XXXX", + "operation_name": "aws.sns", + "peer.service": "integration-tests-python", + "resource_names": "sns-lambda", + "runtime-id": "XXXX", + "span.kind": "server", + "subject": "TestInvoke", + "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", + "topicname": "sns-lambda", + "type": "Notification" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.sns", "parent_id": "XXXX", + "resource": "sns-lambda", + "service": "sns-lambda", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python310", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python310", + "function_trigger.event_source": "sns", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python310", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python310", - "functionname": "integration-tests-python-XXXX-async-metrics_python310", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX" + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python310", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1367,9 +1421,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -1380,27 +1433,28 @@ START "runtime:python3.10", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python310_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -1408,123 +1462,130 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "my-queue", - "resource": "my-queue", - "name": "aws.sqs", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.sqs", - "resource_names": "my-queue", - "span.kind": "server", - "queuename": "my-queue", - "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", - "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", - "sender_id": "AIDAIENQZJOLO23YVJ4VO", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "dd_resource_key": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", + "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "operation_name": "aws.sqs", + "peer.service": "integration-tests-python", + "queuename": "my-queue", + "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", + "resource_names": "my-queue", + "runtime-id": "XXXX", + "sender_id": "AIDAIENQZJOLO23YVJ4VO", + "span.kind": "server" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.sqs", "parent_id": "XXXX", + "resource": "my-queue", + "service": "my-queue", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python310", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python310", + "function_trigger.event_source": "sqs", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python310", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python310", - "functionname": "integration-tests-python-XXXX-async-metrics_python310", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX" + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python310", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1533,9 +1594,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -1546,27 +1606,28 @@ START "runtime:python3.10", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python310_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python310_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -1574,131 +1635,138 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "XXXX.execute-api.eu-west-1.amazonaws.com", - "resource": "$default", - "name": "aws.apigateway.websocket", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.apigateway.websocket", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com$default", - "endpoint": "$default", - "resource_names": "$default", - "span.kind": "server", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", "apiid": "XXXX", "apiname": "XXXX", - "stage": "dev", - "request_id": "XXXX", "connection_id": "XXXX=", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/p62c47itsb/stages/dev", + "endpoint": "$default", "event_type": "MESSAGE", - "message_direction": "IN", - "_inferred_span.synchronicity": "sync", - "_inferred_span.tag_source": "self", "http.status_code": "200", - "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/p62c47itsb/stages/dev", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com$default", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "message_direction": "IN", + "operation_name": "aws.apigateway.websocket", + "peer.service": "integration-tests-python", + "request_id": "XXXX", + "resource_names": "$default", + "runtime-id": "XXXX", + "span.kind": "server", + "stage": "dev" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.apigateway.websocket", "parent_id": "XXXX", + "resource": "$default", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python310", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python310", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python310", - "functionname": "integration-tests-python-XXXX-async-metrics_python310", "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", - "span.name": "aws.lambda", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python310", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python310", + "http.status_code": "200", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", - "http.status_code": "200" + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python310", + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python310", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] diff --git a/tests/integration/snapshots/logs/async-metrics_python311.log b/tests/integration/snapshots/logs/async-metrics_python311.log index d662cb7af..a282c6d82 100644 --- a/tests/integration/snapshots/logs/async-metrics_python311.log +++ b/tests/integration/snapshots/logs/async-metrics_python311.log @@ -1,9 +1,8 @@ INIT_START Runtime Version: python:3.11.vX Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -14,27 +13,28 @@ START "runtime:python3.11", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python311_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -42,132 +42,139 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "XXXX.execute-api.us-east-2.amazonaws.com", - "resource": "GET /", - "name": "aws.apigateway", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/", - "endpoint": "/", - "http.method": "GET", - "resource_names": "GET /", - "http.useragent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36", - "span.kind": "server", - "apiid": "XXXX", - "apiname": "XXXX", - "stage": "Prod", - "request_id": "XXXX", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", - "http.status_code": "200", - "http.route": "/", + "apiid": "XXXX", + "apiname": "XXXX", "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/70ixmpl4fl/stages/Prod", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", + "endpoint": "/", + "http.method": "GET", + "http.route": "/", + "http.status_code": "200", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/", + "http.useragent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "peer.service": "integration-tests-python", + "request_id": "XXXX", + "resource_names": "GET /", + "runtime-id": "XXXX", + "span.kind": "server", + "stage": "Prod" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.apigateway", "parent_id": "XXXX", + "resource": "GET /", + "service": "XXXX.execute-api.us-east-2.amazonaws.com", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python311", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "true", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python311", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python311", - "functionname": "integration-tests-python-XXXX-async-metrics_python311", "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", - "span.name": "aws.lambda", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python311", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", + "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python311", "http.method": "GET", "http.route": "/", - "http.status_code": "200" + "http.status_code": "200", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python311", + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python311", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -176,9 +183,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -189,27 +195,28 @@ START "runtime:python3.11", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python311_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -217,87 +224,92 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python311", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python311", "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python311", "functionname": "integration-tests-python-XXXX-async-metrics_python311", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python311", + "runtime-id": "XXXX", + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { - "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python311", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -306,9 +318,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -319,36 +330,37 @@ START "runtime:python3.11", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python311_X.X.X" - ] + ], + "v": 1 } { - "m": "datadog.serverless.dynamodb.stream.type", - "v": 1, "e": XXXX, + "m": "datadog.serverless.dynamodb.stream.type", "t": [ "streamtype:NEW_AND_OLD_IMAGES", "dd_lambda_layer:datadog-python311_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -356,158 +368,165 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "ExampleTableWithStream", - "resource": "ExampleTableWithStream", - "name": "aws.dynamodb", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.dynamodb", - "resource_names": "ExampleTableWithStream", - "span.kind": "server", - "tablename": "ExampleTableWithStream", - "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", - "event_id": "XXXX", - "event_name": "INSERT", - "event_version": "1.1", - "stream_view_type": "NEW_AND_OLD_IMAGES", - "size_bytes": "26", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "dd_resource_key": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", + "event_id": "XXXX", + "event_name": "INSERT", + "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", + "event_version": "1.1", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "operation_name": "aws.dynamodb", + "peer.service": "integration-tests-python", + "resource_names": "ExampleTableWithStream", + "runtime-id": "XXXX", + "size_bytes": "26", + "span.kind": "server", + "stream_view_type": "NEW_AND_OLD_IMAGES", + "tablename": "ExampleTableWithStream" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web", + "name": "aws.dynamodb", + "parent_id": "XXXX", + "resource": "ExampleTableWithStream", + "service": "ExampleTableWithStream", + "span_id": "XXXX", "span_links": [ { - "trace_id": "XXXX", - "span_id": "XXXX", "attributes": { - "ptr.kind": "aws.dynamodb.item", + "link.kind": "span-pointer", "ptr.dir": "u", "ptr.hash": "e2af34d333891f765c7f02d2da80895e", - "link.kind": "span-pointer" - } + "ptr.kind": "aws.dynamodb.item" + }, + "span_id": "XXXX", + "trace_id": "XXXX" }, { - "trace_id": "XXXX", - "span_id": "XXXX", "attributes": { - "ptr.kind": "aws.dynamodb.item", + "link.kind": "span-pointer", "ptr.dir": "u", "ptr.hash": "e2af34d333891f765c7f02d2da80895e", - "link.kind": "span-pointer" - } + "ptr.kind": "aws.dynamodb.item" + }, + "span_id": "XXXX", + "trace_id": "XXXX" }, { - "trace_id": "XXXX", - "span_id": "XXXX", "attributes": { - "ptr.kind": "aws.dynamodb.item", + "link.kind": "span-pointer", "ptr.dir": "u", "ptr.hash": "e2af34d333891f765c7f02d2da80895e", - "link.kind": "span-pointer" - } + "ptr.kind": "aws.dynamodb.item" + }, + "span_id": "XXXX", + "trace_id": "XXXX" } - ] + ], + "start": "XXXX", + "trace_id": "XXXX", + "type": "web" }, { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python311", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python311", + "function_trigger.event_source": "dynamodb", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python311", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python311", - "functionname": "integration-tests-python-XXXX-async-metrics_python311", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX" + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python311", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -516,9 +535,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -529,27 +547,28 @@ START "runtime:python3.11", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python311_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -557,118 +576,125 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "eventbridge.custom.event.sender", - "resource": "eventbridge.custom.event.sender", - "name": "aws.eventbridge", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.eventbridge", - "resource_names": "eventbridge.custom.event.sender", - "span.kind": "server", - "detail_type": "testdetail", - "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "detail_type": "testdetail", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "operation_name": "aws.eventbridge", + "peer.service": "integration-tests-python", + "resource_names": "eventbridge.custom.event.sender", + "runtime-id": "XXXX", + "span.kind": "server" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.eventbridge", "parent_id": "XXXX", + "resource": "eventbridge.custom.event.sender", + "service": "eventbridge.custom.event.sender", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python311", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python311", + "function_trigger.event_source": "eventbridge", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python311", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python311", - "functionname": "integration-tests-python-XXXX-async-metrics_python311", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "eventbridge" + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python311", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -677,9 +703,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -690,27 +715,28 @@ START "runtime:python3.11", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python311_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -718,133 +744,140 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "XXXX.execute-api.eu-west-1.amazonaws.com", - "resource": "GET /httpapi/get", - "name": "aws.httpapi", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "apiid": "XXXX", + "apiname": "XXXX", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/x02yirxc7a/stages/$default", "endpoint": "/httpapi/get", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.protocol": "HTTP/1.1", + "http.route": "/httpapi/get", "http.source_ip": "XXXX", - "http.useragent": "curl/7.64.1", - "resource_names": "GET /httpapi/get", - "request_id": "XXXX", - "apiid": "XXXX", - "apiname": "XXXX", - "stage": "$default", - "_inferred_span.synchronicity": "sync", - "_inferred_span.tag_source": "self", "http.status_code": "200", - "http.route": "/httpapi/get", - "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/x02yirxc7a/stages/$default", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.useragent": "curl/7.64.1", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "peer.service": "integration-tests-python", + "request_id": "XXXX", + "resource_names": "GET /httpapi/get", + "runtime-id": "XXXX", + "stage": "$default" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.httpapi", "parent_id": "XXXX", + "resource": "GET /httpapi/get", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python311", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python311", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python311", - "functionname": "integration-tests-python-XXXX-async-metrics_python311", "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", - "span.name": "aws.lambda", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python311", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python311", "http.method": "GET", "http.route": "/httpapi/get", - "http.status_code": "200" + "http.status_code": "200", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python311", + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python311", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -853,9 +886,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -866,27 +898,28 @@ START "runtime:python3.11", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python311_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -894,126 +927,133 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "EXAMPLE", - "resource": "EXAMPLE", - "name": "aws.kinesis", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.kinesis", - "resource_names": "EXAMPLE", - "span.kind": "server", - "streamname": "EXAMPLE", - "shardid": "shardId-XXXX", - "event_source_arn": "arn:aws:kinesis:EXAMPLE", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:kinesis:EXAMPLE", "event_id": "XXXX", "event_name": "aws:kinesis:record", + "event_source_arn": "arn:aws:kinesis:EXAMPLE", "event_version": "1.0", + "language": "python", + "operation_name": "aws.kinesis", "partition_key": "XXXX", - "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self", - "dd_resource_key": "arn:aws:kinesis:EXAMPLE", "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "resource_names": "EXAMPLE", + "runtime-id": "XXXX", + "shardid": "shardId-XXXX", + "span.kind": "server", + "streamname": "EXAMPLE" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.kinesis", "parent_id": "XXXX", + "resource": "EXAMPLE", + "service": "EXAMPLE", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python311", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python311", + "function_trigger.event_source": "kinesis", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python311", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python311", - "functionname": "integration-tests-python-XXXX-async-metrics_python311", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX" + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python311", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1022,9 +1062,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -1035,27 +1074,28 @@ START "runtime:python3.11", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python311_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -1063,135 +1103,142 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "example-bucket", - "resource": "example-bucket", - "name": "aws.s3", "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.s3", - "resource_names": "example-bucket", - "span.kind": "server", - "event_name": "ObjectCreated:Put", - "bucketname": "example-bucket", - "bucket_arn": "arn:aws:s3:::example-bucket", - "object_key": "test/key", - "object_size": "1024", - "object_etag": "XXXX", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "bucket_arn": "arn:aws:s3:::example-bucket", + "bucketname": "example-bucket", "dd_resource_key": "arn:aws:s3:::example-bucket", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", + "event_name": "ObjectCreated:Put", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "object_etag": "XXXX", + "object_key": "test/key", + "object_size": "1024", + "operation_name": "aws.s3", + "peer.service": "integration-tests-python", + "resource_names": "example-bucket", + "runtime-id": "XXXX", + "span.kind": "server" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web", + "name": "aws.s3", + "parent_id": "XXXX", + "resource": "example-bucket", + "service": "example-bucket", + "span_id": "XXXX", "span_links": [ { - "trace_id": "XXXX", - "span_id": "XXXX", "attributes": { - "ptr.kind": "aws.s3.object", + "link.kind": "span-pointer", "ptr.dir": "u", "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", - "link.kind": "span-pointer" - } + "ptr.kind": "aws.s3.object" + }, + "span_id": "XXXX", + "trace_id": "XXXX" } - ] + ], + "trace_id": "XXXX", + "type": "web" }, { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python311", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python311", + "function_trigger.event_source": "s3", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python311", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python311", - "functionname": "integration-tests-python-XXXX-async-metrics_python311", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX" + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python311", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" }, { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1200,9 +1247,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -1213,27 +1259,28 @@ START "runtime:python3.11", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python311_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -1241,124 +1288,131 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "sns-lambda", - "resource": "sns-lambda", - "name": "aws.sns", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.sns", - "resource_names": "sns-lambda", - "span.kind": "server", - "topicname": "sns-lambda", - "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", - "message_id": "XXXX", - "type": "Notification", - "subject": "TestInvoke", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "dd_resource_key": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "message_id": "XXXX", + "operation_name": "aws.sns", + "peer.service": "integration-tests-python", + "resource_names": "sns-lambda", + "runtime-id": "XXXX", + "span.kind": "server", + "subject": "TestInvoke", + "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", + "topicname": "sns-lambda", + "type": "Notification" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.sns", "parent_id": "XXXX", + "resource": "sns-lambda", + "service": "sns-lambda", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python311", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python311", + "function_trigger.event_source": "sns", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python311", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python311", - "functionname": "integration-tests-python-XXXX-async-metrics_python311", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX" + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python311", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1367,9 +1421,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -1380,27 +1433,28 @@ START "runtime:python3.11", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python311_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -1408,123 +1462,130 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "my-queue", - "resource": "my-queue", - "name": "aws.sqs", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.sqs", - "resource_names": "my-queue", - "span.kind": "server", - "queuename": "my-queue", - "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", - "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", - "sender_id": "AIDAIENQZJOLO23YVJ4VO", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "dd_resource_key": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", + "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "operation_name": "aws.sqs", + "peer.service": "integration-tests-python", + "queuename": "my-queue", + "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", + "resource_names": "my-queue", + "runtime-id": "XXXX", + "sender_id": "AIDAIENQZJOLO23YVJ4VO", + "span.kind": "server" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.sqs", "parent_id": "XXXX", + "resource": "my-queue", + "service": "my-queue", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python311", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python311", + "function_trigger.event_source": "sqs", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python311", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python311", - "functionname": "integration-tests-python-XXXX-async-metrics_python311", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX" + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python311", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1533,9 +1594,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -1546,27 +1606,28 @@ START "runtime:python3.11", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python311_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python311_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -1574,131 +1635,138 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "XXXX.execute-api.eu-west-1.amazonaws.com", - "resource": "$default", - "name": "aws.apigateway.websocket", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.apigateway.websocket", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com$default", - "endpoint": "$default", - "resource_names": "$default", - "span.kind": "server", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", "apiid": "XXXX", "apiname": "XXXX", - "stage": "dev", - "request_id": "XXXX", "connection_id": "XXXX=", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/p62c47itsb/stages/dev", + "endpoint": "$default", "event_type": "MESSAGE", - "message_direction": "IN", - "_inferred_span.synchronicity": "sync", - "_inferred_span.tag_source": "self", "http.status_code": "200", - "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/p62c47itsb/stages/dev", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com$default", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "message_direction": "IN", + "operation_name": "aws.apigateway.websocket", + "peer.service": "integration-tests-python", + "request_id": "XXXX", + "resource_names": "$default", + "runtime-id": "XXXX", + "span.kind": "server", + "stage": "dev" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.apigateway.websocket", "parent_id": "XXXX", + "resource": "$default", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python311", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python311", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python311", - "functionname": "integration-tests-python-XXXX-async-metrics_python311", "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", - "span.name": "aws.lambda", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python311", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python311", + "http.status_code": "200", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", - "http.status_code": "200" + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python311", + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python311", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] diff --git a/tests/integration/snapshots/logs/async-metrics_python312.log b/tests/integration/snapshots/logs/async-metrics_python312.log index 0e492dac2..36221f26f 100644 --- a/tests/integration/snapshots/logs/async-metrics_python312.log +++ b/tests/integration/snapshots/logs/async-metrics_python312.log @@ -1,9 +1,8 @@ INIT_START Runtime Version: python:3.12.vX Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -14,27 +13,28 @@ START "runtime:python3.12", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python312_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python312_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python312_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -42,132 +42,139 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "XXXX.execute-api.us-east-2.amazonaws.com", - "resource": "GET /", - "name": "aws.apigateway", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/", - "endpoint": "/", - "http.method": "GET", - "resource_names": "GET /", - "http.useragent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36", - "span.kind": "server", - "apiid": "XXXX", - "apiname": "XXXX", - "stage": "Prod", - "request_id": "XXXX", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", - "http.status_code": "200", - "http.route": "/", + "apiid": "XXXX", + "apiname": "XXXX", "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/70ixmpl4fl/stages/Prod", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", + "endpoint": "/", + "http.method": "GET", + "http.route": "/", + "http.status_code": "200", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/", + "http.useragent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "peer.service": "integration-tests-python", + "request_id": "XXXX", + "resource_names": "GET /", + "runtime-id": "XXXX", + "span.kind": "server", + "stage": "Prod" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.apigateway", "parent_id": "XXXX", + "resource": "GET /", + "service": "XXXX.execute-api.us-east-2.amazonaws.com", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python312", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "true", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python312", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python312", - "functionname": "integration-tests-python-XXXX-async-metrics_python312", "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", - "span.name": "aws.lambda", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python312", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", + "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python312", "http.method": "GET", "http.route": "/", - "http.status_code": "200" + "http.status_code": "200", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python312", + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python312", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -176,9 +183,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -189,27 +195,28 @@ START "runtime:python3.12", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python312_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python312_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python312_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -217,87 +224,92 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python312", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python312", "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python312", "functionname": "integration-tests-python-XXXX-async-metrics_python312", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python312", + "runtime-id": "XXXX", + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { - "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python312", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -306,9 +318,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -319,36 +330,37 @@ START "runtime:python3.12", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python312_X.X.X" - ] + ], + "v": 1 } { - "m": "datadog.serverless.dynamodb.stream.type", - "v": 1, "e": XXXX, + "m": "datadog.serverless.dynamodb.stream.type", "t": [ "streamtype:NEW_AND_OLD_IMAGES", "dd_lambda_layer:datadog-python312_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python312_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python312_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -356,158 +368,165 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "ExampleTableWithStream", - "resource": "ExampleTableWithStream", - "name": "aws.dynamodb", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.dynamodb", - "resource_names": "ExampleTableWithStream", - "span.kind": "server", - "tablename": "ExampleTableWithStream", - "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", - "event_id": "XXXX", - "event_name": "INSERT", - "event_version": "1.1", - "stream_view_type": "NEW_AND_OLD_IMAGES", - "size_bytes": "26", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "dd_resource_key": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", + "event_id": "XXXX", + "event_name": "INSERT", + "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", + "event_version": "1.1", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "operation_name": "aws.dynamodb", + "peer.service": "integration-tests-python", + "resource_names": "ExampleTableWithStream", + "runtime-id": "XXXX", + "size_bytes": "26", + "span.kind": "server", + "stream_view_type": "NEW_AND_OLD_IMAGES", + "tablename": "ExampleTableWithStream" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web", + "name": "aws.dynamodb", + "parent_id": "XXXX", + "resource": "ExampleTableWithStream", + "service": "ExampleTableWithStream", + "span_id": "XXXX", "span_links": [ { - "trace_id": "XXXX", - "span_id": "XXXX", "attributes": { - "ptr.kind": "aws.dynamodb.item", + "link.kind": "span-pointer", "ptr.dir": "u", "ptr.hash": "e2af34d333891f765c7f02d2da80895e", - "link.kind": "span-pointer" - } + "ptr.kind": "aws.dynamodb.item" + }, + "span_id": "XXXX", + "trace_id": "XXXX" }, { - "trace_id": "XXXX", - "span_id": "XXXX", "attributes": { - "ptr.kind": "aws.dynamodb.item", + "link.kind": "span-pointer", "ptr.dir": "u", "ptr.hash": "e2af34d333891f765c7f02d2da80895e", - "link.kind": "span-pointer" - } + "ptr.kind": "aws.dynamodb.item" + }, + "span_id": "XXXX", + "trace_id": "XXXX" }, { - "trace_id": "XXXX", - "span_id": "XXXX", "attributes": { - "ptr.kind": "aws.dynamodb.item", + "link.kind": "span-pointer", "ptr.dir": "u", "ptr.hash": "e2af34d333891f765c7f02d2da80895e", - "link.kind": "span-pointer" - } + "ptr.kind": "aws.dynamodb.item" + }, + "span_id": "XXXX", + "trace_id": "XXXX" } - ] + ], + "start": "XXXX", + "trace_id": "XXXX", + "type": "web" }, { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python312", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python312", + "function_trigger.event_source": "dynamodb", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python312", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python312", - "functionname": "integration-tests-python-XXXX-async-metrics_python312", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX" + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python312", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -516,9 +535,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -529,27 +547,28 @@ START "runtime:python3.12", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python312_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python312_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python312_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -557,118 +576,125 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "eventbridge.custom.event.sender", - "resource": "eventbridge.custom.event.sender", - "name": "aws.eventbridge", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.eventbridge", - "resource_names": "eventbridge.custom.event.sender", - "span.kind": "server", - "detail_type": "testdetail", - "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "detail_type": "testdetail", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "operation_name": "aws.eventbridge", + "peer.service": "integration-tests-python", + "resource_names": "eventbridge.custom.event.sender", + "runtime-id": "XXXX", + "span.kind": "server" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.eventbridge", "parent_id": "XXXX", + "resource": "eventbridge.custom.event.sender", + "service": "eventbridge.custom.event.sender", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python312", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python312", + "function_trigger.event_source": "eventbridge", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python312", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python312", - "functionname": "integration-tests-python-XXXX-async-metrics_python312", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "eventbridge" + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python312", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -677,9 +703,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -690,27 +715,28 @@ START "runtime:python3.12", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python312_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python312_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python312_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -718,133 +744,140 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "XXXX.execute-api.eu-west-1.amazonaws.com", - "resource": "GET /httpapi/get", - "name": "aws.httpapi", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "apiid": "XXXX", + "apiname": "XXXX", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/x02yirxc7a/stages/$default", "endpoint": "/httpapi/get", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.protocol": "HTTP/1.1", + "http.route": "/httpapi/get", "http.source_ip": "XXXX", - "http.useragent": "curl/7.64.1", - "resource_names": "GET /httpapi/get", - "request_id": "XXXX", - "apiid": "XXXX", - "apiname": "XXXX", - "stage": "$default", - "_inferred_span.synchronicity": "sync", - "_inferred_span.tag_source": "self", "http.status_code": "200", - "http.route": "/httpapi/get", - "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/x02yirxc7a/stages/$default", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.useragent": "curl/7.64.1", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "peer.service": "integration-tests-python", + "request_id": "XXXX", + "resource_names": "GET /httpapi/get", + "runtime-id": "XXXX", + "stage": "$default" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.httpapi", "parent_id": "XXXX", + "resource": "GET /httpapi/get", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python312", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python312", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python312", - "functionname": "integration-tests-python-XXXX-async-metrics_python312", "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", - "span.name": "aws.lambda", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python312", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python312", "http.method": "GET", "http.route": "/httpapi/get", - "http.status_code": "200" + "http.status_code": "200", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python312", + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python312", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -853,9 +886,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -866,27 +898,28 @@ START "runtime:python3.12", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python312_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python312_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python312_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -894,126 +927,133 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "EXAMPLE", - "resource": "EXAMPLE", - "name": "aws.kinesis", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.kinesis", - "resource_names": "EXAMPLE", - "span.kind": "server", - "streamname": "EXAMPLE", - "shardid": "shardId-XXXX", - "event_source_arn": "arn:aws:kinesis:EXAMPLE", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:kinesis:EXAMPLE", "event_id": "XXXX", "event_name": "aws:kinesis:record", + "event_source_arn": "arn:aws:kinesis:EXAMPLE", "event_version": "1.0", + "language": "python", + "operation_name": "aws.kinesis", "partition_key": "XXXX", - "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self", - "dd_resource_key": "arn:aws:kinesis:EXAMPLE", "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "resource_names": "EXAMPLE", + "runtime-id": "XXXX", + "shardid": "shardId-XXXX", + "span.kind": "server", + "streamname": "EXAMPLE" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.kinesis", "parent_id": "XXXX", + "resource": "EXAMPLE", + "service": "EXAMPLE", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python312", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python312", + "function_trigger.event_source": "kinesis", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python312", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python312", - "functionname": "integration-tests-python-XXXX-async-metrics_python312", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX" + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python312", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1022,9 +1062,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -1035,174 +1074,181 @@ START "runtime:python3.12", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python312_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python312_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python312_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX +END Duration: XXXX ms Memory Used: XXXX MB { "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "example-bucket", - "resource": "example-bucket", - "name": "aws.s3", "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.s3", - "resource_names": "example-bucket", - "span.kind": "server", - "event_name": "ObjectCreated:Put", - "bucketname": "example-bucket", - "bucket_arn": "arn:aws:s3:::example-bucket", - "object_key": "test/key", - "object_size": "1024", - "object_etag": "XXXX", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "bucket_arn": "arn:aws:s3:::example-bucket", + "bucketname": "example-bucket", "dd_resource_key": "arn:aws:s3:::example-bucket", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", + "event_name": "ObjectCreated:Put", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "object_etag": "XXXX", + "object_key": "test/key", + "object_size": "1024", + "operation_name": "aws.s3", + "peer.service": "integration-tests-python", + "resource_names": "example-bucket", + "runtime-id": "XXXX", + "span.kind": "server" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web", + "name": "aws.s3", + "parent_id": "XXXX", + "resource": "example-bucket", + "service": "example-bucket", + "span_id": "XXXX", "span_links": [ { - "trace_id": "XXXX", - "span_id": "XXXX", "attributes": { - "ptr.kind": "aws.s3.object", + "link.kind": "span-pointer", "ptr.dir": "u", "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", - "link.kind": "span-pointer" - } + "ptr.kind": "aws.s3.object" + }, + "span_id": "XXXX", + "trace_id": "XXXX" } - ] + ], + "trace_id": "XXXX", + "type": "web" }, { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python312", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python312", + "function_trigger.event_source": "s3", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python312", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python312", - "functionname": "integration-tests-python-XXXX-async-metrics_python312", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX" + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python312", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" }, { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] ] } -END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -1213,27 +1259,28 @@ START "runtime:python3.12", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python312_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python312_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python312_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -1241,124 +1288,131 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "sns-lambda", - "resource": "sns-lambda", - "name": "aws.sns", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.sns", - "resource_names": "sns-lambda", - "span.kind": "server", - "topicname": "sns-lambda", - "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", - "message_id": "XXXX", - "type": "Notification", - "subject": "TestInvoke", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "dd_resource_key": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "message_id": "XXXX", + "operation_name": "aws.sns", + "peer.service": "integration-tests-python", + "resource_names": "sns-lambda", + "runtime-id": "XXXX", + "span.kind": "server", + "subject": "TestInvoke", + "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", + "topicname": "sns-lambda", + "type": "Notification" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.sns", "parent_id": "XXXX", + "resource": "sns-lambda", + "service": "sns-lambda", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python312", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python312", + "function_trigger.event_source": "sns", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python312", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python312", - "functionname": "integration-tests-python-XXXX-async-metrics_python312", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX" + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python312", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1367,9 +1421,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -1380,27 +1433,28 @@ START "runtime:python3.12", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python312_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python312_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python312_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -1408,123 +1462,130 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "my-queue", - "resource": "my-queue", - "name": "aws.sqs", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.sqs", - "resource_names": "my-queue", - "span.kind": "server", - "queuename": "my-queue", - "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", - "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", - "sender_id": "AIDAIENQZJOLO23YVJ4VO", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "dd_resource_key": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", + "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "operation_name": "aws.sqs", + "peer.service": "integration-tests-python", + "queuename": "my-queue", + "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", + "resource_names": "my-queue", + "runtime-id": "XXXX", + "sender_id": "AIDAIENQZJOLO23YVJ4VO", + "span.kind": "server" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.sqs", "parent_id": "XXXX", + "resource": "my-queue", + "service": "my-queue", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python312", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python312", + "function_trigger.event_source": "sqs", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python312", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python312", - "functionname": "integration-tests-python-XXXX-async-metrics_python312", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX" + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python312", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1533,9 +1594,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -1546,27 +1606,28 @@ START "runtime:python3.12", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python312_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python312_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python312_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -1574,131 +1635,138 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "XXXX.execute-api.eu-west-1.amazonaws.com", - "resource": "$default", - "name": "aws.apigateway.websocket", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.apigateway.websocket", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com$default", - "endpoint": "$default", - "resource_names": "$default", - "span.kind": "server", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", "apiid": "XXXX", "apiname": "XXXX", - "stage": "dev", - "request_id": "XXXX", "connection_id": "XXXX=", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/p62c47itsb/stages/dev", + "endpoint": "$default", "event_type": "MESSAGE", - "message_direction": "IN", - "_inferred_span.synchronicity": "sync", - "_inferred_span.tag_source": "self", "http.status_code": "200", - "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/p62c47itsb/stages/dev", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com$default", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "message_direction": "IN", + "operation_name": "aws.apigateway.websocket", + "peer.service": "integration-tests-python", + "request_id": "XXXX", + "resource_names": "$default", + "runtime-id": "XXXX", + "span.kind": "server", + "stage": "dev" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.apigateway.websocket", "parent_id": "XXXX", + "resource": "$default", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python312", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python312", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python312", - "functionname": "integration-tests-python-XXXX-async-metrics_python312", "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", - "span.name": "aws.lambda", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python312", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python312", + "http.status_code": "200", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", - "http.status_code": "200" + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python312", + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python312", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] diff --git a/tests/integration/snapshots/logs/async-metrics_python313.log b/tests/integration/snapshots/logs/async-metrics_python313.log index 6466246c2..82b719042 100644 --- a/tests/integration/snapshots/logs/async-metrics_python313.log +++ b/tests/integration/snapshots/logs/async-metrics_python313.log @@ -1,9 +1,8 @@ INIT_START Runtime Version: python:3.13.vX Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -14,27 +13,28 @@ START "runtime:python3.13", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python313_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python313_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python313_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -42,132 +42,139 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "XXXX.execute-api.us-east-2.amazonaws.com", - "resource": "GET /", - "name": "aws.apigateway", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/", - "endpoint": "/", - "http.method": "GET", - "resource_names": "GET /", - "http.useragent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36", - "span.kind": "server", - "apiid": "XXXX", - "apiname": "XXXX", - "stage": "Prod", - "request_id": "XXXX", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", - "http.status_code": "200", - "http.route": "/", + "apiid": "XXXX", + "apiname": "XXXX", "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/70ixmpl4fl/stages/Prod", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", + "endpoint": "/", + "http.method": "GET", + "http.route": "/", + "http.status_code": "200", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/", + "http.useragent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "peer.service": "integration-tests-python", + "request_id": "XXXX", + "resource_names": "GET /", + "runtime-id": "XXXX", + "span.kind": "server", + "stage": "Prod" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.apigateway", "parent_id": "XXXX", + "resource": "GET /", + "service": "XXXX.execute-api.us-east-2.amazonaws.com", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python313", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "true", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python313", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python313", - "functionname": "integration-tests-python-XXXX-async-metrics_python313", "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", - "span.name": "aws.lambda", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python313", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", + "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python313", "http.method": "GET", "http.route": "/", - "http.status_code": "200" + "http.status_code": "200", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python313", + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python313", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -176,9 +183,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -189,27 +195,28 @@ START "runtime:python3.13", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python313_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python313_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python313_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -217,87 +224,92 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python313", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python313", "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python313", "functionname": "integration-tests-python-XXXX-async-metrics_python313", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python313", + "runtime-id": "XXXX", + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { - "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python313", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -306,9 +318,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -319,36 +330,37 @@ START "runtime:python3.13", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python313_X.X.X" - ] + ], + "v": 1 } { - "m": "datadog.serverless.dynamodb.stream.type", - "v": 1, "e": XXXX, + "m": "datadog.serverless.dynamodb.stream.type", "t": [ "streamtype:NEW_AND_OLD_IMAGES", "dd_lambda_layer:datadog-python313_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python313_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python313_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -356,158 +368,165 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "ExampleTableWithStream", - "resource": "ExampleTableWithStream", - "name": "aws.dynamodb", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.dynamodb", - "resource_names": "ExampleTableWithStream", - "span.kind": "server", - "tablename": "ExampleTableWithStream", - "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", - "event_id": "XXXX", - "event_name": "INSERT", - "event_version": "1.1", - "stream_view_type": "NEW_AND_OLD_IMAGES", - "size_bytes": "26", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "dd_resource_key": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", + "event_id": "XXXX", + "event_name": "INSERT", + "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", + "event_version": "1.1", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "operation_name": "aws.dynamodb", + "peer.service": "integration-tests-python", + "resource_names": "ExampleTableWithStream", + "runtime-id": "XXXX", + "size_bytes": "26", + "span.kind": "server", + "stream_view_type": "NEW_AND_OLD_IMAGES", + "tablename": "ExampleTableWithStream" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web", + "name": "aws.dynamodb", + "parent_id": "XXXX", + "resource": "ExampleTableWithStream", + "service": "ExampleTableWithStream", + "span_id": "XXXX", "span_links": [ { - "trace_id": "XXXX", - "span_id": "XXXX", "attributes": { - "ptr.kind": "aws.dynamodb.item", + "link.kind": "span-pointer", "ptr.dir": "u", "ptr.hash": "e2af34d333891f765c7f02d2da80895e", - "link.kind": "span-pointer" - } + "ptr.kind": "aws.dynamodb.item" + }, + "span_id": "XXXX", + "trace_id": "XXXX" }, { - "trace_id": "XXXX", - "span_id": "XXXX", "attributes": { - "ptr.kind": "aws.dynamodb.item", + "link.kind": "span-pointer", "ptr.dir": "u", "ptr.hash": "e2af34d333891f765c7f02d2da80895e", - "link.kind": "span-pointer" - } + "ptr.kind": "aws.dynamodb.item" + }, + "span_id": "XXXX", + "trace_id": "XXXX" }, { - "trace_id": "XXXX", - "span_id": "XXXX", "attributes": { - "ptr.kind": "aws.dynamodb.item", + "link.kind": "span-pointer", "ptr.dir": "u", "ptr.hash": "e2af34d333891f765c7f02d2da80895e", - "link.kind": "span-pointer" - } + "ptr.kind": "aws.dynamodb.item" + }, + "span_id": "XXXX", + "trace_id": "XXXX" } - ] + ], + "start": "XXXX", + "trace_id": "XXXX", + "type": "web" }, { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python313", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python313", + "function_trigger.event_source": "dynamodb", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python313", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python313", - "functionname": "integration-tests-python-XXXX-async-metrics_python313", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX" + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python313", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -516,9 +535,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -529,27 +547,28 @@ START "runtime:python3.13", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python313_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python313_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python313_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -557,118 +576,125 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "eventbridge.custom.event.sender", - "resource": "eventbridge.custom.event.sender", - "name": "aws.eventbridge", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.eventbridge", - "resource_names": "eventbridge.custom.event.sender", - "span.kind": "server", - "detail_type": "testdetail", - "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "detail_type": "testdetail", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "operation_name": "aws.eventbridge", + "peer.service": "integration-tests-python", + "resource_names": "eventbridge.custom.event.sender", + "runtime-id": "XXXX", + "span.kind": "server" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.eventbridge", "parent_id": "XXXX", + "resource": "eventbridge.custom.event.sender", + "service": "eventbridge.custom.event.sender", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python313", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python313", + "function_trigger.event_source": "eventbridge", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python313", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python313", - "functionname": "integration-tests-python-XXXX-async-metrics_python313", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "eventbridge" + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python313", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -677,9 +703,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -690,27 +715,28 @@ START "runtime:python3.13", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python313_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python313_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python313_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -718,133 +744,140 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "XXXX.execute-api.eu-west-1.amazonaws.com", - "resource": "GET /httpapi/get", - "name": "aws.httpapi", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "apiid": "XXXX", + "apiname": "XXXX", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/x02yirxc7a/stages/$default", "endpoint": "/httpapi/get", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.protocol": "HTTP/1.1", + "http.route": "/httpapi/get", "http.source_ip": "XXXX", - "http.useragent": "curl/7.64.1", - "resource_names": "GET /httpapi/get", - "request_id": "XXXX", - "apiid": "XXXX", - "apiname": "XXXX", - "stage": "$default", - "_inferred_span.synchronicity": "sync", - "_inferred_span.tag_source": "self", "http.status_code": "200", - "http.route": "/httpapi/get", - "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/x02yirxc7a/stages/$default", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.useragent": "curl/7.64.1", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "peer.service": "integration-tests-python", + "request_id": "XXXX", + "resource_names": "GET /httpapi/get", + "runtime-id": "XXXX", + "stage": "$default" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.httpapi", "parent_id": "XXXX", + "resource": "GET /httpapi/get", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python313", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python313", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python313", - "functionname": "integration-tests-python-XXXX-async-metrics_python313", "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", - "span.name": "aws.lambda", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python313", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python313", "http.method": "GET", "http.route": "/httpapi/get", - "http.status_code": "200" + "http.status_code": "200", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python313", + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python313", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -853,9 +886,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -866,27 +898,28 @@ START "runtime:python3.13", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python313_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python313_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python313_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -894,126 +927,133 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "EXAMPLE", - "resource": "EXAMPLE", - "name": "aws.kinesis", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.kinesis", - "resource_names": "EXAMPLE", - "span.kind": "server", - "streamname": "EXAMPLE", - "shardid": "shardId-XXXX", - "event_source_arn": "arn:aws:kinesis:EXAMPLE", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:kinesis:EXAMPLE", "event_id": "XXXX", "event_name": "aws:kinesis:record", + "event_source_arn": "arn:aws:kinesis:EXAMPLE", "event_version": "1.0", + "language": "python", + "operation_name": "aws.kinesis", "partition_key": "XXXX", - "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self", - "dd_resource_key": "arn:aws:kinesis:EXAMPLE", "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "resource_names": "EXAMPLE", + "runtime-id": "XXXX", + "shardid": "shardId-XXXX", + "span.kind": "server", + "streamname": "EXAMPLE" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.kinesis", "parent_id": "XXXX", + "resource": "EXAMPLE", + "service": "EXAMPLE", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python313", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python313", + "function_trigger.event_source": "kinesis", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python313", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python313", - "functionname": "integration-tests-python-XXXX-async-metrics_python313", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX" + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python313", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1022,9 +1062,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -1035,27 +1074,28 @@ START "runtime:python3.13", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python313_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python313_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python313_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -1063,135 +1103,142 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "example-bucket", - "resource": "example-bucket", - "name": "aws.s3", "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.s3", - "resource_names": "example-bucket", - "span.kind": "server", - "event_name": "ObjectCreated:Put", - "bucketname": "example-bucket", - "bucket_arn": "arn:aws:s3:::example-bucket", - "object_key": "test/key", - "object_size": "1024", - "object_etag": "XXXX", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "bucket_arn": "arn:aws:s3:::example-bucket", + "bucketname": "example-bucket", "dd_resource_key": "arn:aws:s3:::example-bucket", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", + "event_name": "ObjectCreated:Put", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "object_etag": "XXXX", + "object_key": "test/key", + "object_size": "1024", + "operation_name": "aws.s3", + "peer.service": "integration-tests-python", + "resource_names": "example-bucket", + "runtime-id": "XXXX", + "span.kind": "server" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web", + "name": "aws.s3", + "parent_id": "XXXX", + "resource": "example-bucket", + "service": "example-bucket", + "span_id": "XXXX", "span_links": [ { - "trace_id": "XXXX", - "span_id": "XXXX", "attributes": { - "ptr.kind": "aws.s3.object", + "link.kind": "span-pointer", "ptr.dir": "u", "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", - "link.kind": "span-pointer" - } + "ptr.kind": "aws.s3.object" + }, + "span_id": "XXXX", + "trace_id": "XXXX" } - ] + ], + "trace_id": "XXXX", + "type": "web" }, { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python313", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python313", + "function_trigger.event_source": "s3", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python313", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python313", - "functionname": "integration-tests-python-XXXX-async-metrics_python313", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX" + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python313", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" }, { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1200,9 +1247,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -1213,27 +1259,28 @@ START "runtime:python3.13", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python313_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python313_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python313_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -1241,124 +1288,131 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "sns-lambda", - "resource": "sns-lambda", - "name": "aws.sns", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.sns", - "resource_names": "sns-lambda", - "span.kind": "server", - "topicname": "sns-lambda", - "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", - "message_id": "XXXX", - "type": "Notification", - "subject": "TestInvoke", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "dd_resource_key": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "message_id": "XXXX", + "operation_name": "aws.sns", + "peer.service": "integration-tests-python", + "resource_names": "sns-lambda", + "runtime-id": "XXXX", + "span.kind": "server", + "subject": "TestInvoke", + "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", + "topicname": "sns-lambda", + "type": "Notification" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.sns", "parent_id": "XXXX", + "resource": "sns-lambda", + "service": "sns-lambda", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python313", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python313", + "function_trigger.event_source": "sns", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python313", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python313", - "functionname": "integration-tests-python-XXXX-async-metrics_python313", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX" + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python313", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1367,9 +1421,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -1380,27 +1433,28 @@ START "runtime:python3.13", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python313_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python313_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python313_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -1408,123 +1462,130 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "my-queue", - "resource": "my-queue", - "name": "aws.sqs", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.sqs", - "resource_names": "my-queue", - "span.kind": "server", - "queuename": "my-queue", - "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", - "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", - "sender_id": "AIDAIENQZJOLO23YVJ4VO", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "dd_resource_key": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", + "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "operation_name": "aws.sqs", + "peer.service": "integration-tests-python", + "queuename": "my-queue", + "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", + "resource_names": "my-queue", + "runtime-id": "XXXX", + "sender_id": "AIDAIENQZJOLO23YVJ4VO", + "span.kind": "server" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.sqs", "parent_id": "XXXX", + "resource": "my-queue", + "service": "my-queue", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python313", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python313", + "function_trigger.event_source": "sqs", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python313", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python313", - "functionname": "integration-tests-python-XXXX-async-metrics_python313", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX" + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python313", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1533,9 +1594,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -1546,27 +1606,28 @@ START "runtime:python3.13", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python313_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python313_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python313_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -1574,131 +1635,138 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "XXXX.execute-api.eu-west-1.amazonaws.com", - "resource": "$default", - "name": "aws.apigateway.websocket", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.apigateway.websocket", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com$default", - "endpoint": "$default", - "resource_names": "$default", - "span.kind": "server", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", "apiid": "XXXX", "apiname": "XXXX", - "stage": "dev", - "request_id": "XXXX", "connection_id": "XXXX=", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/p62c47itsb/stages/dev", + "endpoint": "$default", "event_type": "MESSAGE", - "message_direction": "IN", - "_inferred_span.synchronicity": "sync", - "_inferred_span.tag_source": "self", "http.status_code": "200", - "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/p62c47itsb/stages/dev", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com$default", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "message_direction": "IN", + "operation_name": "aws.apigateway.websocket", + "peer.service": "integration-tests-python", + "request_id": "XXXX", + "resource_names": "$default", + "runtime-id": "XXXX", + "span.kind": "server", + "stage": "dev" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.apigateway.websocket", "parent_id": "XXXX", + "resource": "$default", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python313", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python313", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python313", - "functionname": "integration-tests-python-XXXX-async-metrics_python313", "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", - "span.name": "aws.lambda", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python313", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python313", + "http.status_code": "200", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", - "http.status_code": "200" + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python313", + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python313", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] diff --git a/tests/integration/snapshots/logs/async-metrics_python314.log b/tests/integration/snapshots/logs/async-metrics_python314.log index 2ff4a6c16..cb121e118 100644 --- a/tests/integration/snapshots/logs/async-metrics_python314.log +++ b/tests/integration/snapshots/logs/async-metrics_python314.log @@ -1,9 +1,8 @@ INIT_START Runtime Version: python:3.14.vX Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -14,27 +13,28 @@ START "runtime:python3.14", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python314_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python314_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python314_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -42,132 +42,139 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "XXXX.execute-api.us-east-2.amazonaws.com", - "resource": "GET /", - "name": "aws.apigateway", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/", - "endpoint": "/", - "http.method": "GET", - "resource_names": "GET /", - "http.useragent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36", - "span.kind": "server", - "apiid": "XXXX", - "apiname": "XXXX", - "stage": "Prod", - "request_id": "XXXX", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", - "http.status_code": "200", - "http.route": "/", + "apiid": "XXXX", + "apiname": "XXXX", "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/70ixmpl4fl/stages/Prod", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", + "endpoint": "/", + "http.method": "GET", + "http.route": "/", + "http.status_code": "200", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/", + "http.useragent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "peer.service": "integration-tests-python", + "request_id": "XXXX", + "resource_names": "GET /", + "runtime-id": "XXXX", + "span.kind": "server", + "stage": "Prod" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.apigateway", "parent_id": "XXXX", + "resource": "GET /", + "service": "XXXX.execute-api.us-east-2.amazonaws.com", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python314", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "true", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python314", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python314", - "functionname": "integration-tests-python-XXXX-async-metrics_python314", "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", - "span.name": "aws.lambda", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python314", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", + "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python314", "http.method": "GET", "http.route": "/", - "http.status_code": "200" + "http.status_code": "200", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python314", + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python314", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -176,9 +183,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -189,27 +195,28 @@ START "runtime:python3.14", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python314_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python314_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python314_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -217,87 +224,92 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python314", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python314", "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python314", "functionname": "integration-tests-python-XXXX-async-metrics_python314", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python314", + "runtime-id": "XXXX", + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { - "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python314", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -306,9 +318,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -319,36 +330,37 @@ START "runtime:python3.14", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python314_X.X.X" - ] + ], + "v": 1 } { - "m": "datadog.serverless.dynamodb.stream.type", - "v": 1, "e": XXXX, + "m": "datadog.serverless.dynamodb.stream.type", "t": [ "streamtype:NEW_AND_OLD_IMAGES", "dd_lambda_layer:datadog-python314_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python314_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python314_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -356,158 +368,165 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "ExampleTableWithStream", - "resource": "ExampleTableWithStream", - "name": "aws.dynamodb", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.dynamodb", - "resource_names": "ExampleTableWithStream", - "span.kind": "server", - "tablename": "ExampleTableWithStream", - "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", - "event_id": "XXXX", - "event_name": "INSERT", - "event_version": "1.1", - "stream_view_type": "NEW_AND_OLD_IMAGES", - "size_bytes": "26", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "dd_resource_key": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", + "event_id": "XXXX", + "event_name": "INSERT", + "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", + "event_version": "1.1", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "operation_name": "aws.dynamodb", + "peer.service": "integration-tests-python", + "resource_names": "ExampleTableWithStream", + "runtime-id": "XXXX", + "size_bytes": "26", + "span.kind": "server", + "stream_view_type": "NEW_AND_OLD_IMAGES", + "tablename": "ExampleTableWithStream" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web", + "name": "aws.dynamodb", + "parent_id": "XXXX", + "resource": "ExampleTableWithStream", + "service": "ExampleTableWithStream", + "span_id": "XXXX", "span_links": [ { - "trace_id": "XXXX", - "span_id": "XXXX", "attributes": { - "ptr.kind": "aws.dynamodb.item", + "link.kind": "span-pointer", "ptr.dir": "u", "ptr.hash": "e2af34d333891f765c7f02d2da80895e", - "link.kind": "span-pointer" - } + "ptr.kind": "aws.dynamodb.item" + }, + "span_id": "XXXX", + "trace_id": "XXXX" }, { - "trace_id": "XXXX", - "span_id": "XXXX", "attributes": { - "ptr.kind": "aws.dynamodb.item", + "link.kind": "span-pointer", "ptr.dir": "u", "ptr.hash": "e2af34d333891f765c7f02d2da80895e", - "link.kind": "span-pointer" - } + "ptr.kind": "aws.dynamodb.item" + }, + "span_id": "XXXX", + "trace_id": "XXXX" }, { - "trace_id": "XXXX", - "span_id": "XXXX", "attributes": { - "ptr.kind": "aws.dynamodb.item", + "link.kind": "span-pointer", "ptr.dir": "u", "ptr.hash": "e2af34d333891f765c7f02d2da80895e", - "link.kind": "span-pointer" - } + "ptr.kind": "aws.dynamodb.item" + }, + "span_id": "XXXX", + "trace_id": "XXXX" } - ] + ], + "start": "XXXX", + "trace_id": "XXXX", + "type": "web" }, { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python314", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python314", + "function_trigger.event_source": "dynamodb", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python314", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python314", - "functionname": "integration-tests-python-XXXX-async-metrics_python314", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX" + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python314", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -516,9 +535,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -529,27 +547,28 @@ START "runtime:python3.14", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python314_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python314_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python314_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -557,118 +576,125 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "eventbridge.custom.event.sender", - "resource": "eventbridge.custom.event.sender", - "name": "aws.eventbridge", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.eventbridge", - "resource_names": "eventbridge.custom.event.sender", - "span.kind": "server", - "detail_type": "testdetail", - "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "detail_type": "testdetail", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "operation_name": "aws.eventbridge", + "peer.service": "integration-tests-python", + "resource_names": "eventbridge.custom.event.sender", + "runtime-id": "XXXX", + "span.kind": "server" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.eventbridge", "parent_id": "XXXX", + "resource": "eventbridge.custom.event.sender", + "service": "eventbridge.custom.event.sender", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python314", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python314", + "function_trigger.event_source": "eventbridge", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python314", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python314", - "functionname": "integration-tests-python-XXXX-async-metrics_python314", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "eventbridge" + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python314", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -677,9 +703,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -690,27 +715,28 @@ START "runtime:python3.14", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python314_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python314_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python314_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -718,133 +744,140 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "XXXX.execute-api.eu-west-1.amazonaws.com", - "resource": "GET /httpapi/get", - "name": "aws.httpapi", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "apiid": "XXXX", + "apiname": "XXXX", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/x02yirxc7a/stages/$default", "endpoint": "/httpapi/get", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.protocol": "HTTP/1.1", + "http.route": "/httpapi/get", "http.source_ip": "XXXX", - "http.useragent": "curl/7.64.1", - "resource_names": "GET /httpapi/get", - "request_id": "XXXX", - "apiid": "XXXX", - "apiname": "XXXX", - "stage": "$default", - "_inferred_span.synchronicity": "sync", - "_inferred_span.tag_source": "self", "http.status_code": "200", - "http.route": "/httpapi/get", - "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/x02yirxc7a/stages/$default", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.useragent": "curl/7.64.1", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "peer.service": "integration-tests-python", + "request_id": "XXXX", + "resource_names": "GET /httpapi/get", + "runtime-id": "XXXX", + "stage": "$default" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.httpapi", "parent_id": "XXXX", + "resource": "GET /httpapi/get", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python314", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python314", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python314", - "functionname": "integration-tests-python-XXXX-async-metrics_python314", "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", - "span.name": "aws.lambda", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python314", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python314", "http.method": "GET", "http.route": "/httpapi/get", - "http.status_code": "200" + "http.status_code": "200", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python314", + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python314", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -853,9 +886,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -866,27 +898,28 @@ START "runtime:python3.14", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python314_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python314_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python314_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -894,126 +927,133 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "EXAMPLE", - "resource": "EXAMPLE", - "name": "aws.kinesis", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.kinesis", - "resource_names": "EXAMPLE", - "span.kind": "server", - "streamname": "EXAMPLE", - "shardid": "shardId-XXXX", - "event_source_arn": "arn:aws:kinesis:EXAMPLE", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:kinesis:EXAMPLE", "event_id": "XXXX", "event_name": "aws:kinesis:record", + "event_source_arn": "arn:aws:kinesis:EXAMPLE", "event_version": "1.0", + "language": "python", + "operation_name": "aws.kinesis", "partition_key": "XXXX", - "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self", - "dd_resource_key": "arn:aws:kinesis:EXAMPLE", "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "resource_names": "EXAMPLE", + "runtime-id": "XXXX", + "shardid": "shardId-XXXX", + "span.kind": "server", + "streamname": "EXAMPLE" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.kinesis", "parent_id": "XXXX", + "resource": "EXAMPLE", + "service": "EXAMPLE", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python314", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python314", + "function_trigger.event_source": "kinesis", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python314", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python314", - "functionname": "integration-tests-python-XXXX-async-metrics_python314", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX" + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python314", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1022,9 +1062,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -1035,27 +1074,28 @@ START "runtime:python3.14", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python314_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python314_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python314_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -1063,135 +1103,142 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "example-bucket", - "resource": "example-bucket", - "name": "aws.s3", "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.s3", - "resource_names": "example-bucket", - "span.kind": "server", - "event_name": "ObjectCreated:Put", - "bucketname": "example-bucket", - "bucket_arn": "arn:aws:s3:::example-bucket", - "object_key": "test/key", - "object_size": "1024", - "object_etag": "XXXX", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "bucket_arn": "arn:aws:s3:::example-bucket", + "bucketname": "example-bucket", "dd_resource_key": "arn:aws:s3:::example-bucket", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", + "event_name": "ObjectCreated:Put", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "object_etag": "XXXX", + "object_key": "test/key", + "object_size": "1024", + "operation_name": "aws.s3", + "peer.service": "integration-tests-python", + "resource_names": "example-bucket", + "runtime-id": "XXXX", + "span.kind": "server" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web", + "name": "aws.s3", + "parent_id": "XXXX", + "resource": "example-bucket", + "service": "example-bucket", + "span_id": "XXXX", "span_links": [ { - "trace_id": "XXXX", - "span_id": "XXXX", "attributes": { - "ptr.kind": "aws.s3.object", + "link.kind": "span-pointer", "ptr.dir": "u", "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", - "link.kind": "span-pointer" - } + "ptr.kind": "aws.s3.object" + }, + "span_id": "XXXX", + "trace_id": "XXXX" } - ] + ], + "trace_id": "XXXX", + "type": "web" }, { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python314", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python314", + "function_trigger.event_source": "s3", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python314", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python314", - "functionname": "integration-tests-python-XXXX-async-metrics_python314", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX" + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python314", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" }, { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1200,9 +1247,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -1213,27 +1259,28 @@ START "runtime:python3.14", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python314_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python314_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python314_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -1241,124 +1288,131 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "sns-lambda", - "resource": "sns-lambda", - "name": "aws.sns", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.sns", - "resource_names": "sns-lambda", - "span.kind": "server", - "topicname": "sns-lambda", - "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", - "message_id": "XXXX", - "type": "Notification", - "subject": "TestInvoke", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "dd_resource_key": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "message_id": "XXXX", + "operation_name": "aws.sns", + "peer.service": "integration-tests-python", + "resource_names": "sns-lambda", + "runtime-id": "XXXX", + "span.kind": "server", + "subject": "TestInvoke", + "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", + "topicname": "sns-lambda", + "type": "Notification" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.sns", "parent_id": "XXXX", + "resource": "sns-lambda", + "service": "sns-lambda", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python314", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python314", + "function_trigger.event_source": "sns", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python314", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python314", - "functionname": "integration-tests-python-XXXX-async-metrics_python314", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX" + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python314", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1367,9 +1421,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -1380,27 +1433,28 @@ START "runtime:python3.14", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python314_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python314_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python314_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -1408,123 +1462,130 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "my-queue", - "resource": "my-queue", - "name": "aws.sqs", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.sqs", - "resource_names": "my-queue", - "span.kind": "server", - "queuename": "my-queue", - "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", - "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", - "sender_id": "AIDAIENQZJOLO23YVJ4VO", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "dd_resource_key": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", + "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "operation_name": "aws.sqs", + "peer.service": "integration-tests-python", + "queuename": "my-queue", + "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", + "resource_names": "my-queue", + "runtime-id": "XXXX", + "sender_id": "AIDAIENQZJOLO23YVJ4VO", + "span.kind": "server" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.sqs", "parent_id": "XXXX", + "resource": "my-queue", + "service": "my-queue", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python314", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python314", + "function_trigger.event_source": "sqs", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python314", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python314", - "functionname": "integration-tests-python-XXXX-async-metrics_python314", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX" + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python314", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1533,9 +1594,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -1546,27 +1606,28 @@ START "runtime:python3.14", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python314_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python314_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python314_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -1574,131 +1635,138 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "XXXX.execute-api.eu-west-1.amazonaws.com", - "resource": "$default", - "name": "aws.apigateway.websocket", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.apigateway.websocket", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com$default", - "endpoint": "$default", - "resource_names": "$default", - "span.kind": "server", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", "apiid": "XXXX", "apiname": "XXXX", - "stage": "dev", - "request_id": "XXXX", "connection_id": "XXXX=", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/p62c47itsb/stages/dev", + "endpoint": "$default", "event_type": "MESSAGE", - "message_direction": "IN", - "_inferred_span.synchronicity": "sync", - "_inferred_span.tag_source": "self", "http.status_code": "200", - "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/p62c47itsb/stages/dev", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com$default", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "message_direction": "IN", + "operation_name": "aws.apigateway.websocket", + "peer.service": "integration-tests-python", + "request_id": "XXXX", + "resource_names": "$default", + "runtime-id": "XXXX", + "span.kind": "server", + "stage": "dev" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.apigateway.websocket", "parent_id": "XXXX", + "resource": "$default", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python314", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python314", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python314", - "functionname": "integration-tests-python-XXXX-async-metrics_python314", "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", - "span.name": "aws.lambda", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python314", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python314", + "http.status_code": "200", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", - "http.status_code": "200" + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python314", + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python314", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] diff --git a/tests/integration/snapshots/logs/async-metrics_python38.log b/tests/integration/snapshots/logs/async-metrics_python38.log index d4c33fe59..d086acb20 100644 --- a/tests/integration/snapshots/logs/async-metrics_python38.log +++ b/tests/integration/snapshots/logs/async-metrics_python38.log @@ -1,9 +1,8 @@ INIT_START Runtime Version: python:3.8.vX Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -14,27 +13,28 @@ START "runtime:python3.8", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python38_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -42,131 +42,131 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "XXXX.execute-api.us-east-2.amazonaws.com", - "resource": "GET /", - "name": "aws.apigateway", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", - "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/", - "endpoint": "/", - "http.method": "GET", - "resource_names": "GET /", - "http.useragent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36", - "span.kind": "server", - "apiid": "XXXX", - "apiname": "XXXX", - "stage": "Prod", - "request_id": "XXXX", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", - "http.status_code": "200", - "http.route": "/", + "apiid": "XXXX", + "apiname": "XXXX", "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/70ixmpl4fl/stages/Prod", + "endpoint": "/", + "http.method": "GET", + "http.route": "/", + "http.status_code": "200", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/", + "http.useragent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36", + "language": "python", "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" + "request_id": "XXXX", + "resource_names": "GET /", + "runtime-id": "XXXX", + "span.kind": "server", + "stage": "Prod" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.apigateway", "parent_id": "XXXX", + "resource": "GET /", + "service": "XXXX.execute-api.us-east-2.amazonaws.com", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python38", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "cold_start": "true", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python38", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python38", - "functionname": "integration-tests-python-XXXX-async-metrics_python38", "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", - "span.name": "aws.lambda", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python38", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "span.kind": "server", - "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", + "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python38", "http.method": "GET", "http.route": "/", - "http.status_code": "200" + "http.status_code": "200", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python38", + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python38", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -175,9 +175,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -188,27 +187,28 @@ START "runtime:python3.8", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python38_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -216,86 +216,86 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python38", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python38", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python38", + "language": "python", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python38", - "functionname": "integration-tests-python-XXXX-async-metrics_python38", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", + "runtime-id": "XXXX", "span.kind": "server", - "language": "python" + "span.name": "aws.lambda" }, "metrics": { - "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python38", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -304,9 +304,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -317,36 +316,37 @@ START "runtime:python3.8", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python38_X.X.X" - ] + ], + "v": 1 } { - "m": "datadog.serverless.dynamodb.stream.type", - "v": 1, "e": XXXX, + "m": "datadog.serverless.dynamodb.stream.type", "t": [ "streamtype:NEW_AND_OLD_IMAGES", "dd_lambda_layer:datadog-python38_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -354,157 +354,157 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "ExampleTableWithStream", - "resource": "ExampleTableWithStream", - "name": "aws.dynamodb", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", - "operation_name": "aws.dynamodb", - "resource_names": "ExampleTableWithStream", - "span.kind": "server", - "tablename": "ExampleTableWithStream", - "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", - "event_id": "XXXX", - "event_name": "INSERT", - "event_version": "1.1", - "stream_view_type": "NEW_AND_OLD_IMAGES", - "size_bytes": "26", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "dd_resource_key": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", + "event_id": "XXXX", + "event_name": "INSERT", + "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", + "event_version": "1.1", + "language": "python", + "operation_name": "aws.dynamodb", "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" + "resource_names": "ExampleTableWithStream", + "runtime-id": "XXXX", + "size_bytes": "26", + "span.kind": "server", + "stream_view_type": "NEW_AND_OLD_IMAGES", + "tablename": "ExampleTableWithStream" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web", + "name": "aws.dynamodb", + "parent_id": "XXXX", + "resource": "ExampleTableWithStream", + "service": "ExampleTableWithStream", + "span_id": "XXXX", "span_links": [ { - "trace_id": "XXXX", - "span_id": "XXXX", "attributes": { - "ptr.kind": "aws.dynamodb.item", + "link.kind": "span-pointer", "ptr.dir": "u", "ptr.hash": "e2af34d333891f765c7f02d2da80895e", - "link.kind": "span-pointer" - } + "ptr.kind": "aws.dynamodb.item" + }, + "span_id": "XXXX", + "trace_id": "XXXX" }, { - "trace_id": "XXXX", - "span_id": "XXXX", "attributes": { - "ptr.kind": "aws.dynamodb.item", + "link.kind": "span-pointer", "ptr.dir": "u", "ptr.hash": "e2af34d333891f765c7f02d2da80895e", - "link.kind": "span-pointer" - } + "ptr.kind": "aws.dynamodb.item" + }, + "span_id": "XXXX", + "trace_id": "XXXX" }, { - "trace_id": "XXXX", - "span_id": "XXXX", "attributes": { - "ptr.kind": "aws.dynamodb.item", + "link.kind": "span-pointer", "ptr.dir": "u", "ptr.hash": "e2af34d333891f765c7f02d2da80895e", - "link.kind": "span-pointer" - } + "ptr.kind": "aws.dynamodb.item" + }, + "span_id": "XXXX", + "trace_id": "XXXX" } - ] + ], + "start": "XXXX", + "trace_id": "XXXX", + "type": "web" }, { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python38", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python38", + "function_trigger.event_source": "dynamodb", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python38", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python38", - "functionname": "integration-tests-python-XXXX-async-metrics_python38", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", "span.kind": "server", - "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX" + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python38", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -513,9 +513,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -526,27 +525,28 @@ START "runtime:python3.8", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python38_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -554,117 +554,117 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "eventbridge.custom.event.sender", - "resource": "eventbridge.custom.event.sender", - "name": "aws.eventbridge", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", - "operation_name": "aws.eventbridge", - "resource_names": "eventbridge.custom.event.sender", - "span.kind": "server", - "detail_type": "testdetail", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "detail_type": "testdetail", + "language": "python", + "operation_name": "aws.eventbridge", "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" + "resource_names": "eventbridge.custom.event.sender", + "runtime-id": "XXXX", + "span.kind": "server" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.eventbridge", "parent_id": "XXXX", + "resource": "eventbridge.custom.event.sender", + "service": "eventbridge.custom.event.sender", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python38", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python38", + "function_trigger.event_source": "eventbridge", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python38", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python38", - "functionname": "integration-tests-python-XXXX-async-metrics_python38", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", "span.kind": "server", - "function_trigger.event_source": "eventbridge" + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python38", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -673,9 +673,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -686,27 +685,28 @@ START "runtime:python3.8", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python38_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -714,132 +714,132 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "XXXX.execute-api.eu-west-1.amazonaws.com", - "resource": "GET /httpapi/get", - "name": "aws.httpapi", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "apiid": "XXXX", + "apiname": "XXXX", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/x02yirxc7a/stages/$default", "endpoint": "/httpapi/get", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.protocol": "HTTP/1.1", + "http.route": "/httpapi/get", "http.source_ip": "XXXX", - "http.useragent": "curl/7.64.1", - "resource_names": "GET /httpapi/get", - "request_id": "XXXX", - "apiid": "XXXX", - "apiname": "XXXX", - "stage": "$default", - "_inferred_span.synchronicity": "sync", - "_inferred_span.tag_source": "self", "http.status_code": "200", - "http.route": "/httpapi/get", - "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/x02yirxc7a/stages/$default", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.useragent": "curl/7.64.1", + "language": "python", "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" + "request_id": "XXXX", + "resource_names": "GET /httpapi/get", + "runtime-id": "XXXX", + "stage": "$default" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.httpapi", "parent_id": "XXXX", + "resource": "GET /httpapi/get", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python38", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python38", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python38", - "functionname": "integration-tests-python-XXXX-async-metrics_python38", "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", - "span.name": "aws.lambda", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python38", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "span.kind": "server", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python38", "http.method": "GET", "http.route": "/httpapi/get", - "http.status_code": "200" + "http.status_code": "200", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python38", + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python38", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -848,9 +848,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -861,27 +860,28 @@ START "runtime:python3.8", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python38_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -889,125 +889,125 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "EXAMPLE", - "resource": "EXAMPLE", - "name": "aws.kinesis", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", - "operation_name": "aws.kinesis", - "resource_names": "EXAMPLE", - "span.kind": "server", - "streamname": "EXAMPLE", - "shardid": "shardId-XXXX", - "event_source_arn": "arn:aws:kinesis:EXAMPLE", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:kinesis:EXAMPLE", "event_id": "XXXX", "event_name": "aws:kinesis:record", + "event_source_arn": "arn:aws:kinesis:EXAMPLE", "event_version": "1.0", + "language": "python", + "operation_name": "aws.kinesis", "partition_key": "XXXX", - "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self", - "dd_resource_key": "arn:aws:kinesis:EXAMPLE", "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" + "resource_names": "EXAMPLE", + "runtime-id": "XXXX", + "shardid": "shardId-XXXX", + "span.kind": "server", + "streamname": "EXAMPLE" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.kinesis", "parent_id": "XXXX", + "resource": "EXAMPLE", + "service": "EXAMPLE", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python38", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python38", + "function_trigger.event_source": "kinesis", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python38", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python38", - "functionname": "integration-tests-python-XXXX-async-metrics_python38", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", "span.kind": "server", - "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX" + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python38", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1016,9 +1016,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -1029,27 +1028,28 @@ START "runtime:python3.8", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python38_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -1057,134 +1057,134 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "example-bucket", - "resource": "example-bucket", - "name": "aws.s3", "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", - "operation_name": "aws.s3", - "resource_names": "example-bucket", - "span.kind": "server", - "event_name": "ObjectCreated:Put", - "bucketname": "example-bucket", - "bucket_arn": "arn:aws:s3:::example-bucket", - "object_key": "test/key", - "object_size": "1024", - "object_etag": "XXXX", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "bucket_arn": "arn:aws:s3:::example-bucket", + "bucketname": "example-bucket", "dd_resource_key": "arn:aws:s3:::example-bucket", + "event_name": "ObjectCreated:Put", + "language": "python", + "object_etag": "XXXX", + "object_key": "test/key", + "object_size": "1024", + "operation_name": "aws.s3", "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" + "resource_names": "example-bucket", + "runtime-id": "XXXX", + "span.kind": "server" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web", + "name": "aws.s3", + "parent_id": "XXXX", + "resource": "example-bucket", + "service": "example-bucket", + "span_id": "XXXX", "span_links": [ { - "trace_id": "XXXX", - "span_id": "XXXX", "attributes": { - "ptr.kind": "aws.s3.object", + "link.kind": "span-pointer", "ptr.dir": "u", "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", - "link.kind": "span-pointer" - } + "ptr.kind": "aws.s3.object" + }, + "span_id": "XXXX", + "trace_id": "XXXX" } - ] + ], + "trace_id": "XXXX", + "type": "web" }, { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python38", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python38", + "function_trigger.event_source": "s3", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python38", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python38", - "functionname": "integration-tests-python-XXXX-async-metrics_python38", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", "span.kind": "server", - "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX" + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python38", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1193,9 +1193,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -1206,27 +1205,28 @@ START "runtime:python3.8", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python38_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -1234,123 +1234,123 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "sns-lambda", - "resource": "sns-lambda", - "name": "aws.sns", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", - "operation_name": "aws.sns", - "resource_names": "sns-lambda", - "span.kind": "server", - "topicname": "sns-lambda", - "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", - "message_id": "XXXX", - "type": "Notification", - "subject": "TestInvoke", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "dd_resource_key": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", + "language": "python", + "message_id": "XXXX", + "operation_name": "aws.sns", "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" + "resource_names": "sns-lambda", + "runtime-id": "XXXX", + "span.kind": "server", + "subject": "TestInvoke", + "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", + "topicname": "sns-lambda", + "type": "Notification" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.sns", "parent_id": "XXXX", + "resource": "sns-lambda", + "service": "sns-lambda", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python38", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python38", + "function_trigger.event_source": "sns", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python38", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python38", - "functionname": "integration-tests-python-XXXX-async-metrics_python38", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", "span.kind": "server", - "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX" + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python38", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1359,9 +1359,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -1372,27 +1371,28 @@ START "runtime:python3.8", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python38_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -1400,122 +1400,122 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "my-queue", - "resource": "my-queue", - "name": "aws.sqs", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", - "operation_name": "aws.sqs", - "resource_names": "my-queue", - "span.kind": "server", - "queuename": "my-queue", - "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", - "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", - "sender_id": "AIDAIENQZJOLO23YVJ4VO", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "dd_resource_key": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", + "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", + "language": "python", + "operation_name": "aws.sqs", "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" + "queuename": "my-queue", + "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", + "resource_names": "my-queue", + "runtime-id": "XXXX", + "sender_id": "AIDAIENQZJOLO23YVJ4VO", + "span.kind": "server" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.sqs", "parent_id": "XXXX", + "resource": "my-queue", + "service": "my-queue", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python38", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python38", + "function_trigger.event_source": "sqs", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python38", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python38", - "functionname": "integration-tests-python-XXXX-async-metrics_python38", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", "span.kind": "server", - "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX" + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python38", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1524,9 +1524,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -1537,27 +1536,28 @@ START "runtime:python3.8", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python38_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python38_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -1565,130 +1565,130 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "XXXX.execute-api.eu-west-1.amazonaws.com", - "resource": "$default", - "name": "aws.apigateway.websocket", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", - "operation_name": "aws.apigateway.websocket", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com$default", - "endpoint": "$default", - "resource_names": "$default", - "span.kind": "server", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", "apiid": "XXXX", "apiname": "XXXX", - "stage": "dev", - "request_id": "XXXX", "connection_id": "XXXX=", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/p62c47itsb/stages/dev", + "endpoint": "$default", "event_type": "MESSAGE", - "message_direction": "IN", - "_inferred_span.synchronicity": "sync", - "_inferred_span.tag_source": "self", "http.status_code": "200", - "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/p62c47itsb/stages/dev", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com$default", + "language": "python", + "message_direction": "IN", + "operation_name": "aws.apigateway.websocket", "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" + "request_id": "XXXX", + "resource_names": "$default", + "runtime-id": "XXXX", + "span.kind": "server", + "stage": "dev" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.apigateway.websocket", "parent_id": "XXXX", + "resource": "$default", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python38", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python38", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python38", - "functionname": "integration-tests-python-XXXX-async-metrics_python38", "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", - "span.name": "aws.lambda", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python38", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "span.kind": "server", + "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python38", + "http.status_code": "200", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", - "http.status_code": "200" + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python38", + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python38", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] diff --git a/tests/integration/snapshots/logs/async-metrics_python39.log b/tests/integration/snapshots/logs/async-metrics_python39.log index c12ed57fd..1383dd98a 100644 --- a/tests/integration/snapshots/logs/async-metrics_python39.log +++ b/tests/integration/snapshots/logs/async-metrics_python39.log @@ -1,9 +1,8 @@ INIT_START Runtime Version: python:3.9.vX Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -14,27 +13,28 @@ START "runtime:python3.9", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python39_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -42,131 +42,131 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "XXXX.execute-api.us-east-2.amazonaws.com", - "resource": "GET /", - "name": "aws.apigateway", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", - "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/", - "endpoint": "/", - "http.method": "GET", - "resource_names": "GET /", - "http.useragent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36", - "span.kind": "server", - "apiid": "XXXX", - "apiname": "XXXX", - "stage": "Prod", - "request_id": "XXXX", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", - "http.status_code": "200", - "http.route": "/", + "apiid": "XXXX", + "apiname": "XXXX", "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/70ixmpl4fl/stages/Prod", + "endpoint": "/", + "http.method": "GET", + "http.route": "/", + "http.status_code": "200", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/", + "http.useragent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36", + "language": "python", "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" + "request_id": "XXXX", + "resource_names": "GET /", + "runtime-id": "XXXX", + "span.kind": "server", + "stage": "Prod" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.apigateway", "parent_id": "XXXX", + "resource": "GET /", + "service": "XXXX.execute-api.us-east-2.amazonaws.com", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python39", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "cold_start": "true", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python39", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python39", - "functionname": "integration-tests-python-XXXX-async-metrics_python39", "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", - "span.name": "aws.lambda", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python39", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "span.kind": "server", - "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", + "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python39", "http.method": "GET", "http.route": "/", - "http.status_code": "200" + "http.status_code": "200", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python39", + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python39", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -175,9 +175,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -188,27 +187,28 @@ START "runtime:python3.9", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python39_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -216,86 +216,86 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python39", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python39", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python39", + "language": "python", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python39", - "functionname": "integration-tests-python-XXXX-async-metrics_python39", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", + "runtime-id": "XXXX", "span.kind": "server", - "language": "python" + "span.name": "aws.lambda" }, "metrics": { - "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python39", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -304,9 +304,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -317,36 +316,37 @@ START "runtime:python3.9", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python39_X.X.X" - ] + ], + "v": 1 } { - "m": "datadog.serverless.dynamodb.stream.type", - "v": 1, "e": XXXX, + "m": "datadog.serverless.dynamodb.stream.type", "t": [ "streamtype:NEW_AND_OLD_IMAGES", "dd_lambda_layer:datadog-python39_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -354,157 +354,157 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "ExampleTableWithStream", - "resource": "ExampleTableWithStream", - "name": "aws.dynamodb", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", - "operation_name": "aws.dynamodb", - "resource_names": "ExampleTableWithStream", - "span.kind": "server", - "tablename": "ExampleTableWithStream", - "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", - "event_id": "XXXX", - "event_name": "INSERT", - "event_version": "1.1", - "stream_view_type": "NEW_AND_OLD_IMAGES", - "size_bytes": "26", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "dd_resource_key": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", + "event_id": "XXXX", + "event_name": "INSERT", + "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", + "event_version": "1.1", + "language": "python", + "operation_name": "aws.dynamodb", "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" + "resource_names": "ExampleTableWithStream", + "runtime-id": "XXXX", + "size_bytes": "26", + "span.kind": "server", + "stream_view_type": "NEW_AND_OLD_IMAGES", + "tablename": "ExampleTableWithStream" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web", + "name": "aws.dynamodb", + "parent_id": "XXXX", + "resource": "ExampleTableWithStream", + "service": "ExampleTableWithStream", + "span_id": "XXXX", "span_links": [ { - "trace_id": "XXXX", - "span_id": "XXXX", "attributes": { - "ptr.kind": "aws.dynamodb.item", + "link.kind": "span-pointer", "ptr.dir": "u", "ptr.hash": "e2af34d333891f765c7f02d2da80895e", - "link.kind": "span-pointer" - } + "ptr.kind": "aws.dynamodb.item" + }, + "span_id": "XXXX", + "trace_id": "XXXX" }, { - "trace_id": "XXXX", - "span_id": "XXXX", "attributes": { - "ptr.kind": "aws.dynamodb.item", + "link.kind": "span-pointer", "ptr.dir": "u", "ptr.hash": "e2af34d333891f765c7f02d2da80895e", - "link.kind": "span-pointer" - } + "ptr.kind": "aws.dynamodb.item" + }, + "span_id": "XXXX", + "trace_id": "XXXX" }, { - "trace_id": "XXXX", - "span_id": "XXXX", "attributes": { - "ptr.kind": "aws.dynamodb.item", + "link.kind": "span-pointer", "ptr.dir": "u", "ptr.hash": "e2af34d333891f765c7f02d2da80895e", - "link.kind": "span-pointer" - } + "ptr.kind": "aws.dynamodb.item" + }, + "span_id": "XXXX", + "trace_id": "XXXX" } - ] + ], + "start": "XXXX", + "trace_id": "XXXX", + "type": "web" }, { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python39", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python39", + "function_trigger.event_source": "dynamodb", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python39", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python39", - "functionname": "integration-tests-python-XXXX-async-metrics_python39", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", "span.kind": "server", - "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX" + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python39", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -513,9 +513,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -526,27 +525,28 @@ START "runtime:python3.9", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python39_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -554,117 +554,117 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "eventbridge.custom.event.sender", - "resource": "eventbridge.custom.event.sender", - "name": "aws.eventbridge", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", - "operation_name": "aws.eventbridge", - "resource_names": "eventbridge.custom.event.sender", - "span.kind": "server", - "detail_type": "testdetail", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "detail_type": "testdetail", + "language": "python", + "operation_name": "aws.eventbridge", "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" + "resource_names": "eventbridge.custom.event.sender", + "runtime-id": "XXXX", + "span.kind": "server" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.eventbridge", "parent_id": "XXXX", + "resource": "eventbridge.custom.event.sender", + "service": "eventbridge.custom.event.sender", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python39", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python39", + "function_trigger.event_source": "eventbridge", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python39", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python39", - "functionname": "integration-tests-python-XXXX-async-metrics_python39", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", "span.kind": "server", - "function_trigger.event_source": "eventbridge" + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python39", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -673,9 +673,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -686,27 +685,28 @@ START "runtime:python3.9", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python39_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -714,132 +714,132 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "XXXX.execute-api.eu-west-1.amazonaws.com", - "resource": "GET /httpapi/get", - "name": "aws.httpapi", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "apiid": "XXXX", + "apiname": "XXXX", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/x02yirxc7a/stages/$default", "endpoint": "/httpapi/get", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.protocol": "HTTP/1.1", + "http.route": "/httpapi/get", "http.source_ip": "XXXX", - "http.useragent": "curl/7.64.1", - "resource_names": "GET /httpapi/get", - "request_id": "XXXX", - "apiid": "XXXX", - "apiname": "XXXX", - "stage": "$default", - "_inferred_span.synchronicity": "sync", - "_inferred_span.tag_source": "self", "http.status_code": "200", - "http.route": "/httpapi/get", - "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/x02yirxc7a/stages/$default", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.useragent": "curl/7.64.1", + "language": "python", "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" + "request_id": "XXXX", + "resource_names": "GET /httpapi/get", + "runtime-id": "XXXX", + "stage": "$default" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.httpapi", "parent_id": "XXXX", + "resource": "GET /httpapi/get", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python39", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python39", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python39", - "functionname": "integration-tests-python-XXXX-async-metrics_python39", "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", - "span.name": "aws.lambda", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python39", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "span.kind": "server", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python39", "http.method": "GET", "http.route": "/httpapi/get", - "http.status_code": "200" + "http.status_code": "200", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python39", + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python39", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -848,9 +848,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -861,27 +860,28 @@ START "runtime:python3.9", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python39_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -889,125 +889,125 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "EXAMPLE", - "resource": "EXAMPLE", - "name": "aws.kinesis", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", - "operation_name": "aws.kinesis", - "resource_names": "EXAMPLE", - "span.kind": "server", - "streamname": "EXAMPLE", - "shardid": "shardId-XXXX", - "event_source_arn": "arn:aws:kinesis:EXAMPLE", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:kinesis:EXAMPLE", "event_id": "XXXX", "event_name": "aws:kinesis:record", + "event_source_arn": "arn:aws:kinesis:EXAMPLE", "event_version": "1.0", + "language": "python", + "operation_name": "aws.kinesis", "partition_key": "XXXX", - "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self", - "dd_resource_key": "arn:aws:kinesis:EXAMPLE", "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" + "resource_names": "EXAMPLE", + "runtime-id": "XXXX", + "shardid": "shardId-XXXX", + "span.kind": "server", + "streamname": "EXAMPLE" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.kinesis", "parent_id": "XXXX", + "resource": "EXAMPLE", + "service": "EXAMPLE", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python39", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python39", + "function_trigger.event_source": "kinesis", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python39", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python39", - "functionname": "integration-tests-python-XXXX-async-metrics_python39", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", "span.kind": "server", - "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX" + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python39", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1016,9 +1016,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -1029,27 +1028,28 @@ START "runtime:python3.9", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python39_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -1057,134 +1057,134 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "example-bucket", - "resource": "example-bucket", - "name": "aws.s3", "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", - "operation_name": "aws.s3", - "resource_names": "example-bucket", - "span.kind": "server", - "event_name": "ObjectCreated:Put", - "bucketname": "example-bucket", - "bucket_arn": "arn:aws:s3:::example-bucket", - "object_key": "test/key", - "object_size": "1024", - "object_etag": "XXXX", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "bucket_arn": "arn:aws:s3:::example-bucket", + "bucketname": "example-bucket", "dd_resource_key": "arn:aws:s3:::example-bucket", + "event_name": "ObjectCreated:Put", + "language": "python", + "object_etag": "XXXX", + "object_key": "test/key", + "object_size": "1024", + "operation_name": "aws.s3", "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" + "resource_names": "example-bucket", + "runtime-id": "XXXX", + "span.kind": "server" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web", + "name": "aws.s3", + "parent_id": "XXXX", + "resource": "example-bucket", + "service": "example-bucket", + "span_id": "XXXX", "span_links": [ { - "trace_id": "XXXX", - "span_id": "XXXX", "attributes": { - "ptr.kind": "aws.s3.object", + "link.kind": "span-pointer", "ptr.dir": "u", "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", - "link.kind": "span-pointer" - } + "ptr.kind": "aws.s3.object" + }, + "span_id": "XXXX", + "trace_id": "XXXX" } - ] + ], + "trace_id": "XXXX", + "type": "web" }, { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python39", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python39", + "function_trigger.event_source": "s3", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python39", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python39", - "functionname": "integration-tests-python-XXXX-async-metrics_python39", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", "span.kind": "server", - "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX" + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python39", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1193,9 +1193,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -1206,27 +1205,28 @@ START "runtime:python3.9", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python39_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -1234,123 +1234,123 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "sns-lambda", - "resource": "sns-lambda", - "name": "aws.sns", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", - "operation_name": "aws.sns", - "resource_names": "sns-lambda", - "span.kind": "server", - "topicname": "sns-lambda", - "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", - "message_id": "XXXX", - "type": "Notification", - "subject": "TestInvoke", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "dd_resource_key": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", + "language": "python", + "message_id": "XXXX", + "operation_name": "aws.sns", "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" + "resource_names": "sns-lambda", + "runtime-id": "XXXX", + "span.kind": "server", + "subject": "TestInvoke", + "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", + "topicname": "sns-lambda", + "type": "Notification" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.sns", "parent_id": "XXXX", + "resource": "sns-lambda", + "service": "sns-lambda", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python39", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python39", + "function_trigger.event_source": "sns", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python39", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python39", - "functionname": "integration-tests-python-XXXX-async-metrics_python39", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", "span.kind": "server", - "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX" + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python39", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1359,9 +1359,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -1372,27 +1371,28 @@ START "runtime:python3.9", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python39_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -1400,122 +1400,122 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "my-queue", - "resource": "my-queue", - "name": "aws.sqs", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", - "operation_name": "aws.sqs", - "resource_names": "my-queue", - "span.kind": "server", - "queuename": "my-queue", - "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", - "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", - "sender_id": "AIDAIENQZJOLO23YVJ4VO", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "dd_resource_key": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", + "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", + "language": "python", + "operation_name": "aws.sqs", "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" + "queuename": "my-queue", + "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", + "resource_names": "my-queue", + "runtime-id": "XXXX", + "sender_id": "AIDAIENQZJOLO23YVJ4VO", + "span.kind": "server" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.sqs", "parent_id": "XXXX", + "resource": "my-queue", + "service": "my-queue", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python39", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python39", + "function_trigger.event_source": "sqs", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python39", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-async-metrics_python39", - "functionname": "integration-tests-python-XXXX-async-metrics_python39", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", "span.kind": "server", - "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX" + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python39", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1524,9 +1524,8 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -1537,27 +1536,28 @@ START "runtime:python3.9", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python39_X.X.X" - ] + ], + "v": 1 } { - "m": "hello.dog", - "v": 1, "e": XXXX, + "m": "hello.dog", "t": [ "team:serverless", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X" - ] + ], + "v": 1 } { - "m": "tests.integration.count", - "v": 21, "e": XXXX, + "m": "tests.integration.count", "t": [ "test:integration", "role:hello", "dd_lambda_layer:datadog-python39_X.X.X" - ] + ], + "v": 21 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -1565,130 +1565,130 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "XXXX.execute-api.eu-west-1.amazonaws.com", - "resource": "$default", - "name": "aws.apigateway.websocket", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", - "operation_name": "aws.apigateway.websocket", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com$default", - "endpoint": "$default", - "resource_names": "$default", - "span.kind": "server", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", "apiid": "XXXX", "apiname": "XXXX", - "stage": "dev", - "request_id": "XXXX", "connection_id": "XXXX=", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/p62c47itsb/stages/dev", + "endpoint": "$default", "event_type": "MESSAGE", - "message_direction": "IN", - "_inferred_span.synchronicity": "sync", - "_inferred_span.tag_source": "self", "http.status_code": "200", - "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/p62c47itsb/stages/dev", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com$default", + "language": "python", + "message_direction": "IN", + "operation_name": "aws.apigateway.websocket", "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" + "request_id": "XXXX", + "resource_names": "$default", + "runtime-id": "XXXX", + "span.kind": "server", + "stage": "dev" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.apigateway.websocket", "parent_id": "XXXX", + "resource": "$default", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-async-metrics_python39", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python39", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-async-metrics_python39", - "functionname": "integration-tests-python-XXXX-async-metrics_python39", "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", - "span.name": "aws.lambda", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-async-metrics_python39", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "span.kind": "server", + "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-async-metrics_python39", + "http.status_code": "200", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", - "http.status_code": "200" + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-async-metrics_python39", + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-async-metrics_python39", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] diff --git a/tests/integration/snapshots/logs/sync-metrics_python310.log b/tests/integration/snapshots/logs/sync-metrics_python310.log index 997cc0e36..a230501ed 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python310.log +++ b/tests/integration/snapshots/logs/sync-metrics_python310.log @@ -1,9 +1,8 @@ INIT_START Runtime Version: python:3.10.vX Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -14,7 +13,8 @@ START "runtime:python3.10", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python310_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -22,132 +22,139 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "XXXX.execute-api.us-east-2.amazonaws.com", - "resource": "GET /", - "name": "aws.apigateway", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/", - "endpoint": "/", - "http.method": "GET", - "resource_names": "GET /", - "http.useragent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36", - "span.kind": "server", - "apiid": "XXXX", - "apiname": "XXXX", - "stage": "Prod", - "request_id": "XXXX", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", - "http.status_code": "200", - "http.route": "/", + "apiid": "XXXX", + "apiname": "XXXX", "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/70ixmpl4fl/stages/Prod", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", + "endpoint": "/", + "http.method": "GET", + "http.route": "/", + "http.status_code": "200", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/", + "http.useragent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "peer.service": "integration-tests-python", + "request_id": "XXXX", + "resource_names": "GET /", + "runtime-id": "XXXX", + "span.kind": "server", + "stage": "Prod" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.apigateway", "parent_id": "XXXX", + "resource": "GET /", + "service": "XXXX.execute-api.us-east-2.amazonaws.com", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python310", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "true", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python310", - "functionname": "integration-tests-python-XXXX-sync-metrics_python310", "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", - "span.name": "aws.lambda", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", + "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python310", "http.method": "GET", "http.route": "/", - "http.status_code": "200" + "http.status_code": "200", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python310", + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python310", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -158,36 +165,38 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -196,9 +205,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -209,7 +217,8 @@ START "runtime:python3.10", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python310_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -217,87 +226,92 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python310", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python310", "functionname": "integration-tests-python-XXXX-sync-metrics_python310", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python310", + "runtime-id": "XXXX", + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { - "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python310", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -308,36 +322,38 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -346,9 +362,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -359,16 +374,17 @@ START "runtime:python3.10", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python310_X.X.X" - ] + ], + "v": 1 } { - "m": "datadog.serverless.dynamodb.stream.type", - "v": 1, "e": XXXX, + "m": "datadog.serverless.dynamodb.stream.type", "t": [ "streamtype:NEW_AND_OLD_IMAGES", "dd_lambda_layer:datadog-python310_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -376,158 +392,165 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "ExampleTableWithStream", - "resource": "ExampleTableWithStream", - "name": "aws.dynamodb", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.dynamodb", - "resource_names": "ExampleTableWithStream", - "span.kind": "server", - "tablename": "ExampleTableWithStream", - "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", - "event_id": "XXXX", - "event_name": "INSERT", - "event_version": "1.1", - "stream_view_type": "NEW_AND_OLD_IMAGES", - "size_bytes": "26", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "dd_resource_key": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", + "event_id": "XXXX", + "event_name": "INSERT", + "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", + "event_version": "1.1", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "operation_name": "aws.dynamodb", + "peer.service": "integration-tests-python", + "resource_names": "ExampleTableWithStream", + "runtime-id": "XXXX", + "size_bytes": "26", + "span.kind": "server", + "stream_view_type": "NEW_AND_OLD_IMAGES", + "tablename": "ExampleTableWithStream" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web", + "name": "aws.dynamodb", + "parent_id": "XXXX", + "resource": "ExampleTableWithStream", + "service": "ExampleTableWithStream", + "span_id": "XXXX", "span_links": [ { - "trace_id": "XXXX", - "span_id": "XXXX", "attributes": { - "ptr.kind": "aws.dynamodb.item", + "link.kind": "span-pointer", "ptr.dir": "u", "ptr.hash": "e2af34d333891f765c7f02d2da80895e", - "link.kind": "span-pointer" - } + "ptr.kind": "aws.dynamodb.item" + }, + "span_id": "XXXX", + "trace_id": "XXXX" }, { - "trace_id": "XXXX", - "span_id": "XXXX", "attributes": { - "ptr.kind": "aws.dynamodb.item", + "link.kind": "span-pointer", "ptr.dir": "u", "ptr.hash": "e2af34d333891f765c7f02d2da80895e", - "link.kind": "span-pointer" - } + "ptr.kind": "aws.dynamodb.item" + }, + "span_id": "XXXX", + "trace_id": "XXXX" }, { - "trace_id": "XXXX", - "span_id": "XXXX", "attributes": { - "ptr.kind": "aws.dynamodb.item", + "link.kind": "span-pointer", "ptr.dir": "u", "ptr.hash": "e2af34d333891f765c7f02d2da80895e", - "link.kind": "span-pointer" - } + "ptr.kind": "aws.dynamodb.item" + }, + "span_id": "XXXX", + "trace_id": "XXXX" } - ] + ], + "start": "XXXX", + "trace_id": "XXXX", + "type": "web" }, { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python310", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", + "function_trigger.event_source": "dynamodb", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python310", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python310", - "functionname": "integration-tests-python-XXXX-sync-metrics_python310", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX" + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python310", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -538,36 +561,38 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -576,9 +601,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -589,7 +613,8 @@ START "runtime:python3.10", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python310_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -597,118 +622,125 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "eventbridge.custom.event.sender", - "resource": "eventbridge.custom.event.sender", - "name": "aws.eventbridge", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.eventbridge", - "resource_names": "eventbridge.custom.event.sender", - "span.kind": "server", - "detail_type": "testdetail", - "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "detail_type": "testdetail", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "operation_name": "aws.eventbridge", + "peer.service": "integration-tests-python", + "resource_names": "eventbridge.custom.event.sender", + "runtime-id": "XXXX", + "span.kind": "server" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.eventbridge", "parent_id": "XXXX", + "resource": "eventbridge.custom.event.sender", + "service": "eventbridge.custom.event.sender", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python310", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", + "function_trigger.event_source": "eventbridge", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python310", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python310", - "functionname": "integration-tests-python-XXXX-sync-metrics_python310", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "eventbridge" + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python310", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -719,36 +751,38 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -757,9 +791,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -770,7 +803,8 @@ START "runtime:python3.10", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python310_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -778,133 +812,140 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "XXXX.execute-api.eu-west-1.amazonaws.com", - "resource": "GET /httpapi/get", - "name": "aws.httpapi", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "apiid": "XXXX", + "apiname": "XXXX", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/x02yirxc7a/stages/$default", "endpoint": "/httpapi/get", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.protocol": "HTTP/1.1", + "http.route": "/httpapi/get", "http.source_ip": "XXXX", - "http.useragent": "curl/7.64.1", - "resource_names": "GET /httpapi/get", - "request_id": "XXXX", - "apiid": "XXXX", - "apiname": "XXXX", - "stage": "$default", - "_inferred_span.synchronicity": "sync", - "_inferred_span.tag_source": "self", "http.status_code": "200", - "http.route": "/httpapi/get", - "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/x02yirxc7a/stages/$default", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.useragent": "curl/7.64.1", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "peer.service": "integration-tests-python", + "request_id": "XXXX", + "resource_names": "GET /httpapi/get", + "runtime-id": "XXXX", + "stage": "$default" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.httpapi", "parent_id": "XXXX", + "resource": "GET /httpapi/get", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python310", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python310", - "functionname": "integration-tests-python-XXXX-sync-metrics_python310", "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", - "span.name": "aws.lambda", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python310", "http.method": "GET", "http.route": "/httpapi/get", - "http.status_code": "200" + "http.status_code": "200", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python310", + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python310", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -915,36 +956,38 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -953,9 +996,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -966,7 +1008,8 @@ START "runtime:python3.10", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python310_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -974,126 +1017,133 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "EXAMPLE", - "resource": "EXAMPLE", - "name": "aws.kinesis", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.kinesis", - "resource_names": "EXAMPLE", - "span.kind": "server", - "streamname": "EXAMPLE", - "shardid": "shardId-XXXX", - "event_source_arn": "arn:aws:kinesis:EXAMPLE", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:kinesis:EXAMPLE", "event_id": "XXXX", "event_name": "aws:kinesis:record", + "event_source_arn": "arn:aws:kinesis:EXAMPLE", "event_version": "1.0", + "language": "python", + "operation_name": "aws.kinesis", "partition_key": "XXXX", - "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self", - "dd_resource_key": "arn:aws:kinesis:EXAMPLE", "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "resource_names": "EXAMPLE", + "runtime-id": "XXXX", + "shardid": "shardId-XXXX", + "span.kind": "server", + "streamname": "EXAMPLE" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.kinesis", "parent_id": "XXXX", + "resource": "EXAMPLE", + "service": "EXAMPLE", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python310", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", + "function_trigger.event_source": "kinesis", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python310", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python310", - "functionname": "integration-tests-python-XXXX-sync-metrics_python310", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX" + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python310", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1104,36 +1154,38 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1142,9 +1194,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -1155,7 +1206,8 @@ START "runtime:python3.10", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python310_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -1163,135 +1215,142 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "example-bucket", - "resource": "example-bucket", - "name": "aws.s3", "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.s3", - "resource_names": "example-bucket", - "span.kind": "server", - "event_name": "ObjectCreated:Put", - "bucketname": "example-bucket", - "bucket_arn": "arn:aws:s3:::example-bucket", - "object_key": "test/key", - "object_size": "1024", - "object_etag": "XXXX", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "bucket_arn": "arn:aws:s3:::example-bucket", + "bucketname": "example-bucket", "dd_resource_key": "arn:aws:s3:::example-bucket", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", + "event_name": "ObjectCreated:Put", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "object_etag": "XXXX", + "object_key": "test/key", + "object_size": "1024", + "operation_name": "aws.s3", + "peer.service": "integration-tests-python", + "resource_names": "example-bucket", + "runtime-id": "XXXX", + "span.kind": "server" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web", + "name": "aws.s3", + "parent_id": "XXXX", + "resource": "example-bucket", + "service": "example-bucket", + "span_id": "XXXX", "span_links": [ { - "trace_id": "XXXX", - "span_id": "XXXX", "attributes": { - "ptr.kind": "aws.s3.object", + "link.kind": "span-pointer", "ptr.dir": "u", "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", - "link.kind": "span-pointer" - } + "ptr.kind": "aws.s3.object" + }, + "span_id": "XXXX", + "trace_id": "XXXX" } - ] + ], + "trace_id": "XXXX", + "type": "web" }, { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python310", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", + "function_trigger.event_source": "s3", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python310", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python310", - "functionname": "integration-tests-python-XXXX-sync-metrics_python310", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX" + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python310", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1302,36 +1361,38 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1340,9 +1401,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -1353,7 +1413,8 @@ START "runtime:python3.10", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python310_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -1361,124 +1422,131 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "sns-lambda", - "resource": "sns-lambda", - "name": "aws.sns", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.sns", - "resource_names": "sns-lambda", - "span.kind": "server", - "topicname": "sns-lambda", - "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", - "message_id": "XXXX", - "type": "Notification", - "subject": "TestInvoke", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "dd_resource_key": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "message_id": "XXXX", + "operation_name": "aws.sns", + "peer.service": "integration-tests-python", + "resource_names": "sns-lambda", + "runtime-id": "XXXX", + "span.kind": "server", + "subject": "TestInvoke", + "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", + "topicname": "sns-lambda", + "type": "Notification" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.sns", "parent_id": "XXXX", + "resource": "sns-lambda", + "service": "sns-lambda", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python310", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", + "function_trigger.event_source": "sns", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python310", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python310", - "functionname": "integration-tests-python-XXXX-sync-metrics_python310", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX" + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python310", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1489,36 +1557,38 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1527,9 +1597,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -1540,7 +1609,8 @@ START "runtime:python3.10", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python310_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -1548,123 +1618,130 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "my-queue", - "resource": "my-queue", - "name": "aws.sqs", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.sqs", - "resource_names": "my-queue", - "span.kind": "server", - "queuename": "my-queue", - "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", - "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", - "sender_id": "AIDAIENQZJOLO23YVJ4VO", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "dd_resource_key": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", + "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "operation_name": "aws.sqs", + "peer.service": "integration-tests-python", + "queuename": "my-queue", + "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", + "resource_names": "my-queue", + "runtime-id": "XXXX", + "sender_id": "AIDAIENQZJOLO23YVJ4VO", + "span.kind": "server" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.sqs", "parent_id": "XXXX", + "resource": "my-queue", + "service": "my-queue", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python310", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", + "function_trigger.event_source": "sqs", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python310", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python310", - "functionname": "integration-tests-python-XXXX-sync-metrics_python310", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX" + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python310", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1675,36 +1752,38 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1713,9 +1792,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -1726,7 +1804,8 @@ START "runtime:python3.10", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python310_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -1734,131 +1813,138 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "XXXX.execute-api.eu-west-1.amazonaws.com", - "resource": "$default", - "name": "aws.apigateway.websocket", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.apigateway.websocket", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com$default", - "endpoint": "$default", - "resource_names": "$default", - "span.kind": "server", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", "apiid": "XXXX", "apiname": "XXXX", - "stage": "dev", - "request_id": "XXXX", "connection_id": "XXXX=", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/p62c47itsb/stages/dev", + "endpoint": "$default", "event_type": "MESSAGE", - "message_direction": "IN", - "_inferred_span.synchronicity": "sync", - "_inferred_span.tag_source": "self", "http.status_code": "200", - "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/p62c47itsb/stages/dev", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com$default", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "message_direction": "IN", + "operation_name": "aws.apigateway.websocket", + "peer.service": "integration-tests-python", + "request_id": "XXXX", + "resource_names": "$default", + "runtime-id": "XXXX", + "span.kind": "server", + "stage": "dev" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.apigateway.websocket", "parent_id": "XXXX", + "resource": "$default", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python310", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python310", - "functionname": "integration-tests-python-XXXX-sync-metrics_python310", "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", - "span.name": "aws.lambda", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python310", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python310", + "http.status_code": "200", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", - "http.status_code": "200" + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python310", + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python310", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1869,36 +1955,38 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] diff --git a/tests/integration/snapshots/logs/sync-metrics_python311.log b/tests/integration/snapshots/logs/sync-metrics_python311.log index 4880a9049..41e8bc27b 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python311.log +++ b/tests/integration/snapshots/logs/sync-metrics_python311.log @@ -1,9 +1,8 @@ INIT_START Runtime Version: python:3.11.vX Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -14,7 +13,8 @@ START "runtime:python3.11", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python311_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -22,132 +22,139 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "XXXX.execute-api.us-east-2.amazonaws.com", - "resource": "GET /", - "name": "aws.apigateway", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/", - "endpoint": "/", - "http.method": "GET", - "resource_names": "GET /", - "http.useragent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36", - "span.kind": "server", - "apiid": "XXXX", - "apiname": "XXXX", - "stage": "Prod", - "request_id": "XXXX", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", - "http.status_code": "200", - "http.route": "/", + "apiid": "XXXX", + "apiname": "XXXX", "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/70ixmpl4fl/stages/Prod", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", + "endpoint": "/", + "http.method": "GET", + "http.route": "/", + "http.status_code": "200", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/", + "http.useragent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "peer.service": "integration-tests-python", + "request_id": "XXXX", + "resource_names": "GET /", + "runtime-id": "XXXX", + "span.kind": "server", + "stage": "Prod" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.apigateway", "parent_id": "XXXX", + "resource": "GET /", + "service": "XXXX.execute-api.us-east-2.amazonaws.com", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python311", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "true", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python311", - "functionname": "integration-tests-python-XXXX-sync-metrics_python311", "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", - "span.name": "aws.lambda", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", + "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python311", "http.method": "GET", "http.route": "/", - "http.status_code": "200" + "http.status_code": "200", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python311", + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python311", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -158,36 +165,38 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -196,9 +205,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -209,7 +217,8 @@ START "runtime:python3.11", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python311_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -217,87 +226,92 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python311", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python311", "functionname": "integration-tests-python-XXXX-sync-metrics_python311", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python311", + "runtime-id": "XXXX", + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { - "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python311", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -308,36 +322,38 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -346,9 +362,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -359,16 +374,17 @@ START "runtime:python3.11", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python311_X.X.X" - ] + ], + "v": 1 } { - "m": "datadog.serverless.dynamodb.stream.type", - "v": 1, "e": XXXX, + "m": "datadog.serverless.dynamodb.stream.type", "t": [ "streamtype:NEW_AND_OLD_IMAGES", "dd_lambda_layer:datadog-python311_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -376,158 +392,165 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "ExampleTableWithStream", - "resource": "ExampleTableWithStream", - "name": "aws.dynamodb", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.dynamodb", - "resource_names": "ExampleTableWithStream", - "span.kind": "server", - "tablename": "ExampleTableWithStream", - "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", - "event_id": "XXXX", - "event_name": "INSERT", - "event_version": "1.1", - "stream_view_type": "NEW_AND_OLD_IMAGES", - "size_bytes": "26", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "dd_resource_key": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", + "event_id": "XXXX", + "event_name": "INSERT", + "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", + "event_version": "1.1", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "operation_name": "aws.dynamodb", + "peer.service": "integration-tests-python", + "resource_names": "ExampleTableWithStream", + "runtime-id": "XXXX", + "size_bytes": "26", + "span.kind": "server", + "stream_view_type": "NEW_AND_OLD_IMAGES", + "tablename": "ExampleTableWithStream" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web", + "name": "aws.dynamodb", + "parent_id": "XXXX", + "resource": "ExampleTableWithStream", + "service": "ExampleTableWithStream", + "span_id": "XXXX", "span_links": [ { - "trace_id": "XXXX", - "span_id": "XXXX", "attributes": { - "ptr.kind": "aws.dynamodb.item", + "link.kind": "span-pointer", "ptr.dir": "u", "ptr.hash": "e2af34d333891f765c7f02d2da80895e", - "link.kind": "span-pointer" - } + "ptr.kind": "aws.dynamodb.item" + }, + "span_id": "XXXX", + "trace_id": "XXXX" }, { - "trace_id": "XXXX", - "span_id": "XXXX", "attributes": { - "ptr.kind": "aws.dynamodb.item", + "link.kind": "span-pointer", "ptr.dir": "u", "ptr.hash": "e2af34d333891f765c7f02d2da80895e", - "link.kind": "span-pointer" - } + "ptr.kind": "aws.dynamodb.item" + }, + "span_id": "XXXX", + "trace_id": "XXXX" }, { - "trace_id": "XXXX", - "span_id": "XXXX", "attributes": { - "ptr.kind": "aws.dynamodb.item", + "link.kind": "span-pointer", "ptr.dir": "u", "ptr.hash": "e2af34d333891f765c7f02d2da80895e", - "link.kind": "span-pointer" - } + "ptr.kind": "aws.dynamodb.item" + }, + "span_id": "XXXX", + "trace_id": "XXXX" } - ] + ], + "start": "XXXX", + "trace_id": "XXXX", + "type": "web" }, { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python311", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", + "function_trigger.event_source": "dynamodb", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python311", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python311", - "functionname": "integration-tests-python-XXXX-sync-metrics_python311", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX" + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python311", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -538,36 +561,38 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -576,9 +601,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -589,7 +613,8 @@ START "runtime:python3.11", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python311_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -597,118 +622,125 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "eventbridge.custom.event.sender", - "resource": "eventbridge.custom.event.sender", - "name": "aws.eventbridge", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.eventbridge", - "resource_names": "eventbridge.custom.event.sender", - "span.kind": "server", - "detail_type": "testdetail", - "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "detail_type": "testdetail", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "operation_name": "aws.eventbridge", + "peer.service": "integration-tests-python", + "resource_names": "eventbridge.custom.event.sender", + "runtime-id": "XXXX", + "span.kind": "server" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.eventbridge", "parent_id": "XXXX", + "resource": "eventbridge.custom.event.sender", + "service": "eventbridge.custom.event.sender", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python311", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", + "function_trigger.event_source": "eventbridge", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python311", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python311", - "functionname": "integration-tests-python-XXXX-sync-metrics_python311", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "eventbridge" + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python311", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -719,36 +751,38 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -757,9 +791,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -770,7 +803,8 @@ START "runtime:python3.11", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python311_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -778,133 +812,140 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "XXXX.execute-api.eu-west-1.amazonaws.com", - "resource": "GET /httpapi/get", - "name": "aws.httpapi", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "apiid": "XXXX", + "apiname": "XXXX", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/x02yirxc7a/stages/$default", "endpoint": "/httpapi/get", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.protocol": "HTTP/1.1", + "http.route": "/httpapi/get", "http.source_ip": "XXXX", - "http.useragent": "curl/7.64.1", - "resource_names": "GET /httpapi/get", - "request_id": "XXXX", - "apiid": "XXXX", - "apiname": "XXXX", - "stage": "$default", - "_inferred_span.synchronicity": "sync", - "_inferred_span.tag_source": "self", "http.status_code": "200", - "http.route": "/httpapi/get", - "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/x02yirxc7a/stages/$default", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.useragent": "curl/7.64.1", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "peer.service": "integration-tests-python", + "request_id": "XXXX", + "resource_names": "GET /httpapi/get", + "runtime-id": "XXXX", + "stage": "$default" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.httpapi", "parent_id": "XXXX", + "resource": "GET /httpapi/get", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python311", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python311", - "functionname": "integration-tests-python-XXXX-sync-metrics_python311", "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", - "span.name": "aws.lambda", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python311", "http.method": "GET", "http.route": "/httpapi/get", - "http.status_code": "200" + "http.status_code": "200", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python311", + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python311", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -915,36 +956,38 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -953,9 +996,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -966,7 +1008,8 @@ START "runtime:python3.11", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python311_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -974,126 +1017,133 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "EXAMPLE", - "resource": "EXAMPLE", - "name": "aws.kinesis", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.kinesis", - "resource_names": "EXAMPLE", - "span.kind": "server", - "streamname": "EXAMPLE", - "shardid": "shardId-XXXX", - "event_source_arn": "arn:aws:kinesis:EXAMPLE", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:kinesis:EXAMPLE", "event_id": "XXXX", "event_name": "aws:kinesis:record", + "event_source_arn": "arn:aws:kinesis:EXAMPLE", "event_version": "1.0", + "language": "python", + "operation_name": "aws.kinesis", "partition_key": "XXXX", - "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self", - "dd_resource_key": "arn:aws:kinesis:EXAMPLE", "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "resource_names": "EXAMPLE", + "runtime-id": "XXXX", + "shardid": "shardId-XXXX", + "span.kind": "server", + "streamname": "EXAMPLE" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.kinesis", "parent_id": "XXXX", + "resource": "EXAMPLE", + "service": "EXAMPLE", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python311", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", + "function_trigger.event_source": "kinesis", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python311", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python311", - "functionname": "integration-tests-python-XXXX-sync-metrics_python311", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX" + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python311", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1104,36 +1154,38 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1142,9 +1194,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -1155,7 +1206,8 @@ START "runtime:python3.11", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python311_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -1163,135 +1215,142 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "example-bucket", - "resource": "example-bucket", - "name": "aws.s3", "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.s3", - "resource_names": "example-bucket", - "span.kind": "server", - "event_name": "ObjectCreated:Put", - "bucketname": "example-bucket", - "bucket_arn": "arn:aws:s3:::example-bucket", - "object_key": "test/key", - "object_size": "1024", - "object_etag": "XXXX", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "bucket_arn": "arn:aws:s3:::example-bucket", + "bucketname": "example-bucket", "dd_resource_key": "arn:aws:s3:::example-bucket", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", + "event_name": "ObjectCreated:Put", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "object_etag": "XXXX", + "object_key": "test/key", + "object_size": "1024", + "operation_name": "aws.s3", + "peer.service": "integration-tests-python", + "resource_names": "example-bucket", + "runtime-id": "XXXX", + "span.kind": "server" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web", + "name": "aws.s3", + "parent_id": "XXXX", + "resource": "example-bucket", + "service": "example-bucket", + "span_id": "XXXX", "span_links": [ { - "trace_id": "XXXX", - "span_id": "XXXX", "attributes": { - "ptr.kind": "aws.s3.object", + "link.kind": "span-pointer", "ptr.dir": "u", "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", - "link.kind": "span-pointer" - } + "ptr.kind": "aws.s3.object" + }, + "span_id": "XXXX", + "trace_id": "XXXX" } - ] + ], + "trace_id": "XXXX", + "type": "web" }, { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python311", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", + "function_trigger.event_source": "s3", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python311", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python311", - "functionname": "integration-tests-python-XXXX-sync-metrics_python311", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX" + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python311", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1302,36 +1361,38 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1340,9 +1401,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -1353,7 +1413,8 @@ START "runtime:python3.11", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python311_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -1361,124 +1422,131 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "sns-lambda", - "resource": "sns-lambda", - "name": "aws.sns", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.sns", - "resource_names": "sns-lambda", - "span.kind": "server", - "topicname": "sns-lambda", - "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", - "message_id": "XXXX", - "type": "Notification", - "subject": "TestInvoke", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "dd_resource_key": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "message_id": "XXXX", + "operation_name": "aws.sns", + "peer.service": "integration-tests-python", + "resource_names": "sns-lambda", + "runtime-id": "XXXX", + "span.kind": "server", + "subject": "TestInvoke", + "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", + "topicname": "sns-lambda", + "type": "Notification" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.sns", "parent_id": "XXXX", + "resource": "sns-lambda", + "service": "sns-lambda", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python311", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", + "function_trigger.event_source": "sns", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python311", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python311", - "functionname": "integration-tests-python-XXXX-sync-metrics_python311", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX" + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python311", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1489,36 +1557,38 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1527,9 +1597,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -1540,7 +1609,8 @@ START "runtime:python3.11", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python311_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -1548,123 +1618,130 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "my-queue", - "resource": "my-queue", - "name": "aws.sqs", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.sqs", - "resource_names": "my-queue", - "span.kind": "server", - "queuename": "my-queue", - "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", - "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", - "sender_id": "AIDAIENQZJOLO23YVJ4VO", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "dd_resource_key": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", + "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "operation_name": "aws.sqs", + "peer.service": "integration-tests-python", + "queuename": "my-queue", + "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", + "resource_names": "my-queue", + "runtime-id": "XXXX", + "sender_id": "AIDAIENQZJOLO23YVJ4VO", + "span.kind": "server" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.sqs", "parent_id": "XXXX", + "resource": "my-queue", + "service": "my-queue", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python311", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", + "function_trigger.event_source": "sqs", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python311", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python311", - "functionname": "integration-tests-python-XXXX-sync-metrics_python311", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX" + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python311", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1675,36 +1752,38 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1713,9 +1792,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -1726,7 +1804,8 @@ START "runtime:python3.11", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python311_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -1734,131 +1813,138 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "XXXX.execute-api.eu-west-1.amazonaws.com", - "resource": "$default", - "name": "aws.apigateway.websocket", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.apigateway.websocket", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com$default", - "endpoint": "$default", - "resource_names": "$default", - "span.kind": "server", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", "apiid": "XXXX", "apiname": "XXXX", - "stage": "dev", - "request_id": "XXXX", "connection_id": "XXXX=", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/p62c47itsb/stages/dev", + "endpoint": "$default", "event_type": "MESSAGE", - "message_direction": "IN", - "_inferred_span.synchronicity": "sync", - "_inferred_span.tag_source": "self", "http.status_code": "200", - "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/p62c47itsb/stages/dev", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com$default", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "message_direction": "IN", + "operation_name": "aws.apigateway.websocket", + "peer.service": "integration-tests-python", + "request_id": "XXXX", + "resource_names": "$default", + "runtime-id": "XXXX", + "span.kind": "server", + "stage": "dev" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.apigateway.websocket", "parent_id": "XXXX", + "resource": "$default", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python311", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python311", - "functionname": "integration-tests-python-XXXX-sync-metrics_python311", "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", - "span.name": "aws.lambda", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python311", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python311", + "http.status_code": "200", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", - "http.status_code": "200" + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python311", + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python311", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1869,36 +1955,38 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] diff --git a/tests/integration/snapshots/logs/sync-metrics_python312.log b/tests/integration/snapshots/logs/sync-metrics_python312.log index 0ed8cb0f4..ba64c5f90 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python312.log +++ b/tests/integration/snapshots/logs/sync-metrics_python312.log @@ -1,9 +1,8 @@ INIT_START Runtime Version: python:3.12.vX Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -14,7 +13,8 @@ START "runtime:python3.12", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python312_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -22,132 +22,139 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "XXXX.execute-api.us-east-2.amazonaws.com", - "resource": "GET /", - "name": "aws.apigateway", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/", - "endpoint": "/", - "http.method": "GET", - "resource_names": "GET /", - "http.useragent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36", - "span.kind": "server", - "apiid": "XXXX", - "apiname": "XXXX", - "stage": "Prod", - "request_id": "XXXX", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", - "http.status_code": "200", - "http.route": "/", + "apiid": "XXXX", + "apiname": "XXXX", "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/70ixmpl4fl/stages/Prod", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", + "endpoint": "/", + "http.method": "GET", + "http.route": "/", + "http.status_code": "200", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/", + "http.useragent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "peer.service": "integration-tests-python", + "request_id": "XXXX", + "resource_names": "GET /", + "runtime-id": "XXXX", + "span.kind": "server", + "stage": "Prod" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.apigateway", "parent_id": "XXXX", + "resource": "GET /", + "service": "XXXX.execute-api.us-east-2.amazonaws.com", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python312", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "true", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python312", - "functionname": "integration-tests-python-XXXX-sync-metrics_python312", "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", - "span.name": "aws.lambda", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", + "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python312", "http.method": "GET", "http.route": "/", - "http.status_code": "200" + "http.status_code": "200", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python312", + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python312", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -158,36 +165,38 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -196,9 +205,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -209,7 +217,8 @@ START "runtime:python3.12", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python312_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -217,87 +226,92 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python312", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python312", "functionname": "integration-tests-python-XXXX-sync-metrics_python312", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python312", + "runtime-id": "XXXX", + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { - "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python312", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -308,36 +322,38 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -346,9 +362,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -359,16 +374,17 @@ START "runtime:python3.12", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python312_X.X.X" - ] + ], + "v": 1 } { - "m": "datadog.serverless.dynamodb.stream.type", - "v": 1, "e": XXXX, + "m": "datadog.serverless.dynamodb.stream.type", "t": [ "streamtype:NEW_AND_OLD_IMAGES", "dd_lambda_layer:datadog-python312_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -376,158 +392,165 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "ExampleTableWithStream", - "resource": "ExampleTableWithStream", - "name": "aws.dynamodb", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.dynamodb", - "resource_names": "ExampleTableWithStream", - "span.kind": "server", - "tablename": "ExampleTableWithStream", - "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", - "event_id": "XXXX", - "event_name": "INSERT", - "event_version": "1.1", - "stream_view_type": "NEW_AND_OLD_IMAGES", - "size_bytes": "26", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "dd_resource_key": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", + "event_id": "XXXX", + "event_name": "INSERT", + "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", + "event_version": "1.1", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "operation_name": "aws.dynamodb", + "peer.service": "integration-tests-python", + "resource_names": "ExampleTableWithStream", + "runtime-id": "XXXX", + "size_bytes": "26", + "span.kind": "server", + "stream_view_type": "NEW_AND_OLD_IMAGES", + "tablename": "ExampleTableWithStream" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web", + "name": "aws.dynamodb", + "parent_id": "XXXX", + "resource": "ExampleTableWithStream", + "service": "ExampleTableWithStream", + "span_id": "XXXX", "span_links": [ { - "trace_id": "XXXX", - "span_id": "XXXX", "attributes": { - "ptr.kind": "aws.dynamodb.item", + "link.kind": "span-pointer", "ptr.dir": "u", "ptr.hash": "e2af34d333891f765c7f02d2da80895e", - "link.kind": "span-pointer" - } + "ptr.kind": "aws.dynamodb.item" + }, + "span_id": "XXXX", + "trace_id": "XXXX" }, { - "trace_id": "XXXX", - "span_id": "XXXX", "attributes": { - "ptr.kind": "aws.dynamodb.item", + "link.kind": "span-pointer", "ptr.dir": "u", "ptr.hash": "e2af34d333891f765c7f02d2da80895e", - "link.kind": "span-pointer" - } + "ptr.kind": "aws.dynamodb.item" + }, + "span_id": "XXXX", + "trace_id": "XXXX" }, { - "trace_id": "XXXX", - "span_id": "XXXX", "attributes": { - "ptr.kind": "aws.dynamodb.item", + "link.kind": "span-pointer", "ptr.dir": "u", "ptr.hash": "e2af34d333891f765c7f02d2da80895e", - "link.kind": "span-pointer" - } + "ptr.kind": "aws.dynamodb.item" + }, + "span_id": "XXXX", + "trace_id": "XXXX" } - ] + ], + "start": "XXXX", + "trace_id": "XXXX", + "type": "web" }, { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python312", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", + "function_trigger.event_source": "dynamodb", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python312", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python312", - "functionname": "integration-tests-python-XXXX-sync-metrics_python312", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX" + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python312", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -538,36 +561,38 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -576,9 +601,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -589,7 +613,8 @@ START "runtime:python3.12", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python312_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -597,118 +622,125 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "eventbridge.custom.event.sender", - "resource": "eventbridge.custom.event.sender", - "name": "aws.eventbridge", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.eventbridge", - "resource_names": "eventbridge.custom.event.sender", - "span.kind": "server", - "detail_type": "testdetail", - "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "detail_type": "testdetail", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "operation_name": "aws.eventbridge", + "peer.service": "integration-tests-python", + "resource_names": "eventbridge.custom.event.sender", + "runtime-id": "XXXX", + "span.kind": "server" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.eventbridge", "parent_id": "XXXX", + "resource": "eventbridge.custom.event.sender", + "service": "eventbridge.custom.event.sender", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python312", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", + "function_trigger.event_source": "eventbridge", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python312", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python312", - "functionname": "integration-tests-python-XXXX-sync-metrics_python312", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "eventbridge" + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python312", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -719,36 +751,38 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -757,9 +791,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -770,7 +803,8 @@ START "runtime:python3.12", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python312_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -778,133 +812,140 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "XXXX.execute-api.eu-west-1.amazonaws.com", - "resource": "GET /httpapi/get", - "name": "aws.httpapi", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "apiid": "XXXX", + "apiname": "XXXX", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/x02yirxc7a/stages/$default", "endpoint": "/httpapi/get", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.protocol": "HTTP/1.1", + "http.route": "/httpapi/get", "http.source_ip": "XXXX", - "http.useragent": "curl/7.64.1", - "resource_names": "GET /httpapi/get", - "request_id": "XXXX", - "apiid": "XXXX", - "apiname": "XXXX", - "stage": "$default", - "_inferred_span.synchronicity": "sync", - "_inferred_span.tag_source": "self", "http.status_code": "200", - "http.route": "/httpapi/get", - "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/x02yirxc7a/stages/$default", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.useragent": "curl/7.64.1", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "peer.service": "integration-tests-python", + "request_id": "XXXX", + "resource_names": "GET /httpapi/get", + "runtime-id": "XXXX", + "stage": "$default" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.httpapi", "parent_id": "XXXX", + "resource": "GET /httpapi/get", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python312", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python312", - "functionname": "integration-tests-python-XXXX-sync-metrics_python312", "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", - "span.name": "aws.lambda", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python312", "http.method": "GET", "http.route": "/httpapi/get", - "http.status_code": "200" + "http.status_code": "200", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python312", + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python312", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -915,36 +956,38 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -953,9 +996,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -966,7 +1008,8 @@ START "runtime:python3.12", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python312_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -974,126 +1017,133 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "EXAMPLE", - "resource": "EXAMPLE", - "name": "aws.kinesis", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.kinesis", - "resource_names": "EXAMPLE", - "span.kind": "server", - "streamname": "EXAMPLE", - "shardid": "shardId-XXXX", - "event_source_arn": "arn:aws:kinesis:EXAMPLE", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:kinesis:EXAMPLE", "event_id": "XXXX", "event_name": "aws:kinesis:record", + "event_source_arn": "arn:aws:kinesis:EXAMPLE", "event_version": "1.0", + "language": "python", + "operation_name": "aws.kinesis", "partition_key": "XXXX", - "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self", - "dd_resource_key": "arn:aws:kinesis:EXAMPLE", "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "resource_names": "EXAMPLE", + "runtime-id": "XXXX", + "shardid": "shardId-XXXX", + "span.kind": "server", + "streamname": "EXAMPLE" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.kinesis", "parent_id": "XXXX", + "resource": "EXAMPLE", + "service": "EXAMPLE", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python312", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", + "function_trigger.event_source": "kinesis", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python312", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python312", - "functionname": "integration-tests-python-XXXX-sync-metrics_python312", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX" + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python312", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1104,36 +1154,38 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1142,9 +1194,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -1155,7 +1206,8 @@ START "runtime:python3.12", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python312_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -1163,135 +1215,142 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "example-bucket", - "resource": "example-bucket", - "name": "aws.s3", "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.s3", - "resource_names": "example-bucket", - "span.kind": "server", - "event_name": "ObjectCreated:Put", - "bucketname": "example-bucket", - "bucket_arn": "arn:aws:s3:::example-bucket", - "object_key": "test/key", - "object_size": "1024", - "object_etag": "XXXX", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "bucket_arn": "arn:aws:s3:::example-bucket", + "bucketname": "example-bucket", "dd_resource_key": "arn:aws:s3:::example-bucket", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", + "event_name": "ObjectCreated:Put", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "object_etag": "XXXX", + "object_key": "test/key", + "object_size": "1024", + "operation_name": "aws.s3", + "peer.service": "integration-tests-python", + "resource_names": "example-bucket", + "runtime-id": "XXXX", + "span.kind": "server" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web", + "name": "aws.s3", + "parent_id": "XXXX", + "resource": "example-bucket", + "service": "example-bucket", + "span_id": "XXXX", "span_links": [ { - "trace_id": "XXXX", - "span_id": "XXXX", "attributes": { - "ptr.kind": "aws.s3.object", + "link.kind": "span-pointer", "ptr.dir": "u", "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", - "link.kind": "span-pointer" - } + "ptr.kind": "aws.s3.object" + }, + "span_id": "XXXX", + "trace_id": "XXXX" } - ] + ], + "trace_id": "XXXX", + "type": "web" }, { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python312", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", + "function_trigger.event_source": "s3", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python312", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python312", - "functionname": "integration-tests-python-XXXX-sync-metrics_python312", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX" + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python312", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1302,36 +1361,38 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1340,9 +1401,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -1353,7 +1413,8 @@ START "runtime:python3.12", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python312_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -1361,124 +1422,131 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "sns-lambda", - "resource": "sns-lambda", - "name": "aws.sns", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.sns", - "resource_names": "sns-lambda", - "span.kind": "server", - "topicname": "sns-lambda", - "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", - "message_id": "XXXX", - "type": "Notification", - "subject": "TestInvoke", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "dd_resource_key": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "message_id": "XXXX", + "operation_name": "aws.sns", + "peer.service": "integration-tests-python", + "resource_names": "sns-lambda", + "runtime-id": "XXXX", + "span.kind": "server", + "subject": "TestInvoke", + "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", + "topicname": "sns-lambda", + "type": "Notification" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.sns", "parent_id": "XXXX", + "resource": "sns-lambda", + "service": "sns-lambda", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python312", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", + "function_trigger.event_source": "sns", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python312", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python312", - "functionname": "integration-tests-python-XXXX-sync-metrics_python312", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX" + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python312", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1489,36 +1557,38 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1527,9 +1597,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -1540,7 +1609,8 @@ START "runtime:python3.12", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python312_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -1548,123 +1618,130 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "my-queue", - "resource": "my-queue", - "name": "aws.sqs", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.sqs", - "resource_names": "my-queue", - "span.kind": "server", - "queuename": "my-queue", - "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", - "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", - "sender_id": "AIDAIENQZJOLO23YVJ4VO", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "dd_resource_key": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", + "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "operation_name": "aws.sqs", + "peer.service": "integration-tests-python", + "queuename": "my-queue", + "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", + "resource_names": "my-queue", + "runtime-id": "XXXX", + "sender_id": "AIDAIENQZJOLO23YVJ4VO", + "span.kind": "server" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.sqs", "parent_id": "XXXX", + "resource": "my-queue", + "service": "my-queue", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python312", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", + "function_trigger.event_source": "sqs", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python312", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python312", - "functionname": "integration-tests-python-XXXX-sync-metrics_python312", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX" + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python312", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1675,36 +1752,38 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1713,9 +1792,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -1726,7 +1804,8 @@ START "runtime:python3.12", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python312_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -1734,131 +1813,138 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "XXXX.execute-api.eu-west-1.amazonaws.com", - "resource": "$default", - "name": "aws.apigateway.websocket", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.apigateway.websocket", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com$default", - "endpoint": "$default", - "resource_names": "$default", - "span.kind": "server", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", "apiid": "XXXX", "apiname": "XXXX", - "stage": "dev", - "request_id": "XXXX", "connection_id": "XXXX=", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/p62c47itsb/stages/dev", + "endpoint": "$default", "event_type": "MESSAGE", - "message_direction": "IN", - "_inferred_span.synchronicity": "sync", - "_inferred_span.tag_source": "self", "http.status_code": "200", - "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/p62c47itsb/stages/dev", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com$default", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "message_direction": "IN", + "operation_name": "aws.apigateway.websocket", + "peer.service": "integration-tests-python", + "request_id": "XXXX", + "resource_names": "$default", + "runtime-id": "XXXX", + "span.kind": "server", + "stage": "dev" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.apigateway.websocket", "parent_id": "XXXX", + "resource": "$default", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python312", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python312", - "functionname": "integration-tests-python-XXXX-sync-metrics_python312", "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", - "span.name": "aws.lambda", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python312", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python312", + "http.status_code": "200", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", - "http.status_code": "200" + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python312", + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python312", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1869,36 +1955,38 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] diff --git a/tests/integration/snapshots/logs/sync-metrics_python313.log b/tests/integration/snapshots/logs/sync-metrics_python313.log index fca4631cd..86c817aea 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python313.log +++ b/tests/integration/snapshots/logs/sync-metrics_python313.log @@ -1,9 +1,8 @@ INIT_START Runtime Version: python:3.13.vX Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -14,7 +13,8 @@ START "runtime:python3.13", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python313_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -22,132 +22,139 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "XXXX.execute-api.us-east-2.amazonaws.com", - "resource": "GET /", - "name": "aws.apigateway", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/", - "endpoint": "/", - "http.method": "GET", - "resource_names": "GET /", - "http.useragent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36", - "span.kind": "server", - "apiid": "XXXX", - "apiname": "XXXX", - "stage": "Prod", - "request_id": "XXXX", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", - "http.status_code": "200", - "http.route": "/", + "apiid": "XXXX", + "apiname": "XXXX", "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/70ixmpl4fl/stages/Prod", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", + "endpoint": "/", + "http.method": "GET", + "http.route": "/", + "http.status_code": "200", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/", + "http.useragent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "peer.service": "integration-tests-python", + "request_id": "XXXX", + "resource_names": "GET /", + "runtime-id": "XXXX", + "span.kind": "server", + "stage": "Prod" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.apigateway", "parent_id": "XXXX", + "resource": "GET /", + "service": "XXXX.execute-api.us-east-2.amazonaws.com", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python313", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "true", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python313", - "functionname": "integration-tests-python-XXXX-sync-metrics_python313", "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", - "span.name": "aws.lambda", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", + "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python313", "http.method": "GET", "http.route": "/", - "http.status_code": "200" + "http.status_code": "200", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python313", + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python313", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -158,36 +165,38 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -196,9 +205,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -209,7 +217,8 @@ START "runtime:python3.13", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python313_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -217,87 +226,92 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python313", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python313", "functionname": "integration-tests-python-XXXX-sync-metrics_python313", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python313", + "runtime-id": "XXXX", + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { - "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python313", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -308,36 +322,38 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -346,9 +362,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -359,16 +374,17 @@ START "runtime:python3.13", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python313_X.X.X" - ] + ], + "v": 1 } { - "m": "datadog.serverless.dynamodb.stream.type", - "v": 1, "e": XXXX, + "m": "datadog.serverless.dynamodb.stream.type", "t": [ "streamtype:NEW_AND_OLD_IMAGES", "dd_lambda_layer:datadog-python313_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -376,158 +392,165 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "ExampleTableWithStream", - "resource": "ExampleTableWithStream", - "name": "aws.dynamodb", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.dynamodb", - "resource_names": "ExampleTableWithStream", - "span.kind": "server", - "tablename": "ExampleTableWithStream", - "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", - "event_id": "XXXX", - "event_name": "INSERT", - "event_version": "1.1", - "stream_view_type": "NEW_AND_OLD_IMAGES", - "size_bytes": "26", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "dd_resource_key": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", + "event_id": "XXXX", + "event_name": "INSERT", + "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", + "event_version": "1.1", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "operation_name": "aws.dynamodb", + "peer.service": "integration-tests-python", + "resource_names": "ExampleTableWithStream", + "runtime-id": "XXXX", + "size_bytes": "26", + "span.kind": "server", + "stream_view_type": "NEW_AND_OLD_IMAGES", + "tablename": "ExampleTableWithStream" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web", + "name": "aws.dynamodb", + "parent_id": "XXXX", + "resource": "ExampleTableWithStream", + "service": "ExampleTableWithStream", + "span_id": "XXXX", "span_links": [ { - "trace_id": "XXXX", - "span_id": "XXXX", "attributes": { - "ptr.kind": "aws.dynamodb.item", + "link.kind": "span-pointer", "ptr.dir": "u", "ptr.hash": "e2af34d333891f765c7f02d2da80895e", - "link.kind": "span-pointer" - } + "ptr.kind": "aws.dynamodb.item" + }, + "span_id": "XXXX", + "trace_id": "XXXX" }, { - "trace_id": "XXXX", - "span_id": "XXXX", "attributes": { - "ptr.kind": "aws.dynamodb.item", + "link.kind": "span-pointer", "ptr.dir": "u", "ptr.hash": "e2af34d333891f765c7f02d2da80895e", - "link.kind": "span-pointer" - } + "ptr.kind": "aws.dynamodb.item" + }, + "span_id": "XXXX", + "trace_id": "XXXX" }, { - "trace_id": "XXXX", - "span_id": "XXXX", "attributes": { - "ptr.kind": "aws.dynamodb.item", + "link.kind": "span-pointer", "ptr.dir": "u", "ptr.hash": "e2af34d333891f765c7f02d2da80895e", - "link.kind": "span-pointer" - } + "ptr.kind": "aws.dynamodb.item" + }, + "span_id": "XXXX", + "trace_id": "XXXX" } - ] + ], + "start": "XXXX", + "trace_id": "XXXX", + "type": "web" }, { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python313", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", + "function_trigger.event_source": "dynamodb", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python313", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python313", - "functionname": "integration-tests-python-XXXX-sync-metrics_python313", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX" + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python313", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -538,36 +561,38 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -576,9 +601,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -589,7 +613,8 @@ START "runtime:python3.13", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python313_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -597,118 +622,125 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "eventbridge.custom.event.sender", - "resource": "eventbridge.custom.event.sender", - "name": "aws.eventbridge", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.eventbridge", - "resource_names": "eventbridge.custom.event.sender", - "span.kind": "server", - "detail_type": "testdetail", - "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "detail_type": "testdetail", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "operation_name": "aws.eventbridge", + "peer.service": "integration-tests-python", + "resource_names": "eventbridge.custom.event.sender", + "runtime-id": "XXXX", + "span.kind": "server" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.eventbridge", "parent_id": "XXXX", + "resource": "eventbridge.custom.event.sender", + "service": "eventbridge.custom.event.sender", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python313", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", + "function_trigger.event_source": "eventbridge", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python313", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python313", - "functionname": "integration-tests-python-XXXX-sync-metrics_python313", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "eventbridge" + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python313", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -719,36 +751,38 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -757,9 +791,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -770,7 +803,8 @@ START "runtime:python3.13", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python313_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -778,133 +812,140 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "XXXX.execute-api.eu-west-1.amazonaws.com", - "resource": "GET /httpapi/get", - "name": "aws.httpapi", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "apiid": "XXXX", + "apiname": "XXXX", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/x02yirxc7a/stages/$default", "endpoint": "/httpapi/get", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.protocol": "HTTP/1.1", + "http.route": "/httpapi/get", "http.source_ip": "XXXX", - "http.useragent": "curl/7.64.1", - "resource_names": "GET /httpapi/get", - "request_id": "XXXX", - "apiid": "XXXX", - "apiname": "XXXX", - "stage": "$default", - "_inferred_span.synchronicity": "sync", - "_inferred_span.tag_source": "self", "http.status_code": "200", - "http.route": "/httpapi/get", - "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/x02yirxc7a/stages/$default", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.useragent": "curl/7.64.1", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "peer.service": "integration-tests-python", + "request_id": "XXXX", + "resource_names": "GET /httpapi/get", + "runtime-id": "XXXX", + "stage": "$default" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.httpapi", "parent_id": "XXXX", + "resource": "GET /httpapi/get", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python313", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python313", - "functionname": "integration-tests-python-XXXX-sync-metrics_python313", "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", - "span.name": "aws.lambda", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python313", "http.method": "GET", "http.route": "/httpapi/get", - "http.status_code": "200" + "http.status_code": "200", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python313", + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python313", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -915,36 +956,38 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -953,9 +996,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -966,7 +1008,8 @@ START "runtime:python3.13", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python313_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -974,126 +1017,133 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "EXAMPLE", - "resource": "EXAMPLE", - "name": "aws.kinesis", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.kinesis", - "resource_names": "EXAMPLE", - "span.kind": "server", - "streamname": "EXAMPLE", - "shardid": "shardId-XXXX", - "event_source_arn": "arn:aws:kinesis:EXAMPLE", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:kinesis:EXAMPLE", "event_id": "XXXX", "event_name": "aws:kinesis:record", + "event_source_arn": "arn:aws:kinesis:EXAMPLE", "event_version": "1.0", + "language": "python", + "operation_name": "aws.kinesis", "partition_key": "XXXX", - "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self", - "dd_resource_key": "arn:aws:kinesis:EXAMPLE", "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "resource_names": "EXAMPLE", + "runtime-id": "XXXX", + "shardid": "shardId-XXXX", + "span.kind": "server", + "streamname": "EXAMPLE" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.kinesis", "parent_id": "XXXX", + "resource": "EXAMPLE", + "service": "EXAMPLE", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python313", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", + "function_trigger.event_source": "kinesis", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python313", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python313", - "functionname": "integration-tests-python-XXXX-sync-metrics_python313", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX" + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python313", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1104,36 +1154,38 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1142,9 +1194,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -1155,7 +1206,8 @@ START "runtime:python3.13", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python313_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -1163,135 +1215,142 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "example-bucket", - "resource": "example-bucket", - "name": "aws.s3", "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.s3", - "resource_names": "example-bucket", - "span.kind": "server", - "event_name": "ObjectCreated:Put", - "bucketname": "example-bucket", - "bucket_arn": "arn:aws:s3:::example-bucket", - "object_key": "test/key", - "object_size": "1024", - "object_etag": "XXXX", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "bucket_arn": "arn:aws:s3:::example-bucket", + "bucketname": "example-bucket", "dd_resource_key": "arn:aws:s3:::example-bucket", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", + "event_name": "ObjectCreated:Put", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "object_etag": "XXXX", + "object_key": "test/key", + "object_size": "1024", + "operation_name": "aws.s3", + "peer.service": "integration-tests-python", + "resource_names": "example-bucket", + "runtime-id": "XXXX", + "span.kind": "server" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web", + "name": "aws.s3", + "parent_id": "XXXX", + "resource": "example-bucket", + "service": "example-bucket", + "span_id": "XXXX", "span_links": [ { - "trace_id": "XXXX", - "span_id": "XXXX", "attributes": { - "ptr.kind": "aws.s3.object", + "link.kind": "span-pointer", "ptr.dir": "u", "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", - "link.kind": "span-pointer" - } + "ptr.kind": "aws.s3.object" + }, + "span_id": "XXXX", + "trace_id": "XXXX" } - ] + ], + "trace_id": "XXXX", + "type": "web" }, { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python313", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", + "function_trigger.event_source": "s3", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python313", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python313", - "functionname": "integration-tests-python-XXXX-sync-metrics_python313", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX" + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python313", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1302,36 +1361,38 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1340,9 +1401,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -1353,7 +1413,8 @@ START "runtime:python3.13", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python313_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -1361,124 +1422,131 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "sns-lambda", - "resource": "sns-lambda", - "name": "aws.sns", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.sns", - "resource_names": "sns-lambda", - "span.kind": "server", - "topicname": "sns-lambda", - "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", - "message_id": "XXXX", - "type": "Notification", - "subject": "TestInvoke", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "dd_resource_key": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "message_id": "XXXX", + "operation_name": "aws.sns", + "peer.service": "integration-tests-python", + "resource_names": "sns-lambda", + "runtime-id": "XXXX", + "span.kind": "server", + "subject": "TestInvoke", + "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", + "topicname": "sns-lambda", + "type": "Notification" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.sns", "parent_id": "XXXX", + "resource": "sns-lambda", + "service": "sns-lambda", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python313", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", + "function_trigger.event_source": "sns", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python313", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python313", - "functionname": "integration-tests-python-XXXX-sync-metrics_python313", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX" + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python313", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1489,36 +1557,38 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1527,9 +1597,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -1540,7 +1609,8 @@ START "runtime:python3.13", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python313_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -1548,123 +1618,130 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "my-queue", - "resource": "my-queue", - "name": "aws.sqs", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.sqs", - "resource_names": "my-queue", - "span.kind": "server", - "queuename": "my-queue", - "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", - "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", - "sender_id": "AIDAIENQZJOLO23YVJ4VO", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "dd_resource_key": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", + "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "operation_name": "aws.sqs", + "peer.service": "integration-tests-python", + "queuename": "my-queue", + "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", + "resource_names": "my-queue", + "runtime-id": "XXXX", + "sender_id": "AIDAIENQZJOLO23YVJ4VO", + "span.kind": "server" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.sqs", "parent_id": "XXXX", + "resource": "my-queue", + "service": "my-queue", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python313", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", + "function_trigger.event_source": "sqs", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python313", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python313", - "functionname": "integration-tests-python-XXXX-sync-metrics_python313", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX" + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python313", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1675,36 +1752,38 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1713,9 +1792,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -1726,7 +1804,8 @@ START "runtime:python3.13", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python313_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -1734,131 +1813,138 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "XXXX.execute-api.eu-west-1.amazonaws.com", - "resource": "$default", - "name": "aws.apigateway.websocket", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.apigateway.websocket", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com$default", - "endpoint": "$default", - "resource_names": "$default", - "span.kind": "server", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", "apiid": "XXXX", "apiname": "XXXX", - "stage": "dev", - "request_id": "XXXX", "connection_id": "XXXX=", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/p62c47itsb/stages/dev", + "endpoint": "$default", "event_type": "MESSAGE", - "message_direction": "IN", - "_inferred_span.synchronicity": "sync", - "_inferred_span.tag_source": "self", "http.status_code": "200", - "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/p62c47itsb/stages/dev", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com$default", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "message_direction": "IN", + "operation_name": "aws.apigateway.websocket", + "peer.service": "integration-tests-python", + "request_id": "XXXX", + "resource_names": "$default", + "runtime-id": "XXXX", + "span.kind": "server", + "stage": "dev" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.apigateway.websocket", "parent_id": "XXXX", + "resource": "$default", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python313", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python313", - "functionname": "integration-tests-python-XXXX-sync-metrics_python313", "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", - "span.name": "aws.lambda", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python313", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python313", + "http.status_code": "200", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", - "http.status_code": "200" + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python313", + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python313", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1869,36 +1955,38 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] diff --git a/tests/integration/snapshots/logs/sync-metrics_python314.log b/tests/integration/snapshots/logs/sync-metrics_python314.log index 8b6eb8f06..c1398b0c8 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python314.log +++ b/tests/integration/snapshots/logs/sync-metrics_python314.log @@ -1,9 +1,8 @@ INIT_START Runtime Version: python:3.14.vX Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -14,7 +13,8 @@ START "runtime:python3.14", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python314_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -22,132 +22,139 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "XXXX.execute-api.us-east-2.amazonaws.com", - "resource": "GET /", - "name": "aws.apigateway", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/", - "endpoint": "/", - "http.method": "GET", - "resource_names": "GET /", - "http.useragent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36", - "span.kind": "server", - "apiid": "XXXX", - "apiname": "XXXX", - "stage": "Prod", - "request_id": "XXXX", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", - "http.status_code": "200", - "http.route": "/", + "apiid": "XXXX", + "apiname": "XXXX", "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/70ixmpl4fl/stages/Prod", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", + "endpoint": "/", + "http.method": "GET", + "http.route": "/", + "http.status_code": "200", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/", + "http.useragent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "peer.service": "integration-tests-python", + "request_id": "XXXX", + "resource_names": "GET /", + "runtime-id": "XXXX", + "span.kind": "server", + "stage": "Prod" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.apigateway", "parent_id": "XXXX", + "resource": "GET /", + "service": "XXXX.execute-api.us-east-2.amazonaws.com", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python314", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "true", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python314", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python314", - "functionname": "integration-tests-python-XXXX-sync-metrics_python314", "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", - "span.name": "aws.lambda", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python314", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", + "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python314", "http.method": "GET", "http.route": "/", - "http.status_code": "200" + "http.status_code": "200", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python314", + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python314", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -158,36 +165,38 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -196,9 +205,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -209,7 +217,8 @@ START "runtime:python3.14", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python314_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -217,87 +226,92 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python314", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python314", "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python314", "functionname": "integration-tests-python-XXXX-sync-metrics_python314", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python314", + "runtime-id": "XXXX", + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { - "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python314", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -308,36 +322,38 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -346,9 +362,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -359,16 +374,17 @@ START "runtime:python3.14", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python314_X.X.X" - ] + ], + "v": 1 } { - "m": "datadog.serverless.dynamodb.stream.type", - "v": 1, "e": XXXX, + "m": "datadog.serverless.dynamodb.stream.type", "t": [ "streamtype:NEW_AND_OLD_IMAGES", "dd_lambda_layer:datadog-python314_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -376,158 +392,165 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "ExampleTableWithStream", - "resource": "ExampleTableWithStream", - "name": "aws.dynamodb", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.dynamodb", - "resource_names": "ExampleTableWithStream", - "span.kind": "server", - "tablename": "ExampleTableWithStream", - "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", - "event_id": "XXXX", - "event_name": "INSERT", - "event_version": "1.1", - "stream_view_type": "NEW_AND_OLD_IMAGES", - "size_bytes": "26", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "dd_resource_key": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", + "event_id": "XXXX", + "event_name": "INSERT", + "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", + "event_version": "1.1", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "operation_name": "aws.dynamodb", + "peer.service": "integration-tests-python", + "resource_names": "ExampleTableWithStream", + "runtime-id": "XXXX", + "size_bytes": "26", + "span.kind": "server", + "stream_view_type": "NEW_AND_OLD_IMAGES", + "tablename": "ExampleTableWithStream" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web", + "name": "aws.dynamodb", + "parent_id": "XXXX", + "resource": "ExampleTableWithStream", + "service": "ExampleTableWithStream", + "span_id": "XXXX", "span_links": [ { - "trace_id": "XXXX", - "span_id": "XXXX", "attributes": { - "ptr.kind": "aws.dynamodb.item", + "link.kind": "span-pointer", "ptr.dir": "u", "ptr.hash": "e2af34d333891f765c7f02d2da80895e", - "link.kind": "span-pointer" - } + "ptr.kind": "aws.dynamodb.item" + }, + "span_id": "XXXX", + "trace_id": "XXXX" }, { - "trace_id": "XXXX", - "span_id": "XXXX", "attributes": { - "ptr.kind": "aws.dynamodb.item", + "link.kind": "span-pointer", "ptr.dir": "u", "ptr.hash": "e2af34d333891f765c7f02d2da80895e", - "link.kind": "span-pointer" - } + "ptr.kind": "aws.dynamodb.item" + }, + "span_id": "XXXX", + "trace_id": "XXXX" }, { - "trace_id": "XXXX", - "span_id": "XXXX", "attributes": { - "ptr.kind": "aws.dynamodb.item", + "link.kind": "span-pointer", "ptr.dir": "u", "ptr.hash": "e2af34d333891f765c7f02d2da80895e", - "link.kind": "span-pointer" - } + "ptr.kind": "aws.dynamodb.item" + }, + "span_id": "XXXX", + "trace_id": "XXXX" } - ] + ], + "start": "XXXX", + "trace_id": "XXXX", + "type": "web" }, { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python314", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python314", + "function_trigger.event_source": "dynamodb", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python314", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python314", - "functionname": "integration-tests-python-XXXX-sync-metrics_python314", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX" + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python314", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -538,36 +561,38 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -576,9 +601,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -589,7 +613,8 @@ START "runtime:python3.14", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python314_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -597,118 +622,125 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "eventbridge.custom.event.sender", - "resource": "eventbridge.custom.event.sender", - "name": "aws.eventbridge", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.eventbridge", - "resource_names": "eventbridge.custom.event.sender", - "span.kind": "server", - "detail_type": "testdetail", - "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", "_dd.p.dm": "-0", "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "detail_type": "testdetail", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "operation_name": "aws.eventbridge", + "peer.service": "integration-tests-python", + "resource_names": "eventbridge.custom.event.sender", + "runtime-id": "XXXX", + "span.kind": "server" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.eventbridge", "parent_id": "XXXX", + "resource": "eventbridge.custom.event.sender", + "service": "eventbridge.custom.event.sender", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python314", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python314", + "function_trigger.event_source": "eventbridge", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python314", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python314", - "functionname": "integration-tests-python-XXXX-sync-metrics_python314", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "eventbridge" + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python314", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -719,36 +751,38 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -757,9 +791,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -770,7 +803,8 @@ START "runtime:python3.14", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python314_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -778,133 +812,140 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "XXXX.execute-api.eu-west-1.amazonaws.com", - "resource": "GET /httpapi/get", - "name": "aws.httpapi", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "apiid": "XXXX", + "apiname": "XXXX", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/x02yirxc7a/stages/$default", "endpoint": "/httpapi/get", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.protocol": "HTTP/1.1", + "http.route": "/httpapi/get", "http.source_ip": "XXXX", - "http.useragent": "curl/7.64.1", - "resource_names": "GET /httpapi/get", - "request_id": "XXXX", - "apiid": "XXXX", - "apiname": "XXXX", - "stage": "$default", - "_inferred_span.synchronicity": "sync", - "_inferred_span.tag_source": "self", "http.status_code": "200", - "http.route": "/httpapi/get", - "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/x02yirxc7a/stages/$default", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.useragent": "curl/7.64.1", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "peer.service": "integration-tests-python", + "request_id": "XXXX", + "resource_names": "GET /httpapi/get", + "runtime-id": "XXXX", + "stage": "$default" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.httpapi", "parent_id": "XXXX", + "resource": "GET /httpapi/get", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python314", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python314", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python314", - "functionname": "integration-tests-python-XXXX-sync-metrics_python314", "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", - "span.name": "aws.lambda", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python314", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python314", "http.method": "GET", "http.route": "/httpapi/get", - "http.status_code": "200" + "http.status_code": "200", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python314", + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python314", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -915,36 +956,38 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -953,9 +996,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -966,7 +1008,8 @@ START "runtime:python3.14", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python314_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -974,126 +1017,133 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "EXAMPLE", - "resource": "EXAMPLE", - "name": "aws.kinesis", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.kinesis", - "resource_names": "EXAMPLE", - "span.kind": "server", - "streamname": "EXAMPLE", - "shardid": "shardId-XXXX", - "event_source_arn": "arn:aws:kinesis:EXAMPLE", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:kinesis:EXAMPLE", "event_id": "XXXX", "event_name": "aws:kinesis:record", + "event_source_arn": "arn:aws:kinesis:EXAMPLE", "event_version": "1.0", + "language": "python", + "operation_name": "aws.kinesis", "partition_key": "XXXX", - "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self", - "dd_resource_key": "arn:aws:kinesis:EXAMPLE", "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "resource_names": "EXAMPLE", + "runtime-id": "XXXX", + "shardid": "shardId-XXXX", + "span.kind": "server", + "streamname": "EXAMPLE" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.kinesis", "parent_id": "XXXX", + "resource": "EXAMPLE", + "service": "EXAMPLE", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python314", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python314", + "function_trigger.event_source": "kinesis", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python314", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python314", - "functionname": "integration-tests-python-XXXX-sync-metrics_python314", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX" + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python314", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1104,36 +1154,38 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1142,9 +1194,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -1155,7 +1206,8 @@ START "runtime:python3.14", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python314_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -1163,135 +1215,142 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "example-bucket", - "resource": "example-bucket", - "name": "aws.s3", "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.s3", - "resource_names": "example-bucket", - "span.kind": "server", - "event_name": "ObjectCreated:Put", - "bucketname": "example-bucket", - "bucket_arn": "arn:aws:s3:::example-bucket", - "object_key": "test/key", - "object_size": "1024", - "object_etag": "XXXX", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "bucket_arn": "arn:aws:s3:::example-bucket", + "bucketname": "example-bucket", "dd_resource_key": "arn:aws:s3:::example-bucket", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", + "event_name": "ObjectCreated:Put", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "object_etag": "XXXX", + "object_key": "test/key", + "object_size": "1024", + "operation_name": "aws.s3", + "peer.service": "integration-tests-python", + "resource_names": "example-bucket", + "runtime-id": "XXXX", + "span.kind": "server" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web", + "name": "aws.s3", + "parent_id": "XXXX", + "resource": "example-bucket", + "service": "example-bucket", + "span_id": "XXXX", "span_links": [ { - "trace_id": "XXXX", - "span_id": "XXXX", "attributes": { - "ptr.kind": "aws.s3.object", + "link.kind": "span-pointer", "ptr.dir": "u", "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", - "link.kind": "span-pointer" - } + "ptr.kind": "aws.s3.object" + }, + "span_id": "XXXX", + "trace_id": "XXXX" } - ] + ], + "trace_id": "XXXX", + "type": "web" }, { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python314", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python314", + "function_trigger.event_source": "s3", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python314", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python314", - "functionname": "integration-tests-python-XXXX-sync-metrics_python314", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX" + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python314", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1302,36 +1361,38 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1340,9 +1401,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -1353,7 +1413,8 @@ START "runtime:python3.14", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python314_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -1361,124 +1422,131 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "sns-lambda", - "resource": "sns-lambda", - "name": "aws.sns", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.sns", - "resource_names": "sns-lambda", - "span.kind": "server", - "topicname": "sns-lambda", - "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", - "message_id": "XXXX", - "type": "Notification", - "subject": "TestInvoke", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "dd_resource_key": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "message_id": "XXXX", + "operation_name": "aws.sns", + "peer.service": "integration-tests-python", + "resource_names": "sns-lambda", + "runtime-id": "XXXX", + "span.kind": "server", + "subject": "TestInvoke", + "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", + "topicname": "sns-lambda", + "type": "Notification" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.sns", "parent_id": "XXXX", + "resource": "sns-lambda", + "service": "sns-lambda", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python314", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python314", + "function_trigger.event_source": "sns", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python314", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python314", - "functionname": "integration-tests-python-XXXX-sync-metrics_python314", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX" + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python314", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1489,36 +1557,38 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1527,9 +1597,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -1540,7 +1609,8 @@ START "runtime:python3.14", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python314_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -1548,123 +1618,130 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "my-queue", - "resource": "my-queue", - "name": "aws.sqs", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.sqs", - "resource_names": "my-queue", - "span.kind": "server", - "queuename": "my-queue", - "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", - "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", - "sender_id": "AIDAIENQZJOLO23YVJ4VO", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "dd_resource_key": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", + "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "operation_name": "aws.sqs", + "peer.service": "integration-tests-python", + "queuename": "my-queue", + "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", + "resource_names": "my-queue", + "runtime-id": "XXXX", + "sender_id": "AIDAIENQZJOLO23YVJ4VO", + "span.kind": "server" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.sqs", "parent_id": "XXXX", + "resource": "my-queue", + "service": "my-queue", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python314", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python314", + "function_trigger.event_source": "sqs", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python314", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python314", - "functionname": "integration-tests-python-XXXX-sync-metrics_python314", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", - "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX" + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python314", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1675,36 +1752,38 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1713,9 +1792,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -1726,7 +1804,8 @@ START "runtime:python3.14", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python314_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zstd","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -1734,131 +1813,138 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate, zs "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "XXXX.execute-api.eu-west-1.amazonaws.com", - "resource": "$default", - "name": "aws.apigateway.websocket", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", - "operation_name": "aws.apigateway.websocket", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com$default", - "endpoint": "$default", - "resource_names": "$default", - "span.kind": "server", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_dd.svc_src": "m", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", "apiid": "XXXX", "apiname": "XXXX", - "stage": "dev", - "request_id": "XXXX", "connection_id": "XXXX=", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/p62c47itsb/stages/dev", + "endpoint": "$default", "event_type": "MESSAGE", - "message_direction": "IN", - "_inferred_span.synchronicity": "sync", - "_inferred_span.tag_source": "self", "http.status_code": "200", - "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/p62c47itsb/stages/dev", - "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com$default", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "message_direction": "IN", + "operation_name": "aws.apigateway.websocket", + "peer.service": "integration-tests-python", + "request_id": "XXXX", + "resource_names": "$default", + "runtime-id": "XXXX", + "span.kind": "server", + "stage": "dev" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.apigateway.websocket", "parent_id": "XXXX", + "resource": "$default", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python314", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", - "span.kind": "server", + "_dd.svc_src": "m", "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python314", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python314", - "functionname": "integration-tests-python-XXXX-sync-metrics_python314", "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", - "span.name": "aws.lambda", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python314", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python314", + "http.status_code": "200", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", - "http.status_code": "200" + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python314", + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python314", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1869,36 +1955,38 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", + "_dd.base_service": "integration-tests-python", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.svc_src": "requests", + "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", "language": "python", - "_dd.tags.process": "entrypoint.basedir:runtime,entrypoint.name:bootstrap,entrypoint.type:script,entrypoint.workdir:task,svc.user:true" + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] diff --git a/tests/integration/snapshots/logs/sync-metrics_python38.log b/tests/integration/snapshots/logs/sync-metrics_python38.log index 322961263..1293ded9b 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python38.log +++ b/tests/integration/snapshots/logs/sync-metrics_python38.log @@ -1,9 +1,8 @@ INIT_START Runtime Version: python:3.8.vX Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -14,7 +13,8 @@ START "runtime:python3.8", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python38_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -22,131 +22,131 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "XXXX.execute-api.us-east-2.amazonaws.com", - "resource": "GET /", - "name": "aws.apigateway", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", - "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/", - "endpoint": "/", - "http.method": "GET", - "resource_names": "GET /", - "http.useragent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36", - "span.kind": "server", - "apiid": "XXXX", - "apiname": "XXXX", - "stage": "Prod", - "request_id": "XXXX", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", - "http.status_code": "200", - "http.route": "/", + "apiid": "XXXX", + "apiname": "XXXX", "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/70ixmpl4fl/stages/Prod", + "endpoint": "/", + "http.method": "GET", + "http.route": "/", + "http.status_code": "200", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/", + "http.useragent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36", + "language": "python", "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" + "request_id": "XXXX", + "resource_names": "GET /", + "runtime-id": "XXXX", + "span.kind": "server", + "stage": "Prod" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.apigateway", "parent_id": "XXXX", + "resource": "GET /", + "service": "XXXX.execute-api.us-east-2.amazonaws.com", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python38", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "cold_start": "true", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python38", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python38", - "functionname": "integration-tests-python-XXXX-sync-metrics_python38", "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", - "span.name": "aws.lambda", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python38", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "span.kind": "server", - "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", + "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python38", "http.method": "GET", "http.route": "/", - "http.status_code": "200" + "http.status_code": "200", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python38", + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python38", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -157,35 +157,35 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -194,9 +194,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -207,7 +206,8 @@ START "runtime:python3.8", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python38_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -215,86 +215,86 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python38", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python38", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python38", + "language": "python", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python38", - "functionname": "integration-tests-python-XXXX-sync-metrics_python38", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", + "runtime-id": "XXXX", "span.kind": "server", - "language": "python" + "span.name": "aws.lambda" }, "metrics": { - "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python38", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -305,35 +305,35 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -342,9 +342,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -355,16 +354,17 @@ START "runtime:python3.8", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python38_X.X.X" - ] + ], + "v": 1 } { - "m": "datadog.serverless.dynamodb.stream.type", - "v": 1, "e": XXXX, + "m": "datadog.serverless.dynamodb.stream.type", "t": [ "streamtype:NEW_AND_OLD_IMAGES", "dd_lambda_layer:datadog-python38_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -372,157 +372,157 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "ExampleTableWithStream", - "resource": "ExampleTableWithStream", - "name": "aws.dynamodb", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", - "operation_name": "aws.dynamodb", - "resource_names": "ExampleTableWithStream", - "span.kind": "server", - "tablename": "ExampleTableWithStream", - "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", - "event_id": "XXXX", - "event_name": "INSERT", - "event_version": "1.1", - "stream_view_type": "NEW_AND_OLD_IMAGES", - "size_bytes": "26", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "dd_resource_key": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", + "event_id": "XXXX", + "event_name": "INSERT", + "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", + "event_version": "1.1", + "language": "python", + "operation_name": "aws.dynamodb", "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" + "resource_names": "ExampleTableWithStream", + "runtime-id": "XXXX", + "size_bytes": "26", + "span.kind": "server", + "stream_view_type": "NEW_AND_OLD_IMAGES", + "tablename": "ExampleTableWithStream" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web", + "name": "aws.dynamodb", + "parent_id": "XXXX", + "resource": "ExampleTableWithStream", + "service": "ExampleTableWithStream", + "span_id": "XXXX", "span_links": [ { - "trace_id": "XXXX", - "span_id": "XXXX", "attributes": { - "ptr.kind": "aws.dynamodb.item", + "link.kind": "span-pointer", "ptr.dir": "u", "ptr.hash": "e2af34d333891f765c7f02d2da80895e", - "link.kind": "span-pointer" - } + "ptr.kind": "aws.dynamodb.item" + }, + "span_id": "XXXX", + "trace_id": "XXXX" }, { - "trace_id": "XXXX", - "span_id": "XXXX", "attributes": { - "ptr.kind": "aws.dynamodb.item", + "link.kind": "span-pointer", "ptr.dir": "u", "ptr.hash": "e2af34d333891f765c7f02d2da80895e", - "link.kind": "span-pointer" - } + "ptr.kind": "aws.dynamodb.item" + }, + "span_id": "XXXX", + "trace_id": "XXXX" }, { - "trace_id": "XXXX", - "span_id": "XXXX", "attributes": { - "ptr.kind": "aws.dynamodb.item", + "link.kind": "span-pointer", "ptr.dir": "u", "ptr.hash": "e2af34d333891f765c7f02d2da80895e", - "link.kind": "span-pointer" - } + "ptr.kind": "aws.dynamodb.item" + }, + "span_id": "XXXX", + "trace_id": "XXXX" } - ] + ], + "start": "XXXX", + "trace_id": "XXXX", + "type": "web" }, { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python38", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python38", + "function_trigger.event_source": "dynamodb", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python38", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python38", - "functionname": "integration-tests-python-XXXX-sync-metrics_python38", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", "span.kind": "server", - "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX" + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python38", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -533,35 +533,35 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -570,9 +570,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -583,7 +582,8 @@ START "runtime:python3.8", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python38_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -591,117 +591,117 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "eventbridge.custom.event.sender", - "resource": "eventbridge.custom.event.sender", - "name": "aws.eventbridge", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", - "operation_name": "aws.eventbridge", - "resource_names": "eventbridge.custom.event.sender", - "span.kind": "server", - "detail_type": "testdetail", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "detail_type": "testdetail", + "language": "python", + "operation_name": "aws.eventbridge", "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" + "resource_names": "eventbridge.custom.event.sender", + "runtime-id": "XXXX", + "span.kind": "server" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.eventbridge", "parent_id": "XXXX", + "resource": "eventbridge.custom.event.sender", + "service": "eventbridge.custom.event.sender", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python38", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python38", + "function_trigger.event_source": "eventbridge", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python38", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python38", - "functionname": "integration-tests-python-XXXX-sync-metrics_python38", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", "span.kind": "server", - "function_trigger.event_source": "eventbridge" + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python38", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -712,35 +712,35 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -749,9 +749,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -762,7 +761,8 @@ START "runtime:python3.8", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python38_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -770,132 +770,132 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "XXXX.execute-api.eu-west-1.amazonaws.com", - "resource": "GET /httpapi/get", - "name": "aws.httpapi", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", - "endpoint": "/httpapi/get", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "apiid": "XXXX", + "apiname": "XXXX", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/x02yirxc7a/stages/$default", + "endpoint": "/httpapi/get", "http.method": "GET", "http.protocol": "HTTP/1.1", + "http.route": "/httpapi/get", "http.source_ip": "XXXX", - "http.useragent": "curl/7.64.1", - "resource_names": "GET /httpapi/get", - "request_id": "XXXX", - "apiid": "XXXX", - "apiname": "XXXX", - "stage": "$default", - "_inferred_span.synchronicity": "sync", - "_inferred_span.tag_source": "self", "http.status_code": "200", - "http.route": "/httpapi/get", - "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/x02yirxc7a/stages/$default", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.useragent": "curl/7.64.1", + "language": "python", "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" + "request_id": "XXXX", + "resource_names": "GET /httpapi/get", + "runtime-id": "XXXX", + "stage": "$default" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.httpapi", "parent_id": "XXXX", + "resource": "GET /httpapi/get", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python38", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python38", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python38", - "functionname": "integration-tests-python-XXXX-sync-metrics_python38", "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", - "span.name": "aws.lambda", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python38", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "span.kind": "server", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python38", "http.method": "GET", "http.route": "/httpapi/get", - "http.status_code": "200" + "http.status_code": "200", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python38", + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python38", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -906,35 +906,35 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -943,9 +943,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -956,7 +955,8 @@ START "runtime:python3.8", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python38_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -964,125 +964,125 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "EXAMPLE", - "resource": "EXAMPLE", - "name": "aws.kinesis", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", - "operation_name": "aws.kinesis", - "resource_names": "EXAMPLE", - "span.kind": "server", - "streamname": "EXAMPLE", - "shardid": "shardId-XXXX", - "event_source_arn": "arn:aws:kinesis:EXAMPLE", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:kinesis:EXAMPLE", "event_id": "XXXX", "event_name": "aws:kinesis:record", + "event_source_arn": "arn:aws:kinesis:EXAMPLE", "event_version": "1.0", + "language": "python", + "operation_name": "aws.kinesis", "partition_key": "XXXX", - "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self", - "dd_resource_key": "arn:aws:kinesis:EXAMPLE", "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" + "resource_names": "EXAMPLE", + "runtime-id": "XXXX", + "shardid": "shardId-XXXX", + "span.kind": "server", + "streamname": "EXAMPLE" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.kinesis", "parent_id": "XXXX", + "resource": "EXAMPLE", + "service": "EXAMPLE", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python38", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python38", + "function_trigger.event_source": "kinesis", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python38", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python38", - "functionname": "integration-tests-python-XXXX-sync-metrics_python38", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", "span.kind": "server", - "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX" + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python38", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1093,35 +1093,35 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1130,9 +1130,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -1143,7 +1142,8 @@ START "runtime:python3.8", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python38_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -1151,134 +1151,134 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "example-bucket", - "resource": "example-bucket", - "name": "aws.s3", "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", - "operation_name": "aws.s3", - "resource_names": "example-bucket", - "span.kind": "server", - "event_name": "ObjectCreated:Put", - "bucketname": "example-bucket", - "bucket_arn": "arn:aws:s3:::example-bucket", - "object_key": "test/key", - "object_size": "1024", - "object_etag": "XXXX", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "bucket_arn": "arn:aws:s3:::example-bucket", + "bucketname": "example-bucket", "dd_resource_key": "arn:aws:s3:::example-bucket", + "event_name": "ObjectCreated:Put", + "language": "python", + "object_etag": "XXXX", + "object_key": "test/key", + "object_size": "1024", + "operation_name": "aws.s3", "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" + "resource_names": "example-bucket", + "runtime-id": "XXXX", + "span.kind": "server" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web", + "name": "aws.s3", + "parent_id": "XXXX", + "resource": "example-bucket", + "service": "example-bucket", + "span_id": "XXXX", "span_links": [ { - "trace_id": "XXXX", - "span_id": "XXXX", "attributes": { - "ptr.kind": "aws.s3.object", + "link.kind": "span-pointer", "ptr.dir": "u", "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", - "link.kind": "span-pointer" - } + "ptr.kind": "aws.s3.object" + }, + "span_id": "XXXX", + "trace_id": "XXXX" } - ] + ], + "trace_id": "XXXX", + "type": "web" }, { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python38", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python38", + "function_trigger.event_source": "s3", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python38", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python38", - "functionname": "integration-tests-python-XXXX-sync-metrics_python38", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", "span.kind": "server", - "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX" + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python38", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1289,35 +1289,35 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1326,9 +1326,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -1339,7 +1338,8 @@ START "runtime:python3.8", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python38_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -1347,123 +1347,123 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "sns-lambda", - "resource": "sns-lambda", - "name": "aws.sns", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", - "operation_name": "aws.sns", - "resource_names": "sns-lambda", - "span.kind": "server", - "topicname": "sns-lambda", - "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", - "message_id": "XXXX", - "type": "Notification", - "subject": "TestInvoke", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "dd_resource_key": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", + "language": "python", + "message_id": "XXXX", + "operation_name": "aws.sns", "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" + "resource_names": "sns-lambda", + "runtime-id": "XXXX", + "span.kind": "server", + "subject": "TestInvoke", + "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", + "topicname": "sns-lambda", + "type": "Notification" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.sns", "parent_id": "XXXX", + "resource": "sns-lambda", + "service": "sns-lambda", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python38", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python38", + "function_trigger.event_source": "sns", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python38", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python38", - "functionname": "integration-tests-python-XXXX-sync-metrics_python38", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", "span.kind": "server", - "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX" + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python38", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1474,35 +1474,35 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1511,9 +1511,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -1524,7 +1523,8 @@ START "runtime:python3.8", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python38_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -1532,122 +1532,122 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "my-queue", - "resource": "my-queue", - "name": "aws.sqs", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", - "operation_name": "aws.sqs", - "resource_names": "my-queue", - "span.kind": "server", - "queuename": "my-queue", - "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", - "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", - "sender_id": "AIDAIENQZJOLO23YVJ4VO", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "dd_resource_key": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", + "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", + "language": "python", + "operation_name": "aws.sqs", "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" + "queuename": "my-queue", + "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", + "resource_names": "my-queue", + "runtime-id": "XXXX", + "sender_id": "AIDAIENQZJOLO23YVJ4VO", + "span.kind": "server" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.sqs", "parent_id": "XXXX", + "resource": "my-queue", + "service": "my-queue", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python38", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python38", + "function_trigger.event_source": "sqs", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python38", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python38", - "functionname": "integration-tests-python-XXXX-sync-metrics_python38", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", "span.kind": "server", - "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX" + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python38", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1658,35 +1658,35 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1695,9 +1695,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -1708,7 +1707,8 @@ START "runtime:python3.8", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python38_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -1716,130 +1716,130 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "XXXX.execute-api.eu-west-1.amazonaws.com", - "resource": "$default", - "name": "aws.apigateway.websocket", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", - "operation_name": "aws.apigateway.websocket", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com$default", - "endpoint": "$default", - "resource_names": "$default", - "span.kind": "server", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", "apiid": "XXXX", "apiname": "XXXX", - "stage": "dev", - "request_id": "XXXX", "connection_id": "XXXX=", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/p62c47itsb/stages/dev", + "endpoint": "$default", "event_type": "MESSAGE", - "message_direction": "IN", - "_inferred_span.synchronicity": "sync", - "_inferred_span.tag_source": "self", "http.status_code": "200", - "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/p62c47itsb/stages/dev", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com$default", + "language": "python", + "message_direction": "IN", + "operation_name": "aws.apigateway.websocket", "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" + "request_id": "XXXX", + "resource_names": "$default", + "runtime-id": "XXXX", + "span.kind": "server", + "stage": "dev" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.apigateway.websocket", "parent_id": "XXXX", + "resource": "$default", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python38", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python38", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python38", - "functionname": "integration-tests-python-XXXX-sync-metrics_python38", "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", - "span.name": "aws.lambda", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python38", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "span.kind": "server", + "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python38", + "http.status_code": "200", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", - "http.status_code": "200" + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python38", + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python38", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1850,35 +1850,35 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] diff --git a/tests/integration/snapshots/logs/sync-metrics_python39.log b/tests/integration/snapshots/logs/sync-metrics_python39.log index 1c1496d32..507eeda04 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -1,9 +1,8 @@ INIT_START Runtime Version: python:3.9.vX Runtime Version ARN: arn:aws:lambda:eu-west-1:XXXX:eu-west-1 START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -14,7 +13,8 @@ START "runtime:python3.9", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python39_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -22,131 +22,131 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "XXXX.execute-api.us-east-2.amazonaws.com", - "resource": "GET /", - "name": "aws.apigateway", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", - "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/", - "endpoint": "/", - "http.method": "GET", - "resource_names": "GET /", - "http.useragent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36", - "span.kind": "server", - "apiid": "XXXX", - "apiname": "XXXX", - "stage": "Prod", - "request_id": "XXXX", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", "_inferred_span.synchronicity": "sync", "_inferred_span.tag_source": "self", - "http.status_code": "200", - "http.route": "/", + "apiid": "XXXX", + "apiname": "XXXX", "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/70ixmpl4fl/stages/Prod", + "endpoint": "/", + "http.method": "GET", + "http.route": "/", + "http.status_code": "200", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/", + "http.useragent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36", + "language": "python", "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" + "request_id": "XXXX", + "resource_names": "GET /", + "runtime-id": "XXXX", + "span.kind": "server", + "stage": "Prod" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.apigateway", "parent_id": "XXXX", + "resource": "GET /", + "service": "XXXX.execute-api.us-east-2.amazonaws.com", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python39", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "cold_start": "true", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python39", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python39", - "functionname": "integration-tests-python-XXXX-sync-metrics_python39", "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", - "span.name": "aws.lambda", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python39", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "span.kind": "server", - "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", + "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python39", "http.method": "GET", "http.route": "/", - "http.status_code": "200" + "http.status_code": "200", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python39", + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python39", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -157,35 +157,35 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -194,9 +194,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -207,7 +206,8 @@ START "runtime:python3.9", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python39_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -215,86 +215,86 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python39", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python39", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python39", + "language": "python", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python39", - "functionname": "integration-tests-python-XXXX-sync-metrics_python39", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", + "runtime-id": "XXXX", "span.kind": "server", - "language": "python" + "span.name": "aws.lambda" }, "metrics": { - "process_id": XXXX, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python39", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -305,35 +305,35 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -342,9 +342,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -355,16 +354,17 @@ START "runtime:python3.9", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python39_X.X.X" - ] + ], + "v": 1 } { - "m": "datadog.serverless.dynamodb.stream.type", - "v": 1, "e": XXXX, + "m": "datadog.serverless.dynamodb.stream.type", "t": [ "streamtype:NEW_AND_OLD_IMAGES", "dd_lambda_layer:datadog-python39_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -372,157 +372,157 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "ExampleTableWithStream", - "resource": "ExampleTableWithStream", - "name": "aws.dynamodb", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", - "operation_name": "aws.dynamodb", - "resource_names": "ExampleTableWithStream", - "span.kind": "server", - "tablename": "ExampleTableWithStream", - "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", - "event_id": "XXXX", - "event_name": "INSERT", - "event_version": "1.1", - "stream_view_type": "NEW_AND_OLD_IMAGES", - "size_bytes": "26", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "dd_resource_key": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", + "event_id": "XXXX", + "event_name": "INSERT", + "event_source_arn": "arn:aws:dynamodb:us-east-1:XXXX:us-east-1/ExampleTableWithStream/stream/2015-06-27T00:48:05.899", + "event_version": "1.1", + "language": "python", + "operation_name": "aws.dynamodb", "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" + "resource_names": "ExampleTableWithStream", + "runtime-id": "XXXX", + "size_bytes": "26", + "span.kind": "server", + "stream_view_type": "NEW_AND_OLD_IMAGES", + "tablename": "ExampleTableWithStream" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web", + "name": "aws.dynamodb", + "parent_id": "XXXX", + "resource": "ExampleTableWithStream", + "service": "ExampleTableWithStream", + "span_id": "XXXX", "span_links": [ { - "trace_id": "XXXX", - "span_id": "XXXX", "attributes": { - "ptr.kind": "aws.dynamodb.item", + "link.kind": "span-pointer", "ptr.dir": "u", "ptr.hash": "e2af34d333891f765c7f02d2da80895e", - "link.kind": "span-pointer" - } + "ptr.kind": "aws.dynamodb.item" + }, + "span_id": "XXXX", + "trace_id": "XXXX" }, { - "trace_id": "XXXX", - "span_id": "XXXX", "attributes": { - "ptr.kind": "aws.dynamodb.item", + "link.kind": "span-pointer", "ptr.dir": "u", "ptr.hash": "e2af34d333891f765c7f02d2da80895e", - "link.kind": "span-pointer" - } + "ptr.kind": "aws.dynamodb.item" + }, + "span_id": "XXXX", + "trace_id": "XXXX" }, { - "trace_id": "XXXX", - "span_id": "XXXX", "attributes": { - "ptr.kind": "aws.dynamodb.item", + "link.kind": "span-pointer", "ptr.dir": "u", "ptr.hash": "e2af34d333891f765c7f02d2da80895e", - "link.kind": "span-pointer" - } + "ptr.kind": "aws.dynamodb.item" + }, + "span_id": "XXXX", + "trace_id": "XXXX" } - ] + ], + "start": "XXXX", + "trace_id": "XXXX", + "type": "web" }, { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python39", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python39", + "function_trigger.event_source": "dynamodb", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python39", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python39", - "functionname": "integration-tests-python-XXXX-sync-metrics_python39", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", "span.kind": "server", - "function_trigger.event_source": "dynamodb", - "function_trigger.event_source_arn": "XXXX" + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python39", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -533,35 +533,35 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -570,9 +570,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -583,7 +582,8 @@ START "runtime:python3.9", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python39_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -591,117 +591,117 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "eventbridge.custom.event.sender", - "resource": "eventbridge.custom.event.sender", - "name": "aws.eventbridge", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", - "operation_name": "aws.eventbridge", - "resource_names": "eventbridge.custom.event.sender", - "span.kind": "server", - "detail_type": "testdetail", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "detail_type": "testdetail", + "language": "python", + "operation_name": "aws.eventbridge", "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" + "resource_names": "eventbridge.custom.event.sender", + "runtime-id": "XXXX", + "span.kind": "server" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.eventbridge", "parent_id": "XXXX", + "resource": "eventbridge.custom.event.sender", + "service": "eventbridge.custom.event.sender", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python39", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python39", + "function_trigger.event_source": "eventbridge", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python39", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python39", - "functionname": "integration-tests-python-XXXX-sync-metrics_python39", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", "span.kind": "server", - "function_trigger.event_source": "eventbridge" + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python39", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -712,35 +712,35 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -749,9 +749,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -762,7 +761,8 @@ START "runtime:python3.9", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python39_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -770,132 +770,132 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "XXXX.execute-api.eu-west-1.amazonaws.com", - "resource": "GET /httpapi/get", - "name": "aws.httpapi", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", - "endpoint": "/httpapi/get", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", + "apiid": "XXXX", + "apiname": "XXXX", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/x02yirxc7a/stages/$default", + "endpoint": "/httpapi/get", "http.method": "GET", "http.protocol": "HTTP/1.1", + "http.route": "/httpapi/get", "http.source_ip": "XXXX", - "http.useragent": "curl/7.64.1", - "resource_names": "GET /httpapi/get", - "request_id": "XXXX", - "apiid": "XXXX", - "apiname": "XXXX", - "stage": "$default", - "_inferred_span.synchronicity": "sync", - "_inferred_span.tag_source": "self", "http.status_code": "200", - "http.route": "/httpapi/get", - "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/x02yirxc7a/stages/$default", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "http.useragent": "curl/7.64.1", + "language": "python", "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" + "request_id": "XXXX", + "resource_names": "GET /httpapi/get", + "runtime-id": "XXXX", + "stage": "$default" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.httpapi", "parent_id": "XXXX", + "resource": "GET /httpapi/get", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python39", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python39", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python39", - "functionname": "integration-tests-python-XXXX-sync-metrics_python39", "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", - "span.name": "aws.lambda", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python39", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", - "span.kind": "server", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python39", "http.method": "GET", "http.route": "/httpapi/get", - "http.status_code": "200" + "http.status_code": "200", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python39", + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python39", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -906,35 +906,35 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -943,9 +943,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -956,7 +955,8 @@ START "runtime:python3.9", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python39_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -964,125 +964,125 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "EXAMPLE", - "resource": "EXAMPLE", - "name": "aws.kinesis", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", - "operation_name": "aws.kinesis", - "resource_names": "EXAMPLE", - "span.kind": "server", - "streamname": "EXAMPLE", - "shardid": "shardId-XXXX", - "event_source_arn": "arn:aws:kinesis:EXAMPLE", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_inferred_span.synchronicity": "async", + "_inferred_span.tag_source": "self", + "dd_resource_key": "arn:aws:kinesis:EXAMPLE", "event_id": "XXXX", "event_name": "aws:kinesis:record", + "event_source_arn": "arn:aws:kinesis:EXAMPLE", "event_version": "1.0", + "language": "python", + "operation_name": "aws.kinesis", "partition_key": "XXXX", - "_inferred_span.synchronicity": "async", - "_inferred_span.tag_source": "self", - "dd_resource_key": "arn:aws:kinesis:EXAMPLE", "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" + "resource_names": "EXAMPLE", + "runtime-id": "XXXX", + "shardid": "shardId-XXXX", + "span.kind": "server", + "streamname": "EXAMPLE" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.kinesis", "parent_id": "XXXX", + "resource": "EXAMPLE", + "service": "EXAMPLE", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python39", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python39", + "function_trigger.event_source": "kinesis", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python39", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python39", - "functionname": "integration-tests-python-XXXX-sync-metrics_python39", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", "span.kind": "server", - "function_trigger.event_source": "kinesis", - "function_trigger.event_source_arn": "XXXX" + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python39", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1093,35 +1093,35 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1130,9 +1130,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -1143,7 +1142,8 @@ START "runtime:python3.9", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python39_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -1151,134 +1151,134 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "example-bucket", - "resource": "example-bucket", - "name": "aws.s3", "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", - "operation_name": "aws.s3", - "resource_names": "example-bucket", - "span.kind": "server", - "event_name": "ObjectCreated:Put", - "bucketname": "example-bucket", - "bucket_arn": "arn:aws:s3:::example-bucket", - "object_key": "test/key", - "object_size": "1024", - "object_etag": "XXXX", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", + "bucket_arn": "arn:aws:s3:::example-bucket", + "bucketname": "example-bucket", "dd_resource_key": "arn:aws:s3:::example-bucket", + "event_name": "ObjectCreated:Put", + "language": "python", + "object_etag": "XXXX", + "object_key": "test/key", + "object_size": "1024", + "operation_name": "aws.s3", "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" + "resource_names": "example-bucket", + "runtime-id": "XXXX", + "span.kind": "server" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web", + "name": "aws.s3", + "parent_id": "XXXX", + "resource": "example-bucket", + "service": "example-bucket", + "span_id": "XXXX", "span_links": [ { - "trace_id": "XXXX", - "span_id": "XXXX", "attributes": { - "ptr.kind": "aws.s3.object", + "link.kind": "span-pointer", "ptr.dir": "u", "ptr.hash": "1dc3e5d00dae48c1f07d95371a747788", - "link.kind": "span-pointer" - } + "ptr.kind": "aws.s3.object" + }, + "span_id": "XXXX", + "trace_id": "XXXX" } - ] + ], + "trace_id": "XXXX", + "type": "web" }, { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python39", - "name": "aws.lambda", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python39", + "function_trigger.event_source": "s3", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python39", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python39", - "functionname": "integration-tests-python-XXXX-sync-metrics_python39", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", "span.kind": "server", - "function_trigger.event_source": "s3", - "function_trigger.event_source_arn": "XXXX" + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python39", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1289,35 +1289,35 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1326,9 +1326,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -1339,7 +1338,8 @@ START "runtime:python3.9", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python39_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -1347,123 +1347,123 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "sns-lambda", - "resource": "sns-lambda", - "name": "aws.sns", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", - "operation_name": "aws.sns", - "resource_names": "sns-lambda", - "span.kind": "server", - "topicname": "sns-lambda", - "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", - "message_id": "XXXX", - "type": "Notification", - "subject": "TestInvoke", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "dd_resource_key": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", + "language": "python", + "message_id": "XXXX", + "operation_name": "aws.sns", "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" + "resource_names": "sns-lambda", + "runtime-id": "XXXX", + "span.kind": "server", + "subject": "TestInvoke", + "topic_arn": "arn:aws:sns:us-east-2:XXXX:us-east-2-lambda", + "topicname": "sns-lambda", + "type": "Notification" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.sns", "parent_id": "XXXX", + "resource": "sns-lambda", + "service": "sns-lambda", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python39", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python39", + "function_trigger.event_source": "sns", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python39", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python39", - "functionname": "integration-tests-python-XXXX-sync-metrics_python39", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", "span.kind": "server", - "function_trigger.event_source": "sns", - "function_trigger.event_source_arn": "XXXX" + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python39", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1474,35 +1474,35 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1511,9 +1511,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -1524,7 +1523,8 @@ START "runtime:python3.9", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python39_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -1532,122 +1532,122 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "my-queue", - "resource": "my-queue", - "name": "aws.sqs", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", - "operation_name": "aws.sqs", - "resource_names": "my-queue", - "span.kind": "server", - "queuename": "my-queue", - "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", - "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", - "sender_id": "AIDAIENQZJOLO23YVJ4VO", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", "_inferred_span.synchronicity": "async", "_inferred_span.tag_source": "self", "dd_resource_key": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", + "event_source_arn": "arn:aws:sqs:us-east-2:XXXX:us-east-2-queue", + "language": "python", + "operation_name": "aws.sqs", "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" + "queuename": "my-queue", + "receipt_handle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", + "resource_names": "my-queue", + "runtime-id": "XXXX", + "sender_id": "AIDAIENQZJOLO23YVJ4VO", + "span.kind": "server" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.sqs", "parent_id": "XXXX", + "resource": "my-queue", + "service": "my-queue", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python39", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "cold_start": "false", + "datadog_lambda": "X.X.X", + "dd_trace": "X.X.X", "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python39", + "function_trigger.event_source": "sqs", + "function_trigger.event_source_arn": "XXXX", "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python39", "request_id": "XXXX", "resource_names": "integration-tests-python-XXXX-sync-metrics_python39", - "functionname": "integration-tests-python-XXXX-sync-metrics_python39", - "datadog_lambda": "X.X.X", - "dd_trace": "X.X.X", - "span.name": "aws.lambda", "span.kind": "server", - "function_trigger.event_source": "sqs", - "function_trigger.event_source_arn": "XXXX" + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python39", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1658,35 +1658,35 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1695,9 +1695,8 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept END Duration: XXXX ms Memory Used: XXXX MB START { - "m": "aws.lambda.enhanced.invocations", - "v": 1, "e": XXXX, + "m": "aws.lambda.enhanced.invocations", "t": [ "region:eu-west-1", "account_id:XXXX", @@ -1708,7 +1707,8 @@ START "runtime:python3.9", "datadog_lambda:vXX", "dd_lambda_layer:datadog-python39_X.X.X" - ] + ], + "v": 1 } HTTP GET https://datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","Accept:*/*","Connection:keep-alive","User-Agent:python-requests/X.X.X","traceparent:XXX","tracestate:XXX @@ -1716,130 +1716,130 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "XXXX.execute-api.eu-west-1.amazonaws.com", - "resource": "$default", - "name": "aws.apigateway.websocket", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", - "operation_name": "aws.apigateway.websocket", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com$default", - "endpoint": "$default", - "resource_names": "$default", - "span.kind": "server", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", + "_dd.peer.service.source": "peer.service", + "_inferred_span.synchronicity": "sync", + "_inferred_span.tag_source": "self", "apiid": "XXXX", "apiname": "XXXX", - "stage": "dev", - "request_id": "XXXX", "connection_id": "XXXX=", + "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/p62c47itsb/stages/dev", + "endpoint": "$default", "event_type": "MESSAGE", - "message_direction": "IN", - "_inferred_span.synchronicity": "sync", - "_inferred_span.tag_source": "self", "http.status_code": "200", - "dd_resource_key": "arn:aws:apigateway:eu-west-1:XXXX:eu-west-1/restapis/p62c47itsb/stages/dev", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com$default", + "language": "python", + "message_direction": "IN", + "operation_name": "aws.apigateway.websocket", "peer.service": "integration-tests-python", - "_dd.peer.service.source": "peer.service", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" + "request_id": "XXXX", + "resource_names": "$default", + "runtime-id": "XXXX", + "span.kind": "server", + "stage": "dev" }, "metrics": { - "process_id": XXXX, "_dd._inferred_span": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, - "type": "web" - }, - { - "trace_id": "XXXX", + "name": "aws.apigateway.websocket", "parent_id": "XXXX", + "resource": "$default", + "service": "XXXX.execute-api.eu-west-1.amazonaws.com", "span_id": "XXXX", - "service": "integration-tests-python", - "resource": "integration-tests-python-XXXX-sync-metrics_python39", - "name": "aws.lambda", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "web" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "cold_start": "false", - "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python39", - "function_version": "$LATEST", - "request_id": "XXXX", - "resource_names": "integration-tests-python-XXXX-sync-metrics_python39", - "functionname": "integration-tests-python-XXXX-sync-metrics_python39", "datadog_lambda": "X.X.X", "dd_trace": "X.X.X", - "span.name": "aws.lambda", + "function_arn": "arn:aws:lambda:eu-west-1:XXXX:eu-west-1-tests-python-XXXX-sync-metrics_python39", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", - "span.kind": "server", + "function_version": "$LATEST", + "functionname": "integration-tests-python-XXXX-sync-metrics_python39", + "http.status_code": "200", "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", - "http.status_code": "200" + "request_id": "XXXX", + "resource_names": "integration-tests-python-XXXX-sync-metrics_python39", + "span.kind": "server", + "span.name": "aws.lambda" }, "metrics": { "_dd.top_level": 1 }, - "type": "serverless" - }, - { - "trace_id": "XXXX", + "name": "aws.lambda", "parent_id": "XXXX", + "resource": "integration-tests-python-XXXX-sync-metrics_python39", + "service": "integration-tests-python", "span_id": "XXXX", - "service": "requests", - "resource": "GET /", - "name": "requests.request", - "error": 0, "start": "XXXX", + "trace_id": "XXXX", + "type": "serverless" + }, + { "duration": "XXXX", + "error": 0, "meta": { "_dd.origin": "lambda", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1, "_dd.top_level": 1 }, - "type": "http" - }, - { - "trace_id": "XXXX", + "name": "requests.request", "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", "resource": "GET /", - "name": "requests.request", - "error": 0, + "service": "requests", + "span_id": "XXXX", "start": "XXXX", + "trace_id": "XXXX", + "type": "http" + }, + { "duration": "XXXX", + "error": 0, "meta": { - "_dd.p.tid": "XXXX", "_dd.origin": "lambda", + "_dd.p.tid": "XXXX", "component": "requests", - "span.kind": "client", "http.method": "GET", + "http.status_code": "200", "http.url": "https://www.datadoghq.com/", + "http.useragent": "python-requests/X.X.X", "out.host": "www.datadoghq.com", - "http.status_code": "200", - "http.useragent": "python-requests/X.X.X" + "span.kind": "client" }, "metrics": { "_dd.measured": 1 }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "GET /", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] @@ -1850,35 +1850,35 @@ HTTP POST https://api.datadoghq.com/api/v1/distribution_points Headers: ["Accept "traces": [ [ { - "trace_id": "XXXX", - "parent_id": "XXXX", - "span_id": "XXXX", - "service": "requests", - "resource": "POST /api/v1/distribution_points", - "name": "requests.request", - "error": 0, - "start": "XXXX", "duration": "XXXX", + "error": 0, "meta": { - "runtime-id": "XXXX", "_dd.origin": "lambda", + "_dd.p.dm": "-0", + "_dd.p.tid": "XXXX", "component": "requests", - "span.kind": "client", "http.method": "POST", - "http.url": "https://api.datadoghq.com/api/v1/distribution_points", - "out.host": "api.datadoghq.com", "http.status_code": "202", + "http.url": "https://api.datadoghq.com/api/v1/distribution_points", "http.useragent": "datadogpy/XX (python XX; os linux; arch XXXX)", - "_dd.p.dm": "-0", - "_dd.p.tid": "XXXX", - "language": "python" + "language": "python", + "out.host": "api.datadoghq.com", + "runtime-id": "XXXX", + "span.kind": "client" }, "metrics": { - "process_id": XXXX, "_dd.measured": 1, "_dd.top_level": 1, - "_sampling_priority_v1": 1 + "_sampling_priority_v1": 1, + "process_id": XXXX }, + "name": "requests.request", + "parent_id": "XXXX", + "resource": "POST /api/v1/distribution_points", + "service": "requests", + "span_id": "XXXX", + "start": "XXXX", + "trace_id": "XXXX", "type": "http" } ] diff --git a/tests/test_tracing.py b/tests/test_tracing.py index 3a3d9e895..986bc9e47 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -6,13 +6,14 @@ import pytest import os import unittest +from types import SimpleNamespace from unittest.mock import Mock, patch, call, ANY import ddtrace from ddtrace.trace import Context, tracer -from ddtrace._trace._span_pointer import _SpanPointer +from ddtrace._trace.span import Span from ddtrace._trace._span_pointer import _SpanPointerDirection from ddtrace._trace._span_pointer import _SpanPointerDescription @@ -1053,6 +1054,26 @@ def test_set_correlation_ids_handle_empty_trace_context(self): self.assertIsNone(span) +def _expected_span_pointer_link( + pointer_kind, + pointer_direction, + pointer_hash, + extra_attributes=None, +): + extra_attributes = extra_attributes or {} + return SimpleNamespace( + trace_id=0, + span_id=0, + attributes={ + "ptr.kind": pointer_kind, + "ptr.dir": pointer_direction.value, + "ptr.hash": pointer_hash, + "link.kind": "span-pointer", + **extra_attributes, + }, + ) + + class TestFunctionSpanTags(unittest.TestCase): def test_function(self): ctx = get_mock_context() @@ -1070,7 +1091,10 @@ def test_function(self): self.assertEqual(span.get_tag("function_version"), "$LATEST") self.assertEqual(span.get_tag("resource_names"), "Function") self.assertEqual(span.get_tag("functionname"), "function") - self.assertEqual(span._links, []) + try: + self.assertEqual(Span._get_links(span), []) + except: + self.assertEqual(span._links, []) def test_function_with_version(self): function_version = "1" @@ -1151,23 +1175,29 @@ def test_function_with_span_pointers(self): ), ], ) - self.assertEqual( - span._links, - [ - _SpanPointer( - pointer_kind="some.kind", - pointer_direction=_SpanPointerDirection.UPSTREAM, - pointer_hash="some.hash", - extra_attributes={}, - ), - _SpanPointer( - pointer_kind="other.kind", - pointer_direction=_SpanPointerDirection.DOWNSTREAM, - pointer_hash="other.hash", - extra_attributes={"extra": "stuff"}, - ), - ], - ) + try: + actual_links = Span._get_links(span) + except: + actual_links = span._links + expected_links = [ + _expected_span_pointer_link( + "some.kind", + _SpanPointerDirection.UPSTREAM, + "some.hash", + {}, + ), + _expected_span_pointer_link( + "other.kind", + _SpanPointerDirection.DOWNSTREAM, + "other.hash", + {"extra": "stuff"}, + ), + ] + self.assertEqual(len(actual_links), len(expected_links)) + for actual, expected in zip(actual_links, expected_links): + self.assertEqual(actual.trace_id, expected.trace_id) + self.assertEqual(actual.span_id, expected.span_id) + self.assertEqual(actual.attributes, expected.attributes) class TestSetTraceRootSpan(unittest.TestCase): diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index b1aa1ae86..56c8e612d 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -26,7 +26,6 @@ def setUp(self): # Force @datadog_lambda_wrapper to always create a real # (not no-op) wrapper. patch("ddtrace.internal.remoteconfig.worker.RemoteConfigPoller").start() - patch("ddtrace.internal.writer.AgentWriter.flush_queue").start() wrapper.datadog_lambda_wrapper._force_wrap = True patcher = patch( From 0b818dd9e6c60caa6e5795e62361762678e7ba12 Mon Sep 17 00:00:00 2001 From: Rey Abolofia Date: Mon, 4 May 2026 21:27:54 +0200 Subject: [PATCH 393/403] ci: install upstream ddtrace wheel during PR-triggered unit tests (#813) --- ci/input_files/build.yaml.tpl | 16 +++---- scripts/_spec_ddtrace_dep.sh | 82 +++++++++++++++++++++++++++++++++++ scripts/build_layers.sh | 74 ++++--------------------------- scripts/setup_python_env.sh | 69 +++++++++++++++++++++++++++++ 4 files changed, 166 insertions(+), 75 deletions(-) create mode 100644 scripts/_spec_ddtrace_dep.sh create mode 100755 scripts/setup_python_env.sh diff --git a/ci/input_files/build.yaml.tpl b/ci/input_files/build.yaml.tpl index 420eea649..9d2f1a9f3 100644 --- a/ci/input_files/build.yaml.tpl +++ b/ci/input_files/build.yaml.tpl @@ -7,13 +7,6 @@ stages: - publish - e2e -.python-before-script: &python-before-script - - pip install virtualenv - - virtualenv venv - - source venv/bin/activate - - pip install .[dev] - - pip install poetry - default: retry: max: 1 @@ -73,7 +66,8 @@ lint python: tags: ["arch:amd64"] image: registry.ddbuild.io/images/mirror/python:{{ $runtime.image }} cache: &{{ $runtime.name }}-{{ $runtime.arch }}-cache - before_script: *python-before-script + before_script: + - PYTHON_VERSION={{ $runtime.python_version }} ./scripts/setup_python_env.sh script: - source venv/bin/activate - ./scripts/check_format.sh @@ -83,7 +77,8 @@ unit-test ({{ $runtime.name }}-{{ $runtime.arch }}): tags: ["arch:amd64"] image: registry.ddbuild.io/images/mirror/python:{{ $runtime.image }} cache: &{{ $runtime.name }}-{{ $runtime.arch }}-cache - before_script: *python-before-script + before_script: + - PYTHON_VERSION={{ $runtime.python_version }} ./scripts/setup_python_env.sh script: - source venv/bin/activate - pytest -vv @@ -195,7 +190,8 @@ publish-pypi-package: stage: publish tags: ["arch:amd64"] image: registry.ddbuild.io/images/docker:20.10-py3 - before_script: *python-before-script + before_script: + - ./scripts/setup_python_env.sh cache: [] rules: - if: '$CI_COMMIT_TAG =~ /^v.*/' diff --git a/scripts/_spec_ddtrace_dep.sh b/scripts/_spec_ddtrace_dep.sh new file mode 100644 index 000000000..08ec4c70c --- /dev/null +++ b/scripts/_spec_ddtrace_dep.sh @@ -0,0 +1,82 @@ +#!/bin/bash + +# Unless explicitly stated otherwise all files in this repository are licensed +# under the Apache License Version 2.0. +# This product includes software developed at Datadog (https://www.datadoghq.com/). + +# Shared helpers for rewriting the ddtrace dependency in pyproject.toml. +# Sourced by scripts/build_layers.sh and scripts/setup_python_env.sh, so the +# layer build and the unit-test/lint/publish jobs use the same env-var +# contract and resolve the dep in a single pip pass. +# +# Env-var contract (highest precedence first): +# DD_TRACE_COMMIT Specific dd-trace-py commit SHA from GitHub. +# DD_TRACE_COMMIT_BRANCH dd-trace-py branch name from GitHub. +# DD_TRACE_WHEEL Path to a pre-built ddtrace .whl file. +# UPSTREAM_PIPELINE_ID GitLab pipeline ID from dd-trace-py. Looks up the +# matching wheel from S3, trying the smaller +# serverless build first then falling back to the +# standard manylinux2014 build. +# +# When none of these are set, spec_ddtrace_dep is a no-op. +# +# When UPSTREAM_PIPELINE_ID is set, also requires: +# PYTHON_VERSION e.g. "3.12" (used to build the cpXY platform tag) +# ARCH "amd64" (default) or "arm64" + +# Replace the ddtrace dependency block in pyproject.toml. +# Usage: replace_ddtrace_dep "ddtrace = { ... }" +replace_ddtrace_dep() { + echo "Replacing ddtrace dep with: $1" + perl -i -0777 -pe "s|ddtrace = \[[^\]]*\]|$1|gs" pyproject.toml +} + +# Search S3 for a wheel matching basename + index, then rewrite the ddtrace +# dep to point at the downloaded file. Globals required: +# S3_BASE, PY_TAG, PLATFORM +# Returns 0 on success, 1 if no matching wheel was found at the index. +_search_and_spec_s3_wheel() { + local basename=$1 + local index=$2 + local search_pattern="${basename}-[^\"]*${PY_TAG}[^\"]*${PLATFORM}[^\"]*\.whl" + local index_url="${S3_BASE}/index-${index}.html" + echo "Searching for wheel ${search_pattern} in ${index_url}" + local wheel_file + wheel_file=$(curl -sSfL "${index_url}" | grep -o "${search_pattern}" | head -n 1 || true) + if [ -z "$wheel_file" ]; then + return 1 + fi + curl -sSfL "${S3_BASE}/${wheel_file}" -o "${wheel_file}" + echo "Using S3 wheel: ${wheel_file}" + replace_ddtrace_dep "${basename} = { file = \"${wheel_file}\" }" +} + +# Rewrite pyproject.toml's ddtrace dep based on the env-var precedence above. +# No-op if no override env var is set. Returns non-zero if UPSTREAM_PIPELINE_ID +# is set but no matching S3 wheel is found. +spec_ddtrace_dep() { + if [ -n "${DD_TRACE_COMMIT:-}" ]; then + replace_ddtrace_dep "ddtrace = { git = \"https://github.com/DataDog/dd-trace-py.git\", rev = \"${DD_TRACE_COMMIT}\" }" + elif [ -n "${DD_TRACE_COMMIT_BRANCH:-}" ]; then + replace_ddtrace_dep "ddtrace = { git = \"https://github.com/DataDog/dd-trace-py.git\", branch = \"${DD_TRACE_COMMIT_BRANCH}\" }" + elif [ -n "${DD_TRACE_WHEEL:-}" ]; then + local basename + basename=$(sed 's/^.*\///' <<< "${DD_TRACE_WHEEL%%-*}") + replace_ddtrace_dep "${basename} = { file = \"${DD_TRACE_WHEEL}\" }" + elif [ -n "${UPSTREAM_PIPELINE_ID:-}" ]; then + if [ -z "${PYTHON_VERSION:-}" ]; then + echo "ERROR: PYTHON_VERSION must be set when UPSTREAM_PIPELINE_ID is set" >&2 + return 1 + fi + S3_BASE="https://dd-trace-py-builds.s3.amazonaws.com/${UPSTREAM_PIPELINE_ID}" + PY_TAG="cp$(echo "$PYTHON_VERSION" | tr -d '.')" + if [ "${ARCH:-amd64}" = "amd64" ]; then + PLATFORM="manylinux2014_x86_64" + else + PLATFORM="manylinux2014_aarch64" + fi + _search_and_spec_s3_wheel "ddtrace_serverless" "serverless" \ + || _search_and_spec_s3_wheel "ddtrace" "manylinux2014" \ + || { echo "ERROR: No matching ddtrace wheel for ${PY_TAG} ${PLATFORM} in pipeline ${UPSTREAM_PIPELINE_ID}" >&2; return 1; } + fi +} diff --git a/scripts/build_layers.sh b/scripts/build_layers.sh index 8cdfc1534..7c3bd5fae 100755 --- a/scripts/build_layers.sh +++ b/scripts/build_layers.sh @@ -88,68 +88,16 @@ cleanup() { } trap cleanup EXIT -# Helper: replace the multi-line ddtrace dependency in pyproject.toml. -# Uses perl instead of sed -z for macOS/Linux portability. -replace_ddtrace_dep() { - echo "Replacing dep with $1" - perl -i -0777 -pe "s|ddtrace = \[[^\]]*\]|$1|gs" pyproject.toml -} +# Source the shared ddtrace-dep specification logic. spec_ddtrace_dep reads +# DD_TRACE_COMMIT / DD_TRACE_COMMIT_BRANCH / DD_TRACE_WHEEL / UPSTREAM_PIPELINE_ID +# (PYTHON_VERSION + ARCH for the S3 path) and rewrites the ddtrace dep block +# in pyproject.toml. +source "$(dirname "$0")/_spec_ddtrace_dep.sh" function make_path_absolute { echo "$(cd "$(dirname "$1")"; pwd)/$(basename "$1")" } -function search_wheel { - # Args: [wheel base name] [index] - - WHEEL_BASENAME=$1 - INDEX=$2 - - SEARCH_PATTERN="${WHEEL_BASENAME}-[^\"]*${PY_TAG}[^\"]*${PLATFORM}[^\"]*\.whl" - INDEX_URL="${S3_BASE}/index-${INDEX}.html" - echo "Searching for wheel ${SEARCH_PATTERN}" - export WHEEL_FILE=$(curl -sSfL ${INDEX_URL} | grep -o "$SEARCH_PATTERN" | head -n 1) - if [ ! -z "${WHEEL_FILE}" ]; then - curl -sSfL "${S3_BASE}/${WHEEL_FILE}" -o "${WHEEL_FILE}" - echo "Using S3 wheel: ${WHEEL_FILE}" - replace_ddtrace_dep "${WHEEL_BASENAME} = { file = \"${WHEEL_FILE}\" }" - fi -} - -function find_and_spec_wheel { - # Args: [python version] [wheel base name] [index] - - arch=$2 - wheel_basename=$3 - index=$4 - - # Restore pyproject.toml to a clean state for each build iteration - cp pyproject.toml.bak pyproject.toml - - # Replace ddtrace source if necessary - if [ -n "$DD_TRACE_COMMIT" ]; then - replace_ddtrace_dep "${wheel_basename} = { git = \"https://github.com/DataDog/dd-trace-py.git\", rev = \"$DD_TRACE_COMMIT\" }" - elif [ -n "$DD_TRACE_COMMIT_BRANCH" ]; then - replace_ddtrace_dep "${wheel_basename} = { git = \"https://github.com/DataDog/dd-trace-py.git\", branch = \"$DD_TRACE_COMMIT_BRANCH\" }" - elif [ -n "$DD_TRACE_WHEEL" ]; then - wheel_basename=$(sed 's/^.*\///' <<< ${DD_TRACE_WHEEL%%-*}) - replace_ddtrace_dep "${wheel_basename} = { file = \"$DD_TRACE_WHEEL\" }" - elif [ -n "$UPSTREAM_PIPELINE_ID" ]; then - S3_BASE="https://dd-trace-py-builds.s3.amazonaws.com/${UPSTREAM_PIPELINE_ID}" - if [ "${arch}" = "amd64" ]; then - PLATFORM="manylinux2014_x86_64" - else - PLATFORM="manylinux2014_aarch64" - fi - PY_TAG="cp$(echo "$1" | tr -d '.')" - search_wheel ${wheel_basename} ${index} - if [ -z "${WHEEL_FILE}" ]; then - echo "No S3 wheel found for ${PY_TAG} ${PLATFORM}, using default pyproject.toml version" - return 1 - fi - fi -} - function docker_build_zip { # Args: [python version] [zip destination] @@ -180,14 +128,10 @@ do for architecture in "${ARCHS[@]}" do echo "Building layer for Python ${python_version} arch=${architecture}" - set +e - find_and_spec_wheel ${python_version} ${architecture} "ddtrace_serverless" "serverless" - FAILURE=$? - if [ $FAILURE != 0 ]; then - echo "Attempting layer build again with package ddtrace" - find_and_spec_wheel ${python_version} ${architecture} "ddtrace" "manylinux2014" - fi - set -e + # Restore pyproject.toml to a clean state before each iteration so the + # rewrite is deterministic regardless of what the previous loop did. + cp pyproject.toml.bak pyproject.toml + PYTHON_VERSION="${python_version}" ARCH="${architecture}" spec_ddtrace_dep docker_build_zip ${python_version} $LAYER_DIR/${LAYER_FILES_PREFIX}-${architecture}-${python_version}.zip ${architecture} done done diff --git a/scripts/setup_python_env.sh b/scripts/setup_python_env.sh new file mode 100755 index 000000000..cf877bb6e --- /dev/null +++ b/scripts/setup_python_env.sh @@ -0,0 +1,69 @@ +#!/bin/bash + +# Unless explicitly stated otherwise all files in this repository are licensed +# under the Apache License Version 2.0. +# This product includes software developed at Datadog (https://www.datadoghq.com/). + +# Sets up the Python environment for the lint, unit-test, and publish-pypi +# CI jobs (and for local repro of those flows). Replaces the inline +# .python-before-script anchor previously defined in +# ci/input_files/build.yaml.tpl. +# +# Steps: +# 1. (Optional) Rewrite pyproject.toml's ddtrace dep based on the +# env-var contract documented in scripts/_spec_ddtrace_dep.sh +# (DD_TRACE_COMMIT / DD_TRACE_COMMIT_BRANCH / DD_TRACE_WHEEL / +# UPSTREAM_PIPELINE_ID). When dd-trace-py's CI triggers this repo's +# pipeline it sets UPSTREAM_PIPELINE_ID, so the unit-test job +# exercises the PR's wheel rather than the released ddtrace. +# 2. Create and activate a virtualenv ("venv/"). +# 3. Install lambda-python's runtime + dev dependencies. pip resolves the +# whole graph in one pass against the (possibly rewritten) pyproject.toml, +# so any version conflicts surface as install errors instead of +# runtime surprises. +# 4. Install poetry. +# +# Same dep-resolution path as scripts/build_layers.sh — both source +# scripts/_spec_ddtrace_dep.sh. +# +# DD_TRACE_COMMIT / DD_TRACE_COMMIT_BRANCH build ddtrace from source, which +# requires cargo, cmake, and a C/C++ toolchain — not present in the slim +# Python runner images. They are intended for local repro / git-bisect +# workflows. The dd-trace-py CI trigger uses UPSTREAM_PIPELINE_ID. +# +# Venv contract: this script sources venv/bin/activate inside its own +# subshell, so the activation does NOT persist into the calling job. Calling +# jobs must `source venv/bin/activate` themselves before running their +# command (matching the existing pattern in build.yaml.tpl). +# +# Environment variables: +# PYTHON_VERSION Python minor version (e.g. 3.12 or just 12). Required +# when the UPSTREAM_PIPELINE_ID branch is taken. + +set -e + +# Normalize Python version shorthand (e.g. 12 -> 3.12, 3.12 -> 3.12) +if [ -n "${PYTHON_VERSION:-}" ]; then + if [[ "$PYTHON_VERSION" =~ ^[0-9]+$ ]]; then + PYTHON_VERSION="3.${PYTHON_VERSION}" + fi +fi + +# Backup pyproject.toml so the rewrite doesn't persist across runs (matters +# for local invocations; CI runners are ephemeral but cheap to be tidy). +cp pyproject.toml pyproject.toml.bak +cleanup() { + mv pyproject.toml.bak pyproject.toml 2>/dev/null || true +} +trap cleanup EXIT + +source "$(dirname "$0")/_spec_ddtrace_dep.sh" +spec_ddtrace_dep + +pip install virtualenv +virtualenv venv +source venv/bin/activate +pip install .[dev] +pip install poetry + +python -c "import ddtrace; print('ddtrace version:', ddtrace.__version__)" From 42b2e54d95328a2f7413820594ee66b5396cb530 Mon Sep 17 00:00:00 2001 From: Rithika Narayan <93233069+rithikanarayan@users.noreply.github.com> Date: Mon, 4 May 2026 16:01:47 -0400 Subject: [PATCH 394/403] Revert "ci: install upstream ddtrace wheel during PR-triggered unit tests (#813)" (#814) This reverts commit 0b818dd9e6c60caa6e5795e62361762678e7ba12. --- ci/input_files/build.yaml.tpl | 16 ++++--- scripts/_spec_ddtrace_dep.sh | 82 ----------------------------------- scripts/build_layers.sh | 74 +++++++++++++++++++++++++++---- scripts/setup_python_env.sh | 69 ----------------------------- 4 files changed, 75 insertions(+), 166 deletions(-) delete mode 100644 scripts/_spec_ddtrace_dep.sh delete mode 100755 scripts/setup_python_env.sh diff --git a/ci/input_files/build.yaml.tpl b/ci/input_files/build.yaml.tpl index 9d2f1a9f3..420eea649 100644 --- a/ci/input_files/build.yaml.tpl +++ b/ci/input_files/build.yaml.tpl @@ -7,6 +7,13 @@ stages: - publish - e2e +.python-before-script: &python-before-script + - pip install virtualenv + - virtualenv venv + - source venv/bin/activate + - pip install .[dev] + - pip install poetry + default: retry: max: 1 @@ -66,8 +73,7 @@ lint python: tags: ["arch:amd64"] image: registry.ddbuild.io/images/mirror/python:{{ $runtime.image }} cache: &{{ $runtime.name }}-{{ $runtime.arch }}-cache - before_script: - - PYTHON_VERSION={{ $runtime.python_version }} ./scripts/setup_python_env.sh + before_script: *python-before-script script: - source venv/bin/activate - ./scripts/check_format.sh @@ -77,8 +83,7 @@ unit-test ({{ $runtime.name }}-{{ $runtime.arch }}): tags: ["arch:amd64"] image: registry.ddbuild.io/images/mirror/python:{{ $runtime.image }} cache: &{{ $runtime.name }}-{{ $runtime.arch }}-cache - before_script: - - PYTHON_VERSION={{ $runtime.python_version }} ./scripts/setup_python_env.sh + before_script: *python-before-script script: - source venv/bin/activate - pytest -vv @@ -190,8 +195,7 @@ publish-pypi-package: stage: publish tags: ["arch:amd64"] image: registry.ddbuild.io/images/docker:20.10-py3 - before_script: - - ./scripts/setup_python_env.sh + before_script: *python-before-script cache: [] rules: - if: '$CI_COMMIT_TAG =~ /^v.*/' diff --git a/scripts/_spec_ddtrace_dep.sh b/scripts/_spec_ddtrace_dep.sh deleted file mode 100644 index 08ec4c70c..000000000 --- a/scripts/_spec_ddtrace_dep.sh +++ /dev/null @@ -1,82 +0,0 @@ -#!/bin/bash - -# Unless explicitly stated otherwise all files in this repository are licensed -# under the Apache License Version 2.0. -# This product includes software developed at Datadog (https://www.datadoghq.com/). - -# Shared helpers for rewriting the ddtrace dependency in pyproject.toml. -# Sourced by scripts/build_layers.sh and scripts/setup_python_env.sh, so the -# layer build and the unit-test/lint/publish jobs use the same env-var -# contract and resolve the dep in a single pip pass. -# -# Env-var contract (highest precedence first): -# DD_TRACE_COMMIT Specific dd-trace-py commit SHA from GitHub. -# DD_TRACE_COMMIT_BRANCH dd-trace-py branch name from GitHub. -# DD_TRACE_WHEEL Path to a pre-built ddtrace .whl file. -# UPSTREAM_PIPELINE_ID GitLab pipeline ID from dd-trace-py. Looks up the -# matching wheel from S3, trying the smaller -# serverless build first then falling back to the -# standard manylinux2014 build. -# -# When none of these are set, spec_ddtrace_dep is a no-op. -# -# When UPSTREAM_PIPELINE_ID is set, also requires: -# PYTHON_VERSION e.g. "3.12" (used to build the cpXY platform tag) -# ARCH "amd64" (default) or "arm64" - -# Replace the ddtrace dependency block in pyproject.toml. -# Usage: replace_ddtrace_dep "ddtrace = { ... }" -replace_ddtrace_dep() { - echo "Replacing ddtrace dep with: $1" - perl -i -0777 -pe "s|ddtrace = \[[^\]]*\]|$1|gs" pyproject.toml -} - -# Search S3 for a wheel matching basename + index, then rewrite the ddtrace -# dep to point at the downloaded file. Globals required: -# S3_BASE, PY_TAG, PLATFORM -# Returns 0 on success, 1 if no matching wheel was found at the index. -_search_and_spec_s3_wheel() { - local basename=$1 - local index=$2 - local search_pattern="${basename}-[^\"]*${PY_TAG}[^\"]*${PLATFORM}[^\"]*\.whl" - local index_url="${S3_BASE}/index-${index}.html" - echo "Searching for wheel ${search_pattern} in ${index_url}" - local wheel_file - wheel_file=$(curl -sSfL "${index_url}" | grep -o "${search_pattern}" | head -n 1 || true) - if [ -z "$wheel_file" ]; then - return 1 - fi - curl -sSfL "${S3_BASE}/${wheel_file}" -o "${wheel_file}" - echo "Using S3 wheel: ${wheel_file}" - replace_ddtrace_dep "${basename} = { file = \"${wheel_file}\" }" -} - -# Rewrite pyproject.toml's ddtrace dep based on the env-var precedence above. -# No-op if no override env var is set. Returns non-zero if UPSTREAM_PIPELINE_ID -# is set but no matching S3 wheel is found. -spec_ddtrace_dep() { - if [ -n "${DD_TRACE_COMMIT:-}" ]; then - replace_ddtrace_dep "ddtrace = { git = \"https://github.com/DataDog/dd-trace-py.git\", rev = \"${DD_TRACE_COMMIT}\" }" - elif [ -n "${DD_TRACE_COMMIT_BRANCH:-}" ]; then - replace_ddtrace_dep "ddtrace = { git = \"https://github.com/DataDog/dd-trace-py.git\", branch = \"${DD_TRACE_COMMIT_BRANCH}\" }" - elif [ -n "${DD_TRACE_WHEEL:-}" ]; then - local basename - basename=$(sed 's/^.*\///' <<< "${DD_TRACE_WHEEL%%-*}") - replace_ddtrace_dep "${basename} = { file = \"${DD_TRACE_WHEEL}\" }" - elif [ -n "${UPSTREAM_PIPELINE_ID:-}" ]; then - if [ -z "${PYTHON_VERSION:-}" ]; then - echo "ERROR: PYTHON_VERSION must be set when UPSTREAM_PIPELINE_ID is set" >&2 - return 1 - fi - S3_BASE="https://dd-trace-py-builds.s3.amazonaws.com/${UPSTREAM_PIPELINE_ID}" - PY_TAG="cp$(echo "$PYTHON_VERSION" | tr -d '.')" - if [ "${ARCH:-amd64}" = "amd64" ]; then - PLATFORM="manylinux2014_x86_64" - else - PLATFORM="manylinux2014_aarch64" - fi - _search_and_spec_s3_wheel "ddtrace_serverless" "serverless" \ - || _search_and_spec_s3_wheel "ddtrace" "manylinux2014" \ - || { echo "ERROR: No matching ddtrace wheel for ${PY_TAG} ${PLATFORM} in pipeline ${UPSTREAM_PIPELINE_ID}" >&2; return 1; } - fi -} diff --git a/scripts/build_layers.sh b/scripts/build_layers.sh index 7c3bd5fae..8cdfc1534 100755 --- a/scripts/build_layers.sh +++ b/scripts/build_layers.sh @@ -88,16 +88,68 @@ cleanup() { } trap cleanup EXIT -# Source the shared ddtrace-dep specification logic. spec_ddtrace_dep reads -# DD_TRACE_COMMIT / DD_TRACE_COMMIT_BRANCH / DD_TRACE_WHEEL / UPSTREAM_PIPELINE_ID -# (PYTHON_VERSION + ARCH for the S3 path) and rewrites the ddtrace dep block -# in pyproject.toml. -source "$(dirname "$0")/_spec_ddtrace_dep.sh" +# Helper: replace the multi-line ddtrace dependency in pyproject.toml. +# Uses perl instead of sed -z for macOS/Linux portability. +replace_ddtrace_dep() { + echo "Replacing dep with $1" + perl -i -0777 -pe "s|ddtrace = \[[^\]]*\]|$1|gs" pyproject.toml +} function make_path_absolute { echo "$(cd "$(dirname "$1")"; pwd)/$(basename "$1")" } +function search_wheel { + # Args: [wheel base name] [index] + + WHEEL_BASENAME=$1 + INDEX=$2 + + SEARCH_PATTERN="${WHEEL_BASENAME}-[^\"]*${PY_TAG}[^\"]*${PLATFORM}[^\"]*\.whl" + INDEX_URL="${S3_BASE}/index-${INDEX}.html" + echo "Searching for wheel ${SEARCH_PATTERN}" + export WHEEL_FILE=$(curl -sSfL ${INDEX_URL} | grep -o "$SEARCH_PATTERN" | head -n 1) + if [ ! -z "${WHEEL_FILE}" ]; then + curl -sSfL "${S3_BASE}/${WHEEL_FILE}" -o "${WHEEL_FILE}" + echo "Using S3 wheel: ${WHEEL_FILE}" + replace_ddtrace_dep "${WHEEL_BASENAME} = { file = \"${WHEEL_FILE}\" }" + fi +} + +function find_and_spec_wheel { + # Args: [python version] [wheel base name] [index] + + arch=$2 + wheel_basename=$3 + index=$4 + + # Restore pyproject.toml to a clean state for each build iteration + cp pyproject.toml.bak pyproject.toml + + # Replace ddtrace source if necessary + if [ -n "$DD_TRACE_COMMIT" ]; then + replace_ddtrace_dep "${wheel_basename} = { git = \"https://github.com/DataDog/dd-trace-py.git\", rev = \"$DD_TRACE_COMMIT\" }" + elif [ -n "$DD_TRACE_COMMIT_BRANCH" ]; then + replace_ddtrace_dep "${wheel_basename} = { git = \"https://github.com/DataDog/dd-trace-py.git\", branch = \"$DD_TRACE_COMMIT_BRANCH\" }" + elif [ -n "$DD_TRACE_WHEEL" ]; then + wheel_basename=$(sed 's/^.*\///' <<< ${DD_TRACE_WHEEL%%-*}) + replace_ddtrace_dep "${wheel_basename} = { file = \"$DD_TRACE_WHEEL\" }" + elif [ -n "$UPSTREAM_PIPELINE_ID" ]; then + S3_BASE="https://dd-trace-py-builds.s3.amazonaws.com/${UPSTREAM_PIPELINE_ID}" + if [ "${arch}" = "amd64" ]; then + PLATFORM="manylinux2014_x86_64" + else + PLATFORM="manylinux2014_aarch64" + fi + PY_TAG="cp$(echo "$1" | tr -d '.')" + search_wheel ${wheel_basename} ${index} + if [ -z "${WHEEL_FILE}" ]; then + echo "No S3 wheel found for ${PY_TAG} ${PLATFORM}, using default pyproject.toml version" + return 1 + fi + fi +} + function docker_build_zip { # Args: [python version] [zip destination] @@ -128,10 +180,14 @@ do for architecture in "${ARCHS[@]}" do echo "Building layer for Python ${python_version} arch=${architecture}" - # Restore pyproject.toml to a clean state before each iteration so the - # rewrite is deterministic regardless of what the previous loop did. - cp pyproject.toml.bak pyproject.toml - PYTHON_VERSION="${python_version}" ARCH="${architecture}" spec_ddtrace_dep + set +e + find_and_spec_wheel ${python_version} ${architecture} "ddtrace_serverless" "serverless" + FAILURE=$? + if [ $FAILURE != 0 ]; then + echo "Attempting layer build again with package ddtrace" + find_and_spec_wheel ${python_version} ${architecture} "ddtrace" "manylinux2014" + fi + set -e docker_build_zip ${python_version} $LAYER_DIR/${LAYER_FILES_PREFIX}-${architecture}-${python_version}.zip ${architecture} done done diff --git a/scripts/setup_python_env.sh b/scripts/setup_python_env.sh deleted file mode 100755 index cf877bb6e..000000000 --- a/scripts/setup_python_env.sh +++ /dev/null @@ -1,69 +0,0 @@ -#!/bin/bash - -# Unless explicitly stated otherwise all files in this repository are licensed -# under the Apache License Version 2.0. -# This product includes software developed at Datadog (https://www.datadoghq.com/). - -# Sets up the Python environment for the lint, unit-test, and publish-pypi -# CI jobs (and for local repro of those flows). Replaces the inline -# .python-before-script anchor previously defined in -# ci/input_files/build.yaml.tpl. -# -# Steps: -# 1. (Optional) Rewrite pyproject.toml's ddtrace dep based on the -# env-var contract documented in scripts/_spec_ddtrace_dep.sh -# (DD_TRACE_COMMIT / DD_TRACE_COMMIT_BRANCH / DD_TRACE_WHEEL / -# UPSTREAM_PIPELINE_ID). When dd-trace-py's CI triggers this repo's -# pipeline it sets UPSTREAM_PIPELINE_ID, so the unit-test job -# exercises the PR's wheel rather than the released ddtrace. -# 2. Create and activate a virtualenv ("venv/"). -# 3. Install lambda-python's runtime + dev dependencies. pip resolves the -# whole graph in one pass against the (possibly rewritten) pyproject.toml, -# so any version conflicts surface as install errors instead of -# runtime surprises. -# 4. Install poetry. -# -# Same dep-resolution path as scripts/build_layers.sh — both source -# scripts/_spec_ddtrace_dep.sh. -# -# DD_TRACE_COMMIT / DD_TRACE_COMMIT_BRANCH build ddtrace from source, which -# requires cargo, cmake, and a C/C++ toolchain — not present in the slim -# Python runner images. They are intended for local repro / git-bisect -# workflows. The dd-trace-py CI trigger uses UPSTREAM_PIPELINE_ID. -# -# Venv contract: this script sources venv/bin/activate inside its own -# subshell, so the activation does NOT persist into the calling job. Calling -# jobs must `source venv/bin/activate` themselves before running their -# command (matching the existing pattern in build.yaml.tpl). -# -# Environment variables: -# PYTHON_VERSION Python minor version (e.g. 3.12 or just 12). Required -# when the UPSTREAM_PIPELINE_ID branch is taken. - -set -e - -# Normalize Python version shorthand (e.g. 12 -> 3.12, 3.12 -> 3.12) -if [ -n "${PYTHON_VERSION:-}" ]; then - if [[ "$PYTHON_VERSION" =~ ^[0-9]+$ ]]; then - PYTHON_VERSION="3.${PYTHON_VERSION}" - fi -fi - -# Backup pyproject.toml so the rewrite doesn't persist across runs (matters -# for local invocations; CI runners are ephemeral but cheap to be tidy). -cp pyproject.toml pyproject.toml.bak -cleanup() { - mv pyproject.toml.bak pyproject.toml 2>/dev/null || true -} -trap cleanup EXIT - -source "$(dirname "$0")/_spec_ddtrace_dep.sh" -spec_ddtrace_dep - -pip install virtualenv -virtualenv venv -source venv/bin/activate -pip install .[dev] -pip install poetry - -python -c "import ddtrace; print('ddtrace version:', ddtrace.__version__)" From 6b7c27647f62f062afcf429cb1f1fc3153ab33dc Mon Sep 17 00:00:00 2001 From: Olivier Nzia Date: Wed, 6 May 2026 16:30:40 -0400 Subject: [PATCH 395/403] v8.125.0 (#819) --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index 0c1404f80..8c976bcc1 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "8.125.0.dev0" +__version__ = "8.125.0" diff --git a/pyproject.toml b/pyproject.toml index 105fa4d51..5ec6e3b3f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "8.125.0.dev0" +version = "8.125.0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 619a1d548eb6f5aef6108f047fecc1a1227c22f6 Mon Sep 17 00:00:00 2001 From: Olivier John Ndjike Nzia Date: Thu, 7 May 2026 12:06:19 -0400 Subject: [PATCH 396/403] v8.126.0.dev0 --- datadog_lambda/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/version.py b/datadog_lambda/version.py index 8c976bcc1..e43f119bf 100644 --- a/datadog_lambda/version.py +++ b/datadog_lambda/version.py @@ -1 +1 @@ -__version__ = "8.125.0" +__version__ = "8.126.0.dev0" diff --git a/pyproject.toml b/pyproject.toml index 5ec6e3b3f..daa9b3c4e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "datadog_lambda" -version = "8.125.0" +version = "8.126.0.dev0" description = "The Datadog AWS Lambda Library" authors = ["Datadog, Inc. "] license = "Apache-2.0" From 8b7b4e5148f05cbf3d54ce63d85909f58fe4433e Mon Sep 17 00:00:00 2001 From: Nicolas Catoni Date: Thu, 7 May 2026 18:37:59 +0200 Subject: [PATCH 397/403] ci: skip empty scenarios only on pull_request (#817) --- .github/workflows/system_tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/system_tests.yml b/.github/workflows/system_tests.yml index bc6b05e93..e0e829f0f 100644 --- a/.github/workflows/system_tests.yml +++ b/.github/workflows/system_tests.yml @@ -36,5 +36,5 @@ jobs: library: python_lambda binaries_artifact: binaries scenarios_groups: tracer_release - skip_empty_scenarios: true + skip_empty_scenarios: ${{ github.event_name == 'pull_request' }} push_to_test_optimization: true From 91d8249b9bebba6f2aad9cbc3881ac4d169419a5 Mon Sep 17 00:00:00 2001 From: Rithika Narayan <93233069+rithikanarayan@users.noreply.github.com> Date: Thu, 7 May 2026 14:51:36 -0400 Subject: [PATCH 398/403] Revert "Revert "ci: install upstream ddtrace wheel during PR-triggered unit tests"" (#815) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Revert "Revert "ci: install upstream ddtrace wheel during PR-triggered unit t…" This reverts commit 42b2e54d95328a2f7413820594ee66b5396cb530. * skip 3.8 * more gating * remove layer bundle * faulthandler? * debug * Apply suggestion from @purple4reina * Skip wheel install when not found. * env var * disable profiling * only use normal wheel * remove env var * core dump * reuse serverless * use arm wheel? * no profiling stack fast * remove extra wheel * remove cache * moving var * removing profiling var * reduce stuff done for linting * remove extraneous bits --------- Co-authored-by: Rey Abolofia --- ci/input_files/build.yaml.tpl | 16 +++---- scripts/_spec_ddtrace_dep.sh | 82 +++++++++++++++++++++++++++++++++++ scripts/build_layers.sh | 74 ++++--------------------------- scripts/setup_python_env.sh | 74 +++++++++++++++++++++++++++++++ 4 files changed, 171 insertions(+), 75 deletions(-) create mode 100644 scripts/_spec_ddtrace_dep.sh create mode 100755 scripts/setup_python_env.sh diff --git a/ci/input_files/build.yaml.tpl b/ci/input_files/build.yaml.tpl index 420eea649..7ecd532df 100644 --- a/ci/input_files/build.yaml.tpl +++ b/ci/input_files/build.yaml.tpl @@ -7,13 +7,6 @@ stages: - publish - e2e -.python-before-script: &python-before-script - - pip install virtualenv - - virtualenv venv - - source venv/bin/activate - - pip install .[dev] - - pip install poetry - default: retry: max: 1 @@ -73,7 +66,8 @@ lint python: tags: ["arch:amd64"] image: registry.ddbuild.io/images/mirror/python:{{ $runtime.image }} cache: &{{ $runtime.name }}-{{ $runtime.arch }}-cache - before_script: *python-before-script + before_script: + - PYTHON_VERSION={{ $runtime.python_version }} ARCH={{ $runtime.arch }} IS_LINT="1" ./scripts/setup_python_env.sh script: - source venv/bin/activate - ./scripts/check_format.sh @@ -83,7 +77,8 @@ unit-test ({{ $runtime.name }}-{{ $runtime.arch }}): tags: ["arch:amd64"] image: registry.ddbuild.io/images/mirror/python:{{ $runtime.image }} cache: &{{ $runtime.name }}-{{ $runtime.arch }}-cache - before_script: *python-before-script + before_script: + - PYTHON_VERSION={{ $runtime.python_version }} ARCH={{ $runtime.arch }} ./scripts/setup_python_env.sh script: - source venv/bin/activate - pytest -vv @@ -195,7 +190,8 @@ publish-pypi-package: stage: publish tags: ["arch:amd64"] image: registry.ddbuild.io/images/docker:20.10-py3 - before_script: *python-before-script + before_script: + - ./scripts/setup_python_env.sh cache: [] rules: - if: '$CI_COMMIT_TAG =~ /^v.*/' diff --git a/scripts/_spec_ddtrace_dep.sh b/scripts/_spec_ddtrace_dep.sh new file mode 100644 index 000000000..bb64bb178 --- /dev/null +++ b/scripts/_spec_ddtrace_dep.sh @@ -0,0 +1,82 @@ +#!/bin/bash + +# Unless explicitly stated otherwise all files in this repository are licensed +# under the Apache License Version 2.0. +# This product includes software developed at Datadog (https://www.datadoghq.com/). + +# Shared helpers for rewriting the ddtrace dependency in pyproject.toml. +# Sourced by scripts/build_layers.sh and scripts/setup_python_env.sh, so the +# layer build and the unit-test/lint/publish jobs use the same env-var +# contract and resolve the dep in a single pip pass. +# +# Env-var contract (highest precedence first): +# DD_TRACE_COMMIT Specific dd-trace-py commit SHA from GitHub. +# DD_TRACE_COMMIT_BRANCH dd-trace-py branch name from GitHub. +# DD_TRACE_WHEEL Path to a pre-built ddtrace .whl file. +# UPSTREAM_PIPELINE_ID GitLab pipeline ID from dd-trace-py. Looks up the +# matching wheel from S3, trying the smaller +# serverless build first then falling back to the +# standard manylinux2014 build. +# +# When none of these are set, spec_ddtrace_dep is a no-op. +# +# When UPSTREAM_PIPELINE_ID is set, also requires: +# PYTHON_VERSION e.g. "3.12" (used to build the cpXY platform tag) +# ARCH "amd64" (default) or "arm64" + +# Replace the ddtrace dependency block in pyproject.toml. +# Usage: replace_ddtrace_dep "ddtrace = { ... }" +replace_ddtrace_dep() { + echo "Replacing ddtrace dep with: $1" + perl -i -0777 -pe "s|ddtrace = \[[^\]]*\]|$1|gs" pyproject.toml +} + +# Search S3 for a wheel matching basename + index, then rewrite the ddtrace +# dep to point at the downloaded file. Globals required: +# S3_BASE, PY_TAG, PLATFORM +# Returns 0 on success, 1 if no matching wheel was found at the index. +_search_and_spec_s3_wheel() { + local basename=$1 + local index=$2 + local search_pattern="${basename}-[^\"]*${PY_TAG}[^\"]*${PLATFORM}[^\"]*\.whl" + local index_url="${S3_BASE}/index-${index}.html" + echo "Searching for wheel ${search_pattern} in ${index_url}" + local wheel_file + wheel_file=$(curl -sSfL "${index_url}" | grep -o "${search_pattern}" | head -n 1 || true) + if [ -z "$wheel_file" ]; then + return 1 + fi + curl -sSfL "${S3_BASE}/${wheel_file}" -o "${wheel_file}" + echo "Using S3 wheel: ${wheel_file}" + replace_ddtrace_dep "${basename} = { file = \"${wheel_file}\" }" +} + +# Rewrite pyproject.toml's ddtrace dep based on the env-var precedence above. +# No-op if no override env var is set. Returns non-zero if UPSTREAM_PIPELINE_ID +# is set but no matching S3 wheel is found. +spec_ddtrace_dep() { + if [ -n "${DD_TRACE_COMMIT:-}" ]; then + replace_ddtrace_dep "ddtrace = { git = \"https://github.com/DataDog/dd-trace-py.git\", rev = \"${DD_TRACE_COMMIT}\" }" + elif [ -n "${DD_TRACE_COMMIT_BRANCH:-}" ]; then + replace_ddtrace_dep "ddtrace = { git = \"https://github.com/DataDog/dd-trace-py.git\", branch = \"${DD_TRACE_COMMIT_BRANCH}\" }" + elif [ -n "${DD_TRACE_WHEEL:-}" ]; then + local basename + basename=$(sed 's/^.*\///' <<< "${DD_TRACE_WHEEL%%-*}") + replace_ddtrace_dep "${basename} = { file = \"${DD_TRACE_WHEEL}\" }" + elif [ -n "${UPSTREAM_PIPELINE_ID:-}" ]; then + if [ -z "${PYTHON_VERSION:-}" ]; then + echo "ERROR: PYTHON_VERSION must be set when UPSTREAM_PIPELINE_ID is set" >&2 + return 1 + fi + S3_BASE="https://dd-trace-py-builds.s3.amazonaws.com/${UPSTREAM_PIPELINE_ID}" + PY_TAG="cp$(echo "$PYTHON_VERSION" | tr -d '.')" + if [ "$ARCH" = "amd64" ]; then + PLATFORM="manylinux2014_x86_64" + else + PLATFORM="manylinux2014_aarch64" + fi + _search_and_spec_s3_wheel "ddtrace_serverless" "serverless" \ + || _search_and_spec_s3_wheel "ddtrace" "manylinux2014" \ + || { echo "ERROR: No matching ddtrace wheel for ${PY_TAG} ${PLATFORM} in pipeline ${UPSTREAM_PIPELINE_ID}, skipping version patch!" >&2; } + fi +} diff --git a/scripts/build_layers.sh b/scripts/build_layers.sh index 8cdfc1534..7c3bd5fae 100755 --- a/scripts/build_layers.sh +++ b/scripts/build_layers.sh @@ -88,68 +88,16 @@ cleanup() { } trap cleanup EXIT -# Helper: replace the multi-line ddtrace dependency in pyproject.toml. -# Uses perl instead of sed -z for macOS/Linux portability. -replace_ddtrace_dep() { - echo "Replacing dep with $1" - perl -i -0777 -pe "s|ddtrace = \[[^\]]*\]|$1|gs" pyproject.toml -} +# Source the shared ddtrace-dep specification logic. spec_ddtrace_dep reads +# DD_TRACE_COMMIT / DD_TRACE_COMMIT_BRANCH / DD_TRACE_WHEEL / UPSTREAM_PIPELINE_ID +# (PYTHON_VERSION + ARCH for the S3 path) and rewrites the ddtrace dep block +# in pyproject.toml. +source "$(dirname "$0")/_spec_ddtrace_dep.sh" function make_path_absolute { echo "$(cd "$(dirname "$1")"; pwd)/$(basename "$1")" } -function search_wheel { - # Args: [wheel base name] [index] - - WHEEL_BASENAME=$1 - INDEX=$2 - - SEARCH_PATTERN="${WHEEL_BASENAME}-[^\"]*${PY_TAG}[^\"]*${PLATFORM}[^\"]*\.whl" - INDEX_URL="${S3_BASE}/index-${INDEX}.html" - echo "Searching for wheel ${SEARCH_PATTERN}" - export WHEEL_FILE=$(curl -sSfL ${INDEX_URL} | grep -o "$SEARCH_PATTERN" | head -n 1) - if [ ! -z "${WHEEL_FILE}" ]; then - curl -sSfL "${S3_BASE}/${WHEEL_FILE}" -o "${WHEEL_FILE}" - echo "Using S3 wheel: ${WHEEL_FILE}" - replace_ddtrace_dep "${WHEEL_BASENAME} = { file = \"${WHEEL_FILE}\" }" - fi -} - -function find_and_spec_wheel { - # Args: [python version] [wheel base name] [index] - - arch=$2 - wheel_basename=$3 - index=$4 - - # Restore pyproject.toml to a clean state for each build iteration - cp pyproject.toml.bak pyproject.toml - - # Replace ddtrace source if necessary - if [ -n "$DD_TRACE_COMMIT" ]; then - replace_ddtrace_dep "${wheel_basename} = { git = \"https://github.com/DataDog/dd-trace-py.git\", rev = \"$DD_TRACE_COMMIT\" }" - elif [ -n "$DD_TRACE_COMMIT_BRANCH" ]; then - replace_ddtrace_dep "${wheel_basename} = { git = \"https://github.com/DataDog/dd-trace-py.git\", branch = \"$DD_TRACE_COMMIT_BRANCH\" }" - elif [ -n "$DD_TRACE_WHEEL" ]; then - wheel_basename=$(sed 's/^.*\///' <<< ${DD_TRACE_WHEEL%%-*}) - replace_ddtrace_dep "${wheel_basename} = { file = \"$DD_TRACE_WHEEL\" }" - elif [ -n "$UPSTREAM_PIPELINE_ID" ]; then - S3_BASE="https://dd-trace-py-builds.s3.amazonaws.com/${UPSTREAM_PIPELINE_ID}" - if [ "${arch}" = "amd64" ]; then - PLATFORM="manylinux2014_x86_64" - else - PLATFORM="manylinux2014_aarch64" - fi - PY_TAG="cp$(echo "$1" | tr -d '.')" - search_wheel ${wheel_basename} ${index} - if [ -z "${WHEEL_FILE}" ]; then - echo "No S3 wheel found for ${PY_TAG} ${PLATFORM}, using default pyproject.toml version" - return 1 - fi - fi -} - function docker_build_zip { # Args: [python version] [zip destination] @@ -180,14 +128,10 @@ do for architecture in "${ARCHS[@]}" do echo "Building layer for Python ${python_version} arch=${architecture}" - set +e - find_and_spec_wheel ${python_version} ${architecture} "ddtrace_serverless" "serverless" - FAILURE=$? - if [ $FAILURE != 0 ]; then - echo "Attempting layer build again with package ddtrace" - find_and_spec_wheel ${python_version} ${architecture} "ddtrace" "manylinux2014" - fi - set -e + # Restore pyproject.toml to a clean state before each iteration so the + # rewrite is deterministic regardless of what the previous loop did. + cp pyproject.toml.bak pyproject.toml + PYTHON_VERSION="${python_version}" ARCH="${architecture}" spec_ddtrace_dep docker_build_zip ${python_version} $LAYER_DIR/${LAYER_FILES_PREFIX}-${architecture}-${python_version}.zip ${architecture} done done diff --git a/scripts/setup_python_env.sh b/scripts/setup_python_env.sh new file mode 100755 index 000000000..42dfa7108 --- /dev/null +++ b/scripts/setup_python_env.sh @@ -0,0 +1,74 @@ +#!/bin/bash + +# Unless explicitly stated otherwise all files in this repository are licensed +# under the Apache License Version 2.0. +# This product includes software developed at Datadog (https://www.datadoghq.com/). + +# Sets up the Python environment for the lint, unit-test, and publish-pypi +# CI jobs (and for local repro of those flows). Replaces the inline +# .python-before-script anchor previously defined in +# ci/input_files/build.yaml.tpl. +# +# Steps: +# 1. (Optional) Rewrite pyproject.toml's ddtrace dep based on the +# env-var contract documented in scripts/_spec_ddtrace_dep.sh +# (DD_TRACE_COMMIT / DD_TRACE_COMMIT_BRANCH / DD_TRACE_WHEEL / +# UPSTREAM_PIPELINE_ID). When dd-trace-py's CI triggers this repo's +# pipeline it sets UPSTREAM_PIPELINE_ID, so the unit-test job +# exercises the PR's wheel rather than the released ddtrace. +# 2. Create and activate a virtualenv ("venv/"). +# 3. Install lambda-python's runtime + dev dependencies. pip resolves the +# whole graph in one pass against the (possibly rewritten) pyproject.toml, +# so any version conflicts surface as install errors instead of +# runtime surprises. +# 4. Install poetry. +# +# Same dep-resolution path as scripts/build_layers.sh — both source +# scripts/_spec_ddtrace_dep.sh. +# +# DD_TRACE_COMMIT / DD_TRACE_COMMIT_BRANCH build ddtrace from source, which +# requires cargo, cmake, and a C/C++ toolchain — not present in the slim +# Python runner images. They are intended for local repro / git-bisect +# workflows. The dd-trace-py CI trigger uses UPSTREAM_PIPELINE_ID. +# +# Venv contract: this script sources venv/bin/activate inside its own +# subshell, so the activation does NOT persist into the calling job. Calling +# jobs must `source venv/bin/activate` themselves before running their +# command (matching the existing pattern in build.yaml.tpl). +# +# Environment variables: +# PYTHON_VERSION Python minor version (e.g. 3.12 or just 12). Required +# when the UPSTREAM_PIPELINE_ID branch is taken. +# ARCH "amd64" or "arm64". Required for correct ddtrace wheel +# selection when UPSTREAM_PIPELINE_ID is set (GitLab matrix +# should pass the runtime arch; if unset, host arch is used). + +set -e + +if [ -z "${IS_LINT:-}" ] || [ "${IS_LINT}" = "0" ] || [ "${IS_LINT}" = "false" ]; then + # Normalize Python version shorthand (e.g. 12 -> 3.12, 3.12 -> 3.12) + if [ -n "${PYTHON_VERSION:-}" ]; then + if [[ "$PYTHON_VERSION" =~ ^[0-9]+$ ]]; then + PYTHON_VERSION="3.${PYTHON_VERSION}" + fi + fi + + # Backup pyproject.toml so the rewrite doesn't persist across runs (matters + # for local invocations; CI runners are ephemeral but cheap to be tidy). + cp pyproject.toml pyproject.toml.bak + cleanup() { + mv pyproject.toml.bak pyproject.toml 2>/dev/null || true + } + trap cleanup EXIT + + source "$(dirname "$0")/_spec_ddtrace_dep.sh" + spec_ddtrace_dep +fi + +pip install virtualenv +virtualenv venv +source venv/bin/activate +pip install .[dev] +pip install poetry + +python -c "import ddtrace; print('ddtrace version:', ddtrace.__version__)" From d831ec2051acba152ef96d149a2d9b5c563a3794 Mon Sep 17 00:00:00 2001 From: Brett Langdon Date: Thu, 7 May 2026 15:23:25 -0400 Subject: [PATCH 399/403] =?UTF-8?q?Revert=20"Revert=20"Revert=20"ci:=20ins?= =?UTF-8?q?tall=20upstream=20ddtrace=20wheel=20during=20PR-triggere?= =?UTF-8?q?=E2=80=A6"=20(#822)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 91d8249b9bebba6f2aad9cbc3881ac4d169419a5. --- ci/input_files/build.yaml.tpl | 16 ++++--- scripts/_spec_ddtrace_dep.sh | 82 ----------------------------------- scripts/build_layers.sh | 74 +++++++++++++++++++++++++++---- scripts/setup_python_env.sh | 74 ------------------------------- 4 files changed, 75 insertions(+), 171 deletions(-) delete mode 100644 scripts/_spec_ddtrace_dep.sh delete mode 100755 scripts/setup_python_env.sh diff --git a/ci/input_files/build.yaml.tpl b/ci/input_files/build.yaml.tpl index 7ecd532df..420eea649 100644 --- a/ci/input_files/build.yaml.tpl +++ b/ci/input_files/build.yaml.tpl @@ -7,6 +7,13 @@ stages: - publish - e2e +.python-before-script: &python-before-script + - pip install virtualenv + - virtualenv venv + - source venv/bin/activate + - pip install .[dev] + - pip install poetry + default: retry: max: 1 @@ -66,8 +73,7 @@ lint python: tags: ["arch:amd64"] image: registry.ddbuild.io/images/mirror/python:{{ $runtime.image }} cache: &{{ $runtime.name }}-{{ $runtime.arch }}-cache - before_script: - - PYTHON_VERSION={{ $runtime.python_version }} ARCH={{ $runtime.arch }} IS_LINT="1" ./scripts/setup_python_env.sh + before_script: *python-before-script script: - source venv/bin/activate - ./scripts/check_format.sh @@ -77,8 +83,7 @@ unit-test ({{ $runtime.name }}-{{ $runtime.arch }}): tags: ["arch:amd64"] image: registry.ddbuild.io/images/mirror/python:{{ $runtime.image }} cache: &{{ $runtime.name }}-{{ $runtime.arch }}-cache - before_script: - - PYTHON_VERSION={{ $runtime.python_version }} ARCH={{ $runtime.arch }} ./scripts/setup_python_env.sh + before_script: *python-before-script script: - source venv/bin/activate - pytest -vv @@ -190,8 +195,7 @@ publish-pypi-package: stage: publish tags: ["arch:amd64"] image: registry.ddbuild.io/images/docker:20.10-py3 - before_script: - - ./scripts/setup_python_env.sh + before_script: *python-before-script cache: [] rules: - if: '$CI_COMMIT_TAG =~ /^v.*/' diff --git a/scripts/_spec_ddtrace_dep.sh b/scripts/_spec_ddtrace_dep.sh deleted file mode 100644 index bb64bb178..000000000 --- a/scripts/_spec_ddtrace_dep.sh +++ /dev/null @@ -1,82 +0,0 @@ -#!/bin/bash - -# Unless explicitly stated otherwise all files in this repository are licensed -# under the Apache License Version 2.0. -# This product includes software developed at Datadog (https://www.datadoghq.com/). - -# Shared helpers for rewriting the ddtrace dependency in pyproject.toml. -# Sourced by scripts/build_layers.sh and scripts/setup_python_env.sh, so the -# layer build and the unit-test/lint/publish jobs use the same env-var -# contract and resolve the dep in a single pip pass. -# -# Env-var contract (highest precedence first): -# DD_TRACE_COMMIT Specific dd-trace-py commit SHA from GitHub. -# DD_TRACE_COMMIT_BRANCH dd-trace-py branch name from GitHub. -# DD_TRACE_WHEEL Path to a pre-built ddtrace .whl file. -# UPSTREAM_PIPELINE_ID GitLab pipeline ID from dd-trace-py. Looks up the -# matching wheel from S3, trying the smaller -# serverless build first then falling back to the -# standard manylinux2014 build. -# -# When none of these are set, spec_ddtrace_dep is a no-op. -# -# When UPSTREAM_PIPELINE_ID is set, also requires: -# PYTHON_VERSION e.g. "3.12" (used to build the cpXY platform tag) -# ARCH "amd64" (default) or "arm64" - -# Replace the ddtrace dependency block in pyproject.toml. -# Usage: replace_ddtrace_dep "ddtrace = { ... }" -replace_ddtrace_dep() { - echo "Replacing ddtrace dep with: $1" - perl -i -0777 -pe "s|ddtrace = \[[^\]]*\]|$1|gs" pyproject.toml -} - -# Search S3 for a wheel matching basename + index, then rewrite the ddtrace -# dep to point at the downloaded file. Globals required: -# S3_BASE, PY_TAG, PLATFORM -# Returns 0 on success, 1 if no matching wheel was found at the index. -_search_and_spec_s3_wheel() { - local basename=$1 - local index=$2 - local search_pattern="${basename}-[^\"]*${PY_TAG}[^\"]*${PLATFORM}[^\"]*\.whl" - local index_url="${S3_BASE}/index-${index}.html" - echo "Searching for wheel ${search_pattern} in ${index_url}" - local wheel_file - wheel_file=$(curl -sSfL "${index_url}" | grep -o "${search_pattern}" | head -n 1 || true) - if [ -z "$wheel_file" ]; then - return 1 - fi - curl -sSfL "${S3_BASE}/${wheel_file}" -o "${wheel_file}" - echo "Using S3 wheel: ${wheel_file}" - replace_ddtrace_dep "${basename} = { file = \"${wheel_file}\" }" -} - -# Rewrite pyproject.toml's ddtrace dep based on the env-var precedence above. -# No-op if no override env var is set. Returns non-zero if UPSTREAM_PIPELINE_ID -# is set but no matching S3 wheel is found. -spec_ddtrace_dep() { - if [ -n "${DD_TRACE_COMMIT:-}" ]; then - replace_ddtrace_dep "ddtrace = { git = \"https://github.com/DataDog/dd-trace-py.git\", rev = \"${DD_TRACE_COMMIT}\" }" - elif [ -n "${DD_TRACE_COMMIT_BRANCH:-}" ]; then - replace_ddtrace_dep "ddtrace = { git = \"https://github.com/DataDog/dd-trace-py.git\", branch = \"${DD_TRACE_COMMIT_BRANCH}\" }" - elif [ -n "${DD_TRACE_WHEEL:-}" ]; then - local basename - basename=$(sed 's/^.*\///' <<< "${DD_TRACE_WHEEL%%-*}") - replace_ddtrace_dep "${basename} = { file = \"${DD_TRACE_WHEEL}\" }" - elif [ -n "${UPSTREAM_PIPELINE_ID:-}" ]; then - if [ -z "${PYTHON_VERSION:-}" ]; then - echo "ERROR: PYTHON_VERSION must be set when UPSTREAM_PIPELINE_ID is set" >&2 - return 1 - fi - S3_BASE="https://dd-trace-py-builds.s3.amazonaws.com/${UPSTREAM_PIPELINE_ID}" - PY_TAG="cp$(echo "$PYTHON_VERSION" | tr -d '.')" - if [ "$ARCH" = "amd64" ]; then - PLATFORM="manylinux2014_x86_64" - else - PLATFORM="manylinux2014_aarch64" - fi - _search_and_spec_s3_wheel "ddtrace_serverless" "serverless" \ - || _search_and_spec_s3_wheel "ddtrace" "manylinux2014" \ - || { echo "ERROR: No matching ddtrace wheel for ${PY_TAG} ${PLATFORM} in pipeline ${UPSTREAM_PIPELINE_ID}, skipping version patch!" >&2; } - fi -} diff --git a/scripts/build_layers.sh b/scripts/build_layers.sh index 7c3bd5fae..8cdfc1534 100755 --- a/scripts/build_layers.sh +++ b/scripts/build_layers.sh @@ -88,16 +88,68 @@ cleanup() { } trap cleanup EXIT -# Source the shared ddtrace-dep specification logic. spec_ddtrace_dep reads -# DD_TRACE_COMMIT / DD_TRACE_COMMIT_BRANCH / DD_TRACE_WHEEL / UPSTREAM_PIPELINE_ID -# (PYTHON_VERSION + ARCH for the S3 path) and rewrites the ddtrace dep block -# in pyproject.toml. -source "$(dirname "$0")/_spec_ddtrace_dep.sh" +# Helper: replace the multi-line ddtrace dependency in pyproject.toml. +# Uses perl instead of sed -z for macOS/Linux portability. +replace_ddtrace_dep() { + echo "Replacing dep with $1" + perl -i -0777 -pe "s|ddtrace = \[[^\]]*\]|$1|gs" pyproject.toml +} function make_path_absolute { echo "$(cd "$(dirname "$1")"; pwd)/$(basename "$1")" } +function search_wheel { + # Args: [wheel base name] [index] + + WHEEL_BASENAME=$1 + INDEX=$2 + + SEARCH_PATTERN="${WHEEL_BASENAME}-[^\"]*${PY_TAG}[^\"]*${PLATFORM}[^\"]*\.whl" + INDEX_URL="${S3_BASE}/index-${INDEX}.html" + echo "Searching for wheel ${SEARCH_PATTERN}" + export WHEEL_FILE=$(curl -sSfL ${INDEX_URL} | grep -o "$SEARCH_PATTERN" | head -n 1) + if [ ! -z "${WHEEL_FILE}" ]; then + curl -sSfL "${S3_BASE}/${WHEEL_FILE}" -o "${WHEEL_FILE}" + echo "Using S3 wheel: ${WHEEL_FILE}" + replace_ddtrace_dep "${WHEEL_BASENAME} = { file = \"${WHEEL_FILE}\" }" + fi +} + +function find_and_spec_wheel { + # Args: [python version] [wheel base name] [index] + + arch=$2 + wheel_basename=$3 + index=$4 + + # Restore pyproject.toml to a clean state for each build iteration + cp pyproject.toml.bak pyproject.toml + + # Replace ddtrace source if necessary + if [ -n "$DD_TRACE_COMMIT" ]; then + replace_ddtrace_dep "${wheel_basename} = { git = \"https://github.com/DataDog/dd-trace-py.git\", rev = \"$DD_TRACE_COMMIT\" }" + elif [ -n "$DD_TRACE_COMMIT_BRANCH" ]; then + replace_ddtrace_dep "${wheel_basename} = { git = \"https://github.com/DataDog/dd-trace-py.git\", branch = \"$DD_TRACE_COMMIT_BRANCH\" }" + elif [ -n "$DD_TRACE_WHEEL" ]; then + wheel_basename=$(sed 's/^.*\///' <<< ${DD_TRACE_WHEEL%%-*}) + replace_ddtrace_dep "${wheel_basename} = { file = \"$DD_TRACE_WHEEL\" }" + elif [ -n "$UPSTREAM_PIPELINE_ID" ]; then + S3_BASE="https://dd-trace-py-builds.s3.amazonaws.com/${UPSTREAM_PIPELINE_ID}" + if [ "${arch}" = "amd64" ]; then + PLATFORM="manylinux2014_x86_64" + else + PLATFORM="manylinux2014_aarch64" + fi + PY_TAG="cp$(echo "$1" | tr -d '.')" + search_wheel ${wheel_basename} ${index} + if [ -z "${WHEEL_FILE}" ]; then + echo "No S3 wheel found for ${PY_TAG} ${PLATFORM}, using default pyproject.toml version" + return 1 + fi + fi +} + function docker_build_zip { # Args: [python version] [zip destination] @@ -128,10 +180,14 @@ do for architecture in "${ARCHS[@]}" do echo "Building layer for Python ${python_version} arch=${architecture}" - # Restore pyproject.toml to a clean state before each iteration so the - # rewrite is deterministic regardless of what the previous loop did. - cp pyproject.toml.bak pyproject.toml - PYTHON_VERSION="${python_version}" ARCH="${architecture}" spec_ddtrace_dep + set +e + find_and_spec_wheel ${python_version} ${architecture} "ddtrace_serverless" "serverless" + FAILURE=$? + if [ $FAILURE != 0 ]; then + echo "Attempting layer build again with package ddtrace" + find_and_spec_wheel ${python_version} ${architecture} "ddtrace" "manylinux2014" + fi + set -e docker_build_zip ${python_version} $LAYER_DIR/${LAYER_FILES_PREFIX}-${architecture}-${python_version}.zip ${architecture} done done diff --git a/scripts/setup_python_env.sh b/scripts/setup_python_env.sh deleted file mode 100755 index 42dfa7108..000000000 --- a/scripts/setup_python_env.sh +++ /dev/null @@ -1,74 +0,0 @@ -#!/bin/bash - -# Unless explicitly stated otherwise all files in this repository are licensed -# under the Apache License Version 2.0. -# This product includes software developed at Datadog (https://www.datadoghq.com/). - -# Sets up the Python environment for the lint, unit-test, and publish-pypi -# CI jobs (and for local repro of those flows). Replaces the inline -# .python-before-script anchor previously defined in -# ci/input_files/build.yaml.tpl. -# -# Steps: -# 1. (Optional) Rewrite pyproject.toml's ddtrace dep based on the -# env-var contract documented in scripts/_spec_ddtrace_dep.sh -# (DD_TRACE_COMMIT / DD_TRACE_COMMIT_BRANCH / DD_TRACE_WHEEL / -# UPSTREAM_PIPELINE_ID). When dd-trace-py's CI triggers this repo's -# pipeline it sets UPSTREAM_PIPELINE_ID, so the unit-test job -# exercises the PR's wheel rather than the released ddtrace. -# 2. Create and activate a virtualenv ("venv/"). -# 3. Install lambda-python's runtime + dev dependencies. pip resolves the -# whole graph in one pass against the (possibly rewritten) pyproject.toml, -# so any version conflicts surface as install errors instead of -# runtime surprises. -# 4. Install poetry. -# -# Same dep-resolution path as scripts/build_layers.sh — both source -# scripts/_spec_ddtrace_dep.sh. -# -# DD_TRACE_COMMIT / DD_TRACE_COMMIT_BRANCH build ddtrace from source, which -# requires cargo, cmake, and a C/C++ toolchain — not present in the slim -# Python runner images. They are intended for local repro / git-bisect -# workflows. The dd-trace-py CI trigger uses UPSTREAM_PIPELINE_ID. -# -# Venv contract: this script sources venv/bin/activate inside its own -# subshell, so the activation does NOT persist into the calling job. Calling -# jobs must `source venv/bin/activate` themselves before running their -# command (matching the existing pattern in build.yaml.tpl). -# -# Environment variables: -# PYTHON_VERSION Python minor version (e.g. 3.12 or just 12). Required -# when the UPSTREAM_PIPELINE_ID branch is taken. -# ARCH "amd64" or "arm64". Required for correct ddtrace wheel -# selection when UPSTREAM_PIPELINE_ID is set (GitLab matrix -# should pass the runtime arch; if unset, host arch is used). - -set -e - -if [ -z "${IS_LINT:-}" ] || [ "${IS_LINT}" = "0" ] || [ "${IS_LINT}" = "false" ]; then - # Normalize Python version shorthand (e.g. 12 -> 3.12, 3.12 -> 3.12) - if [ -n "${PYTHON_VERSION:-}" ]; then - if [[ "$PYTHON_VERSION" =~ ^[0-9]+$ ]]; then - PYTHON_VERSION="3.${PYTHON_VERSION}" - fi - fi - - # Backup pyproject.toml so the rewrite doesn't persist across runs (matters - # for local invocations; CI runners are ephemeral but cheap to be tidy). - cp pyproject.toml pyproject.toml.bak - cleanup() { - mv pyproject.toml.bak pyproject.toml 2>/dev/null || true - } - trap cleanup EXIT - - source "$(dirname "$0")/_spec_ddtrace_dep.sh" - spec_ddtrace_dep -fi - -pip install virtualenv -virtualenv venv -source venv/bin/activate -pip install .[dev] -pip install poetry - -python -c "import ddtrace; print('ddtrace version:', ddtrace.__version__)" From 9f64dff11f7a0fd3c374a879863a224e45670a6e Mon Sep 17 00:00:00 2001 From: Rithika Narayan <93233069+rithikanarayan@users.noreply.github.com> Date: Fri, 8 May 2026 09:34:49 -0400 Subject: [PATCH 400/403] Revert "Revert "Revert "Revert "ci: install upstream ddtrace wheel during PR-triggered unit tests"""" (#823) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Revert "Revert "Revert "Revert "ci: install upstream ddtrace wheel during PR-…" This reverts commit d831ec2051acba152ef96d149a2d9b5c563a3794. * arch stuff --- ci/input_files/build.yaml.tpl | 23 +++++----- scripts/_spec_ddtrace_dep.sh | 82 +++++++++++++++++++++++++++++++++++ scripts/build_layers.sh | 74 ++++--------------------------- scripts/setup_python_env.sh | 74 +++++++++++++++++++++++++++++++ 4 files changed, 177 insertions(+), 76 deletions(-) create mode 100644 scripts/_spec_ddtrace_dep.sh create mode 100755 scripts/setup_python_env.sh diff --git a/ci/input_files/build.yaml.tpl b/ci/input_files/build.yaml.tpl index 420eea649..54066af47 100644 --- a/ci/input_files/build.yaml.tpl +++ b/ci/input_files/build.yaml.tpl @@ -7,13 +7,6 @@ stages: - publish - e2e -.python-before-script: &python-before-script - - pip install virtualenv - - virtualenv venv - - source venv/bin/activate - - pip install .[dev] - - pip install poetry - default: retry: max: 1 @@ -73,17 +66,24 @@ lint python: tags: ["arch:amd64"] image: registry.ddbuild.io/images/mirror/python:{{ $runtime.image }} cache: &{{ $runtime.name }}-{{ $runtime.arch }}-cache - before_script: *python-before-script + before_script: + - PYTHON_VERSION={{ $runtime.python_version }} ARCH={{ $runtime.arch }} IS_LINT="1" ./scripts/setup_python_env.sh script: - source venv/bin/activate - ./scripts/check_format.sh unit-test ({{ $runtime.name }}-{{ $runtime.arch }}): stage: test - tags: ["arch:amd64"] + tags: + {{ if eq $runtime.arch "arm64" }} + - "arch:arm64" + {{ else }} + - "arch:amd64" + {{ end }} image: registry.ddbuild.io/images/mirror/python:{{ $runtime.image }} cache: &{{ $runtime.name }}-{{ $runtime.arch }}-cache - before_script: *python-before-script + before_script: + - PYTHON_VERSION={{ $runtime.python_version }} ARCH={{ $runtime.arch }} ./scripts/setup_python_env.sh script: - source venv/bin/activate - pytest -vv @@ -195,7 +195,8 @@ publish-pypi-package: stage: publish tags: ["arch:amd64"] image: registry.ddbuild.io/images/docker:20.10-py3 - before_script: *python-before-script + before_script: + - ./scripts/setup_python_env.sh cache: [] rules: - if: '$CI_COMMIT_TAG =~ /^v.*/' diff --git a/scripts/_spec_ddtrace_dep.sh b/scripts/_spec_ddtrace_dep.sh new file mode 100644 index 000000000..bb64bb178 --- /dev/null +++ b/scripts/_spec_ddtrace_dep.sh @@ -0,0 +1,82 @@ +#!/bin/bash + +# Unless explicitly stated otherwise all files in this repository are licensed +# under the Apache License Version 2.0. +# This product includes software developed at Datadog (https://www.datadoghq.com/). + +# Shared helpers for rewriting the ddtrace dependency in pyproject.toml. +# Sourced by scripts/build_layers.sh and scripts/setup_python_env.sh, so the +# layer build and the unit-test/lint/publish jobs use the same env-var +# contract and resolve the dep in a single pip pass. +# +# Env-var contract (highest precedence first): +# DD_TRACE_COMMIT Specific dd-trace-py commit SHA from GitHub. +# DD_TRACE_COMMIT_BRANCH dd-trace-py branch name from GitHub. +# DD_TRACE_WHEEL Path to a pre-built ddtrace .whl file. +# UPSTREAM_PIPELINE_ID GitLab pipeline ID from dd-trace-py. Looks up the +# matching wheel from S3, trying the smaller +# serverless build first then falling back to the +# standard manylinux2014 build. +# +# When none of these are set, spec_ddtrace_dep is a no-op. +# +# When UPSTREAM_PIPELINE_ID is set, also requires: +# PYTHON_VERSION e.g. "3.12" (used to build the cpXY platform tag) +# ARCH "amd64" (default) or "arm64" + +# Replace the ddtrace dependency block in pyproject.toml. +# Usage: replace_ddtrace_dep "ddtrace = { ... }" +replace_ddtrace_dep() { + echo "Replacing ddtrace dep with: $1" + perl -i -0777 -pe "s|ddtrace = \[[^\]]*\]|$1|gs" pyproject.toml +} + +# Search S3 for a wheel matching basename + index, then rewrite the ddtrace +# dep to point at the downloaded file. Globals required: +# S3_BASE, PY_TAG, PLATFORM +# Returns 0 on success, 1 if no matching wheel was found at the index. +_search_and_spec_s3_wheel() { + local basename=$1 + local index=$2 + local search_pattern="${basename}-[^\"]*${PY_TAG}[^\"]*${PLATFORM}[^\"]*\.whl" + local index_url="${S3_BASE}/index-${index}.html" + echo "Searching for wheel ${search_pattern} in ${index_url}" + local wheel_file + wheel_file=$(curl -sSfL "${index_url}" | grep -o "${search_pattern}" | head -n 1 || true) + if [ -z "$wheel_file" ]; then + return 1 + fi + curl -sSfL "${S3_BASE}/${wheel_file}" -o "${wheel_file}" + echo "Using S3 wheel: ${wheel_file}" + replace_ddtrace_dep "${basename} = { file = \"${wheel_file}\" }" +} + +# Rewrite pyproject.toml's ddtrace dep based on the env-var precedence above. +# No-op if no override env var is set. Returns non-zero if UPSTREAM_PIPELINE_ID +# is set but no matching S3 wheel is found. +spec_ddtrace_dep() { + if [ -n "${DD_TRACE_COMMIT:-}" ]; then + replace_ddtrace_dep "ddtrace = { git = \"https://github.com/DataDog/dd-trace-py.git\", rev = \"${DD_TRACE_COMMIT}\" }" + elif [ -n "${DD_TRACE_COMMIT_BRANCH:-}" ]; then + replace_ddtrace_dep "ddtrace = { git = \"https://github.com/DataDog/dd-trace-py.git\", branch = \"${DD_TRACE_COMMIT_BRANCH}\" }" + elif [ -n "${DD_TRACE_WHEEL:-}" ]; then + local basename + basename=$(sed 's/^.*\///' <<< "${DD_TRACE_WHEEL%%-*}") + replace_ddtrace_dep "${basename} = { file = \"${DD_TRACE_WHEEL}\" }" + elif [ -n "${UPSTREAM_PIPELINE_ID:-}" ]; then + if [ -z "${PYTHON_VERSION:-}" ]; then + echo "ERROR: PYTHON_VERSION must be set when UPSTREAM_PIPELINE_ID is set" >&2 + return 1 + fi + S3_BASE="https://dd-trace-py-builds.s3.amazonaws.com/${UPSTREAM_PIPELINE_ID}" + PY_TAG="cp$(echo "$PYTHON_VERSION" | tr -d '.')" + if [ "$ARCH" = "amd64" ]; then + PLATFORM="manylinux2014_x86_64" + else + PLATFORM="manylinux2014_aarch64" + fi + _search_and_spec_s3_wheel "ddtrace_serverless" "serverless" \ + || _search_and_spec_s3_wheel "ddtrace" "manylinux2014" \ + || { echo "ERROR: No matching ddtrace wheel for ${PY_TAG} ${PLATFORM} in pipeline ${UPSTREAM_PIPELINE_ID}, skipping version patch!" >&2; } + fi +} diff --git a/scripts/build_layers.sh b/scripts/build_layers.sh index 8cdfc1534..7c3bd5fae 100755 --- a/scripts/build_layers.sh +++ b/scripts/build_layers.sh @@ -88,68 +88,16 @@ cleanup() { } trap cleanup EXIT -# Helper: replace the multi-line ddtrace dependency in pyproject.toml. -# Uses perl instead of sed -z for macOS/Linux portability. -replace_ddtrace_dep() { - echo "Replacing dep with $1" - perl -i -0777 -pe "s|ddtrace = \[[^\]]*\]|$1|gs" pyproject.toml -} +# Source the shared ddtrace-dep specification logic. spec_ddtrace_dep reads +# DD_TRACE_COMMIT / DD_TRACE_COMMIT_BRANCH / DD_TRACE_WHEEL / UPSTREAM_PIPELINE_ID +# (PYTHON_VERSION + ARCH for the S3 path) and rewrites the ddtrace dep block +# in pyproject.toml. +source "$(dirname "$0")/_spec_ddtrace_dep.sh" function make_path_absolute { echo "$(cd "$(dirname "$1")"; pwd)/$(basename "$1")" } -function search_wheel { - # Args: [wheel base name] [index] - - WHEEL_BASENAME=$1 - INDEX=$2 - - SEARCH_PATTERN="${WHEEL_BASENAME}-[^\"]*${PY_TAG}[^\"]*${PLATFORM}[^\"]*\.whl" - INDEX_URL="${S3_BASE}/index-${INDEX}.html" - echo "Searching for wheel ${SEARCH_PATTERN}" - export WHEEL_FILE=$(curl -sSfL ${INDEX_URL} | grep -o "$SEARCH_PATTERN" | head -n 1) - if [ ! -z "${WHEEL_FILE}" ]; then - curl -sSfL "${S3_BASE}/${WHEEL_FILE}" -o "${WHEEL_FILE}" - echo "Using S3 wheel: ${WHEEL_FILE}" - replace_ddtrace_dep "${WHEEL_BASENAME} = { file = \"${WHEEL_FILE}\" }" - fi -} - -function find_and_spec_wheel { - # Args: [python version] [wheel base name] [index] - - arch=$2 - wheel_basename=$3 - index=$4 - - # Restore pyproject.toml to a clean state for each build iteration - cp pyproject.toml.bak pyproject.toml - - # Replace ddtrace source if necessary - if [ -n "$DD_TRACE_COMMIT" ]; then - replace_ddtrace_dep "${wheel_basename} = { git = \"https://github.com/DataDog/dd-trace-py.git\", rev = \"$DD_TRACE_COMMIT\" }" - elif [ -n "$DD_TRACE_COMMIT_BRANCH" ]; then - replace_ddtrace_dep "${wheel_basename} = { git = \"https://github.com/DataDog/dd-trace-py.git\", branch = \"$DD_TRACE_COMMIT_BRANCH\" }" - elif [ -n "$DD_TRACE_WHEEL" ]; then - wheel_basename=$(sed 's/^.*\///' <<< ${DD_TRACE_WHEEL%%-*}) - replace_ddtrace_dep "${wheel_basename} = { file = \"$DD_TRACE_WHEEL\" }" - elif [ -n "$UPSTREAM_PIPELINE_ID" ]; then - S3_BASE="https://dd-trace-py-builds.s3.amazonaws.com/${UPSTREAM_PIPELINE_ID}" - if [ "${arch}" = "amd64" ]; then - PLATFORM="manylinux2014_x86_64" - else - PLATFORM="manylinux2014_aarch64" - fi - PY_TAG="cp$(echo "$1" | tr -d '.')" - search_wheel ${wheel_basename} ${index} - if [ -z "${WHEEL_FILE}" ]; then - echo "No S3 wheel found for ${PY_TAG} ${PLATFORM}, using default pyproject.toml version" - return 1 - fi - fi -} - function docker_build_zip { # Args: [python version] [zip destination] @@ -180,14 +128,10 @@ do for architecture in "${ARCHS[@]}" do echo "Building layer for Python ${python_version} arch=${architecture}" - set +e - find_and_spec_wheel ${python_version} ${architecture} "ddtrace_serverless" "serverless" - FAILURE=$? - if [ $FAILURE != 0 ]; then - echo "Attempting layer build again with package ddtrace" - find_and_spec_wheel ${python_version} ${architecture} "ddtrace" "manylinux2014" - fi - set -e + # Restore pyproject.toml to a clean state before each iteration so the + # rewrite is deterministic regardless of what the previous loop did. + cp pyproject.toml.bak pyproject.toml + PYTHON_VERSION="${python_version}" ARCH="${architecture}" spec_ddtrace_dep docker_build_zip ${python_version} $LAYER_DIR/${LAYER_FILES_PREFIX}-${architecture}-${python_version}.zip ${architecture} done done diff --git a/scripts/setup_python_env.sh b/scripts/setup_python_env.sh new file mode 100755 index 000000000..42dfa7108 --- /dev/null +++ b/scripts/setup_python_env.sh @@ -0,0 +1,74 @@ +#!/bin/bash + +# Unless explicitly stated otherwise all files in this repository are licensed +# under the Apache License Version 2.0. +# This product includes software developed at Datadog (https://www.datadoghq.com/). + +# Sets up the Python environment for the lint, unit-test, and publish-pypi +# CI jobs (and for local repro of those flows). Replaces the inline +# .python-before-script anchor previously defined in +# ci/input_files/build.yaml.tpl. +# +# Steps: +# 1. (Optional) Rewrite pyproject.toml's ddtrace dep based on the +# env-var contract documented in scripts/_spec_ddtrace_dep.sh +# (DD_TRACE_COMMIT / DD_TRACE_COMMIT_BRANCH / DD_TRACE_WHEEL / +# UPSTREAM_PIPELINE_ID). When dd-trace-py's CI triggers this repo's +# pipeline it sets UPSTREAM_PIPELINE_ID, so the unit-test job +# exercises the PR's wheel rather than the released ddtrace. +# 2. Create and activate a virtualenv ("venv/"). +# 3. Install lambda-python's runtime + dev dependencies. pip resolves the +# whole graph in one pass against the (possibly rewritten) pyproject.toml, +# so any version conflicts surface as install errors instead of +# runtime surprises. +# 4. Install poetry. +# +# Same dep-resolution path as scripts/build_layers.sh — both source +# scripts/_spec_ddtrace_dep.sh. +# +# DD_TRACE_COMMIT / DD_TRACE_COMMIT_BRANCH build ddtrace from source, which +# requires cargo, cmake, and a C/C++ toolchain — not present in the slim +# Python runner images. They are intended for local repro / git-bisect +# workflows. The dd-trace-py CI trigger uses UPSTREAM_PIPELINE_ID. +# +# Venv contract: this script sources venv/bin/activate inside its own +# subshell, so the activation does NOT persist into the calling job. Calling +# jobs must `source venv/bin/activate` themselves before running their +# command (matching the existing pattern in build.yaml.tpl). +# +# Environment variables: +# PYTHON_VERSION Python minor version (e.g. 3.12 or just 12). Required +# when the UPSTREAM_PIPELINE_ID branch is taken. +# ARCH "amd64" or "arm64". Required for correct ddtrace wheel +# selection when UPSTREAM_PIPELINE_ID is set (GitLab matrix +# should pass the runtime arch; if unset, host arch is used). + +set -e + +if [ -z "${IS_LINT:-}" ] || [ "${IS_LINT}" = "0" ] || [ "${IS_LINT}" = "false" ]; then + # Normalize Python version shorthand (e.g. 12 -> 3.12, 3.12 -> 3.12) + if [ -n "${PYTHON_VERSION:-}" ]; then + if [[ "$PYTHON_VERSION" =~ ^[0-9]+$ ]]; then + PYTHON_VERSION="3.${PYTHON_VERSION}" + fi + fi + + # Backup pyproject.toml so the rewrite doesn't persist across runs (matters + # for local invocations; CI runners are ephemeral but cheap to be tidy). + cp pyproject.toml pyproject.toml.bak + cleanup() { + mv pyproject.toml.bak pyproject.toml 2>/dev/null || true + } + trap cleanup EXIT + + source "$(dirname "$0")/_spec_ddtrace_dep.sh" + spec_ddtrace_dep +fi + +pip install virtualenv +virtualenv venv +source venv/bin/activate +pip install .[dev] +pip install poetry + +python -c "import ddtrace; print('ddtrace version:', ddtrace.__version__)" From 018b43c357b16f3984f2787bc31f1fe4b3076b0e Mon Sep 17 00:00:00 2001 From: Thomas Kowalski Date: Fri, 15 May 2026 16:39:30 +0200 Subject: [PATCH 401/403] test: avoid side effects from mutating environ (#826) * test: avoid side effects from mutating environ * test: stop profiler at end --- tests/test_api.py | 3 +-- tests/test_wrapper.py | 33 ++++++++++++++++++++++----------- 2 files changed, 23 insertions(+), 13 deletions(-) diff --git a/tests/test_api.py b/tests/test_api.py index 3b42cfd76..0cb42a0ac 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -23,7 +23,7 @@ def setUp(self): self.env_patcher.start() def tearDown(self): - del os.environ["AWS_REGION"] + self.env_patcher.stop() @patch("datadog_lambda.config.Config.fips_mode_enabled", True) @patch("botocore.session.Session.create_client") @@ -172,7 +172,6 @@ def test_no_fips_for_standard_regions(self, mock_boto3_client): mock_client.get_secret_value.return_value = {"SecretString": "test-api-key"} mock_boto3_client.return_value = mock_client - os.environ.clear() os.environ["AWS_REGION"] = "us-west-2" os.environ["DD_API_KEY_SECRET_ARN"] = ( "arn:aws:secretsmanager:us-west-2:1234567890:secret:key-name-123ABC" diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index 56c8e612d..ba2cce5e9 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -113,6 +113,7 @@ def lambda_handler(event, context): self.mock_inject_correlation_ids.assert_called() def test_datadog_lambda_wrapper_flush_to_log(self): + self.addCleanup(os.environ.pop, "DD_FLUSH_TO_LOG", None) os.environ["DD_FLUSH_TO_LOG"] = "True" @wrapper.datadog_lambda_wrapper @@ -124,8 +125,6 @@ def lambda_handler(event, context): self.mock_threadstats_flush_distributions.assert_not_called() - del os.environ["DD_FLUSH_TO_LOG"] - def test_datadog_lambda_wrapper_flush_in_thread(self): # force ThreadStats to flush in thread import datadog_lambda.metric as metric_module @@ -183,6 +182,7 @@ def lambda_handler(event, context): @patch("datadog_lambda.config.Config.trace_enabled", False) def test_datadog_lambda_wrapper_inject_correlation_ids(self): + self.addCleanup(os.environ.pop, "DD_LOGS_INJECTION", None) os.environ["DD_LOGS_INJECTION"] = "True" @wrapper.datadog_lambda_wrapper @@ -194,8 +194,6 @@ def lambda_handler(event, context): self.mock_set_correlation_ids.assert_called() self.mock_inject_correlation_ids.assert_called() - del os.environ["DD_LOGS_INJECTION"] - def test_invocations_metric(self): @wrapper.datadog_lambda_wrapper def lambda_handler(event, context): @@ -484,6 +482,7 @@ def lambda_handler(event, context): def test_dd_requests_service_name_default(self): # TODO(astuyve) this is now set by CI, so we need to null it out for this case + self.addCleanup(os.environ.pop, "DD_SERVICE", None) os.environ["DD_SERVICE"] = "aws.lambda" @wrapper.datadog_lambda_wrapper @@ -493,6 +492,7 @@ def lambda_handler(event, context): self.assertEqual(os.environ.get("DD_REQUESTS_SERVICE_NAME"), "aws.lambda") def test_dd_requests_service_name_set(self): + self.addCleanup(os.environ.pop, "DD_SERVICE", None) os.environ["DD_SERVICE"] = "myAwesomeService" @wrapper.datadog_lambda_wrapper @@ -500,7 +500,6 @@ def lambda_handler(event, context): pass self.assertEqual(os.environ.get("DD_REQUESTS_SERVICE_NAME"), "myAwesomeService") - del os.environ["DD_SERVICE"] @patch("datadog_lambda.config.Config.make_inferred_span", False) def test_encode_authorizer_span(self): @@ -563,12 +562,13 @@ class TestLambdaWrapperWithTraceContext(unittest.TestCase): f"Root={xray_root};Parent={xray_parent};Sampled=1;Lineage=c6c5b1b9:0" ) - @patch( - "os.environ", + @patch.dict( + os.environ, { "AWS_XRAY_DAEMON_ADDRESS": xray_daemon_envvar, "_X_AMZN_TRACE_ID": xray_trace_envvar, }, + clear=True, ) def test_event_bridge_sqs_payload(self): reset_xray_connection() @@ -782,6 +782,7 @@ def lambda_handler(event, context): lambda_handler(self.api_gateway_request, get_mock_context()) def test_no_blocking_appsec_disabled(self): + self.addCleanup(os.environ.pop, "DD_APPSEC_ENABLED", None) os.environ["DD_APPSEC_ENABLED"] = "false" importlib.reload(wrapper) @@ -855,17 +856,25 @@ def lambda_handler(event, context): def test_profiling_enabled(monkeypatch): importlib.reload(wrapper) - original_Profiler_start = wrapper.profiler.Profiler.start - Profiler_start_calls = [] + Profiler_start_calls: list = [] + Profiler_stop_calls: list = [] - def Profiler_start(*args, **kwargs): + real_Profiler_start = wrapper.profiler.Profiler.start + real_Profiler_stop = wrapper.profiler.Profiler.stop + + def Profiler_start(*args: object, **kwargs: object) -> None: Profiler_start_calls.append((args, kwargs)) - return original_Profiler_start(*args, **kwargs) + return real_Profiler_start(*args, **kwargs) + + def Profiler_stop(*args: object, **kwargs: object) -> None: + Profiler_stop_calls.append((args, kwargs)) + return real_Profiler_stop(*args, **kwargs) monkeypatch.setattr("datadog_lambda.wrapper.is_new_sandbox", lambda: True) monkeypatch.setattr( "datadog_lambda.wrapper.profiler.Profiler.start", Profiler_start ) + monkeypatch.setattr("datadog_lambda.wrapper.profiler.Profiler.stop", Profiler_stop) expected_response = { "statusCode": 200, @@ -881,6 +890,8 @@ def lambda_handler(event, context): assert response == expected_response assert len(Profiler_start_calls) == 1 + lambda_handler.prof.stop() + @patch("datadog_lambda.config.Config.llmobs_enabled", True) def test_llmobs_enabled(monkeypatch): From 53b46d4c142df30346a13ac0d6b626c55821a7ea Mon Sep 17 00:00:00 2001 From: pablomartinezbernardo <134320516+pablomartinezbernardo@users.noreply.github.com> Date: Wed, 20 May 2026 15:50:22 +0200 Subject: [PATCH 402/403] Remove update_deps.yml (#827) --- .github/workflows/update_deps.yml | 43 ------------------------------- 1 file changed, 43 deletions(-) delete mode 100644 .github/workflows/update_deps.yml diff --git a/.github/workflows/update_deps.yml b/.github/workflows/update_deps.yml deleted file mode 100644 index 15a3ac665..000000000 --- a/.github/workflows/update_deps.yml +++ /dev/null @@ -1,43 +0,0 @@ -name: update-deps - -on: - schedule: - - cron: "0 10 * * *" # Run at 10 am every day - workflow_dispatch: - -jobs: - check: - runs-on: ubuntu-latest - environment: - name: protected-main-env - steps: - - name: Generate token - id: generate_token - uses: actions/create-github-app-token@df432ceedc7162793a195dd1713ff69aefc7379e # v2.0.6 - with: - app-id: ${{ secrets.GH_APP_ID }} - private-key: ${{ secrets.GH_APP_PRIVATE_KEY }} - - - uses: actions/checkout@v3 - with: - token: ${{ steps.generate_token.outputs.token }} - - - name: Set up Python - uses: actions/setup-python@v4 - with: - python-version: 3.13 - - - name: Update Dependencies - run: | - pip install poetry - poetry update - - - name: Create Pull Request - uses: peter-evans/create-pull-request@v3 - with: - token: ${{ steps.generate_token.outputs.token }} - commit-message: update dependencies - title: Update Dependencies - body: | - Autogenerated PR to update all deps to latest versions - branch: update-dependencies From f7a595599ae5ae691bf871228adb7f77818f836a Mon Sep 17 00:00:00 2001 From: Yiming Luo <10097700+lym953@users.noreply.github.com> Date: Thu, 21 May 2026 14:45:38 -0400 Subject: [PATCH 403/403] [SVLS-8493] feat: Rename durable span tags from aws_lambda.durable_function.* to aws.durable.* (#829) * Rename durable span tags from aws_lambda.durable_function.* to aws.durable.* Co-Authored-By: Claude Opus 4.7 (1M context) * style: fix black formatting in durable.py Co-Authored-By: Claude Opus 4.7 (1M context) --------- Co-authored-by: Claude Opus 4.7 (1M context) --- datadog_lambda/durable.py | 8 +++----- datadog_lambda/wrapper.py | 2 +- tests/test_durable.py | 12 ++++++------ 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/datadog_lambda/durable.py b/datadog_lambda/durable.py index 9a28b36bd..df023a9c3 100644 --- a/datadog_lambda/durable.py +++ b/datadog_lambda/durable.py @@ -47,11 +47,9 @@ def extract_durable_function_tags(event): operations = event.get("InitialExecutionState", {}).get("Operations", []) is_first_invocation = len(operations) == 1 return { - "aws_lambda.durable_function.execution_name": execution_name, - "aws_lambda.durable_function.execution_id": execution_id, - "aws_lambda.durable_function.first_invocation": str( - is_first_invocation - ).lower(), + "aws.durable.execution_name": execution_name, + "aws.durable.execution_id": execution_id, + "aws.durable.first_invocation": str(is_first_invocation).lower(), } diff --git a/datadog_lambda/wrapper.py b/datadog_lambda/wrapper.py index 767816a50..d955480c8 100644 --- a/datadog_lambda/wrapper.py +++ b/datadog_lambda/wrapper.py @@ -346,7 +346,7 @@ def _after(self, event, context): durable_status = extract_durable_execution_status(self.response, event) if durable_status: self.span.set_tag( - "aws_lambda.durable_function.execution_status", + "aws.durable.execution_status", durable_status, ) diff --git a/tests/test_durable.py b/tests/test_durable.py index 36a3e8c5f..a4f7c2f2d 100644 --- a/tests/test_durable.py +++ b/tests/test_durable.py @@ -57,9 +57,9 @@ def test_sets_first_invocation_true_when_only_execution_operation(self): self.assertEqual( result, { - "aws_lambda.durable_function.execution_name": "my-execution", - "aws_lambda.durable_function.execution_id": "550e8400-e29b-41d4-a716-446655440004", - "aws_lambda.durable_function.first_invocation": "true", + "aws.durable.execution_name": "my-execution", + "aws.durable.execution_id": "550e8400-e29b-41d4-a716-446655440004", + "aws.durable.first_invocation": "true", }, ) @@ -79,9 +79,9 @@ def test_sets_first_invocation_false_when_multiple_operations(self): self.assertEqual( result, { - "aws_lambda.durable_function.execution_name": "my-execution", - "aws_lambda.durable_function.execution_id": "550e8400-e29b-41d4-a716-446655440004", - "aws_lambda.durable_function.first_invocation": "false", + "aws.durable.execution_name": "my-execution", + "aws.durable.execution_id": "550e8400-e29b-41d4-a716-446655440004", + "aws.durable.first_invocation": "false", }, )