dd-trace 5.53.0 → 5.55.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE-3rdparty.csv +2 -1
- package/ci/cypress/plugin.js +8 -0
- package/ci/cypress/polyfills.js +23 -0
- package/ci/init.js +8 -7
- package/index.d.ts +33 -16
- package/initialize.mjs +5 -6
- package/package.json +40 -38
- package/packages/datadog-code-origin/index.js +22 -4
- package/packages/datadog-core/src/utils/src/get.js +1 -1
- package/packages/datadog-core/src/utils/src/has.js +1 -1
- package/packages/datadog-core/src/utils/src/kebabcase.js +4 -6
- package/packages/datadog-core/src/utils/src/parse-tags.js +1 -1
- package/packages/datadog-core/src/utils/src/pick.js +2 -2
- package/packages/datadog-core/src/utils/src/set.js +1 -1
- package/packages/datadog-core/src/utils/src/uniq.js +1 -1
- package/packages/datadog-instrumentations/src/amqp10.js +19 -17
- package/packages/datadog-instrumentations/src/amqplib.js +52 -35
- package/packages/datadog-instrumentations/src/apollo.js +2 -2
- package/packages/datadog-instrumentations/src/aws-sdk.js +1 -1
- package/packages/datadog-instrumentations/src/cassandra-driver.js +10 -10
- package/packages/datadog-instrumentations/src/child_process.js +1 -2
- package/packages/datadog-instrumentations/src/confluentinc-kafka-javascript.js +89 -75
- package/packages/datadog-instrumentations/src/cookie-parser.js +1 -1
- package/packages/datadog-instrumentations/src/couchbase.js +6 -9
- package/packages/datadog-instrumentations/src/cucumber.js +108 -68
- package/packages/datadog-instrumentations/src/cypress.js +2 -1
- package/packages/datadog-instrumentations/src/dns.js +5 -5
- package/packages/datadog-instrumentations/src/elasticsearch.js +9 -10
- package/packages/datadog-instrumentations/src/fastify.js +7 -9
- package/packages/datadog-instrumentations/src/fs.js +1 -1
- package/packages/datadog-instrumentations/src/google-cloud-pubsub.js +35 -43
- package/packages/datadog-instrumentations/src/graphql.js +7 -10
- package/packages/datadog-instrumentations/src/grpc/client.js +11 -23
- package/packages/datadog-instrumentations/src/grpc/server.js +7 -20
- package/packages/datadog-instrumentations/src/hapi.js +10 -11
- package/packages/datadog-instrumentations/src/helpers/extract-package-and-module-path.js +16 -10
- package/packages/datadog-instrumentations/src/helpers/fetch.js +4 -5
- package/packages/datadog-instrumentations/src/helpers/hook.js +2 -3
- package/packages/datadog-instrumentations/src/helpers/hooks.js +0 -1
- package/packages/datadog-instrumentations/src/helpers/instrument.js +1 -41
- package/packages/datadog-instrumentations/src/helpers/register.js +11 -12
- package/packages/datadog-instrumentations/src/http/client.js +14 -20
- package/packages/datadog-instrumentations/src/jest.js +201 -143
- package/packages/datadog-instrumentations/src/kafkajs.js +52 -44
- package/packages/datadog-instrumentations/src/knex.js +4 -4
- package/packages/datadog-instrumentations/src/koa.js +2 -3
- package/packages/datadog-instrumentations/src/ldapjs.js +3 -4
- package/packages/datadog-instrumentations/src/mariadb.js +49 -65
- package/packages/datadog-instrumentations/src/mocha/main.js +116 -73
- package/packages/datadog-instrumentations/src/mocha/utils.js +36 -12
- package/packages/datadog-instrumentations/src/mocha/worker.js +6 -0
- package/packages/datadog-instrumentations/src/mocha.js +3 -1
- package/packages/datadog-instrumentations/src/mongodb-core.js +1 -1
- package/packages/datadog-instrumentations/src/mysql.js +30 -37
- package/packages/datadog-instrumentations/src/mysql2.js +53 -47
- package/packages/datadog-instrumentations/src/net.js +1 -1
- package/packages/datadog-instrumentations/src/next.js +1 -0
- package/packages/datadog-instrumentations/src/nyc.js +3 -2
- package/packages/datadog-instrumentations/src/openai.js +22 -24
- package/packages/datadog-instrumentations/src/oracledb.js +1 -1
- package/packages/datadog-instrumentations/src/otel-sdk-trace.js +4 -3
- package/packages/datadog-instrumentations/src/pg.js +3 -5
- package/packages/datadog-instrumentations/src/playwright.js +123 -83
- package/packages/datadog-instrumentations/src/protobufjs.js +3 -4
- package/packages/datadog-instrumentations/src/redis.js +4 -4
- package/packages/datadog-instrumentations/src/restify.js +9 -13
- package/packages/datadog-instrumentations/src/rhea.js +42 -54
- package/packages/datadog-instrumentations/src/router.js +30 -32
- package/packages/datadog-instrumentations/src/tedious.js +2 -3
- package/packages/datadog-instrumentations/src/vitest.js +87 -52
- package/packages/datadog-plugin-amqp10/src/consumer.js +7 -3
- package/packages/datadog-plugin-amqp10/src/producer.js +7 -3
- package/packages/datadog-plugin-amqplib/src/client.js +6 -2
- package/packages/datadog-plugin-amqplib/src/consumer.js +7 -3
- package/packages/datadog-plugin-amqplib/src/producer.js +7 -3
- package/packages/datadog-plugin-amqplib/src/util.js +1 -1
- package/packages/datadog-plugin-apollo/src/gateway/request.js +5 -6
- package/packages/datadog-plugin-apollo/src/gateway/validate.js +2 -3
- package/packages/datadog-plugin-avsc/src/schema_iterator.js +12 -12
- package/packages/datadog-plugin-aws-sdk/src/base.js +15 -10
- package/packages/datadog-plugin-aws-sdk/src/services/bedrockruntime/tracing.js +2 -2
- package/packages/datadog-plugin-aws-sdk/src/services/bedrockruntime/utils.js +13 -13
- package/packages/datadog-plugin-aws-sdk/src/services/cloudwatchlogs.js +3 -5
- package/packages/datadog-plugin-aws-sdk/src/services/dynamodb.js +28 -43
- package/packages/datadog-plugin-aws-sdk/src/services/eventbridge.js +2 -2
- package/packages/datadog-plugin-aws-sdk/src/services/kinesis.js +10 -11
- package/packages/datadog-plugin-aws-sdk/src/services/lambda.js +4 -6
- package/packages/datadog-plugin-aws-sdk/src/services/redshift.js +3 -5
- package/packages/datadog-plugin-aws-sdk/src/services/s3.js +3 -5
- package/packages/datadog-plugin-aws-sdk/src/services/sns.js +2 -3
- package/packages/datadog-plugin-aws-sdk/src/services/sqs.js +11 -15
- package/packages/datadog-plugin-aws-sdk/src/services/stepfunctions.js +1 -1
- package/packages/datadog-plugin-aws-sdk/src/util.js +5 -6
- package/packages/datadog-plugin-cassandra-driver/src/index.js +1 -1
- package/packages/datadog-plugin-child_process/src/index.js +4 -4
- package/packages/datadog-plugin-child_process/src/scrub-cmd-params.js +23 -23
- package/packages/datadog-plugin-cucumber/src/index.js +60 -4
- package/packages/datadog-plugin-cypress/src/cypress-plugin.js +99 -28
- package/packages/datadog-plugin-cypress/src/plugin.js +11 -1
- package/packages/datadog-plugin-cypress/src/support.js +24 -5
- package/packages/datadog-plugin-dd-trace-api/src/index.js +2 -1
- package/packages/datadog-plugin-elasticsearch/src/index.js +1 -1
- package/packages/datadog-plugin-express/src/code_origin.js +30 -0
- package/packages/datadog-plugin-express/src/index.js +10 -12
- package/packages/datadog-plugin-express/src/tracing.js +19 -0
- package/packages/datadog-plugin-google-cloud-pubsub/src/client.js +7 -3
- package/packages/datadog-plugin-google-cloud-pubsub/src/consumer.js +12 -7
- package/packages/datadog-plugin-google-cloud-pubsub/src/producer.js +6 -2
- package/packages/datadog-plugin-google-cloud-vertexai/src/tracing.js +27 -10
- package/packages/datadog-plugin-graphql/src/execute.js +2 -2
- package/packages/datadog-plugin-graphql/src/index.js +10 -8
- package/packages/datadog-plugin-graphql/src/resolve.js +19 -12
- package/packages/datadog-plugin-graphql/src/tools/index.js +1 -0
- package/packages/datadog-plugin-graphql/src/tools/signature.js +1 -0
- package/packages/datadog-plugin-graphql/src/tools/transforms.js +1 -0
- package/packages/datadog-plugin-grpc/src/client.js +2 -2
- package/packages/datadog-plugin-grpc/src/util.js +2 -2
- package/packages/datadog-plugin-http/src/client.js +23 -13
- package/packages/datadog-plugin-http2/src/client.js +24 -25
- package/packages/datadog-plugin-jest/src/index.js +26 -23
- package/packages/datadog-plugin-jest/src/util.js +8 -8
- package/packages/datadog-plugin-kafkajs/src/batch-consumer.js +3 -1
- package/packages/datadog-plugin-kafkajs/src/consumer.js +9 -5
- package/packages/datadog-plugin-kafkajs/src/producer.js +8 -3
- package/packages/datadog-plugin-kafkajs/src/utils.js +1 -1
- package/packages/datadog-plugin-langchain/src/handlers/chain.js +7 -7
- package/packages/datadog-plugin-langchain/src/handlers/embedding.js +2 -2
- package/packages/datadog-plugin-langchain/src/handlers/language_models/chat_model.js +6 -4
- package/packages/datadog-plugin-langchain/src/handlers/language_models/llm.js +5 -4
- package/packages/datadog-plugin-langchain/src/tracing.js +11 -10
- package/packages/datadog-plugin-mariadb/src/index.js +3 -9
- package/packages/datadog-plugin-mocha/src/index.js +39 -14
- package/packages/datadog-plugin-mongodb-core/src/index.js +3 -2
- package/packages/datadog-plugin-mysql/src/index.js +22 -9
- package/packages/datadog-plugin-mysql2/src/index.js +16 -0
- package/packages/datadog-plugin-net/src/tcp.js +1 -1
- package/packages/datadog-plugin-next/src/index.js +7 -6
- package/packages/datadog-plugin-openai/src/services.js +6 -10
- package/packages/datadog-plugin-openai/src/tracing.js +12 -18
- package/packages/datadog-plugin-oracledb/src/index.js +1 -1
- package/packages/datadog-plugin-playwright/src/index.js +25 -4
- package/packages/datadog-plugin-protobufjs/src/schema_iterator.js +8 -9
- package/packages/datadog-plugin-redis/src/index.js +2 -4
- package/packages/datadog-plugin-rhea/src/consumer.js +8 -6
- package/packages/datadog-plugin-rhea/src/producer.js +5 -2
- package/packages/datadog-plugin-router/src/index.js +1 -1
- package/packages/datadog-plugin-selenium/src/index.js +1 -6
- package/packages/datadog-plugin-vitest/src/index.js +52 -35
- package/packages/datadog-shimmer/src/shimmer.js +4 -8
- package/packages/dd-trace/src/appsec/api_security_sampler.js +2 -2
- package/packages/dd-trace/src/appsec/blocked_templates.js +1 -1
- package/packages/dd-trace/src/appsec/blocking.js +6 -20
- package/packages/dd-trace/src/appsec/iast/analyzers/analyzers.js +0 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/hardcoded-password-rules.js +0 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/hardcoded-secret-rules.js +0 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/hardcoded-secrets-rules.js +0 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/hsts-header-missing-analyzer.js +7 -12
- package/packages/dd-trace/src/appsec/iast/analyzers/missing-header-analyzer.js +5 -8
- package/packages/dd-trace/src/appsec/iast/analyzers/nosql-injection-mongodb-analyzer.js +4 -0
- package/packages/dd-trace/src/appsec/iast/analyzers/path-traversal-analyzer.js +9 -12
- package/packages/dd-trace/src/appsec/iast/analyzers/vulnerability-analyzer.js +5 -4
- package/packages/dd-trace/src/appsec/iast/context/context-plugin.js +2 -3
- package/packages/dd-trace/src/appsec/iast/iast-plugin.js +3 -3
- package/packages/dd-trace/src/appsec/iast/index.js +1 -0
- package/packages/dd-trace/src/appsec/iast/overhead-controller.js +102 -7
- package/packages/dd-trace/src/appsec/iast/path-line.js +7 -8
- package/packages/dd-trace/src/appsec/iast/security-controls/index.js +16 -24
- package/packages/dd-trace/src/appsec/iast/security-controls/parser.js +6 -6
- package/packages/dd-trace/src/appsec/iast/taint-tracking/filter.js +2 -2
- package/packages/dd-trace/src/appsec/iast/taint-tracking/operations-taint-object.js +3 -3
- package/packages/dd-trace/src/appsec/iast/taint-tracking/operations.js +4 -28
- package/packages/dd-trace/src/appsec/iast/taint-tracking/plugin.js +2 -8
- package/packages/dd-trace/src/appsec/iast/taint-tracking/plugins/kafka.js +3 -4
- package/packages/dd-trace/src/appsec/iast/taint-tracking/rewriter-esm.mjs +1 -1
- package/packages/dd-trace/src/appsec/iast/taint-tracking/rewriter.js +7 -8
- package/packages/dd-trace/src/appsec/iast/taint-tracking/taint-tracking-impl.js +2 -2
- package/packages/dd-trace/src/appsec/iast/telemetry/span-tags.js +7 -7
- package/packages/dd-trace/src/appsec/iast/telemetry/verbosity.js +2 -3
- package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/range-utils.js +10 -11
- package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-analyzers/command-sensitive-analyzer.js +1 -1
- package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-analyzers/ldap-sensitive-analyzer.js +1 -1
- package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-analyzers/sql-sensitive-analyzer.js +7 -7
- package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-handler.js +23 -28
- package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-regex.js +3 -3
- package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/index.js +4 -4
- package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/utils.js +6 -11
- package/packages/dd-trace/src/appsec/iast/vulnerabilities.js +0 -1
- package/packages/dd-trace/src/appsec/iast/vulnerability-reporter.js +9 -11
- package/packages/dd-trace/src/appsec/index.js +5 -5
- package/packages/dd-trace/src/appsec/rasp/index.js +15 -15
- package/packages/dd-trace/src/appsec/rasp/lfi.js +2 -1
- package/packages/dd-trace/src/appsec/reporter.js +232 -41
- package/packages/dd-trace/src/appsec/rule_manager.js +2 -2
- package/packages/dd-trace/src/appsec/sdk/set_user.js +2 -2
- package/packages/dd-trace/src/appsec/sdk/track_event.js +3 -3
- package/packages/dd-trace/src/appsec/stack_trace.js +2 -4
- package/packages/dd-trace/src/appsec/telemetry/index.js +31 -1
- package/packages/dd-trace/src/appsec/telemetry/rasp.js +3 -5
- package/packages/dd-trace/src/appsec/telemetry/waf.js +3 -5
- package/packages/dd-trace/src/appsec/user_tracking.js +3 -5
- package/packages/dd-trace/src/appsec/waf/waf_context_wrapper.js +8 -4
- package/packages/dd-trace/src/azure_metadata.js +9 -9
- package/packages/dd-trace/src/ci-visibility/dynamic-instrumentation/index.js +9 -8
- package/packages/dd-trace/src/ci-visibility/dynamic-instrumentation/worker/index.js +2 -2
- package/packages/dd-trace/src/ci-visibility/early-flake-detection/get-known-tests.js +3 -2
- package/packages/dd-trace/src/ci-visibility/exporters/agent-proxy/index.js +3 -3
- package/packages/dd-trace/src/ci-visibility/exporters/agentless/coverage-writer.js +3 -2
- package/packages/dd-trace/src/ci-visibility/exporters/agentless/di-logs-writer.js +3 -2
- package/packages/dd-trace/src/ci-visibility/exporters/agentless/writer.js +3 -2
- package/packages/dd-trace/src/ci-visibility/exporters/ci-visibility-exporter.js +6 -4
- package/packages/dd-trace/src/ci-visibility/exporters/git/git_metadata.js +6 -5
- package/packages/dd-trace/src/ci-visibility/exporters/test-worker/index.js +7 -6
- package/packages/dd-trace/src/ci-visibility/exporters/test-worker/writer.js +0 -2
- package/packages/dd-trace/src/ci-visibility/intelligent-test-runner/get-skippable-suites.js +3 -2
- package/packages/dd-trace/src/ci-visibility/log-submission/log-submission-plugin.js +5 -4
- package/packages/dd-trace/src/ci-visibility/requests/get-library-configuration.js +12 -8
- package/packages/dd-trace/src/ci-visibility/telemetry.js +4 -0
- package/packages/dd-trace/src/ci-visibility/test-management/get-test-management-tests.js +3 -2
- package/packages/dd-trace/src/config-helper.js +89 -0
- package/packages/dd-trace/src/config.js +159 -129
- package/packages/dd-trace/src/config_stable.js +10 -7
- package/packages/dd-trace/src/datastreams/encoding.js +9 -9
- package/packages/dd-trace/src/datastreams/fnv.js +2 -2
- package/packages/dd-trace/src/datastreams/pathway.js +4 -4
- package/packages/dd-trace/src/datastreams/processor.js +5 -7
- package/packages/dd-trace/src/datastreams/schemas/schema_builder.js +7 -7
- package/packages/dd-trace/src/datastreams/schemas/schema_sampler.js +4 -6
- package/packages/dd-trace/src/datastreams/size.js +1 -1
- package/packages/dd-trace/src/debugger/devtools_client/breakpoints.js +75 -69
- package/packages/dd-trace/src/debugger/devtools_client/condition.js +7 -10
- package/packages/dd-trace/src/debugger/devtools_client/defaults.js +1 -1
- package/packages/dd-trace/src/debugger/devtools_client/index.js +9 -2
- package/packages/dd-trace/src/debugger/devtools_client/remote_config.js +18 -38
- package/packages/dd-trace/src/debugger/devtools_client/send.js +3 -2
- package/packages/dd-trace/src/debugger/devtools_client/snapshot/collector.js +1 -2
- package/packages/dd-trace/src/debugger/devtools_client/snapshot/index.js +1 -1
- package/packages/dd-trace/src/debugger/devtools_client/snapshot/processor.js +11 -14
- package/packages/dd-trace/src/debugger/devtools_client/snapshot/redaction.js +4 -4
- package/packages/dd-trace/src/debugger/devtools_client/source-maps.js +2 -10
- package/packages/dd-trace/src/debugger/devtools_client/state.js +10 -3
- package/packages/dd-trace/src/debugger/index.js +1 -0
- package/packages/dd-trace/src/dogstatsd.js +7 -6
- package/packages/dd-trace/src/encode/0.4.js +14 -11
- package/packages/dd-trace/src/encode/0.5.js +4 -6
- package/packages/dd-trace/src/encode/agentless-ci-visibility.js +8 -8
- package/packages/dd-trace/src/encode/coverage-ci-visibility.js +1 -1
- package/packages/dd-trace/src/encode/tags-processors.js +1 -1
- package/packages/dd-trace/src/exporter.js +7 -6
- package/packages/dd-trace/src/exporters/agent/writer.js +1 -5
- package/packages/dd-trace/src/exporters/common/docker.js +4 -3
- package/packages/dd-trace/src/exporters/common/form-data.js +6 -4
- package/packages/dd-trace/src/exporters/common/request.js +5 -2
- package/packages/dd-trace/src/exporters/common/util.js +4 -2
- package/packages/dd-trace/src/external-logger/src/index.js +5 -5
- package/packages/dd-trace/src/flare/file.js +1 -5
- package/packages/dd-trace/src/format.js +1 -1
- package/packages/dd-trace/src/git_properties.js +1 -1
- package/packages/dd-trace/src/id.js +15 -9
- package/packages/dd-trace/src/iitm.js +10 -22
- package/packages/dd-trace/src/index.js +4 -3
- package/packages/dd-trace/src/lambda/handler.js +7 -6
- package/packages/dd-trace/src/lambda/index.js +2 -1
- package/packages/dd-trace/src/lambda/runtime/patch.js +7 -6
- package/packages/dd-trace/src/lambda/runtime/ritm.js +4 -3
- package/packages/dd-trace/src/llmobs/constants/tags.js +1 -0
- package/packages/dd-trace/src/llmobs/index.js +21 -5
- package/packages/dd-trace/src/llmobs/noop.js +18 -20
- package/packages/dd-trace/src/llmobs/plugins/bedrockruntime.js +6 -6
- package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/chain.js +2 -6
- package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/chat_model.js +3 -3
- package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/index.js +11 -13
- package/packages/dd-trace/src/llmobs/plugins/langchain/index.js +6 -6
- package/packages/dd-trace/src/llmobs/plugins/openai.js +2 -3
- package/packages/dd-trace/src/llmobs/sdk.js +4 -3
- package/packages/dd-trace/src/llmobs/span_processor.js +1 -1
- package/packages/dd-trace/src/llmobs/tagger.js +129 -102
- package/packages/dd-trace/src/llmobs/util.js +9 -9
- package/packages/dd-trace/src/llmobs/writers/base.js +1 -1
- package/packages/dd-trace/src/llmobs/writers/util.js +1 -1
- package/packages/dd-trace/src/log/index.js +9 -8
- package/packages/dd-trace/src/log/log.js +1 -1
- package/packages/dd-trace/src/log/writer.js +3 -4
- package/packages/dd-trace/src/msgpack/chunk.js +3 -3
- package/packages/dd-trace/src/msgpack/encoder.js +31 -31
- package/packages/dd-trace/src/noop/dogstatsd.js +6 -6
- package/packages/dd-trace/src/noop/span.js +4 -6
- package/packages/dd-trace/src/noop/tracer.js +1 -2
- package/packages/dd-trace/src/opentelemetry/span_processor.js +2 -2
- package/packages/dd-trace/src/opentelemetry/tracer.js +7 -6
- package/packages/dd-trace/src/opentracing/propagation/log.js +10 -13
- package/packages/dd-trace/src/opentracing/propagation/text_map.js +40 -37
- package/packages/dd-trace/src/opentracing/propagation/tracestate.js +8 -4
- package/packages/dd-trace/src/opentracing/span.js +16 -20
- package/packages/dd-trace/src/opentracing/tracer.js +9 -6
- package/packages/dd-trace/src/payload-tagging/config/index.js +17 -21
- package/packages/dd-trace/src/payload-tagging/index.js +1 -1
- package/packages/dd-trace/src/payload-tagging/tagging.js +6 -6
- package/packages/dd-trace/src/pkg.js +1 -1
- package/packages/dd-trace/src/plugin_manager.js +4 -3
- package/packages/dd-trace/src/plugins/ci_plugin.js +87 -11
- package/packages/dd-trace/src/plugins/consumer.js +2 -2
- package/packages/dd-trace/src/plugins/inbound.js +5 -1
- package/packages/dd-trace/src/plugins/index.js +0 -1
- package/packages/dd-trace/src/plugins/outbound.js +4 -5
- package/packages/dd-trace/src/plugins/plugin.js +1 -1
- package/packages/dd-trace/src/plugins/producer.js +2 -2
- package/packages/dd-trace/src/plugins/storage.js +2 -2
- package/packages/dd-trace/src/plugins/util/ci.js +28 -20
- package/packages/dd-trace/src/plugins/util/git.js +166 -12
- package/packages/dd-trace/src/plugins/util/inferred_proxy.js +1 -1
- package/packages/dd-trace/src/plugins/util/ip_extractor.js +1 -1
- package/packages/dd-trace/src/plugins/util/llm.js +27 -10
- package/packages/dd-trace/src/plugins/util/stacktrace.js +9 -2
- package/packages/dd-trace/src/plugins/util/test.js +315 -51
- package/packages/dd-trace/src/plugins/util/url.js +1 -1
- package/packages/dd-trace/src/plugins/util/urlfilter.js +13 -17
- package/packages/dd-trace/src/plugins/util/user-provided-git.js +14 -4
- package/packages/dd-trace/src/plugins/util/web.js +8 -8
- package/packages/dd-trace/src/priority_sampler.js +64 -53
- package/packages/dd-trace/src/profiling/config.js +51 -35
- package/packages/dd-trace/src/profiling/exporter_cli.js +20 -20
- package/packages/dd-trace/src/profiling/exporters/agent.js +1 -1
- package/packages/dd-trace/src/profiling/exporters/event_serializer.js +7 -6
- package/packages/dd-trace/src/profiling/exporters/file.js +2 -1
- package/packages/dd-trace/src/profiling/index.js +2 -1
- package/packages/dd-trace/src/profiling/profiler.js +44 -6
- package/packages/dd-trace/src/profiling/profilers/events.js +14 -17
- package/packages/dd-trace/src/profiling/profilers/shared.js +6 -1
- package/packages/dd-trace/src/profiling/profilers/space.js +3 -3
- package/packages/dd-trace/src/profiling/profilers/wall.js +6 -7
- package/packages/dd-trace/src/profiling/ssi-heuristics.js +3 -5
- package/packages/dd-trace/src/profiling/ssi-telemetry-mock-profiler.js +3 -1
- package/packages/dd-trace/src/profiling/tagger.js +21 -13
- package/packages/dd-trace/src/profiling/webspan-utils.js +1 -1
- package/packages/dd-trace/src/proxy.js +9 -10
- package/packages/dd-trace/src/random_sampler.js +40 -0
- package/packages/dd-trace/src/rate_limiter.js +4 -4
- package/packages/dd-trace/src/remote_config/index.js +3 -7
- package/packages/dd-trace/src/remote_config/manager.js +25 -13
- package/packages/dd-trace/src/require-package-json.js +1 -1
- package/packages/dd-trace/src/ritm.js +8 -8
- package/packages/dd-trace/src/runtime_metrics/runtime_metrics.js +5 -4
- package/packages/dd-trace/src/sampler.js +41 -4
- package/packages/dd-trace/src/sampling_rule.js +12 -3
- package/packages/dd-trace/src/scope.js +1 -1
- package/packages/dd-trace/src/serverless.js +11 -4
- package/packages/dd-trace/src/service-naming/schemas/util.js +1 -1
- package/packages/dd-trace/src/service-naming/schemas/v0/web.js +2 -3
- package/packages/dd-trace/src/span_processor.js +5 -4
- package/packages/dd-trace/src/span_sampler.js +4 -1
- package/packages/dd-trace/src/standalone/tracesource.js +2 -3
- package/packages/dd-trace/src/standalone/tracesource_priority_sampler.js +1 -2
- package/packages/dd-trace/src/startup-log.js +6 -18
- package/packages/dd-trace/src/supported-configurations.json +439 -0
- package/packages/dd-trace/src/telemetry/dependencies.js +64 -59
- package/packages/dd-trace/src/telemetry/logs/log-collector.js +9 -10
- package/packages/dd-trace/src/telemetry/metrics.js +10 -5
- package/packages/dd-trace/src/telemetry/send-data.js +8 -7
- package/packages/dd-trace/src/telemetry/telemetry.js +31 -45
- package/packages/dd-trace/src/tracer.js +3 -7
- package/packages/dd-trace/src/util.js +1 -6
- package/version.js +1 -0
- package/packages/datadog-instrumentations/src/paperplane.js +0 -77
- package/packages/datadog-plugin-paperplane/src/index.js +0 -25
- package/packages/datadog-plugin-paperplane/src/logger.js +0 -11
- package/packages/datadog-plugin-paperplane/src/server.js +0 -24
- package/packages/dd-trace/src/appsec/iast/analyzers/header-injection-analyzer.js +0 -122
- package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-analyzers/header-sensitive-analyzer.js +0 -20
|
@@ -75,12 +75,12 @@ breakpointSetChannel.on('message', async (probe) => {
|
|
|
75
75
|
async function removeBreakpoint (probeId) {
|
|
76
76
|
if (!sessionStarted) {
|
|
77
77
|
// We should not get in this state, but abort if we do, so the code doesn't fail unexpected
|
|
78
|
-
throw Error(`Cannot remove probe ${probeId}: Debugger not started`)
|
|
78
|
+
throw new Error(`Cannot remove probe ${probeId}: Debugger not started`)
|
|
79
79
|
}
|
|
80
80
|
|
|
81
81
|
const breakpointId = probeIdToBreakpointId.get(probeId)
|
|
82
82
|
if (!breakpointId) {
|
|
83
|
-
throw Error(`Unknown probe id: ${probeId}`)
|
|
83
|
+
throw new Error(`Unknown probe id: ${probeId}`)
|
|
84
84
|
}
|
|
85
85
|
await session.post('Debugger.removeBreakpoint', { breakpointId })
|
|
86
86
|
probeIdToBreakpointId.delete(probeId)
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
const request = require('../../exporters/common/request')
|
|
2
2
|
const id = require('../../id')
|
|
3
3
|
const log = require('../../log')
|
|
4
|
+
const { getEnvironmentVariable } = require('../../config-helper')
|
|
4
5
|
|
|
5
6
|
const {
|
|
6
7
|
incrementCountMetric,
|
|
@@ -36,7 +37,7 @@ function getKnownTests ({
|
|
|
36
37
|
headers: {
|
|
37
38
|
'Content-Type': 'application/json'
|
|
38
39
|
},
|
|
39
|
-
timeout:
|
|
40
|
+
timeout: 20_000,
|
|
40
41
|
url
|
|
41
42
|
}
|
|
42
43
|
|
|
@@ -48,7 +49,7 @@ function getKnownTests ({
|
|
|
48
49
|
options.path = `${evpProxyPrefix}/api/v2/ci/libraries/tests`
|
|
49
50
|
options.headers['X-Datadog-EVP-Subdomain'] = 'api'
|
|
50
51
|
} else {
|
|
51
|
-
const apiKey =
|
|
52
|
+
const apiKey = getEnvironmentVariable('DD_API_KEY')
|
|
52
53
|
if (!apiKey) {
|
|
53
54
|
return done(new Error('Known tests were not fetched because Datadog API key is not defined.'))
|
|
54
55
|
}
|
|
@@ -16,17 +16,17 @@ function getLatestEvpProxyVersion (err, agentInfo) {
|
|
|
16
16
|
return agentInfo.endpoints.reduce((acc, endpoint) => {
|
|
17
17
|
if (endpoint.includes(AGENT_EVP_PROXY_PATH_PREFIX)) {
|
|
18
18
|
const version = Number(endpoint.replace(AGENT_EVP_PROXY_PATH_REGEX, '$1'))
|
|
19
|
-
if (isNaN(version)) {
|
|
19
|
+
if (Number.isNaN(version)) {
|
|
20
20
|
return acc
|
|
21
21
|
}
|
|
22
|
-
return version
|
|
22
|
+
return Math.max(version, acc)
|
|
23
23
|
}
|
|
24
24
|
return acc
|
|
25
25
|
}, 0)
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
function getCanForwardDebuggerLogs (err, agentInfo) {
|
|
29
|
-
return !err && agentInfo.endpoints.
|
|
29
|
+
return !err && agentInfo.endpoints.includes(AGENT_DEBUGGER_INPUT)
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
class AgentProxyCiVisibilityExporter extends CiVisibilityExporter {
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
const request = require('../../../exporters/common/request')
|
|
3
3
|
const log = require('../../../log')
|
|
4
4
|
const { safeJSONStringify } = require('../../../exporters/common/util')
|
|
5
|
+
const { getEnvironmentVariable } = require('../../../config-helper')
|
|
5
6
|
|
|
6
7
|
const { CoverageCIVisibilityEncoder } = require('../../../encode/coverage-ci-visibility')
|
|
7
8
|
const BaseWriter = require('../../../exporters/common/writer')
|
|
@@ -28,10 +29,10 @@ class Writer extends BaseWriter {
|
|
|
28
29
|
path: '/api/v2/citestcov',
|
|
29
30
|
method: 'POST',
|
|
30
31
|
headers: {
|
|
31
|
-
'dd-api-key':
|
|
32
|
+
'dd-api-key': getEnvironmentVariable('DD_API_KEY'),
|
|
32
33
|
...form.getHeaders()
|
|
33
34
|
},
|
|
34
|
-
timeout:
|
|
35
|
+
timeout: 15_000,
|
|
35
36
|
url: this._url
|
|
36
37
|
}
|
|
37
38
|
|
|
@@ -3,6 +3,7 @@ const request = require('../../../exporters/common/request')
|
|
|
3
3
|
const log = require('../../../log')
|
|
4
4
|
const { safeJSONStringify } = require('../../../exporters/common/util')
|
|
5
5
|
const { JSONEncoder } = require('../../encode/json-encoder')
|
|
6
|
+
const { getEnvironmentVariable } = require('../../../config-helper')
|
|
6
7
|
|
|
7
8
|
const BaseWriter = require('../../../exporters/common/writer')
|
|
8
9
|
|
|
@@ -23,11 +24,11 @@ class DynamicInstrumentationLogsWriter extends BaseWriter {
|
|
|
23
24
|
path: '/api/v2/logs',
|
|
24
25
|
method: 'POST',
|
|
25
26
|
headers: {
|
|
26
|
-
'dd-api-key':
|
|
27
|
+
'dd-api-key': getEnvironmentVariable('DD_API_KEY'),
|
|
27
28
|
'Content-Type': 'application/json'
|
|
28
29
|
},
|
|
29
30
|
// TODO: what's a good value for timeout for the logs intake?
|
|
30
|
-
timeout: this.timeout ||
|
|
31
|
+
timeout: this.timeout || 15_000,
|
|
31
32
|
url: this._url
|
|
32
33
|
}
|
|
33
34
|
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
const request = require('../../../exporters/common/request')
|
|
3
3
|
const { safeJSONStringify } = require('../../../exporters/common/util')
|
|
4
4
|
const log = require('../../../log')
|
|
5
|
+
const { getEnvironmentVariable } = require('../../../config-helper')
|
|
5
6
|
|
|
6
7
|
const { AgentlessCiVisibilityEncoder } = require('../../../encode/agentless-ci-visibility')
|
|
7
8
|
const BaseWriter = require('../../../exporters/common/writer')
|
|
@@ -29,10 +30,10 @@ class Writer extends BaseWriter {
|
|
|
29
30
|
path: '/api/v2/citestcycle',
|
|
30
31
|
method: 'POST',
|
|
31
32
|
headers: {
|
|
32
|
-
'dd-api-key':
|
|
33
|
+
'dd-api-key': getEnvironmentVariable('DD_API_KEY'),
|
|
33
34
|
'Content-Type': 'application/msgpack'
|
|
34
35
|
},
|
|
35
|
-
timeout:
|
|
36
|
+
timeout: 15_000,
|
|
36
37
|
url: this._url
|
|
37
38
|
}
|
|
38
39
|
|
|
@@ -31,7 +31,7 @@ function getIsTestSessionTrace (trace) {
|
|
|
31
31
|
)
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
const GIT_UPLOAD_TIMEOUT =
|
|
34
|
+
const GIT_UPLOAD_TIMEOUT = 60_000 // 60 seconds
|
|
35
35
|
const CAN_USE_CI_VIS_PROTOCOL_TIMEOUT = GIT_UPLOAD_TIMEOUT
|
|
36
36
|
|
|
37
37
|
class CiVisibilityExporter extends AgentInfoExporter {
|
|
@@ -216,7 +216,8 @@ class CiVisibilityExporter extends AgentInfoExporter {
|
|
|
216
216
|
isDiEnabled,
|
|
217
217
|
isKnownTestsEnabled,
|
|
218
218
|
isTestManagementEnabled,
|
|
219
|
-
testManagementAttemptToFixRetries
|
|
219
|
+
testManagementAttemptToFixRetries,
|
|
220
|
+
isImpactedTestsEnabled
|
|
220
221
|
} = remoteConfiguration
|
|
221
222
|
return {
|
|
222
223
|
isCodeCoverageEnabled,
|
|
@@ -232,7 +233,8 @@ class CiVisibilityExporter extends AgentInfoExporter {
|
|
|
232
233
|
isKnownTestsEnabled,
|
|
233
234
|
isTestManagementEnabled: isTestManagementEnabled && this._config.isTestManagementEnabled,
|
|
234
235
|
testManagementAttemptToFixRetries:
|
|
235
|
-
testManagementAttemptToFixRetries ?? this._config.testManagementAttemptToFixRetries
|
|
236
|
+
testManagementAttemptToFixRetries ?? this._config.testManagementAttemptToFixRetries,
|
|
237
|
+
isImpactedTestsEnabled: isImpactedTestsEnabled && this._config.isImpactedTestsEnabled
|
|
236
238
|
}
|
|
237
239
|
}
|
|
238
240
|
|
|
@@ -336,7 +338,7 @@ class CiVisibilityExporter extends AgentInfoExporter {
|
|
|
336
338
|
this._writer,
|
|
337
339
|
this._coverageWriter,
|
|
338
340
|
this._logsWriter
|
|
339
|
-
].filter(
|
|
341
|
+
].filter(Boolean)
|
|
340
342
|
|
|
341
343
|
let remaining = writers.length
|
|
342
344
|
|
|
@@ -3,6 +3,7 @@ const path = require('path')
|
|
|
3
3
|
|
|
4
4
|
const FormData = require('../../../exporters/common/form-data')
|
|
5
5
|
const request = require('../../../exporters/common/request')
|
|
6
|
+
const { getEnvironmentVariable } = require('../../../config-helper')
|
|
6
7
|
|
|
7
8
|
const log = require('../../../log')
|
|
8
9
|
const { isFalse } = require('../../../util')
|
|
@@ -38,7 +39,7 @@ function validateCommits (commits) {
|
|
|
38
39
|
throw new Error('Invalid commit type response')
|
|
39
40
|
}
|
|
40
41
|
if (isValidSha1(commitSha) || isValidSha256(commitSha)) {
|
|
41
|
-
return commitSha.
|
|
42
|
+
return commitSha.replaceAll(/[^0-9a-f]+/g, '')
|
|
42
43
|
}
|
|
43
44
|
throw new Error('Invalid commit format')
|
|
44
45
|
})
|
|
@@ -48,9 +49,9 @@ function getCommonRequestOptions (url) {
|
|
|
48
49
|
return {
|
|
49
50
|
method: 'POST',
|
|
50
51
|
headers: {
|
|
51
|
-
'dd-api-key':
|
|
52
|
+
'dd-api-key': getEnvironmentVariable('DD_API_KEY')
|
|
52
53
|
},
|
|
53
|
-
timeout:
|
|
54
|
+
timeout: 15_000,
|
|
54
55
|
url
|
|
55
56
|
}
|
|
56
57
|
}
|
|
@@ -148,7 +149,7 @@ function uploadPackFile ({ url, isEvpProxy, evpProxyPrefix, packFileToUpload, re
|
|
|
148
149
|
filename,
|
|
149
150
|
contentType: 'application/octet-stream'
|
|
150
151
|
})
|
|
151
|
-
} catch
|
|
152
|
+
} catch {
|
|
152
153
|
callback(new Error(`Could not read "${packFileToUpload}"`))
|
|
153
154
|
return
|
|
154
155
|
}
|
|
@@ -285,7 +286,7 @@ function sendGitMetadata (url, { isEvpProxy, evpProxyPrefix }, configRepositoryU
|
|
|
285
286
|
}
|
|
286
287
|
// Otherwise we unshallow and get commits to upload again
|
|
287
288
|
log.debug('It is shallow clone, unshallowing...')
|
|
288
|
-
if (!isFalse(
|
|
289
|
+
if (!isFalse(getEnvironmentVariable('DD_CIVISIBILITY_GIT_UNSHALLOW_ENABLED'))) {
|
|
289
290
|
unshallowRepository()
|
|
290
291
|
}
|
|
291
292
|
|
|
@@ -9,18 +9,19 @@ const {
|
|
|
9
9
|
JEST_WORKER_LOGS_PAYLOAD_CODE,
|
|
10
10
|
PLAYWRIGHT_WORKER_TRACE_PAYLOAD_CODE
|
|
11
11
|
} = require('../../../plugins/util/test')
|
|
12
|
+
const { getEnvironmentVariable } = require('../../../config-helper')
|
|
12
13
|
|
|
13
14
|
function getInterprocessTraceCode () {
|
|
14
|
-
if (
|
|
15
|
+
if (getEnvironmentVariable('JEST_WORKER_ID')) {
|
|
15
16
|
return JEST_WORKER_TRACE_PAYLOAD_CODE
|
|
16
17
|
}
|
|
17
|
-
if (
|
|
18
|
+
if (getEnvironmentVariable('CUCUMBER_WORKER_ID')) {
|
|
18
19
|
return CUCUMBER_WORKER_TRACE_PAYLOAD_CODE
|
|
19
20
|
}
|
|
20
|
-
if (
|
|
21
|
+
if (getEnvironmentVariable('MOCHA_WORKER_ID')) {
|
|
21
22
|
return MOCHA_WORKER_TRACE_PAYLOAD_CODE
|
|
22
23
|
}
|
|
23
|
-
if (
|
|
24
|
+
if (getEnvironmentVariable('DD_PLAYWRIGHT_WORKER')) {
|
|
24
25
|
return PLAYWRIGHT_WORKER_TRACE_PAYLOAD_CODE
|
|
25
26
|
}
|
|
26
27
|
return null
|
|
@@ -28,14 +29,14 @@ function getInterprocessTraceCode () {
|
|
|
28
29
|
|
|
29
30
|
// TODO: make it available with cucumber
|
|
30
31
|
function getInterprocessCoverageCode () {
|
|
31
|
-
if (
|
|
32
|
+
if (getEnvironmentVariable('JEST_WORKER_ID')) {
|
|
32
33
|
return JEST_WORKER_COVERAGE_PAYLOAD_CODE
|
|
33
34
|
}
|
|
34
35
|
return null
|
|
35
36
|
}
|
|
36
37
|
|
|
37
38
|
function getInterprocessLogsCode () {
|
|
38
|
-
if (
|
|
39
|
+
if (getEnvironmentVariable('JEST_WORKER_ID')) {
|
|
39
40
|
return JEST_WORKER_LOGS_PAYLOAD_CODE
|
|
40
41
|
}
|
|
41
42
|
return null
|
|
@@ -25,7 +25,6 @@ class Writer {
|
|
|
25
25
|
_sendPayload (data, onDone = () => {}) {
|
|
26
26
|
// ## Jest
|
|
27
27
|
// Only available when `child_process` is used for the jest worker.
|
|
28
|
-
// eslint-disable-next-line
|
|
29
28
|
// https://github.com/facebook/jest/blob/bb39cb2c617a3334bf18daeca66bd87b7ccab28b/packages/jest-worker/README.md#experimental-worker
|
|
30
29
|
// If worker_threads is used, this will not work
|
|
31
30
|
// TODO: make it compatible with worker_threads
|
|
@@ -33,7 +32,6 @@ class Writer {
|
|
|
33
32
|
// ## Cucumber
|
|
34
33
|
// This reports to the test's main process the same way test data is reported by Cucumber
|
|
35
34
|
// See cucumber code:
|
|
36
|
-
// eslint-disable-next-line
|
|
37
35
|
// https://github.com/cucumber/cucumber-js/blob/5ce371870b677fe3d1a14915dc535688946f734c/src/runtime/parallel/run_worker.ts#L13
|
|
38
36
|
if (process.send) { // it only works if process.send is available
|
|
39
37
|
process.send([this._interprocessCode, data], () => {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
const request = require('../../exporters/common/request')
|
|
2
2
|
const log = require('../../log')
|
|
3
|
+
const { getEnvironmentVariable } = require('../../config-helper')
|
|
3
4
|
const {
|
|
4
5
|
incrementCountMetric,
|
|
5
6
|
distributionMetric,
|
|
@@ -34,7 +35,7 @@ function getSkippableSuites ({
|
|
|
34
35
|
headers: {
|
|
35
36
|
'Content-Type': 'application/json'
|
|
36
37
|
},
|
|
37
|
-
timeout:
|
|
38
|
+
timeout: 20_000,
|
|
38
39
|
url
|
|
39
40
|
}
|
|
40
41
|
|
|
@@ -46,7 +47,7 @@ function getSkippableSuites ({
|
|
|
46
47
|
options.path = `${evpProxyPrefix}/api/v2/ci/tests/skippable`
|
|
47
48
|
options.headers['X-Datadog-EVP-Subdomain'] = 'api'
|
|
48
49
|
} else {
|
|
49
|
-
const apiKey =
|
|
50
|
+
const apiKey = getEnvironmentVariable('DD_API_KEY')
|
|
50
51
|
if (!apiKey) {
|
|
51
52
|
return done(new Error('Skippable suites were not fetched because Datadog API key is not defined.'))
|
|
52
53
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
const Plugin = require('../../plugins/plugin')
|
|
2
2
|
const log = require('../../log')
|
|
3
|
+
const { getEnvironmentVariable } = require('../../config-helper')
|
|
3
4
|
|
|
4
5
|
function getWinstonLogSubmissionParameters (config) {
|
|
5
6
|
const { site, service } = config
|
|
@@ -9,16 +10,16 @@ function getWinstonLogSubmissionParameters (config) {
|
|
|
9
10
|
path: `/api/v2/logs?ddsource=winston&service=${service}`,
|
|
10
11
|
ssl: true,
|
|
11
12
|
headers: {
|
|
12
|
-
'DD-API-KEY':
|
|
13
|
+
'DD-API-KEY': getEnvironmentVariable('DD_API_KEY')
|
|
13
14
|
}
|
|
14
15
|
}
|
|
15
16
|
|
|
16
|
-
if (!
|
|
17
|
+
if (!getEnvironmentVariable('DD_AGENTLESS_LOG_SUBMISSION_URL')) {
|
|
17
18
|
return defaultParameters
|
|
18
19
|
}
|
|
19
20
|
|
|
20
21
|
try {
|
|
21
|
-
const url = new URL(
|
|
22
|
+
const url = new URL(getEnvironmentVariable('DD_AGENTLESS_LOG_SUBMISSION_URL'))
|
|
22
23
|
return {
|
|
23
24
|
host: url.hostname,
|
|
24
25
|
port: url.port,
|
|
@@ -26,7 +27,7 @@ function getWinstonLogSubmissionParameters (config) {
|
|
|
26
27
|
path: defaultParameters.path,
|
|
27
28
|
headers: defaultParameters.headers
|
|
28
29
|
}
|
|
29
|
-
} catch
|
|
30
|
+
} catch {
|
|
30
31
|
log.error('Could not parse DD_AGENTLESS_LOG_SUBMISSION_URL')
|
|
31
32
|
return defaultParameters
|
|
32
33
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
const request = require('../../exporters/common/request')
|
|
2
2
|
const id = require('../../id')
|
|
3
3
|
const log = require('../../log')
|
|
4
|
+
const { getEnvironmentVariable } = require('../../config-helper')
|
|
4
5
|
const {
|
|
5
6
|
incrementCountMetric,
|
|
6
7
|
distributionMetric,
|
|
@@ -28,7 +29,8 @@ function getLibraryConfiguration ({
|
|
|
28
29
|
runtimeVersion,
|
|
29
30
|
branch,
|
|
30
31
|
testLevel = 'suite',
|
|
31
|
-
custom
|
|
32
|
+
custom,
|
|
33
|
+
tag
|
|
32
34
|
}, done) {
|
|
33
35
|
const options = {
|
|
34
36
|
path: '/api/v2/libraries/tests/services/setting',
|
|
@@ -37,14 +39,14 @@ function getLibraryConfiguration ({
|
|
|
37
39
|
'Content-Type': 'application/json'
|
|
38
40
|
},
|
|
39
41
|
url,
|
|
40
|
-
timeout:
|
|
42
|
+
timeout: 20_000
|
|
41
43
|
}
|
|
42
44
|
|
|
43
45
|
if (isEvpProxy) {
|
|
44
46
|
options.path = `${evpProxyPrefix}/api/v2/libraries/tests/services/setting`
|
|
45
47
|
options.headers['X-Datadog-EVP-Subdomain'] = 'api'
|
|
46
48
|
} else {
|
|
47
|
-
const apiKey =
|
|
49
|
+
const apiKey = getEnvironmentVariable('DD_API_KEY')
|
|
48
50
|
if (!apiKey) {
|
|
49
51
|
return done(new Error('Request to settings endpoint was not done because Datadog API key is not defined.'))
|
|
50
52
|
}
|
|
@@ -69,7 +71,7 @@ function getLibraryConfiguration ({
|
|
|
69
71
|
env,
|
|
70
72
|
repository_url: repositoryUrl,
|
|
71
73
|
sha,
|
|
72
|
-
branch
|
|
74
|
+
branch: branch || tag
|
|
73
75
|
}
|
|
74
76
|
}
|
|
75
77
|
})
|
|
@@ -95,7 +97,8 @@ function getLibraryConfiguration ({
|
|
|
95
97
|
flaky_test_retries_enabled: isFlakyTestRetriesEnabled,
|
|
96
98
|
di_enabled: isDiEnabled,
|
|
97
99
|
known_tests_enabled: isKnownTestsEnabled,
|
|
98
|
-
test_management: testManagementConfig
|
|
100
|
+
test_management: testManagementConfig,
|
|
101
|
+
impacted_tests_enabled: isImpactedTestsEnabled
|
|
99
102
|
}
|
|
100
103
|
}
|
|
101
104
|
} = JSON.parse(res)
|
|
@@ -115,16 +118,17 @@ function getLibraryConfiguration ({
|
|
|
115
118
|
isKnownTestsEnabled,
|
|
116
119
|
isTestManagementEnabled: (testManagementConfig?.enabled ?? false),
|
|
117
120
|
testManagementAttemptToFixRetries:
|
|
118
|
-
testManagementConfig?.attempt_to_fix_retries
|
|
121
|
+
testManagementConfig?.attempt_to_fix_retries,
|
|
122
|
+
isImpactedTestsEnabled
|
|
119
123
|
}
|
|
120
124
|
|
|
121
125
|
log.debug(() => `Remote settings: ${JSON.stringify(settings)}`)
|
|
122
126
|
|
|
123
|
-
if (
|
|
127
|
+
if (getEnvironmentVariable('DD_CIVISIBILITY_DANGEROUSLY_FORCE_COVERAGE')) {
|
|
124
128
|
settings.isCodeCoverageEnabled = true
|
|
125
129
|
log.debug(() => 'Dangerously set code coverage to true')
|
|
126
130
|
}
|
|
127
|
-
if (
|
|
131
|
+
if (getEnvironmentVariable('DD_CIVISIBILITY_DANGEROUSLY_FORCE_TEST_SKIPPING')) {
|
|
128
132
|
settings.isSuitesSkippingEnabled = true
|
|
129
133
|
log.debug(() => 'Dangerously set test skipping to true')
|
|
130
134
|
}
|
|
@@ -81,6 +81,8 @@ const TELEMETRY_GIT_REQUESTS_SETTINGS = 'git_requests.settings'
|
|
|
81
81
|
const TELEMETRY_GIT_REQUESTS_SETTINGS_MS = 'git_requests.settings_ms'
|
|
82
82
|
const TELEMETRY_GIT_REQUESTS_SETTINGS_ERRORS = 'git_requests.settings_errors'
|
|
83
83
|
const TELEMETRY_GIT_REQUESTS_SETTINGS_RESPONSE = 'git_requests.settings_response'
|
|
84
|
+
const TELEMETRY_GIT_SHA_MATCH = 'git.commit_sha_match'
|
|
85
|
+
const TELEMETRY_GIT_COMMIT_SHA_DISCREPANCY = 'git.commit_sha_discrepancy'
|
|
84
86
|
const TELEMETRY_ITR_SKIPPABLE_TESTS = 'itr_skippable_tests.request'
|
|
85
87
|
const TELEMETRY_ITR_SKIPPABLE_TESTS_MS = 'itr_skippable_tests.request_ms'
|
|
86
88
|
const TELEMETRY_ITR_SKIPPABLE_TESTS_ERRORS = 'itr_skippable_tests.request_errors'
|
|
@@ -144,6 +146,8 @@ module.exports = {
|
|
|
144
146
|
TELEMETRY_GIT_REQUESTS_SETTINGS_MS,
|
|
145
147
|
TELEMETRY_GIT_REQUESTS_SETTINGS_ERRORS,
|
|
146
148
|
TELEMETRY_GIT_REQUESTS_SETTINGS_RESPONSE,
|
|
149
|
+
TELEMETRY_GIT_SHA_MATCH,
|
|
150
|
+
TELEMETRY_GIT_COMMIT_SHA_DISCREPANCY,
|
|
147
151
|
TELEMETRY_ITR_SKIPPABLE_TESTS,
|
|
148
152
|
TELEMETRY_ITR_SKIPPABLE_TESTS_MS,
|
|
149
153
|
TELEMETRY_ITR_SKIPPABLE_TESTS_ERRORS,
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
const request = require('../../exporters/common/request')
|
|
2
2
|
const id = require('../../id')
|
|
3
|
+
const { getEnvironmentVariable } = require('../../config-helper')
|
|
3
4
|
|
|
4
5
|
function getTestManagementTests ({
|
|
5
6
|
url,
|
|
@@ -16,7 +17,7 @@ function getTestManagementTests ({
|
|
|
16
17
|
headers: {
|
|
17
18
|
'Content-Type': 'application/json'
|
|
18
19
|
},
|
|
19
|
-
timeout:
|
|
20
|
+
timeout: 20_000,
|
|
20
21
|
url
|
|
21
22
|
}
|
|
22
23
|
|
|
@@ -28,7 +29,7 @@ function getTestManagementTests ({
|
|
|
28
29
|
options.path = `${evpProxyPrefix}/api/v2/test/libraries/test-management/tests`
|
|
29
30
|
options.headers['X-Datadog-EVP-Subdomain'] = 'api'
|
|
30
31
|
} else {
|
|
31
|
-
const apiKey =
|
|
32
|
+
const apiKey = getEnvironmentVariable('DD_API_KEY')
|
|
32
33
|
if (!apiKey) {
|
|
33
34
|
return done(new Error('Test management tests were not fetched because Datadog API key is not defined.'))
|
|
34
35
|
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
/* eslint-disable eslint-rules/eslint-process-env */
|
|
4
|
+
|
|
5
|
+
const { deprecate } = require('util')
|
|
6
|
+
const { supportedConfigurations, aliases, deprecations } = require('./supported-configurations.json')
|
|
7
|
+
|
|
8
|
+
const aliasToCanonical = {}
|
|
9
|
+
for (const canonical of Object.keys(aliases)) {
|
|
10
|
+
for (const alias of aliases[canonical]) {
|
|
11
|
+
if (aliasToCanonical[alias]) {
|
|
12
|
+
throw new Error(`The alias ${alias} is already used for ${aliasToCanonical[alias]}.`)
|
|
13
|
+
}
|
|
14
|
+
aliasToCanonical[alias] = canonical
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const deprecationMethods = {}
|
|
19
|
+
for (const deprecation of Object.keys(deprecations)) {
|
|
20
|
+
deprecationMethods[deprecation] = deprecate(
|
|
21
|
+
() => {},
|
|
22
|
+
`The environment variable ${deprecation} is deprecated.` +
|
|
23
|
+
(aliasToCanonical[deprecation]
|
|
24
|
+
? ` Please use ${aliasToCanonical[deprecation]} instead.`
|
|
25
|
+
: ` ${deprecations[deprecation]}`),
|
|
26
|
+
`DATADOG_${deprecation}`
|
|
27
|
+
)
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
module.exports = {
|
|
31
|
+
/**
|
|
32
|
+
* Returns the environment variables that are supported by the tracer
|
|
33
|
+
* (including all non-Datadog/OTEL specific environment variables)
|
|
34
|
+
*
|
|
35
|
+
* @returns {Partial<process.env>} The environment variables
|
|
36
|
+
*/
|
|
37
|
+
getEnvironmentVariables () {
|
|
38
|
+
const configs = {}
|
|
39
|
+
for (const [key, value] of Object.entries(process.env)) {
|
|
40
|
+
if (key.startsWith('DD_') || key.startsWith('OTEL_') || aliasToCanonical[key]) {
|
|
41
|
+
if (supportedConfigurations[key]) {
|
|
42
|
+
configs[key] = value
|
|
43
|
+
} else if (aliasToCanonical[key] && configs[aliasToCanonical[key]] === undefined) {
|
|
44
|
+
// The alias should only be used if the actual configuration is not set
|
|
45
|
+
// In case that more than a single alias exist, use the one defined first in our own order
|
|
46
|
+
for (const alias of aliases[aliasToCanonical[key]]) {
|
|
47
|
+
if (process.env[alias] !== undefined) {
|
|
48
|
+
configs[aliasToCanonical[key]] = value
|
|
49
|
+
break
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
// TODO(BridgeAR) Implement logging. It would have to use a timeout to
|
|
53
|
+
// lazily log the message after all loading being done otherwise.
|
|
54
|
+
// debug(
|
|
55
|
+
// `Missing configuration ${env} in supported-configurations file. The environment variable is ignored.`
|
|
56
|
+
// )
|
|
57
|
+
}
|
|
58
|
+
deprecationMethods[key]?.()
|
|
59
|
+
} else {
|
|
60
|
+
configs[key] = value
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return configs
|
|
64
|
+
},
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Returns the environment variable, if it's supported or a non Datadog
|
|
68
|
+
* configuration. Otherwise, it throws an error.
|
|
69
|
+
*
|
|
70
|
+
* @param {string} name Environment variable name
|
|
71
|
+
* @returns {string|undefined}
|
|
72
|
+
* @throws {Error} if the configuration is not supported
|
|
73
|
+
*/
|
|
74
|
+
getEnvironmentVariable (name) {
|
|
75
|
+
if ((name.startsWith('DD_') || name.startsWith('OTEL_') || aliasToCanonical[name]) &&
|
|
76
|
+
!supportedConfigurations[name]) {
|
|
77
|
+
throw new Error(`Missing ${name} env/configuration in "supported-configurations.json" file.`)
|
|
78
|
+
}
|
|
79
|
+
const config = process.env[name]
|
|
80
|
+
if (config === undefined && aliases[name]) {
|
|
81
|
+
for (const alias of aliases[name]) {
|
|
82
|
+
if (process.env[alias] !== undefined) {
|
|
83
|
+
return process.env[alias]
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return config
|
|
88
|
+
}
|
|
89
|
+
}
|