From 73c995e697abc14db7757dfd247ae3a94860afb7 Mon Sep 17 00:00:00 2001 From: "ralph.hyacinthe" Date: Wed, 22 Jul 2026 13:09:00 -0400 Subject: [PATCH 1/4] feat(logs): combine OTTL, jq, and VRL log-filtering processing rules for benchmarking Rebased onto main (1e49b378a65) via file-replay: reset to fresh origin/main and reapplied every non-generated file this branch touches (source, Rust vendor tree, otel-patches/coreinternal vendor, SMP regression cases, build tooling), skipping go.mod/go.sum/Cargo.lock/MODULE.bazel.lock/go.work.sum for modules that already existed on main (those are reconciled by the next commit's `dda inv tidy` run instead). New modules' go.mod/go.sum (otel-patches/coreinternal, pkg/logs/vrl) are included as-is since main never had them and there's nothing to reconcile. Avoids replaying 18 rounds of the original branch's own go-mod-tidy/ gazelle-regen commits, whose only content was dependency-lockfile churn that always conflicted with 108 commits of unrelated lockfile churn on main. Co-Authored-By: Claude Sonnet 5 --- .../.claude-plugin/plugin.json | 4 +- Cargo.toml | 7 + LICENSE-3rdparty.csv | 6 +- comp/logs-library/metrics/metrics.go | 3 + comp/logs-library/processor/BUILD.bazel | 2 + comp/logs-library/processor/processor.go | 118 ++ comp/logs-library/processor/processor_test.go | 426 ++++- comp/logs/agent/config/BUILD.bazel | 9 + comp/logs/agent/config/processing_rules.go | 167 +- .../config/processing_rules_novrl_test.go | 29 + .../agent/config/processing_rules_test.go | 9 + .../agent/config/processing_rules_vrl_test.go | 47 + go.work | 2 + modules.yml | 7 + otel-patches/coreinternal/BUILD.bazel | 15 + otel-patches/coreinternal/LICENSE | 201 +++ otel-patches/coreinternal/Makefile | 1 + .../coreinternal/aggregateutil/BUILD.bazel | 30 + .../coreinternal/aggregateutil/aggregate.go | 448 ++++++ .../aggregateutil/aggregate_test.go | 658 ++++++++ .../aggregateutil/config.schema.yaml | 4 + .../coreinternal/aggregateutil/type.go | 64 + .../coreinternal/aggregateutil/type_test.go | 73 + .../coreinternal/attraction/BUILD.bazel | 37 + .../coreinternal/attraction/attraction.go | 469 ++++++ .../attraction/attraction_bench_test.go | 95 ++ .../attraction/attraction_test.go | 1382 +++++++++++++++++ .../attraction/config.schema.yaml | 41 + .../coreinternal/attraction/hasher.go | 64 + .../coreinternal/attraction/hasher_test.go | 85 + .../coreinternal/attraction/package_test.go | 14 + .../coreinternal/attraction/type_converter.go | 73 + .../coreinternal/clientutil/BUILD.bazel | 20 + .../coreinternal/clientutil/client.go | 40 + .../coreinternal/clientutil/client_test.go | 79 + .../coreinternal/consumerretry/BUILD.bazel | 39 + .../coreinternal/consumerretry/config.go | 33 + .../consumerretry/config.schema.yaml | 20 + .../coreinternal/consumerretry/logs.go | 113 ++ .../coreinternal/consumerretry/logs_test.go | 113 ++ .../consumerretry/package_test.go | 14 + .../coreinternal/consumerretry/testutil.go | 59 + otel-patches/coreinternal/documentation.md | 24 + .../coreinternal/errorutil/BUILD.bazel | 16 + otel-patches/coreinternal/errorutil/grpc.go | 25 + otel-patches/coreinternal/errorutil/http.go | 33 + .../coreinternal/generated_package_test.go | 13 + otel-patches/coreinternal/go.mod | 106 ++ otel-patches/coreinternal/go.sum | 225 +++ .../coreinternal/goldendataset/BUILD.bazel | 58 + .../goldendataset/generator_commons.go | 28 + .../coreinternal/goldendataset/metrics_gen.go | 230 +++ .../goldendataset/metrics_gen_test.go | 95 ++ .../goldendataset/package_test.go | 14 + .../goldendataset/pict_metrics_gen.go | 97 ++ .../goldendataset/pict_metrics_gen_test.go | 85 + .../goldendataset/pict_metrics_input_defs.go | 58 + .../goldendataset/pict_tracing_input_defs.go | 156 ++ .../goldendataset/resource_generator.go | 118 ++ .../goldendataset/resource_generator_test.go | 22 + .../goldendataset/span_generator.go | 610 ++++++++ .../goldendataset/span_generator_test.go | 147 ++ .../testdata/generated_pict_pairs_metrics.txt | 26 + .../testdata/generated_pict_pairs_spans.txt | 307 ++++ .../testdata/generated_pict_pairs_traces.txt | 33 + .../testdata/pict_input_metrics.txt | 4 + .../testdata/pict_input_spans.txt | 14 + .../testdata/pict_input_traces.txt | 3 + .../goldendataset/traces_generator.go | 158 ++ .../goldendataset/traces_generator_test.go | 57 + .../internal/metadata/BUILD.bazel | 9 + .../metadata/generated_feature_gates.go | 103 ++ otel-patches/coreinternal/metadata.yaml | 113 ++ .../coreinternal/metricstestutil/BUILD.bazel | 28 + .../metricstestutil/metric_diff.go | 356 +++++ .../metricstestutil/metric_diff_test.go | 85 + .../metricstestutil/package_test.go | 14 + .../coreinternal/occonventions/BUILD.bazel | 8 + .../coreinternal/occonventions/opencensus.go | 13 + .../coreinternal/parseutils/BUILD.bazel | 34 + otel-patches/coreinternal/parseutils/csv.go | 85 + .../coreinternal/parseutils/csv_test.go | 175 +++ otel-patches/coreinternal/parseutils/doc.go | 4 + .../coreinternal/parseutils/package_test.go | 14 + .../coreinternal/parseutils/parser.go | 81 + .../coreinternal/parseutils/parser_test.go | 350 +++++ otel-patches/coreinternal/parseutils/uri.go | 164 ++ .../coreinternal/parseutils/uri_test.go | 628 ++++++++ .../coreinternal/scraperinttest/BUILD.bazel | 24 + .../coreinternal/scraperinttest/README.md | 5 + .../coreinternal/scraperinttest/scraperint.go | 321 ++++ .../coreinternal/testdata/BUILD.bazel | 28 + otel-patches/coreinternal/testdata/common.go | 39 + otel-patches/coreinternal/testdata/log.go | 105 ++ otel-patches/coreinternal/testdata/metric.go | 301 ++++ otel-patches/coreinternal/testdata/profile.go | 81 + .../coreinternal/testdata/resource.go | 14 + otel-patches/coreinternal/testdata/trace.go | 128 ++ .../coreinternal/textutils/BUILD.bazel | 37 + .../coreinternal/textutils/encoding.go | 65 + .../coreinternal/textutils/encoding_test.go | 93 ++ .../coreinternal/textutils/package_test.go | 14 + .../coreinternal/textutils/utf8raw.go | 23 + .../coreinternal/timeutils/BUILD.bazel | 37 + otel-patches/coreinternal/timeutils/doc.go | 8 + .../timeutils/internal/ctimefmt/BUILD.bazel | 24 + .../timeutils/internal/ctimefmt/LICENSE | 21 + .../timeutils/internal/ctimefmt/ctimefmt.go | 287 ++++ .../internal/ctimefmt/ctimefmt_test.go | 160 ++ .../internal/ctimefmt/package_test.go | 14 + .../coreinternal/timeutils/package_test.go | 14 + otel-patches/coreinternal/timeutils/parser.go | 212 +++ .../coreinternal/timeutils/parser_test.go | 260 ++++ .../timeutils/strptime_cgo_test.go | 30 + .../timeutils/strptime_cgo_testlib.go | 69 + .../coreinternal/timeutils/strptime_test.go | 195 +++ .../coreinternal/timeutils/ticker_helper.go | 54 + .../coreinternal/timeutils/ticker_test.go | 77 + .../coreinternal/tracetranslator/BUILD.bazel | 9 + .../tracetranslator/protospan_translation.go | 48 + .../coreinternal/traceutil/BUILD.bazel | 27 + .../coreinternal/traceutil/package_test.go | 14 + .../coreinternal/traceutil/traceutil.go | 65 + .../coreinternal/traceutil/traceutil_test.go | 28 + pkg/logs/vrl/BUILD.bazel | 52 + pkg/logs/vrl/go.mod | 199 +++ pkg/logs/vrl/go.sum | 23 + pkg/logs/vrl/rust/.gitignore | 2 + pkg/logs/vrl/rust/BUILD.bazel | 87 ++ pkg/logs/vrl/rust/Cargo.toml | 20 + pkg/logs/vrl/rust/LICENSE-vrl | 363 +++++ pkg/logs/vrl/rust/include/vrl.h | 65 + pkg/logs/vrl/rust/src/functions/json_utils.rs | 78 + pkg/logs/vrl/rust/src/functions/mod.rs | 19 + pkg/logs/vrl/rust/src/functions/parse_json.rs | 163 ++ pkg/logs/vrl/rust/src/functions/redact.rs | 535 +++++++ pkg/logs/vrl/rust/src/lib.rs | 403 +++++ pkg/logs/vrl/vrl.go | 130 ++ pkg/logs/vrl/vrl_stub.go | 43 + pkg/logs/vrl/vrl_stub_test.go | 34 + pkg/logs/vrl/vrl_test.go | 87 ++ rust/LICENSE-3rdparty.csv | 94 +- rust/deny.toml | 2 + tasks/agent.py | 68 +- tasks/build_tags.bzl | 2 + tasks/gotest.py | 5 +- .../datadog-agent/conf.d/logs.d/conf.yaml | 9 + .../datadog-agent/datadog.yaml | 19 + .../logs_filter_baseline/experiment.yaml | 25 + .../logs_filter_baseline/lading/lading.yaml | 29 + .../datadog-agent/conf.d/logs.d/conf.yaml | 9 + .../logs_filter_jq/datadog-agent/datadog.yaml | 19 + .../cases/logs_filter_jq/experiment.yaml | 25 + .../cases/logs_filter_jq/lading/lading.yaml | 29 + .../datadog-agent/conf.d/logs.d/conf.yaml | 9 + .../datadog-agent/datadog.yaml | 19 + .../cases/logs_filter_ottl/experiment.yaml | 25 + .../cases/logs_filter_ottl/lading/lading.yaml | 29 + 158 files changed, 15732 insertions(+), 65 deletions(-) create mode 100644 comp/logs/agent/config/processing_rules_novrl_test.go create mode 100644 comp/logs/agent/config/processing_rules_vrl_test.go create mode 100644 otel-patches/coreinternal/BUILD.bazel create mode 100644 otel-patches/coreinternal/LICENSE create mode 100644 otel-patches/coreinternal/Makefile create mode 100644 otel-patches/coreinternal/aggregateutil/BUILD.bazel create mode 100644 otel-patches/coreinternal/aggregateutil/aggregate.go create mode 100644 otel-patches/coreinternal/aggregateutil/aggregate_test.go create mode 100644 otel-patches/coreinternal/aggregateutil/config.schema.yaml create mode 100644 otel-patches/coreinternal/aggregateutil/type.go create mode 100644 otel-patches/coreinternal/aggregateutil/type_test.go create mode 100644 otel-patches/coreinternal/attraction/BUILD.bazel create mode 100644 otel-patches/coreinternal/attraction/attraction.go create mode 100644 otel-patches/coreinternal/attraction/attraction_bench_test.go create mode 100644 otel-patches/coreinternal/attraction/attraction_test.go create mode 100644 otel-patches/coreinternal/attraction/config.schema.yaml create mode 100644 otel-patches/coreinternal/attraction/hasher.go create mode 100644 otel-patches/coreinternal/attraction/hasher_test.go create mode 100644 otel-patches/coreinternal/attraction/package_test.go create mode 100644 otel-patches/coreinternal/attraction/type_converter.go create mode 100644 otel-patches/coreinternal/clientutil/BUILD.bazel create mode 100644 otel-patches/coreinternal/clientutil/client.go create mode 100644 otel-patches/coreinternal/clientutil/client_test.go create mode 100644 otel-patches/coreinternal/consumerretry/BUILD.bazel create mode 100644 otel-patches/coreinternal/consumerretry/config.go create mode 100644 otel-patches/coreinternal/consumerretry/config.schema.yaml create mode 100644 otel-patches/coreinternal/consumerretry/logs.go create mode 100644 otel-patches/coreinternal/consumerretry/logs_test.go create mode 100644 otel-patches/coreinternal/consumerretry/package_test.go create mode 100644 otel-patches/coreinternal/consumerretry/testutil.go create mode 100644 otel-patches/coreinternal/documentation.md create mode 100644 otel-patches/coreinternal/errorutil/BUILD.bazel create mode 100644 otel-patches/coreinternal/errorutil/grpc.go create mode 100644 otel-patches/coreinternal/errorutil/http.go create mode 100644 otel-patches/coreinternal/generated_package_test.go create mode 100644 otel-patches/coreinternal/go.mod create mode 100644 otel-patches/coreinternal/go.sum create mode 100644 otel-patches/coreinternal/goldendataset/BUILD.bazel create mode 100644 otel-patches/coreinternal/goldendataset/generator_commons.go create mode 100644 otel-patches/coreinternal/goldendataset/metrics_gen.go create mode 100644 otel-patches/coreinternal/goldendataset/metrics_gen_test.go create mode 100644 otel-patches/coreinternal/goldendataset/package_test.go create mode 100644 otel-patches/coreinternal/goldendataset/pict_metrics_gen.go create mode 100644 otel-patches/coreinternal/goldendataset/pict_metrics_gen_test.go create mode 100644 otel-patches/coreinternal/goldendataset/pict_metrics_input_defs.go create mode 100644 otel-patches/coreinternal/goldendataset/pict_tracing_input_defs.go create mode 100644 otel-patches/coreinternal/goldendataset/resource_generator.go create mode 100644 otel-patches/coreinternal/goldendataset/resource_generator_test.go create mode 100644 otel-patches/coreinternal/goldendataset/span_generator.go create mode 100644 otel-patches/coreinternal/goldendataset/span_generator_test.go create mode 100644 otel-patches/coreinternal/goldendataset/testdata/generated_pict_pairs_metrics.txt create mode 100644 otel-patches/coreinternal/goldendataset/testdata/generated_pict_pairs_spans.txt create mode 100644 otel-patches/coreinternal/goldendataset/testdata/generated_pict_pairs_traces.txt create mode 100644 otel-patches/coreinternal/goldendataset/testdata/pict_input_metrics.txt create mode 100644 otel-patches/coreinternal/goldendataset/testdata/pict_input_spans.txt create mode 100644 otel-patches/coreinternal/goldendataset/testdata/pict_input_traces.txt create mode 100644 otel-patches/coreinternal/goldendataset/traces_generator.go create mode 100644 otel-patches/coreinternal/goldendataset/traces_generator_test.go create mode 100644 otel-patches/coreinternal/internal/metadata/BUILD.bazel create mode 100644 otel-patches/coreinternal/internal/metadata/generated_feature_gates.go create mode 100644 otel-patches/coreinternal/metadata.yaml create mode 100644 otel-patches/coreinternal/metricstestutil/BUILD.bazel create mode 100644 otel-patches/coreinternal/metricstestutil/metric_diff.go create mode 100644 otel-patches/coreinternal/metricstestutil/metric_diff_test.go create mode 100644 otel-patches/coreinternal/metricstestutil/package_test.go create mode 100644 otel-patches/coreinternal/occonventions/BUILD.bazel create mode 100644 otel-patches/coreinternal/occonventions/opencensus.go create mode 100644 otel-patches/coreinternal/parseutils/BUILD.bazel create mode 100644 otel-patches/coreinternal/parseutils/csv.go create mode 100644 otel-patches/coreinternal/parseutils/csv_test.go create mode 100644 otel-patches/coreinternal/parseutils/doc.go create mode 100644 otel-patches/coreinternal/parseutils/package_test.go create mode 100644 otel-patches/coreinternal/parseutils/parser.go create mode 100644 otel-patches/coreinternal/parseutils/parser_test.go create mode 100644 otel-patches/coreinternal/parseutils/uri.go create mode 100644 otel-patches/coreinternal/parseutils/uri_test.go create mode 100644 otel-patches/coreinternal/scraperinttest/BUILD.bazel create mode 100644 otel-patches/coreinternal/scraperinttest/README.md create mode 100644 otel-patches/coreinternal/scraperinttest/scraperint.go create mode 100644 otel-patches/coreinternal/testdata/BUILD.bazel create mode 100644 otel-patches/coreinternal/testdata/common.go create mode 100644 otel-patches/coreinternal/testdata/log.go create mode 100644 otel-patches/coreinternal/testdata/metric.go create mode 100644 otel-patches/coreinternal/testdata/profile.go create mode 100644 otel-patches/coreinternal/testdata/resource.go create mode 100644 otel-patches/coreinternal/testdata/trace.go create mode 100644 otel-patches/coreinternal/textutils/BUILD.bazel create mode 100644 otel-patches/coreinternal/textutils/encoding.go create mode 100644 otel-patches/coreinternal/textutils/encoding_test.go create mode 100644 otel-patches/coreinternal/textutils/package_test.go create mode 100644 otel-patches/coreinternal/textutils/utf8raw.go create mode 100644 otel-patches/coreinternal/timeutils/BUILD.bazel create mode 100644 otel-patches/coreinternal/timeutils/doc.go create mode 100644 otel-patches/coreinternal/timeutils/internal/ctimefmt/BUILD.bazel create mode 100644 otel-patches/coreinternal/timeutils/internal/ctimefmt/LICENSE create mode 100644 otel-patches/coreinternal/timeutils/internal/ctimefmt/ctimefmt.go create mode 100644 otel-patches/coreinternal/timeutils/internal/ctimefmt/ctimefmt_test.go create mode 100644 otel-patches/coreinternal/timeutils/internal/ctimefmt/package_test.go create mode 100644 otel-patches/coreinternal/timeutils/package_test.go create mode 100644 otel-patches/coreinternal/timeutils/parser.go create mode 100644 otel-patches/coreinternal/timeutils/parser_test.go create mode 100644 otel-patches/coreinternal/timeutils/strptime_cgo_test.go create mode 100644 otel-patches/coreinternal/timeutils/strptime_cgo_testlib.go create mode 100644 otel-patches/coreinternal/timeutils/strptime_test.go create mode 100644 otel-patches/coreinternal/timeutils/ticker_helper.go create mode 100644 otel-patches/coreinternal/timeutils/ticker_test.go create mode 100644 otel-patches/coreinternal/tracetranslator/BUILD.bazel create mode 100644 otel-patches/coreinternal/tracetranslator/protospan_translation.go create mode 100644 otel-patches/coreinternal/traceutil/BUILD.bazel create mode 100644 otel-patches/coreinternal/traceutil/package_test.go create mode 100644 otel-patches/coreinternal/traceutil/traceutil.go create mode 100644 otel-patches/coreinternal/traceutil/traceutil_test.go create mode 100644 pkg/logs/vrl/BUILD.bazel create mode 100644 pkg/logs/vrl/go.mod create mode 100644 pkg/logs/vrl/go.sum create mode 100644 pkg/logs/vrl/rust/.gitignore create mode 100644 pkg/logs/vrl/rust/BUILD.bazel create mode 100644 pkg/logs/vrl/rust/Cargo.toml create mode 100644 pkg/logs/vrl/rust/LICENSE-vrl create mode 100644 pkg/logs/vrl/rust/include/vrl.h create mode 100644 pkg/logs/vrl/rust/src/functions/json_utils.rs create mode 100644 pkg/logs/vrl/rust/src/functions/mod.rs create mode 100644 pkg/logs/vrl/rust/src/functions/parse_json.rs create mode 100644 pkg/logs/vrl/rust/src/functions/redact.rs create mode 100644 pkg/logs/vrl/rust/src/lib.rs create mode 100644 pkg/logs/vrl/vrl.go create mode 100644 pkg/logs/vrl/vrl_stub.go create mode 100644 pkg/logs/vrl/vrl_stub_test.go create mode 100644 pkg/logs/vrl/vrl_test.go create mode 100644 test/regression/cases/logs_filter_baseline/datadog-agent/conf.d/logs.d/conf.yaml create mode 100644 test/regression/cases/logs_filter_baseline/datadog-agent/datadog.yaml create mode 100644 test/regression/cases/logs_filter_baseline/experiment.yaml create mode 100644 test/regression/cases/logs_filter_baseline/lading/lading.yaml create mode 100644 test/regression/cases/logs_filter_jq/datadog-agent/conf.d/logs.d/conf.yaml create mode 100644 test/regression/cases/logs_filter_jq/datadog-agent/datadog.yaml create mode 100644 test/regression/cases/logs_filter_jq/experiment.yaml create mode 100644 test/regression/cases/logs_filter_jq/lading/lading.yaml create mode 100644 test/regression/cases/logs_filter_ottl/datadog-agent/conf.d/logs.d/conf.yaml create mode 100644 test/regression/cases/logs_filter_ottl/datadog-agent/datadog.yaml create mode 100644 test/regression/cases/logs_filter_ottl/experiment.yaml create mode 100644 test/regression/cases/logs_filter_ottl/lading/lading.yaml diff --git a/.claude-plugins/datadog-agent-gopls/.claude-plugin/plugin.json b/.claude-plugins/datadog-agent-gopls/.claude-plugin/plugin.json index f375085a7cac..22f1f67dadd4 100644 --- a/.claude-plugins/datadog-agent-gopls/.claude-plugin/plugin.json +++ b/.claude-plugins/datadog-agent-gopls/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "datadog-agent-gopls", - "version": "1.0.3", + "version": "1.0.4", "description": "Go LSP (gopls) pre-configured for the datadog-agent repository with build tags and performance flags", "author": { "name": "L\u00e9na\u00efc Huard", @@ -14,7 +14,7 @@ }, "initializationOptions": { "build.buildFlags": [ - "-tags=cel,clusterchecks,consul,containerd,cri,crio,datadog.no_waf,docker,ec2,etcd,fargateprocess,grpcnotrace,jetson,jmx,kubeapiserver,kubelet,linux_bpf,ncm,netcgo,netgo,no_gogo,npm,nvml,oracle,orchestrator,osusergo,otlp,pcap,podman,python,remove_all_sd,retrynotrace,seclmax,serverless,sharedlibrarycheck,systemd,systemprobechecks,test,trivy,trivy_no_javadb,zk,zlib,zstd", + "-tags=cel,clusterchecks,consul,containerd,cri,crio,datadog.no_waf,docker,ec2,etcd,fargateprocess,grpcnotrace,jetson,jmx,kubeapiserver,kubelet,linux_bpf,ncm,netcgo,netgo,no_gogo,npm,nvml,oracle,orchestrator,osusergo,otlp,pcap,podman,python,remove_all_sd,retrynotrace,seclmax,serverless,sharedlibrarycheck,systemd,systemprobechecks,test,trivy,trivy_no_javadb,vrl,zk,zlib,zstd", "-buildvcs=false" ], "formatting.local": "github.com/DataDog/datadog-agent" diff --git a/Cargo.toml b/Cargo.toml index b27e9f5b0add..48953f48f57e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,6 +4,7 @@ members = [ "cmd/ai_prompt_logger", "comp/core/log/rust", "pkg/discovery/module/rust", + "pkg/logs/vrl/rust", "pkg/procmgr/rust", ] @@ -59,6 +60,12 @@ saphyr-parser = "0.0.11" yaml-rust2 = "0.11" zip = { version = "8.0", default-features = false, features = ["deflate"] } flate2 = "1.1" +vrl = { version = "0.33", default-features = false, features = ["compiler"] } +sha2 = "0.10" +sha3 = "0.10" +digest = "0.10" +base64 = "0.22" +base16 = "0.2" tower = { version = "0.5", features = ["util"] } uuid = { version = "1", features = ["v4"] } diff --git a/LICENSE-3rdparty.csv b/LICENSE-3rdparty.csv index 3a73303be1cd..3d25461c524f 100644 --- a/LICENSE-3rdparty.csv +++ b/LICENSE-3rdparty.csv @@ -245,6 +245,7 @@ core,github.com/DataDog/ddtrivy/walker,Apache-2.0,"Copyright 2025-Present Datado core,github.com/DataDog/ebpf-manager,MIT,Copyright (c) 2021 Authors of Datadog core,github.com/DataDog/ebpf-manager/internal,MIT,Copyright (c) 2021 Authors of Datadog core,github.com/DataDog/ebpf-manager/tracefs,MIT,Copyright (c) 2021 Authors of Datadog +core,github.com/DataDog/fastjq,Apache-2.0,"Copyright 2026-Present Datadog, Inc" core,github.com/DataDog/go-acl,MIT,Copyright (c) 2015 Nathan Osman core,github.com/DataDog/go-acl/api,MIT,Copyright (c) 2015 Nathan Osman core,github.com/DataDog/go-libddwaf/v4,Apache-2.0,"Copyright 2016-present Datadog, Inc" @@ -2782,8 +2783,8 @@ core,go.opentelemetry.io/ebpf-profiler/interpreter/apmint,Apache-2.0,Copyright T core,go.opentelemetry.io/ebpf-profiler/interpreter/beam,Apache-2.0,Copyright The OpenTelemetry Authors core,go.opentelemetry.io/ebpf-profiler/interpreter/dotnet,Apache-2.0,Copyright The OpenTelemetry Authors core,go.opentelemetry.io/ebpf-profiler/interpreter/go,Apache-2.0,Copyright The OpenTelemetry Authors +core,go.opentelemetry.io/ebpf-profiler/interpreter/golabels,Apache-2.0,Copyright The OpenTelemetry Authors core,go.opentelemetry.io/ebpf-profiler/interpreter/hotspot,Apache-2.0,Copyright The OpenTelemetry Authors -core,go.opentelemetry.io/ebpf-profiler/interpreter/interpreterconfig,Apache-2.0,Copyright The OpenTelemetry Authors core,go.opentelemetry.io/ebpf-profiler/interpreter/nodev8,Apache-2.0,Copyright The OpenTelemetry Authors core,go.opentelemetry.io/ebpf-profiler/interpreter/perl,Apache-2.0,Copyright The OpenTelemetry Authors core,go.opentelemetry.io/ebpf-profiler/interpreter/php,Apache-2.0,Copyright The OpenTelemetry Authors @@ -2827,8 +2828,10 @@ core,go.opentelemetry.io/ebpf-profiler/successfailurecounter,Apache-2.0,Copyrigh core,go.opentelemetry.io/ebpf-profiler/support,Apache-2.0,Copyright The OpenTelemetry Authors core,go.opentelemetry.io/ebpf-profiler/times,Apache-2.0,Copyright The OpenTelemetry Authors core,go.opentelemetry.io/ebpf-profiler/tracer,Apache-2.0,Copyright The OpenTelemetry Authors +core,go.opentelemetry.io/ebpf-profiler/tracer/types,Apache-2.0,Copyright The OpenTelemetry Authors core,go.opentelemetry.io/ebpf-profiler/traceutil,Apache-2.0,Copyright The OpenTelemetry Authors core,go.opentelemetry.io/ebpf-profiler/util,Apache-2.0,Copyright The OpenTelemetry Authors +core,go.opentelemetry.io/ebpf-profiler/vc,Apache-2.0,Copyright The OpenTelemetry Authors core,go.opentelemetry.io/otel,Apache-2.0,Copyright The OpenTelemetry Authors core,go.opentelemetry.io/otel/attribute,Apache-2.0,Copyright The OpenTelemetry Authors core,go.opentelemetry.io/otel/attribute/internal,Apache-2.0,Copyright The OpenTelemetry Authors @@ -3059,6 +3062,7 @@ core,go.uber.org/zap/internal/pool,MIT,"Copyright (c) 2016-2024 Uber Technologie core,go.uber.org/zap/internal/stacktrace,MIT,"Copyright (c) 2016-2024 Uber Technologies, Inc" core,go.uber.org/zap/zapcore,MIT,"Copyright (c) 2016-2024 Uber Technologies, Inc" core,go.uber.org/zap/zapgrpc,MIT,"Copyright (c) 2016-2024 Uber Technologies, Inc" +core,go.uber.org/zap/zaptest/observer,MIT,"Copyright (c) 2016-2024 Uber Technologies, Inc" core,go.yaml.in/yaml/v2,Apache-2.0,Copyright 2011-2016 Canonical Ltd core,go.yaml.in/yaml/v3,MIT,Copyright (c) 2006-2010 Kirill Simonov | Copyright (c) 2006-2011 Kirill Simonov | Copyright (c) 2011-2019 Canonical Ltd | Copyright 2011-2016 Canonical Ltd | copyright staring in 2011 when the project was ported over: core,go.yaml.in/yaml/v4,Apache-2.0,Copyright 2006-2010 Kirill Simonov | Copyright 2011-2019 Canonical Ltd | Copyright 2025 - The go-yaml Project Contributors | Copyright 2025 The go-yaml Project Contributors diff --git a/comp/logs-library/metrics/metrics.go b/comp/logs-library/metrics/metrics.go index c91259760e2f..01c3cf55103e 100644 --- a/comp/logs-library/metrics/metrics.go +++ b/comp/logs-library/metrics/metrics.go @@ -105,6 +105,9 @@ var ( // TlmTruncatedCount tracks the count of times a log is truncated TlmTruncatedCount = telemetryimpl.GetCompatComponent().NewCounter("logs", "truncated", []string{"service", "source"}, "Count the number of times a log is truncated") + // TlmVRLEvalErrors tracks the count of VRL processing rule runtime errors (filter or transform). + TlmVRLEvalErrors = telemetryimpl.GetCompatComponent().NewCounter("logs", "vrl_eval_errors", []string{"rule_type", "rule_name"}, "Count of VRL processing rule runtime errors") + // TlmLogLineSizes is a distribution of post-framer log line sizes TlmLogLineSizes = telemetryimpl.GetCompatComponent().NewHistogram("logs", "log_line_sizes", nil, "Distribution of post-framer log line sizes before line parsers/handlers are applied", []float64{32, 128, 512, 2048, 8192, 32768, 131072, 524288, 2097152}) diff --git a/comp/logs-library/processor/BUILD.bazel b/comp/logs-library/processor/BUILD.bazel index 131d6a9b3687..4e688d123b34 100644 --- a/comp/logs-library/processor/BUILD.bazel +++ b/comp/logs-library/processor/BUILD.bazel @@ -23,6 +23,8 @@ go_library( "//pkg/logs/message", "//pkg/util/log", "@com_github_datadog_agent_payload_v5//pb", + "@com_github_open_telemetry_opentelemetry_collector_contrib_pkg_ottl//contexts/ottllog", + "@io_opentelemetry_go_collector_pdata//plog", ], ) diff --git a/comp/logs-library/processor/processor.go b/comp/logs-library/processor/processor.go index 4bddf58844c7..9a05ae2810f6 100644 --- a/comp/logs-library/processor/processor.go +++ b/comp/logs-library/processor/processor.go @@ -8,10 +8,15 @@ package processor import ( "bytes" "context" + "encoding/json" "regexp" "slices" "sync" + "go.opentelemetry.io/collector/pdata/plog" + + "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottllog" + "github.com/DataDog/datadog-agent/comp/core/hostname/hostnameinterface/def" "github.com/DataDog/datadog-agent/comp/logs-library/diagnostic" "github.com/DataDog/datadog-agent/comp/logs-library/metrics" @@ -255,6 +260,17 @@ func (p *Processor) applyRedactingRules(msg *message.Message) bool { rules := append(p.processingRules, extraRules...) for _, rule := range rules { switch rule.Type { + + case config.ExcludeAtMatchOTTL: + if p.processOTTLmsg(msg, rule) { + return false + } + + case config.IncludeAtMatchOTTL: + if !p.processOTTLmsg(msg, rule) { + return false + } + case config.ExcludeAtMatch: // if this message matches, we ignore it if rule.Regex.Match(content) { @@ -280,6 +296,58 @@ func (p *Processor) applyRedactingRules(msg *message.Message) bool { msg.RecordProcessingRule(rule.Type, rule.Name) return false } + case config.ExcludeAtJQMatch: + if matched, err := rule.JQFilter(content); err == nil && matched { + msg.RecordProcessingRule(rule.Type, rule.Name) + return false + } + case config.IncludeAtJQMatch: + matched, err := rule.JQFilter(content) + if err != nil { + // Non-JSON or runtime error: pass through unchanged. + break + } + if !matched { + return false + } + msg.RecordProcessingRule(rule.Type, rule.Name) + case config.ExcludeAtVRLMatch: + // if this message matches, we ignore it. Fail open (keep the message) + // on a runtime error, since a filter false-negative doesn't leak data. + matched, err := rule.VRLFilter(content) + if err != nil { + metrics.TlmVRLEvalErrors.Inc(rule.Type, rule.Name) + break + } + if matched { + msg.RecordProcessingRule(rule.Type, rule.Name) + return false + } + case config.IncludeAtVRLMatch: + // if this message doesn't match, we ignore it. Fail open (keep the + // message) on a runtime error. + matched, err := rule.VRLFilter(content) + if err != nil { + metrics.TlmVRLEvalErrors.Inc(rule.Type, rule.Name) + break + } + if !matched { + return false + } + msg.RecordProcessingRule(rule.Type, rule.Name) + case config.MaskVRLTransform: + newContent, err := rule.VRLTransform(content) + if err != nil { + // Fail closed: drop the message rather than risk leaking + // unredacted PII when the VRL transform can't run. + metrics.TlmVRLEvalErrors.Inc(rule.Type, rule.Name) + msg.RecordProcessingRule(rule.Type, rule.Name) + return false + } + if !bytes.Equal(content, newContent) { + msg.RecordProcessingRule(rule.Type, rule.Name) + } + content = newContent case config.RemapSource: for _, match := range rule.Matching { if val, ok := msg.GetStructuredAttribute(match.Attribute); ok && val == match.Value { @@ -325,3 +393,53 @@ func (p *Processor) GetHostname(msg *message.Message) string { } return hname } + +// processOTTLmsg +func (p *Processor) processOTTLmsg(msg *message.Message, rule *config.ProcessingRule) bool { + // If the OTTL condition is not compiled, we log an error and skip OTTL processing for this rule + if rule.OTTLCondition == nil { + log.Errorf("OTTL condition is not compiled for rule `%s`, skipping OTTL processing", rule.Name) + return false + } + + var m map[string]any + + err := json.Unmarshal(msg.GetContent(), &m) + if err != nil { + log.Errorf("error unmarshalling message content for OTTL processing rule `%s`: %v", rule.Name, err) + return false + } + + pdata := plog.NewLogRecord() + for k, v := range m { + switch val := v.(type) { + case string: + pdata.Attributes().PutStr(k, val) + case bool: + pdata.Attributes().PutBool(k, val) + case float64: + pdata.Attributes().PutDouble(k, val) + default: + log.Warnf("unsupported attribute type for key `%s` in OTTL processing rule `%s`, skipping this attribute", k, rule.Name) + } + } + + rl := plog.NewResourceLogs() + sl := rl.ScopeLogs().AppendEmpty() + + transformContext := ottllog.NewTransformContextPtr(rl, sl, pdata) + defer transformContext.Close() + + match, err := rule.OTTLCondition.Eval(context.Background(), transformContext) + if err != nil { + log.Errorf("error evaluating OTTL condition for processing rule `%s`: %v", rule.Name, err) + return false + } + + if match { + msg.RecordProcessingRule(rule.Type, rule.Name) + } + + return match + +} diff --git a/comp/logs-library/processor/processor_test.go b/comp/logs-library/processor/processor_test.go index eaa49f456e72..487c47630ab0 100644 --- a/comp/logs-library/processor/processor_test.go +++ b/comp/logs-library/processor/processor_test.go @@ -6,6 +6,7 @@ package processor import ( + "errors" "regexp" "testing" @@ -338,7 +339,7 @@ func TestTruncate(t *testing.T) { } func TestGetHostname(t *testing.T) { - hostnameComponent, _ := hostnameinterface.NewMock("testHostnameFromEnvVar") + hostnameComponent, _ := hostnameinterface.NewMock(hostnameinterface.MockHostname("testHostnameFromEnvVar")) p := &Processor{ hostname: hostnameComponent, } @@ -351,6 +352,169 @@ func TestGetHostname(t *testing.T) { var ruleName = "test" +// newOTTLProcessingRule creates a ProcessingRule with a compiled OTTL condition. +func newOTTLProcessingRule(ruleType, pattern string) *config.ProcessingRule { + rule := &config.ProcessingRule{ + Type: ruleType, + Name: ruleName, + Pattern: pattern, + } + rules := []*config.ProcessingRule{rule} + if err := config.CompileProcessingRules(rules); err != nil { + panic("failed to compile OTTL processing rule: " + err.Error()) + } + return rule +} + +func newOTTLSource(ruleType, pattern string) sources.LogSource { + return *sources.NewLogSource("", &config.LogsConfig{ProcessingRules: []*config.ProcessingRule{newOTTLProcessingRule(ruleType, pattern)}}) +} + +// OTTL exclusion tests +// -------------------- + +func TestOTTLExclusion(t *testing.T) { + assert := assert.New(t) + ruleType := config.ExcludeAtMatchOTTL + + tests := []struct { + name string + pattern string + input []byte + shouldProcess bool + }{ + { + name: "matching log is excluded", + pattern: `attributes["status"] == "error"`, + input: []byte(`{"status":"error","message":"timeout"}`), + shouldProcess: false, + }, + { + name: "non-matching log is kept", + pattern: `attributes["status"] == "error"`, + input: []byte(`{"status":"info","message":"all good"}`), + shouldProcess: true, + }, + { + name: "non-JSON log is passed through", + pattern: `attributes["status"] == "error"`, + input: []byte(`this is not json`), + shouldProcess: true, + }, + { + name: "multi-field condition matches correctly", + pattern: `attributes["status"] == "error" and attributes["service"] == "payments"`, + input: []byte(`{"status":"error","service":"payments","message":"timeout"}`), + shouldProcess: false, + }, + { + name: "multi-field condition partial match does not exclude", + pattern: `attributes["status"] == "error" and attributes["service"] == "payments"`, + input: []byte(`{"status":"error","service":"checkout","message":"timeout"}`), + shouldProcess: true, + }, + } + + for _, test := range tests { + t.Run(test.name, func(_ *testing.T) { + source := newOTTLSource(ruleType, test.pattern) + p := &Processor{} + msg := newMessage(test.input, &source, "") + shouldProcess := p.applyRedactingRules(msg) + assert.Equal(test.shouldProcess, shouldProcess, test.name) + msg.Origin.LogSource.ProcessingInfo.Reset() + }) + } +} + +// OTTL inclusion tests +// -------------------- + +func TestOTTLInclusion(t *testing.T) { + assert := assert.New(t) + ruleType := config.IncludeAtMatchOTTL + + tests := []struct { + name string + pattern string + input []byte + shouldProcess bool + }{ + { + name: "matching log is kept", + pattern: `attributes["status"] == "error"`, + input: []byte(`{"status":"error","message":"timeout"}`), + shouldProcess: true, + }, + { + name: "non-matching log is dropped", + pattern: `attributes["status"] == "error"`, + input: []byte(`{"status":"info","message":"all good"}`), + shouldProcess: false, + }, + { + name: "non-JSON log is dropped", + pattern: `attributes["status"] == "error"`, + input: []byte(`this is not json`), + shouldProcess: false, + }, + { + name: "numeric field match", + pattern: `attributes["retries"] == 3`, + input: []byte(`{"retries":3,"message":"retrying"}`), + shouldProcess: true, + }, + { + name: "numeric field no match", + pattern: `attributes["retries"] == 3`, + input: []byte(`{"retries":1,"message":"retrying"}`), + shouldProcess: false, + }, + } + + for _, test := range tests { + t.Run(test.name, func(_ *testing.T) { + source := newOTTLSource(ruleType, test.pattern) + p := &Processor{} + msg := newMessage(test.input, &source, "") + shouldProcess := p.applyRedactingRules(msg) + assert.Equal(test.shouldProcess, shouldProcess, test.name) + msg.Origin.LogSource.ProcessingInfo.Reset() + }) + } +} + +// OTTL processor-level rule tests +// -------------------------------- + +func TestOTTLProcessorRule(t *testing.T) { + assert := assert.New(t) + + t.Run("processor-level exclude rule applies to all messages", func(_ *testing.T) { + rule := newOTTLProcessingRule(config.ExcludeAtMatchOTTL, `attributes["status"] == "error"`) + p := &Processor{processingRules: []*config.ProcessingRule{rule}} + source := sources.NewLogSource("", &config.LogsConfig{}) + + msg := newMessage([]byte(`{"status":"error","message":"timeout"}`), source, "") + assert.False(p.applyRedactingRules(msg)) + + msg2 := newMessage([]byte(`{"status":"info","message":"ok"}`), source, "") + assert.True(p.applyRedactingRules(msg2)) + }) + + t.Run("processor-level include rule applies to all messages", func(_ *testing.T) { + rule := newOTTLProcessingRule(config.IncludeAtMatchOTTL, `attributes["status"] == "error"`) + p := &Processor{processingRules: []*config.ProcessingRule{rule}} + source := sources.NewLogSource("", &config.LogsConfig{}) + + msg := newMessage([]byte(`{"status":"error","message":"timeout"}`), source, "") + assert.True(p.applyRedactingRules(msg)) + + msg2 := newMessage([]byte(`{"status":"info","message":"ok"}`), source, "") + assert.False(p.applyRedactingRules(msg2)) + }) +} + func newProcessingRule(ruleType, replacePlaceholder, pattern string) *config.ProcessingRule { return &config.ProcessingRule{ Type: ruleType, @@ -628,3 +792,263 @@ func TestRemapSource_EscapedDotPath(t *testing.T) { assert.Equal("fallback", msg.Origin.Source()) }) } + +func newJQSource(ruleType, pattern string) sources.LogSource { + rule := &config.ProcessingRule{ + Type: ruleType, + Name: ruleName, + Pattern: pattern, + } + if err := config.CompileProcessingRules([]*config.ProcessingRule{rule}); err != nil { + panic(err) + } + return *sources.NewLogSource("", &config.LogsConfig{ProcessingRules: []*config.ProcessingRule{rule}}) +} + +// VRL rule tests +// -------------- +// +// These tests build ProcessingRule values directly with hand-set +// VRLFilter/VRLTransform closures rather than going through +// config.CompileProcessingRules, since the real VRL compiler is only +// available when the agent is built with the `vrl` build tag. This lets the +// applyRedactingRules wiring (fail-open for filters, fail-closed for the +// mask transform) be verified in every build, including the default stub. + +func newVRLFilterSource(ruleType string, filter func([]byte) (bool, error)) sources.LogSource { + rule := &config.ProcessingRule{ + Type: ruleType, + Name: ruleName, + Pattern: "", + VRLFilter: filter, + } + return *sources.NewLogSource("", &config.LogsConfig{ProcessingRules: []*config.ProcessingRule{rule}}) +} + +func newVRLMaskSource(transform func([]byte) ([]byte, error)) sources.LogSource { + rule := &config.ProcessingRule{ + Type: config.MaskVRLTransform, + Name: ruleName, + Pattern: "", + VRLTransform: transform, + } + return *sources.NewLogSource("", &config.LogsConfig{ProcessingRules: []*config.ProcessingRule{rule}}) +} + +var errVRLRuntime = errors.New("simulated VRL runtime error") + +func TestJQExclusion(t *testing.T) { + p := &Processor{} + + tests := []struct { + name string + pattern string + input []byte + shouldProcess bool + }{ + { + name: "drops matching JSON", + pattern: `select(.level == "debug")`, + input: []byte(`{"level":"debug","msg":"verbose"}`), + shouldProcess: false, + }, + { + name: "passes non-matching JSON", + pattern: `select(.level == "debug")`, + input: []byte(`{"level":"error","msg":"boom"}`), + shouldProcess: true, + }, + { + name: "passes non-JSON content unchanged", + pattern: `select(.level == "debug")`, + input: []byte("plain text log line"), + shouldProcess: true, + }, + } + + for _, tc := range tests { + t.Run(tc.name, func(t *testing.T) { + src := newJQSource(config.ExcludeAtJQMatch, tc.pattern) + msg := newMessage(tc.input, &src, "") + assert.Equal(t, tc.shouldProcess, p.applyRedactingRules(msg)) + }) + } +} + +func TestVRLExclusion(t *testing.T) { + p := &Processor{} + + tests := []struct { + name string + filter func([]byte) (bool, error) + shouldProcess bool + }{ + { + name: "drops matching content", + filter: func([]byte) (bool, error) { return true, nil }, + shouldProcess: false, + }, + { + name: "keeps non-matching content", + filter: func([]byte) (bool, error) { return false, nil }, + shouldProcess: true, + }, + { + name: "fails open on runtime error", + filter: func([]byte) (bool, error) { return false, errVRLRuntime }, + shouldProcess: true, + }, + } + + for _, tc := range tests { + t.Run(tc.name, func(t *testing.T) { + src := newVRLFilterSource(config.ExcludeAtVRLMatch, tc.filter) + msg := newMessage([]byte("hello"), &src, "") + assert.Equal(t, tc.shouldProcess, p.applyRedactingRules(msg)) + }) + } +} + +func TestJQInclusion(t *testing.T) { + p := &Processor{} + + tests := []struct { + name string + pattern string + input []byte + shouldProcess bool + }{ + { + name: "keeps matching JSON", + pattern: `select(.level == "error")`, + input: []byte(`{"level":"error","msg":"boom"}`), + shouldProcess: true, + }, + { + name: "drops non-matching JSON", + pattern: `select(.level == "error")`, + input: []byte(`{"level":"debug","msg":"verbose"}`), + shouldProcess: false, + }, + { + name: "passes non-JSON content unchanged", + pattern: `select(.level == "error")`, + input: []byte("plain text log line"), + shouldProcess: true, + }, + } + + for _, tc := range tests { + t.Run(tc.name, func(t *testing.T) { + src := newJQSource(config.IncludeAtJQMatch, tc.pattern) + msg := newMessage(tc.input, &src, "") + assert.Equal(t, tc.shouldProcess, p.applyRedactingRules(msg)) + }) + } +} + +func TestVRLInclusion(t *testing.T) { + p := &Processor{} + + tests := []struct { + name string + filter func([]byte) (bool, error) + shouldProcess bool + }{ + { + name: "keeps matching content", + filter: func([]byte) (bool, error) { return true, nil }, + shouldProcess: true, + }, + { + name: "drops non-matching content", + filter: func([]byte) (bool, error) { return false, nil }, + shouldProcess: false, + }, + { + name: "fails open on runtime error", + filter: func([]byte) (bool, error) { return false, errVRLRuntime }, + shouldProcess: true, + }, + } + + for _, tc := range tests { + t.Run(tc.name, func(t *testing.T) { + src := newVRLFilterSource(config.IncludeAtVRLMatch, tc.filter) + msg := newMessage([]byte("hello"), &src, "") + assert.Equal(t, tc.shouldProcess, p.applyRedactingRules(msg)) + }) + } +} + +func TestVRLMask(t *testing.T) { + p := &Processor{} + + t.Run("redacts content and records the rule", func(t *testing.T) { + src := newVRLMaskSource(func([]byte) ([]byte, error) { return []byte("[REDACTED]"), nil }) + msg := newMessage([]byte("secret value"), &src, "") + assert.True(t, p.applyRedactingRules(msg)) + assert.Equal(t, []byte("[REDACTED]"), msg.GetContent()) + assert.Equal(t, int64(1), msg.Origin.LogSource.ProcessingInfo.GetCount(config.MaskVRLTransform+":"+ruleName)) + }) + + t.Run("does not record the rule when content is unchanged", func(t *testing.T) { + src := newVRLMaskSource(func(input []byte) ([]byte, error) { return input, nil }) + msg := newMessage([]byte("nothing to redact"), &src, "") + assert.True(t, p.applyRedactingRules(msg)) + assert.Equal(t, []byte("nothing to redact"), msg.GetContent()) + assert.Equal(t, int64(0), msg.Origin.LogSource.ProcessingInfo.GetCount(config.MaskVRLTransform+":"+ruleName)) + }) + + t.Run("fails closed and drops the message on a runtime error", func(t *testing.T) { + src := newVRLMaskSource(func([]byte) ([]byte, error) { return nil, errVRLRuntime }) + msg := newMessage([]byte("secret value"), &src, "") + assert.False(t, p.applyRedactingRules(msg)) + }) +} + +func TestVRLMaskAndExcludeOrdering(t *testing.T) { + p := &Processor{} + + t.Run("mask before exclude sees the masked content", func(t *testing.T) { + var seen []byte + maskRule := &config.ProcessingRule{ + Type: config.MaskVRLTransform, + Name: ruleName, + VRLTransform: func([]byte) ([]byte, error) { return []byte("masked"), nil }, + } + excludeRule := &config.ProcessingRule{ + Type: config.ExcludeAtVRLMatch, + Name: ruleName, + VRLFilter: func(input []byte) (bool, error) { + seen = input + return false, nil + }, + } + src := *sources.NewLogSource("", &config.LogsConfig{ProcessingRules: []*config.ProcessingRule{maskRule, excludeRule}}) + msg := newMessage([]byte("original"), &src, "") + assert.True(t, p.applyRedactingRules(msg)) + assert.Equal(t, []byte("masked"), seen) + }) + + t.Run("exclude before mask short-circuits the mask", func(t *testing.T) { + maskCalled := false + excludeRule := &config.ProcessingRule{ + Type: config.ExcludeAtVRLMatch, + Name: ruleName, + VRLFilter: func([]byte) (bool, error) { return true, nil }, + } + maskRule := &config.ProcessingRule{ + Type: config.MaskVRLTransform, + Name: ruleName, + VRLTransform: func(input []byte) ([]byte, error) { + maskCalled = true + return input, nil + }, + } + src := *sources.NewLogSource("", &config.LogsConfig{ProcessingRules: []*config.ProcessingRule{excludeRule, maskRule}}) + msg := newMessage([]byte("original"), &src, "") + assert.False(t, p.applyRedactingRules(msg)) + assert.False(t, maskCalled) + }) +} diff --git a/comp/logs/agent/config/BUILD.bazel b/comp/logs/agent/config/BUILD.bazel index b33e93bd8172..712ab6d94396 100644 --- a/comp/logs/agent/config/BUILD.bazel +++ b/comp/logs/agent/config/BUILD.bazel @@ -24,10 +24,17 @@ go_library( "//pkg/config/structure", "//pkg/config/utils", "//pkg/logs/types", + "//pkg/logs/vrl", "//pkg/util/log", "//pkg/util/scrubber", + "@com_github_datadog_fastjq//:fastjq", + "@com_github_open_telemetry_opentelemetry_collector_contrib_pkg_ottl//:ottl", + "@com_github_open_telemetry_opentelemetry_collector_contrib_pkg_ottl//contexts/ottllog", + "@com_github_open_telemetry_opentelemetry_collector_contrib_pkg_ottl//ottlfuncs", "@in_yaml_go_yaml_v3//:yaml", + "@io_opentelemetry_go_collector_component//:component", "@org_uber_go_atomic//:atomic", + "@org_uber_go_zap//:zap", ], ) @@ -40,7 +47,9 @@ dd_agent_go_test( "integration_config_test.go", "messages_test.go", "parser_test.go", + "processing_rules_novrl_test.go", "processing_rules_test.go", + "processing_rules_vrl_test.go", ], embed = [":config"], deps = [ diff --git a/comp/logs/agent/config/processing_rules.go b/comp/logs/agent/config/processing_rules.go index df981f8250a7..625bd04b5c74 100644 --- a/comp/logs/agent/config/processing_rules.go +++ b/comp/logs/agent/config/processing_rules.go @@ -9,16 +9,48 @@ import ( "errors" "fmt" "regexp" + + // We need to import the OTTL package to be able to parse OTTL conditions in processing rules, even if we don't use it directly in this file. + "go.opentelemetry.io/collector/component" + "go.uber.org/zap" + + "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl" + "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottllog" + "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/ottlfuncs" + + "github.com/DataDog/fastjq" + + "github.com/DataDog/datadog-agent/pkg/logs/vrl" ) // Processing rule types const ( + ExcludeAtMatchOTTL = "exclude_at_match_ottl" + IncludeAtMatchOTTL = "include_at_match_ottl" + ExcludeAtMatch = "exclude_at_match" IncludeAtMatch = "include_at_match" MaskSequences = "mask_sequences" MultiLine = "multi_line" ExcludeTruncated = "exclude_truncated" RemapSource = "remap_source" + // ExcludeAtJQMatch drops log lines for which the jq expression produces output. + // The pattern must be a valid jq expression (e.g. `select(.level == "debug")`). + // Non-JSON content is passed through unchanged. + ExcludeAtJQMatch = "exclude_at_jq_match" + // IncludeAtJQMatch keeps only log lines for which the jq expression produces output. + // Non-JSON content is passed through unchanged. + IncludeAtJQMatch = "include_at_jq_match" + // ExcludeAtVRLMatch drops log lines for which the VRL expression evaluates to true. + // The pattern must be a valid VRL boolean expression (e.g. `.status == "debug"`). + ExcludeAtVRLMatch = "exclude_at_vrl_match" + // IncludeAtVRLMatch keeps only log lines for which the VRL expression evaluates to true. + IncludeAtVRLMatch = "include_at_vrl_match" + // MaskVRLTransform mutates the log line's content using a VRL transform + // (e.g. `.message = redact(.message, [...])`). Unlike MaskSequences, the + // replacement logic lives entirely in the VRL source, not in a separate + // placeholder field. + MaskVRLTransform = "mask_vrl" ) // SourceMatchEntry defines a single attribute-value-to-source match @@ -37,8 +69,21 @@ type ProcessingRule struct { ReplacePlaceholder string `mapstructure:"replace_placeholder" json:"replace_placeholder" yaml:"replace_placeholder"` Pattern string Regex *regexp.Regexp + OTTLCondition *ottl.Condition[*ottllog.TransformContext] Placeholder []byte Matching []*SourceMatchEntry `mapstructure:"matching" json:"matching" yaml:"matching"` + // JQFilter is set for ExcludeAtJQMatch and IncludeAtJQMatch rules after compilation. + // It returns (true, nil) when the jq program produces output for the given input, + // (false, nil) when it produces no output, and (false, err) on program error. + JQFilter func(input []byte) (bool, error) `json:"-" yaml:"-" mapstructure:"-"` + // VRLFilter is set for ExcludeAtVRLMatch and IncludeAtVRLMatch rules after compilation. + // It returns (true, nil) when the VRL expression matches the given input, + // (false, nil) when it doesn't, and (false, err) on a compile/runtime error. + VRLFilter func(input []byte) (bool, error) `json:"-" yaml:"-" mapstructure:"-"` + // VRLTransform is set for MaskVRLTransform rules after compilation. + // It returns the (possibly mutated) message content, or an error if the + // VRL program failed to run. + VRLTransform func(input []byte) ([]byte, error) `json:"-" yaml:"-" mapstructure:"-"` } // ValidateProcessingRules validates the rules and raises an error if one is misconfigured. @@ -61,6 +106,28 @@ func ValidateProcessingRules(rules []*ProcessingRule) error { if err != nil { return fmt.Errorf("invalid pattern %s for processing rule: %s", rule.Pattern, rule.Name) } + case ExcludeAtMatchOTTL, IncludeAtMatchOTTL: + if rule.Pattern == "" { + return fmt.Errorf("no pattern provided for processing rule: %s", rule.Name) + } + err := validateOTTLPattern(rule.Pattern) + if err != nil { + return fmt.Errorf("invalid OTTL pattern %s for processing rule: %s, error: %v", rule.Pattern, rule.Name, err) + } + case ExcludeAtJQMatch, IncludeAtJQMatch: + if rule.Pattern == "" { + return fmt.Errorf("no pattern provided for processing rule: %s", rule.Name) + } + if _, err := fastjq.Compile(rule.Pattern); err != nil { + return fmt.Errorf("invalid jq pattern %q for processing rule %s: %w", rule.Pattern, rule.Name, err) + } + case ExcludeAtVRLMatch, IncludeAtVRLMatch, MaskVRLTransform: + if rule.Pattern == "" { + return fmt.Errorf("no pattern provided for processing rule: %s", rule.Name) + } + if _, err := vrl.Compile(rule.Pattern); err != nil { + return fmt.Errorf("invalid VRL pattern %q for processing rule %s: %w", rule.Pattern, rule.Name, err) + } case ExcludeTruncated: break case RemapSource: @@ -87,28 +154,114 @@ func ValidateProcessingRules(rules []*ProcessingRule) error { return nil } -// CompileProcessingRules compiles all processing rule regular expressions. +// CompileProcessingRules compiles all processing rule regular expressions, OTTL conditions, jq programs, and VRL programs. func CompileProcessingRules(rules []*ProcessingRule) error { + for _, rule := range rules { - if rule.Type == ExcludeTruncated || rule.Type == RemapSource { + switch rule.Type { + case ExcludeTruncated, RemapSource: + continue + case ExcludeAtJQMatch, IncludeAtJQMatch: + prog, err := fastjq.Compile(rule.Pattern) + if err != nil { + return fmt.Errorf("invalid jq pattern %q for processing rule %s: %w", rule.Pattern, rule.Name, err) + } + rule.JQFilter = makeJQFilter(prog) + continue + case ExcludeAtVRLMatch, IncludeAtVRLMatch: + prog, err := vrl.Compile(rule.Pattern) + if err != nil { + return fmt.Errorf("invalid VRL pattern %q for processing rule %s: %w", rule.Pattern, rule.Name, err) + } + rule.VRLFilter = prog.Filter + continue + case MaskVRLTransform: + prog, err := vrl.Compile(rule.Pattern) + if err != nil { + return fmt.Errorf("invalid VRL pattern %q for processing rule %s: %w", rule.Pattern, rule.Name, err) + } + rule.VRLTransform = prog.Transform continue } - re, err := regexp.Compile(rule.Pattern) - if err != nil { - return err - } + // re, err := regexp.Compile(rule.Pattern) + // if err != nil { + // return err + // } switch rule.Type { + case ExcludeAtMatchOTTL, IncludeAtMatchOTTL: + err := compileOTTLProcessingRule(rule) + if err != nil { + return err + } + case ExcludeAtMatch, IncludeAtMatch: + re, err := regexp.Compile(rule.Pattern) + if err != nil { + return err + } rule.Regex = re + case MaskSequences: + re, err := regexp.Compile(rule.Pattern) + if err != nil { + return err + } rule.Regex = re rule.Placeholder = []byte(rule.ReplacePlaceholder) + case MultiLine: - rule.Regex, err = regexp.Compile("^" + rule.Pattern) + re, err := regexp.Compile("^" + rule.Pattern) if err != nil { return err } + rule.Regex = re } } return nil } + +// validateOTTLPattern checks that the given OTTL pattern is valid and can be parsed by the OTTL parser. +func validateOTTLPattern(pattern string) error { + settings := component.TelemetrySettings{Logger: zap.NewNop()} // settings are only used for logging during parsing, so we can use a no-op logger here + parser, err := ottllog.NewParser(ottlfuncs.StandardFuncs[*ottllog.TransformContext](), settings) + if err != nil { + return err + } + _, err = parser.ParseCondition(pattern) + return err +} + +func compileOTTLProcessingRule(rule *ProcessingRule) error { + settings := component.TelemetrySettings{Logger: zap.NewNop()} // settings are only used for logging during parsing, so we can use a no-op logger here + parser, err := ottllog.NewParser(ottlfuncs.StandardFuncs[*ottllog.TransformContext](), settings) + if err != nil { + return err + } + condition, err := parser.ParseCondition(rule.Pattern) + if err != nil { + return fmt.Errorf("error parsing OTTL condition for processing rule `%s`: %v", rule.Name, err) + } + rule.OTTLCondition = condition + return nil +} + +// makeJQFilter returns a function that reports whether a jq program produces output for the given input. +// Non-JSON input always returns (false, nil) — never silently dropped. +func makeJQFilter(prog *fastjq.Program) func([]byte) (bool, error) { + buf := make([]byte, 0, 4096) + return func(input []byte) (bool, error) { + matched := false + buf = buf[:0] + err := prog.RunFunc(input, func(result []byte) error { + if len(result) > 0 { + matched = true + } + return nil + }) + if err != nil { + // Non-JSON or jq runtime error: treat as no match (pass-through). + return false, err + } + return matched, nil + } +} diff --git a/comp/logs/agent/config/processing_rules_novrl_test.go b/comp/logs/agent/config/processing_rules_novrl_test.go new file mode 100644 index 000000000000..e307b5d52669 --- /dev/null +++ b/comp/logs/agent/config/processing_rules_novrl_test.go @@ -0,0 +1,29 @@ +// 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 2016-present Datadog, Inc. + +//go:build !vrl && !windows + +package config + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +// TestVRLRulesFailClearlyWithoutBuildTag documents that, in a default build +// (no `vrl` build tag), VRL processing rules fail loudly at config-validate +// and compile time rather than silently becoming no-ops. +func TestVRLRulesFailClearlyWithoutBuildTag(t *testing.T) { + for _, ruleType := range []string{ExcludeAtVRLMatch, IncludeAtVRLMatch, MaskVRLTransform} { + t.Run(ruleType, func(t *testing.T) { + rules := []*ProcessingRule{{Type: ruleType, Name: "vrl_test", Pattern: `.status == "debug"`}} + assert.ErrorContains(t, ValidateProcessingRules(rules), "vrl' build tag") + assert.ErrorContains(t, CompileProcessingRules(rules), "vrl' build tag") + assert.Nil(t, rules[0].VRLFilter) + assert.Nil(t, rules[0].VRLTransform) + }) + } +} diff --git a/comp/logs/agent/config/processing_rules_test.go b/comp/logs/agent/config/processing_rules_test.go index 0a9cb787d2f7..a9aebf671a42 100644 --- a/comp/logs/agent/config/processing_rules_test.go +++ b/comp/logs/agent/config/processing_rules_test.go @@ -89,6 +89,15 @@ func TestValidateRemapSource(t *testing.T) { }) } +func TestValidateVRLRulesRequirePattern(t *testing.T) { + for _, ruleType := range []string{ExcludeAtVRLMatch, IncludeAtVRLMatch, MaskVRLTransform} { + t.Run(ruleType, func(t *testing.T) { + rules := []*ProcessingRule{{Type: ruleType, Name: "vrl_test", Pattern: ""}} + assert.ErrorContains(t, ValidateProcessingRules(rules), "no pattern provided") + }) + } +} + func TestCompileSkipsRemapSource(t *testing.T) { rules := []*ProcessingRule{{ Type: RemapSource, diff --git a/comp/logs/agent/config/processing_rules_vrl_test.go b/comp/logs/agent/config/processing_rules_vrl_test.go new file mode 100644 index 000000000000..24ea24e9c9e7 --- /dev/null +++ b/comp/logs/agent/config/processing_rules_vrl_test.go @@ -0,0 +1,47 @@ +// 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 2016-present Datadog, Inc. + +//go:build vrl && !windows + +package config + +import ( + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func TestVRLFilterRuleCompilesWithBuildTag(t *testing.T) { + rules := []*ProcessingRule{{Type: ExcludeAtVRLMatch, Name: "vrl_test", Pattern: `.message == "drop me"`}} + require.NoError(t, ValidateProcessingRules(rules)) + require.NoError(t, CompileProcessingRules(rules)) + require.NotNil(t, rules[0].VRLFilter) + assert.Nil(t, rules[0].VRLTransform) + assert.Nil(t, rules[0].Regex) + + matched, err := rules[0].VRLFilter([]byte("drop me")) + require.NoError(t, err) + assert.True(t, matched) +} + +func TestVRLMaskRuleCompilesWithBuildTag(t *testing.T) { + rules := []*ProcessingRule{{Type: MaskVRLTransform, Name: "vrl_test", Pattern: `.message = redact!(.message, [r'\d+'])`}} + require.NoError(t, ValidateProcessingRules(rules)) + require.NoError(t, CompileProcessingRules(rules)) + require.NotNil(t, rules[0].VRLTransform) + assert.Nil(t, rules[0].VRLFilter) + + out, err := rules[0].VRLTransform([]byte("id 123456")) + require.NoError(t, err) + assert.Equal(t, []byte("id [REDACTED]"), out) +} + +func TestVRLRuleCompileFailsWithInvalidPattern(t *testing.T) { + rules := []*ProcessingRule{{Type: ExcludeAtVRLMatch, Name: "vrl_test", Pattern: `.message ==`}} + assert.Error(t, ValidateProcessingRules(rules)) + assert.Error(t, CompileProcessingRules(rules)) + assert.Nil(t, rules[0].VRLFilter) +} diff --git a/go.work b/go.work index 551f53d3ddf6..39d38a6b44ea 100644 --- a/go.work +++ b/go.work @@ -92,6 +92,7 @@ use ( internal/tools/modformatter internal/tools/modparser internal/tools/worksynchronizer + otel-patches/coreinternal pkg/aggregator/ckey pkg/api pkg/collector/check/defaults @@ -120,6 +121,7 @@ use ( pkg/logs/status/utils pkg/logs/types pkg/logs/util/testutils + pkg/logs/vrl pkg/metrics pkg/network/driver pkg/network/payload diff --git a/modules.yml b/modules.yml index 7b2c461dbe54..2b1618d56ccc 100644 --- a/modules.yml +++ b/modules.yml @@ -183,6 +183,11 @@ modules: independent: false should_tag: false should_test_condition: never + otel-patches/coreinternal: + independent: false + should_replace_internal_modules: false + should_tag: false + should_test_condition: never pkg/aggregator/ckey: used_by_otel: true pkg/api: @@ -238,6 +243,8 @@ modules: used_by_otel: true pkg/logs/util/testutils: used_by_otel: true + pkg/logs/vrl: + used_by_otel: true pkg/metrics: used_by_otel: true pkg/network/driver: default diff --git a/otel-patches/coreinternal/BUILD.bazel b/otel-patches/coreinternal/BUILD.bazel new file mode 100644 index 000000000000..1fe51cd07077 --- /dev/null +++ b/otel-patches/coreinternal/BUILD.bazel @@ -0,0 +1,15 @@ +load("@@rules_go+//go:def.bzl", "go_test") + +go_test( + name = "opentelemetry-collector-contrib-coreinternal_test", + srcs = ["generated_package_test.go"], + gotags = ["test"], + deps = ["@org_uber_go_goleak//:goleak"], +) + +go_test( + name = "coreinternal_test", + srcs = ["generated_package_test.go"], + gotags = ["test"], + deps = ["@org_uber_go_goleak//:goleak"], +) diff --git a/otel-patches/coreinternal/LICENSE b/otel-patches/coreinternal/LICENSE new file mode 100644 index 000000000000..261eeb9e9f8b --- /dev/null +++ b/otel-patches/coreinternal/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/otel-patches/coreinternal/Makefile b/otel-patches/coreinternal/Makefile new file mode 100644 index 000000000000..ded7a36092dc --- /dev/null +++ b/otel-patches/coreinternal/Makefile @@ -0,0 +1 @@ +include ../../Makefile.Common diff --git a/otel-patches/coreinternal/aggregateutil/BUILD.bazel b/otel-patches/coreinternal/aggregateutil/BUILD.bazel new file mode 100644 index 000000000000..4c1a15178c5b --- /dev/null +++ b/otel-patches/coreinternal/aggregateutil/BUILD.bazel @@ -0,0 +1,30 @@ +load("@@rules_go+//go:def.bzl", "go_library", "go_test") + +go_library( + name = "aggregateutil", + srcs = [ + "aggregate.go", + "type.go", + ], + importpath = "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/aggregateutil", # keep + visibility = ["//visibility:public"], + deps = [ + "@io_opentelemetry_go_collector_pdata//pcommon", + "@io_opentelemetry_go_collector_pdata//pmetric", + ], +) + +go_test( + name = "aggregateutil_test", + srcs = [ + "aggregate_test.go", + "type_test.go", + ], + embed = [":aggregateutil"], + gotags = ["test"], + deps = [ + "@com_github_stretchr_testify//require", + "@io_opentelemetry_go_collector_pdata//pcommon", + "@io_opentelemetry_go_collector_pdata//pmetric", + ], +) diff --git a/otel-patches/coreinternal/aggregateutil/aggregate.go b/otel-patches/coreinternal/aggregateutil/aggregate.go new file mode 100644 index 000000000000..aa1aa09fd762 --- /dev/null +++ b/otel-patches/coreinternal/aggregateutil/aggregate.go @@ -0,0 +1,448 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package aggregateutil // import "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/aggregateutil" + +import ( + "encoding/json" + "math" + "slices" + "sort" + + "go.opentelemetry.io/collector/pdata/pcommon" + "go.opentelemetry.io/collector/pdata/pmetric" +) + +func CopyMetricDetails(from, to pmetric.Metric) { + to.SetName(from.Name()) + to.SetUnit(from.Unit()) + to.SetDescription(from.Description()) + //exhaustive:enforce + switch from.Type() { + case pmetric.MetricTypeGauge: + to.SetEmptyGauge() + case pmetric.MetricTypeSum: + to.SetEmptySum().SetAggregationTemporality(from.Sum().AggregationTemporality()) + to.Sum().SetIsMonotonic(from.Sum().IsMonotonic()) + case pmetric.MetricTypeHistogram: + to.SetEmptyHistogram().SetAggregationTemporality(from.Histogram().AggregationTemporality()) + case pmetric.MetricTypeExponentialHistogram: + to.SetEmptyExponentialHistogram().SetAggregationTemporality(from.ExponentialHistogram().AggregationTemporality()) + case pmetric.MetricTypeSummary: + to.SetEmptySummary() + } +} + +func FilterAttrs(metric pmetric.Metric, filterAttrKeys []string) { + // filterAttrKeys being nil means the filter is to be skipped. + if filterAttrKeys == nil { + return + } + // filterAttrKeys being empty means it is explicitly expected to filter + // against an empty label set, which is functionally the same as removing + // all attributes. + if len(filterAttrKeys) == 0 { + RangeDataPointAttributes(metric, func(attrs pcommon.Map) bool { + attrs.Clear() + return true + }) + } + // filterAttrKeys having provided attributes means the filter continues + // as normal. + RangeDataPointAttributes(metric, func(attrs pcommon.Map) bool { + attrs.RemoveIf(func(k string, _ pcommon.Value) bool { + return !slices.Contains(filterAttrKeys, k) + }) + return true + }) +} + +func GroupDataPoints(metric pmetric.Metric, ag *AggGroups) { + switch metric.Type() { + case pmetric.MetricTypeGauge: + if ag.gauge == nil { + ag.gauge = map[string]pmetric.NumberDataPointSlice{} + } + groupNumberDataPoints(metric.Gauge().DataPoints(), false, ag.gauge) + case pmetric.MetricTypeSum: + if ag.sum == nil { + ag.sum = map[string]pmetric.NumberDataPointSlice{} + } + groupByStartTime := metric.Sum().AggregationTemporality() == pmetric.AggregationTemporalityDelta + groupNumberDataPoints(metric.Sum().DataPoints(), groupByStartTime, ag.sum) + case pmetric.MetricTypeHistogram: + if ag.histogram == nil { + ag.histogram = map[string]pmetric.HistogramDataPointSlice{} + } + groupByStartTime := metric.Histogram().AggregationTemporality() == pmetric.AggregationTemporalityDelta + groupHistogramDataPoints(metric.Histogram().DataPoints(), groupByStartTime, ag.histogram) + case pmetric.MetricTypeExponentialHistogram: + if ag.expHistogram == nil { + ag.expHistogram = map[string]pmetric.ExponentialHistogramDataPointSlice{} + } + groupByStartTime := metric.ExponentialHistogram().AggregationTemporality() == pmetric.AggregationTemporalityDelta + groupExponentialHistogramDataPoints(metric.ExponentialHistogram().DataPoints(), groupByStartTime, ag.expHistogram) + } +} + +func MergeDataPoints(to pmetric.Metric, aggType AggregationType, ag AggGroups) { + switch to.Type() { + case pmetric.MetricTypeGauge: + mergeNumberDataPoints(ag.gauge, aggType, to.Gauge().DataPoints()) + case pmetric.MetricTypeSum: + mergeNumberDataPoints(ag.sum, aggType, to.Sum().DataPoints()) + case pmetric.MetricTypeHistogram: + mergeHistogramDataPoints(ag.histogram, to.Histogram().DataPoints()) + case pmetric.MetricTypeExponentialHistogram: + mergeExponentialHistogramDataPoints(ag.expHistogram, to.ExponentialHistogram().DataPoints()) + } +} + +// RangeDataPointAttributes calls f sequentially on attributes of every metric data point. +// The iteration terminates if f returns false. +func RangeDataPointAttributes(metric pmetric.Metric, f func(pcommon.Map) bool) { + //exhaustive:enforce + switch metric.Type() { + case pmetric.MetricTypeGauge: + for i := 0; i < metric.Gauge().DataPoints().Len(); i++ { + dp := metric.Gauge().DataPoints().At(i) + if !f(dp.Attributes()) { + return + } + } + case pmetric.MetricTypeSum: + for i := 0; i < metric.Sum().DataPoints().Len(); i++ { + dp := metric.Sum().DataPoints().At(i) + if !f(dp.Attributes()) { + return + } + } + case pmetric.MetricTypeHistogram: + for i := 0; i < metric.Histogram().DataPoints().Len(); i++ { + dp := metric.Histogram().DataPoints().At(i) + if !f(dp.Attributes()) { + return + } + } + case pmetric.MetricTypeExponentialHistogram: + for i := 0; i < metric.ExponentialHistogram().DataPoints().Len(); i++ { + dp := metric.ExponentialHistogram().DataPoints().At(i) + if !f(dp.Attributes()) { + return + } + } + case pmetric.MetricTypeSummary: + for i := 0; i < metric.Summary().DataPoints().Len(); i++ { + dp := metric.Summary().DataPoints().At(i) + if !f(dp.Attributes()) { + return + } + } + } +} + +func mergeNumberDataPoints(dpsMap map[string]pmetric.NumberDataPointSlice, agg AggregationType, to pmetric.NumberDataPointSlice) { + for _, dps := range dpsMap { + dp := to.AppendEmpty() + dps.At(0).MoveTo(dp) + switch dp.ValueType() { + case pmetric.NumberDataPointValueTypeDouble: + medianNumbers := []float64{dp.DoubleValue()} + for i := 1; i < dps.Len(); i++ { + switch agg { + case Sum, Mean: + dp.SetDoubleValue(dp.DoubleValue() + doubleVal(dps.At(i))) + case Max: + dp.SetDoubleValue(math.Max(dp.DoubleValue(), doubleVal(dps.At(i)))) + case Min: + dp.SetDoubleValue(math.Min(dp.DoubleValue(), doubleVal(dps.At(i)))) + case Median: + medianNumbers = append(medianNumbers, doubleVal(dps.At(i))) + case Count: + dp.SetDoubleValue(float64(dps.Len())) + } + if dps.At(i).StartTimestamp() < dp.StartTimestamp() { + dp.SetStartTimestamp(dps.At(i).StartTimestamp()) + } + } + if agg == Mean { + dp.SetDoubleValue(dp.DoubleValue() / float64(dps.Len())) + } + if agg == Median { + if len(medianNumbers) == 1 { + dp.SetDoubleValue(medianNumbers[0]) + } else { + sort.Float64s(medianNumbers) + mNumber := len(medianNumbers) / 2 + if math.Mod(float64(len(medianNumbers)), 2) != 0 { + dp.SetDoubleValue(medianNumbers[mNumber]) + } else { + dp.SetDoubleValue((medianNumbers[mNumber-1] + medianNumbers[mNumber]) / 2) + } + } + } + case pmetric.NumberDataPointValueTypeInt: + medianNumbers := []int64{dp.IntValue()} + for i := 1; i < dps.Len(); i++ { + switch agg { + case Sum, Mean: + dp.SetIntValue(dp.IntValue() + dps.At(i).IntValue()) + case Max: + if dp.IntValue() < intVal(dps.At(i)) { + dp.SetIntValue(intVal(dps.At(i))) + } + case Min: + if dp.IntValue() > intVal(dps.At(i)) { + dp.SetIntValue(intVal(dps.At(i))) + } + case Median: + medianNumbers = append(medianNumbers, intVal(dps.At(i))) + case Count: + dp.SetIntValue(int64(dps.Len())) + } + if dps.At(i).StartTimestamp() < dp.StartTimestamp() { + dp.SetStartTimestamp(dps.At(i).StartTimestamp()) + } + } + if agg == Median { + if len(medianNumbers) == 1 { + dp.SetIntValue(medianNumbers[0]) + } else { + slices.Sort(medianNumbers) + mNumber := len(medianNumbers) / 2 + if math.Mod(float64(len(medianNumbers)), 2) != 0 { + dp.SetIntValue(medianNumbers[mNumber]) + } else { + dp.SetIntValue((medianNumbers[mNumber-1] + medianNumbers[mNumber]) / 2) + } + } + } + if agg == Mean { + dp.SetIntValue(dp.IntValue() / int64(dps.Len())) + } + } + } +} + +func doubleVal(dp pmetric.NumberDataPoint) float64 { + switch dp.ValueType() { + case pmetric.NumberDataPointValueTypeDouble: + return dp.DoubleValue() + case pmetric.NumberDataPointValueTypeInt: + return float64(dp.IntValue()) + } + return 0 +} + +func intVal(dp pmetric.NumberDataPoint) int64 { + switch dp.ValueType() { + case pmetric.NumberDataPointValueTypeDouble: + return int64(dp.DoubleValue()) + case pmetric.NumberDataPointValueTypeInt: + return dp.IntValue() + } + return 0 +} + +func mergeHistogramDataPoints(dpsMap map[string]pmetric.HistogramDataPointSlice, to pmetric.HistogramDataPointSlice) { + for _, dps := range dpsMap { + dp := to.AppendEmpty() + dps.At(0).MoveTo(dp) + counts := dp.BucketCounts() + for i := 1; i < dps.Len(); i++ { + if dps.At(i).Count() == 0 { + continue + } + dp.SetCount(dp.Count() + dps.At(i).Count()) + dp.SetSum(dp.Sum() + dps.At(i).Sum()) + if dp.HasMin() && dp.Min() > dps.At(i).Min() { + dp.SetMin(dps.At(i).Min()) + } + if dp.HasMax() && dp.Max() < dps.At(i).Max() { + dp.SetMax(dps.At(i).Max()) + } + for b := 0; b < dps.At(i).BucketCounts().Len(); b++ { + counts.SetAt(b, counts.At(b)+dps.At(i).BucketCounts().At(b)) + } + dps.At(i).Exemplars().MoveAndAppendTo(dp.Exemplars()) + if dps.At(i).StartTimestamp() < dp.StartTimestamp() { + dp.SetStartTimestamp(dps.At(i).StartTimestamp()) + } + } + } +} + +func mergeExponentialHistogramDataPoints(dpsMap map[string]pmetric.ExponentialHistogramDataPointSlice, + to pmetric.ExponentialHistogramDataPointSlice, +) { + for _, dps := range dpsMap { + dp := to.AppendEmpty() + dps.At(0).MoveTo(dp) + negatives := dp.Negative().BucketCounts() + positives := dp.Positive().BucketCounts() + for i := 1; i < dps.Len(); i++ { + if dps.At(i).Count() == 0 { + continue + } + dp.SetCount(dp.Count() + dps.At(i).Count()) + dp.SetSum(dp.Sum() + dps.At(i).Sum()) + dp.SetZeroCount(dp.ZeroCount() + dps.At(i).ZeroCount()) + if dp.HasMin() && dp.Min() > dps.At(i).Min() { + dp.SetMin(dps.At(i).Min()) + } + if dp.HasMax() && dp.Max() < dps.At(i).Max() { + dp.SetMax(dps.At(i).Max()) + } + + // Check if offsets are different, indicating we need to adjust dp offsets and bucket counts after merging + negOffsetDiff := dp.Negative().Offset() != dps.At(i).Negative().Offset() + posOffsetDiff := dp.Positive().Offset() != dps.At(i).Positive().Offset() + + mergeExponentialHistogramBuckets(negatives, dps.At(i).Negative().BucketCounts(), dp.Negative().Offset(), dps.At(i).Negative().Offset()) + mergeExponentialHistogramBuckets(positives, dps.At(i).Positive().BucketCounts(), dp.Positive().Offset(), dps.At(i).Positive().Offset()) + + // Only adjust offsets and remove leading zero buckets if we had different offsets and the buckets are not empty + if negOffsetDiff && dps.At(i).Negative().BucketCounts().Len() != 0 { + dp.Negative().SetOffset(min(dp.Negative().Offset(), dps.At(i).Negative().Offset())) + trimBuckets(negatives) + } + if posOffsetDiff && dps.At(i).Positive().BucketCounts().Len() != 0 { + dp.Positive().SetOffset(min(dp.Positive().Offset(), dps.At(i).Positive().Offset())) + trimBuckets(positives) + } + + dps.At(i).Exemplars().MoveAndAppendTo(dp.Exemplars()) + if dps.At(i).StartTimestamp() < dp.StartTimestamp() { + dp.SetStartTimestamp(dps.At(i).StartTimestamp()) + } + } + } +} + +func mergeExponentialHistogramBuckets(tgt, src pcommon.UInt64Slice, tgtOff, srcOff int32) { + // Both data points have the same offset - simple element-wise addition + if tgtOff == srcOff { + for b := 0; b < src.Len(); b++ { + if b < tgt.Len() { + tgt.SetAt(b, tgt.At(b)+src.At(b)) + } else { + tgt.Append(src.At(b)) + } + } + return + } + + // Source offset is less than target offset - source data point covers lower values + if srcOff < tgtOff { + for b := src.Len() - 1; b >= 0; b-- { + count := src.At(b) + if count > 0 { + tgt.Append(0) + for i := tgt.Len() - 1; i > 0; i-- { + tgt.SetAt(i, tgt.At(i-1)) + } + tgt.SetAt(0, count) + } + } + return + } + + // Source offset is greater than target offset - source data point covers higher values + for b := 0; b < src.Len(); b++ { + count := src.At(b) + if count == 0 { + continue + } + + idx := b + int(srcOff-tgtOff) + if idx >= 0 { + if idx < tgt.Len() { + tgt.SetAt(idx, tgt.At(idx)+count) + } else { + for tgt.Len() <= idx { + tgt.Append(0) + } + tgt.SetAt(idx, tgt.At(idx)+count) + } + } + } +} + +func trimBuckets(buckets pcommon.UInt64Slice) { + zeroCount := 0 + for i := 0; i < buckets.Len() && buckets.At(i) == 0; i++ { + zeroCount++ + } + + if zeroCount == 0 { + return + } + + newBuckets := make([]uint64, buckets.Len()-zeroCount) + for i := zeroCount; i < buckets.Len(); i++ { + newBuckets[i-zeroCount] = buckets.At(i) + } + buckets.FromRaw(newBuckets) +} + +func groupNumberDataPoints(dps pmetric.NumberDataPointSlice, useStartTime bool, + dpsByAttrsAndTs map[string]pmetric.NumberDataPointSlice, +) { + var keyHashParts []any + for i := 0; i < dps.Len(); i++ { + if useStartTime { + keyHashParts = []any{dps.At(i).StartTimestamp().String()} + } + key := dataPointHashKey(dps.At(i).Attributes(), dps.At(i).Timestamp(), keyHashParts...) + if _, ok := dpsByAttrsAndTs[key]; !ok { + dpsByAttrsAndTs[key] = pmetric.NewNumberDataPointSlice() + } + dps.At(i).MoveTo(dpsByAttrsAndTs[key].AppendEmpty()) + } +} + +func groupHistogramDataPoints(dps pmetric.HistogramDataPointSlice, useStartTime bool, + dpsByAttrsAndTs map[string]pmetric.HistogramDataPointSlice, +) { + for i := 0; i < dps.Len(); i++ { + dp := dps.At(i) + keyHashParts := make([]any, 0, dp.ExplicitBounds().Len()+4) + for b := 0; b < dp.ExplicitBounds().Len(); b++ { + keyHashParts = append(keyHashParts, dp.ExplicitBounds().At(b)) + } + if useStartTime { + keyHashParts = append(keyHashParts, dp.StartTimestamp().String()) + } + + keyHashParts = append(keyHashParts, dp.HasMin(), dp.HasMax(), uint32(dp.Flags())) + key := dataPointHashKey(dps.At(i).Attributes(), dp.Timestamp(), keyHashParts...) + if _, ok := dpsByAttrsAndTs[key]; !ok { + dpsByAttrsAndTs[key] = pmetric.NewHistogramDataPointSlice() + } + dp.MoveTo(dpsByAttrsAndTs[key].AppendEmpty()) + } +} + +func groupExponentialHistogramDataPoints(dps pmetric.ExponentialHistogramDataPointSlice, useStartTime bool, + dpsByAttrsAndTs map[string]pmetric.ExponentialHistogramDataPointSlice, +) { + for i := 0; i < dps.Len(); i++ { + dp := dps.At(i) + keyHashParts := make([]any, 0, 4) + keyHashParts = append(keyHashParts, dp.Scale(), dp.HasMin(), dp.HasMax(), uint32(dp.Flags())) + if useStartTime { + keyHashParts = append(keyHashParts, dp.StartTimestamp().String()) + } + key := dataPointHashKey(dps.At(i).Attributes(), dp.Timestamp(), keyHashParts...) + if _, ok := dpsByAttrsAndTs[key]; !ok { + dpsByAttrsAndTs[key] = pmetric.NewExponentialHistogramDataPointSlice() + } + dp.MoveTo(dpsByAttrsAndTs[key].AppendEmpty()) + } +} + +func dataPointHashKey(atts pcommon.Map, ts pcommon.Timestamp, other ...any) string { + hashParts := []any{atts.AsRaw(), ts.String()} + jsonStr, _ := json.Marshal(append(hashParts, other...)) + return string(jsonStr) +} diff --git a/otel-patches/coreinternal/aggregateutil/aggregate_test.go b/otel-patches/coreinternal/aggregateutil/aggregate_test.go new file mode 100644 index 000000000000..c2a6aa902582 --- /dev/null +++ b/otel-patches/coreinternal/aggregateutil/aggregate_test.go @@ -0,0 +1,658 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package aggregateutil // import "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/aggregateutil" + +import ( + "slices" + "testing" + "time" + + "github.com/stretchr/testify/require" + "go.opentelemetry.io/collector/pdata/pcommon" + "go.opentelemetry.io/collector/pdata/pmetric" +) + +func Test_CopyMetricDetails(t *testing.T) { + gaugeFunc := func() pmetric.Metric { + m := pmetric.NewMetric() + m.SetDescription("desc") + m.SetName("name") + m.SetUnit("unit") + m.SetEmptyGauge() + return m + } + + sumFunc := func() pmetric.Metric { + m := pmetric.NewMetric() + m.SetDescription("desc") + m.SetName("name") + m.SetUnit("unit") + s := m.SetEmptySum() + s.SetAggregationTemporality(pmetric.AggregationTemporalityCumulative) + s.SetIsMonotonic(true) + return m + } + + summaryFunc := func() pmetric.Metric { + m := pmetric.NewMetric() + m.SetDescription("desc") + m.SetName("name") + m.SetUnit("unit") + m.SetEmptySummary() + return m + } + + histogramFunc := func() pmetric.Metric { + m := pmetric.NewMetric() + m.SetDescription("desc") + m.SetName("name") + m.SetUnit("unit") + m.SetEmptyHistogram().SetAggregationTemporality(pmetric.AggregationTemporalityCumulative) + return m + } + + expHistogramFunc := func() pmetric.Metric { + m := pmetric.NewMetric() + m.SetDescription("desc") + m.SetName("name") + m.SetUnit("unit") + m.SetEmptyExponentialHistogram().SetAggregationTemporality(pmetric.AggregationTemporalityDelta) + return m + } + tests := []struct { + name string + from func() pmetric.Metric + to func() pmetric.Metric + }{ + { + name: "gauge", + from: gaugeFunc, + to: gaugeFunc, + }, + { + name: "summary", + from: summaryFunc, + to: summaryFunc, + }, + { + name: "sum", + from: sumFunc, + to: sumFunc, + }, + { + name: "histogram", + from: histogramFunc, + to: histogramFunc, + }, + { + name: " exp histogram", + from: expHistogramFunc, + to: expHistogramFunc, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + result := pmetric.NewMetric() + from := tt.from() + to := tt.to() + CopyMetricDetails(from, result) + require.Equal(t, to, result) + }) + } +} + +func Test_FilterAttributes(t *testing.T) { + tests := []struct { + name string + attr []string + want func() pmetric.Metric + }{ + { + name: "nil", + attr: nil, + want: func() pmetric.Metric { + m := pmetric.NewMetric() + s := m.SetEmptySum() + d := s.DataPoints().AppendEmpty() + d.Attributes().PutStr("attr1", "val1") + d.Attributes().PutStr("attr2", "val2") + return m + }, + }, + { + name: "empty", + attr: []string{}, + want: func() pmetric.Metric { + m := pmetric.NewMetric() + s := m.SetEmptySum() + s.DataPoints().AppendEmpty() + return m + }, + }, + { + name: "valid", + attr: []string{"attr1"}, + want: func() pmetric.Metric { + m := pmetric.NewMetric() + s := m.SetEmptySum() + d := s.DataPoints().AppendEmpty() + d.Attributes().PutStr("attr1", "val1") + return m + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + m := pmetric.NewMetric() + s := m.SetEmptySum() + d := s.DataPoints().AppendEmpty() + d.Attributes().PutStr("attr1", "val1") + d.Attributes().PutStr("attr2", "val2") + + FilterAttrs(m, tt.attr) + require.Equal(t, tt.want(), m) + }) + } +} + +func Test_RangeDataPointAttributes(t *testing.T) { + fun := func(attrs pcommon.Map) bool { + attrs.RemoveIf(func(k string, _ pcommon.Value) bool { + return !slices.Contains([]string{"attr1"}, k) + }) + return true + } + + tests := []struct { + name string + in func() pmetric.Metric + want func() pmetric.Metric + }{ + { + name: "sum", + in: func() pmetric.Metric { + m := pmetric.NewMetric() + s := m.SetEmptySum() + d := s.DataPoints().AppendEmpty() + d.Attributes().PutStr("attr1", "val1") + d.Attributes().PutStr("attr2", "val2") + return m + }, + want: func() pmetric.Metric { + m := pmetric.NewMetric() + s := m.SetEmptySum() + d := s.DataPoints().AppendEmpty() + d.Attributes().PutStr("attr1", "val1") + return m + }, + }, + { + name: "gauge", + in: func() pmetric.Metric { + m := pmetric.NewMetric() + s := m.SetEmptyGauge() + d := s.DataPoints().AppendEmpty() + d.Attributes().PutStr("attr1", "val1") + d.Attributes().PutStr("attr2", "val2") + return m + }, + want: func() pmetric.Metric { + m := pmetric.NewMetric() + s := m.SetEmptyGauge() + d := s.DataPoints().AppendEmpty() + d.Attributes().PutStr("attr1", "val1") + return m + }, + }, + { + name: "summary", + in: func() pmetric.Metric { + m := pmetric.NewMetric() + s := m.SetEmptySummary() + d := s.DataPoints().AppendEmpty() + d.Attributes().PutStr("attr1", "val1") + d.Attributes().PutStr("attr2", "val2") + return m + }, + want: func() pmetric.Metric { + m := pmetric.NewMetric() + s := m.SetEmptySummary() + d := s.DataPoints().AppendEmpty() + d.Attributes().PutStr("attr1", "val1") + return m + }, + }, + { + name: "histogram", + in: func() pmetric.Metric { + m := pmetric.NewMetric() + s := m.SetEmptyHistogram() + d := s.DataPoints().AppendEmpty() + d.Attributes().PutStr("attr1", "val1") + d.Attributes().PutStr("attr2", "val2") + return m + }, + want: func() pmetric.Metric { + m := pmetric.NewMetric() + s := m.SetEmptyHistogram() + d := s.DataPoints().AppendEmpty() + d.Attributes().PutStr("attr1", "val1") + return m + }, + }, + { + name: "exp histogram", + in: func() pmetric.Metric { + m := pmetric.NewMetric() + s := m.SetEmptyExponentialHistogram() + d := s.DataPoints().AppendEmpty() + d.Attributes().PutStr("attr1", "val1") + d.Attributes().PutStr("attr2", "val2") + return m + }, + want: func() pmetric.Metric { + m := pmetric.NewMetric() + s := m.SetEmptyExponentialHistogram() + d := s.DataPoints().AppendEmpty() + d.Attributes().PutStr("attr1", "val1") + return m + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + m := tt.in() + RangeDataPointAttributes(m, fun) + require.Equal(t, tt.want(), m) + }) + } +} + +func Test_GroupDataPoints(t *testing.T) { + mapAttr := pcommon.NewMap() + mapAttr.PutStr("attr1", "val1") + hash := dataPointHashKey(mapAttr, pcommon.NewTimestampFromTime(time.Time{})) + + hashHistogram := dataPointHashKey(mapAttr, pcommon.NewTimestampFromTime(time.Time{}), false, false, 0) + + hashExpHistogram := dataPointHashKey(mapAttr, pcommon.NewTimestampFromTime(time.Time{}), 0, false, false, 0) + + tests := []struct { + name string + in func() pmetric.Metric + aggGroup AggGroups + want AggGroups + }{ + { + name: "sum", + aggGroup: AggGroups{ + sum: map[string]pmetric.NumberDataPointSlice{ + hash: testDataNumber(), + }, + }, + in: func() pmetric.Metric { + m := pmetric.NewMetric() + s := m.SetEmptySum() + s.SetAggregationTemporality(pmetric.AggregationTemporalityCumulative) + d := s.DataPoints().AppendEmpty() + d.SetTimestamp(pcommon.NewTimestampFromTime(time.Time{})) + d.Attributes().PutStr("attr1", "val1") + d.SetIntValue(5) + return m + }, + want: AggGroups{ + sum: map[string]pmetric.NumberDataPointSlice{ + hash: testDataNumberDouble(), + }, + }, + }, + { + name: "gauge", + aggGroup: AggGroups{ + gauge: map[string]pmetric.NumberDataPointSlice{ + hash: testDataNumber(), + }, + }, + in: func() pmetric.Metric { + m := pmetric.NewMetric() + s := m.SetEmptyGauge() + d := s.DataPoints().AppendEmpty() + d.SetTimestamp(pcommon.NewTimestampFromTime(time.Time{})) + d.Attributes().PutStr("attr1", "val1") + d.SetIntValue(5) + return m + }, + want: AggGroups{ + gauge: map[string]pmetric.NumberDataPointSlice{ + hash: testDataNumberDouble(), + }, + }, + }, + { + name: "histogram", + aggGroup: AggGroups{ + histogram: map[string]pmetric.HistogramDataPointSlice{ + hashHistogram: testDataHistogram(), + }, + }, + in: func() pmetric.Metric { + m := pmetric.NewMetric() + s := m.SetEmptyHistogram() + s.SetAggregationTemporality(pmetric.AggregationTemporalityCumulative) + d := s.DataPoints().AppendEmpty() + d.SetTimestamp(pcommon.NewTimestampFromTime(time.Time{})) + d.Attributes().PutStr("attr1", "val1") + d.SetCount(1) + return m + }, + want: AggGroups{ + histogram: map[string]pmetric.HistogramDataPointSlice{ + hashHistogram: testDataHistogramDouble(), + }, + }, + }, + { + name: "exp histogram", + aggGroup: AggGroups{ + expHistogram: map[string]pmetric.ExponentialHistogramDataPointSlice{ + hashExpHistogram: testDataExpHistogram(), + }, + }, + in: func() pmetric.Metric { + m := pmetric.NewMetric() + s := m.SetEmptyExponentialHistogram() + s.SetAggregationTemporality(pmetric.AggregationTemporalityCumulative) + d := s.DataPoints().AppendEmpty() + d.SetTimestamp(pcommon.NewTimestampFromTime(time.Time{})) + d.Attributes().PutStr("attr1", "val1") + d.SetCount(9) + d.SetZeroCount(2) + d.Positive().BucketCounts().Append(0, 1, 2, 3) + d.Negative().BucketCounts().Append(0, 1) + return m + }, + want: AggGroups{ + expHistogram: map[string]pmetric.ExponentialHistogramDataPointSlice{ + hashExpHistogram: testDataExpHistogramDouble(), + }, + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + a := tt.aggGroup + GroupDataPoints(tt.in(), &a) + require.Equal(t, tt.want, a) + }) + } +} + +func Test_MergeDataPoints(t *testing.T) { + mapAttr := pcommon.NewMap() + mapAttr.PutStr("attr1", "val1") + + hash := dataPointHashKey(mapAttr, pcommon.NewTimestampFromTime(time.Time{})) + + hashHistogram := dataPointHashKey(mapAttr, pcommon.NewTimestampFromTime(time.Time{}), false, false, 0) + + hashExpHistogram := dataPointHashKey(mapAttr, pcommon.NewTimestampFromTime(time.Time{}), 0, false, false, 0) + + tests := []struct { + name string + typ AggregationType + aggGroup AggGroups + want func() pmetric.Metric + in func() pmetric.Metric + }{ + { + name: "sum", + aggGroup: AggGroups{ + sum: map[string]pmetric.NumberDataPointSlice{ + hash: testDataNumberDouble(), + }, + }, + typ: Sum, + want: func() pmetric.Metric { + m := pmetric.NewMetric() + s := m.SetEmptySum() + s.SetAggregationTemporality(pmetric.AggregationTemporalityCumulative) + d := s.DataPoints().AppendEmpty() + d.Attributes().PutStr("attr1", "val1") + d.SetIntValue(6) + return m + }, + in: func() pmetric.Metric { + m := pmetric.NewMetric() + s := m.SetEmptySum() + s.SetAggregationTemporality(pmetric.AggregationTemporalityCumulative) + return m + }, + }, + { + name: "gauge", + aggGroup: AggGroups{ + gauge: map[string]pmetric.NumberDataPointSlice{ + hash: testDataNumberDouble(), + }, + }, + typ: Sum, + want: func() pmetric.Metric { + m := pmetric.NewMetric() + s := m.SetEmptyGauge() + d := s.DataPoints().AppendEmpty() + d.Attributes().PutStr("attr1", "val1") + d.SetIntValue(6) + return m + }, + in: func() pmetric.Metric { + m := pmetric.NewMetric() + m.SetEmptyGauge() + return m + }, + }, + { + name: "histogram", + aggGroup: AggGroups{ + histogram: map[string]pmetric.HistogramDataPointSlice{ + hashHistogram: testDataHistogramDouble(), + }, + }, + typ: Sum, + want: func() pmetric.Metric { + m := pmetric.NewMetric() + s := m.SetEmptyHistogram() + d := s.DataPoints().AppendEmpty() + d.Attributes().PutStr("attr1", "val1") + d.SetCount(3) + d.SetSum(0) + return m + }, + in: func() pmetric.Metric { + m := pmetric.NewMetric() + m.SetEmptyHistogram() + return m + }, + }, + { + name: "exp histogram", + aggGroup: AggGroups{ + expHistogram: map[string]pmetric.ExponentialHistogramDataPointSlice{ + hashExpHistogram: testDataExpHistogramDouble(), + }, + }, + typ: Sum, + want: func() pmetric.Metric { + m := pmetric.NewMetric() + s := m.SetEmptyExponentialHistogram() + d := s.DataPoints().AppendEmpty() + d.Attributes().PutStr("attr1", "val1") + d.SetCount(16) + d.SetSum(0) + d.SetZeroCount(3) + d.Positive().BucketCounts().Append(0, 2, 4, 3) + d.Negative().BucketCounts().Append(0, 2, 2) + return m + }, + in: func() pmetric.Metric { + m := pmetric.NewMetric() + m.SetEmptyExponentialHistogram() + return m + }, + }, + { + name: "exp histogram with different offsets", + aggGroup: AggGroups{ + expHistogram: map[string]pmetric.ExponentialHistogramDataPointSlice{ + hashExpHistogram: testDataExpHistogramWithDifferentOffsets(), + }, + }, + typ: Sum, + want: func() pmetric.Metric { + m := pmetric.NewMetric() + s := m.SetEmptyExponentialHistogram() + d := s.DataPoints().AppendEmpty() + d.Attributes().PutStr("attr1", "val1") + d.SetCount(12) + d.SetSum(0) + d.SetZeroCount(3) + // First datapoint: positive offset 0, buckets [1, 2] + // Second datapoint: positive offset 1, buckets [3, 4] (represents [0, 3, 4]) + // Third datapoint: positive offset 5, buckets [1] (represents [0, 0, 0, 0, 0, 1]) + // Result: [1+0+0, 2+3+0, 4+0+0, 0+0+0, 0+0+0, 0+0+1] = [1, 5, 4, 0, 0, 1] + d.Positive().BucketCounts().Append(1, 5, 4, 0, 0, 1) + d.Positive().SetOffset(0) + + // First data point: negative offset 3, buckets [1, 2] (represents [0, 0, 0, 1, 2]) + // Second data point: negative offset 1, buckets [5, 6] (represents [0, 5, 6]) + // Third data point: negative side empty + // Result: [0+0, 0+5, 0+6, 1+0, 2+0] = [0, 5, 6, 1, 2] (with offset 1: [5, 6, 1, 2]) + d.Negative().BucketCounts().Append(5, 6, 1, 2) + d.Negative().SetOffset(1) + + return m + }, + in: func() pmetric.Metric { + m := pmetric.NewMetric() + m.SetEmptyExponentialHistogram() + return m + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + m := tt.in() + MergeDataPoints(m, tt.typ, tt.aggGroup) + require.Equal(t, tt.want(), m) + }) + } +} + +func testDataNumber() pmetric.NumberDataPointSlice { + data := pmetric.NewNumberDataPointSlice() + d := data.AppendEmpty() + d.Attributes().PutStr("attr1", "val1") + d.SetIntValue(1) + return data +} + +func testDataNumberDouble() pmetric.NumberDataPointSlice { + dataWant := pmetric.NewNumberDataPointSlice() + dWant := dataWant.AppendEmpty() + dWant.Attributes().PutStr("attr1", "val1") + dWant.SetIntValue(1) + dWant2 := dataWant.AppendEmpty() + dWant2.SetTimestamp(pcommon.NewTimestampFromTime(time.Time{})) + dWant2.Attributes().PutStr("attr1", "val1") + dWant2.SetIntValue(5) + return dataWant +} + +func testDataHistogram() pmetric.HistogramDataPointSlice { + data := pmetric.NewHistogramDataPointSlice() + d := data.AppendEmpty() + d.Attributes().PutStr("attr1", "val1") + d.SetCount(2) + return data +} + +func testDataHistogramDouble() pmetric.HistogramDataPointSlice { + dataWant := pmetric.NewHistogramDataPointSlice() + dWant := dataWant.AppendEmpty() + dWant.Attributes().PutStr("attr1", "val1") + dWant.SetCount(2) + dWant2 := dataWant.AppendEmpty() + dWant2.SetTimestamp(pcommon.NewTimestampFromTime(time.Time{})) + dWant2.Attributes().PutStr("attr1", "val1") + dWant2.SetCount(1) + return dataWant +} + +func testDataExpHistogram() pmetric.ExponentialHistogramDataPointSlice { + data := pmetric.NewExponentialHistogramDataPointSlice() + d := data.AppendEmpty() + d.Attributes().PutStr("attr1", "val1") + d.SetCount(7) + d.SetZeroCount(1) + d.Positive().BucketCounts().Append(0, 1, 2) + d.Negative().BucketCounts().Append(0, 1, 2) + return data +} + +func testDataExpHistogramDouble() pmetric.ExponentialHistogramDataPointSlice { + dataWant := pmetric.NewExponentialHistogramDataPointSlice() + + dWant := dataWant.AppendEmpty() + dWant.Attributes().PutStr("attr1", "val1") + dWant.SetCount(7) + dWant.SetZeroCount(1) + dWant.Positive().BucketCounts().Append(0, 1, 2) + dWant.Negative().BucketCounts().Append(0, 1, 2) + + dWant2 := dataWant.AppendEmpty() + dWant2.SetTimestamp(pcommon.NewTimestampFromTime(time.Time{})) + dWant2.Attributes().PutStr("attr1", "val1") + dWant2.SetCount(9) + dWant2.SetZeroCount(2) + // Use a larger number of buckets than above to check that we expand the + // destination array as needed while merging. + dWant2.Positive().BucketCounts().Append(0, 1, 2, 3) + // Use a smaller number of buckets than above to check that we merge values + // into the correct, existing buckets. + dWant2.Negative().BucketCounts().Append(0, 1) + + return dataWant +} + +func testDataExpHistogramWithDifferentOffsets() pmetric.ExponentialHistogramDataPointSlice { + dataWant := pmetric.NewExponentialHistogramDataPointSlice() + + dWant := dataWant.AppendEmpty() + dWant.Attributes().PutStr("attr1", "val1") + dWant.SetCount(6) + dWant.SetZeroCount(2) + dWant.Positive().SetOffset(0) + dWant.Positive().BucketCounts().Append(1, 2) // [1, 2] + dWant.Negative().SetOffset(3) + dWant.Negative().BucketCounts().Append(1, 2) // [0, 0, 0, 1, 2] + + // Different offsets + dWant2 := dataWant.AppendEmpty() + dWant2.Attributes().PutStr("attr1", "val1") + dWant2.SetCount(5) + dWant2.SetZeroCount(1) + dWant2.Positive().SetOffset(1) + dWant2.Positive().BucketCounts().Append(3, 4) // [0, 3, 4] + dWant2.Negative().SetOffset(1) + dWant2.Negative().BucketCounts().Append(5, 6) // [0, 5, 6] + + // Set large offset for positive, no offset for negative + dWant3 := dataWant.AppendEmpty() + dWant3.Attributes().PutStr("attr1", "val1") + dWant3.SetCount(1) + dWant3.SetZeroCount(0) + dWant3.Positive().SetOffset(5) + dWant3.Positive().BucketCounts().Append(1) // [0, 0, 0, 0, 0, 1] + + return dataWant +} diff --git a/otel-patches/coreinternal/aggregateutil/config.schema.yaml b/otel-patches/coreinternal/aggregateutil/config.schema.yaml new file mode 100644 index 000000000000..4fb8e8838043 --- /dev/null +++ b/otel-patches/coreinternal/aggregateutil/config.schema.yaml @@ -0,0 +1,4 @@ +$defs: + aggregation_type: + description: AggregationType is the enum to capture the three types of aggregation for the aggregation operation. + type: string diff --git a/otel-patches/coreinternal/aggregateutil/type.go b/otel-patches/coreinternal/aggregateutil/type.go new file mode 100644 index 000000000000..a48f572cd4bc --- /dev/null +++ b/otel-patches/coreinternal/aggregateutil/type.go @@ -0,0 +1,64 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package aggregateutil // import "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/aggregateutil" + +import ( + "fmt" + "slices" + "strings" + + "go.opentelemetry.io/collector/pdata/pmetric" +) + +// AggregationType is the enum to capture the three types of aggregation for the aggregation operation. +type AggregationType string + +const ( + // Sum indicates taking the sum of the aggregated data. + Sum AggregationType = "sum" + + // Mean indicates taking the mean of the aggregated data. + Mean AggregationType = "mean" + + // Min indicates taking the minimum of the aggregated data. + Min AggregationType = "min" + + // Max indicates taking the max of the aggregated data. + Max AggregationType = "max" + + // Median indicates taking the median of the aggregated data. + Median AggregationType = "median" + + // Count indicates taking the count of the aggregated data. + Count AggregationType = "count" +) + +var AggregationTypes = []AggregationType{Sum, Mean, Min, Max, Median, Count} + +func (at AggregationType) IsValid() bool { + return slices.Contains(AggregationTypes, at) +} + +func GetSupportedAggregationFunctionsList() string { + slice := make([]string, 0, len(AggregationTypes)) + for _, a := range AggregationTypes { + slice = append(slice, string(a)) + } + return strings.Join(slice, ", ") +} + +type AggGroups struct { + gauge map[string]pmetric.NumberDataPointSlice + sum map[string]pmetric.NumberDataPointSlice + histogram map[string]pmetric.HistogramDataPointSlice + expHistogram map[string]pmetric.ExponentialHistogramDataPointSlice +} + +func ConvertToAggregationFunction(str string) (AggregationType, error) { + a := AggregationType(str) + if a.IsValid() { + return a, nil + } + return a, fmt.Errorf("unsupported function: '%s'", str) +} diff --git a/otel-patches/coreinternal/aggregateutil/type_test.go b/otel-patches/coreinternal/aggregateutil/type_test.go new file mode 100644 index 000000000000..f46f44f88c5e --- /dev/null +++ b/otel-patches/coreinternal/aggregateutil/type_test.go @@ -0,0 +1,73 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package aggregateutil + +import ( + "testing" + + "github.com/stretchr/testify/require" +) + +func Test_AggregationType_IsValid(t *testing.T) { + tests := []struct { + name string + in AggregationType + want bool + }{ + { + name: "valid", + in: Mean, + want: true, + }, + + { + name: "invalid", + in: AggregationType("invalid"), + want: false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + require.Equal(t, tt.want, tt.in.IsValid()) + }) + } +} + +func Test_AggregationType_Convert(t *testing.T) { + tests := []struct { + name string + in string + want AggregationType + wantErr string + }{ + { + name: "valid", + in: "mean", + want: Mean, + wantErr: "", + }, + + { + name: "invalid", + in: "invalid", + want: "invalid", + wantErr: "unsupported function: 'invalid'", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got, err := ConvertToAggregationFunction(tt.in) + require.Equal(t, tt.want, got) + if tt.wantErr != "" { + require.EqualError(t, err, tt.wantErr) + } else { + require.NoError(t, err) + } + }) + } +} + +func Test_GetSupportedAggregationFunctionsList(t *testing.T) { + require.Equal(t, "sum, mean, min, max, median, count", GetSupportedAggregationFunctionsList()) +} diff --git a/otel-patches/coreinternal/attraction/BUILD.bazel b/otel-patches/coreinternal/attraction/BUILD.bazel new file mode 100644 index 000000000000..8859fa9f166e --- /dev/null +++ b/otel-patches/coreinternal/attraction/BUILD.bazel @@ -0,0 +1,37 @@ +load("@@rules_go+//go:def.bzl", "go_library", "go_test") + +go_library( + name = "attraction", + srcs = [ + "attraction.go", + "hasher.go", + "type_converter.go", + ], + importpath = "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/attraction", # keep + visibility = ["//visibility:public"], + deps = [ + "@@gazelle++go_deps+com_github_open_telemetry_opentelemetry_collector_contrib_internal_coreinternal//clientutil", + "@io_opentelemetry_go_collector_client//:client", + "@io_opentelemetry_go_collector_pdata//pcommon", + "@org_uber_go_zap//:zap", + ], # keep +) + +go_test( + name = "attraction_test", + srcs = [ + "attraction_bench_test.go", + "attraction_test.go", + "hasher_test.go", + "package_test.go", + ], + embed = [":attraction"], + gotags = ["test"], + deps = [ + "@com_github_stretchr_testify//assert", + "@com_github_stretchr_testify//require", + "@io_opentelemetry_go_collector_client//:client", + "@io_opentelemetry_go_collector_pdata//pcommon", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/otel-patches/coreinternal/attraction/attraction.go b/otel-patches/coreinternal/attraction/attraction.go new file mode 100644 index 000000000000..40490c0fa0e8 --- /dev/null +++ b/otel-patches/coreinternal/attraction/attraction.go @@ -0,0 +1,469 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package attraction // import "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/attraction" + +import ( + "context" + "fmt" + "regexp" + "strings" + + "go.opentelemetry.io/collector/client" + "go.opentelemetry.io/collector/pdata/pcommon" + "go.uber.org/zap" + + "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/clientutil" +) + +// Settings specifies the processor settings. +type Settings struct { + // Actions specifies the list of attributes to act on. + // The set of actions are {INSERT, UPDATE, UPSERT, DELETE, HASH, EXTRACT, CONVERT}. + // This is a required field. + Actions []ActionKeyValue `mapstructure:"actions"` +} + +// ActionKeyValue specifies the attribute key to act upon. +type ActionKeyValue struct { + // Key specifies the attribute to act upon. + // This is a required field. + Key string `mapstructure:"key"` + + // Value specifies the value to populate for the key. + // The type of the value is inferred from the configuration. + Value any `mapstructure:"value"` + + // DefaultValue specifies the value to use if Value/FromAttribute/FromContext + // doesn't provide a value (e.g., environment variable not set, attribute doesn't exist). + // Only used with INSERT, UPDATE, and UPSERT actions. + DefaultValue any `mapstructure:"default_value"` + + // A regex pattern must be specified for the action EXTRACT. + // It uses the attribute specified by `key' to extract values from + // The target keys are inferred based on the names of the matcher groups + // provided and the names will be inferred based on the values of the + // matcher group. + // Note: All subexpressions must have a name. + // Note: The value type of the source key must be a string. If it isn't, + // no extraction will occur. + RegexPattern string `mapstructure:"pattern"` + + // FromAttribute specifies the attribute to use to populate + // the value. If the attribute doesn't exist, no action is performed. + FromAttribute string `mapstructure:"from_attribute"` + + // FromContext specifies the context value to use to populate + // the value. The values would be searched in client.Info.Metadata. + // If the key doesn't exist, no action is performed. + // If the key has multiple values the values will be joined with `;` separator. + FromContext string `mapstructure:"from_context"` + + // ConvertedType specifies the target type of an attribute to be converted + // If the key doesn't exist, no action is performed. + // If the value cannot be converted, the original value will be left as-is + ConvertedType string `mapstructure:"converted_type"` + + // Action specifies the type of action to perform. + // The set of values are {INSERT, UPDATE, UPSERT, DELETE, HASH}. + // Both lower case and upper case are supported. + // INSERT - Inserts the key/value to attributes when the key does not exist. + // No action is applied to attributes where the key already exists. + // Either Value, FromAttribute or FromContext must be set. + // UPDATE - Updates an existing key with a value. No action is applied + // to attributes where the key does not exist. + // Either Value, FromAttribute or FromContext must be set. + // UPSERT - Performs insert or update action depending on the attributes + // containing the key. The key/value is inserted to attributes + // that did not originally have the key. The key/value is updated + // for attributes where the key already existed. + // Either Value, FromAttribute or FromContext must be set. + // DELETE - Deletes the attribute. If the key doesn't exist, + // no action is performed. + // HASH - Calculates the SHA-1 hash of an existing value and overwrites the + // value with its SHA-1 hash result. If the feature gate + // `coreinternal.attraction.hash.sha256` is enabled, it uses SHA2-256 + // instead. + // EXTRACT - Extracts values using a regular expression rule from the input + // 'key' to target keys specified in the 'rule'. If a target key + // already exists, it will be overridden. + // CONVERT - converts the type of an existing attribute, if convertable + // This is a required field. + Action Action `mapstructure:"action"` +} + +func (a *ActionKeyValue) valueSourceCount() int { + count := 0 + if a.Value != nil { + count++ + } + + if a.FromAttribute != "" { + count++ + } + + if a.FromContext != "" { + count++ + } + return count +} + +// Action is the enum to capture the four types of actions to perform on an +// attribute. +type Action string + +const ( + // INSERT adds the key/value to attributes when the key does not exist. + // No action is applied to attributes where the key already exists. + INSERT Action = "insert" + + // UPDATE updates an existing key with a value. No action is applied + // to attributes where the key does not exist. + UPDATE Action = "update" + + // UPSERT performs the INSERT or UPDATE action. The key/value is + // inserted to attributes that did not originally have the key. The key/value is + // updated for attributes where the key already existed. + UPSERT Action = "upsert" + + // DELETE deletes the attribute. If the key doesn't exist, no action is performed. + // Supports pattern which is matched against attribute key. + DELETE Action = "delete" + + // HASH calculates the SHA-256 hash of an existing value and overwrites the + // value with it's SHA-256 hash result. + // Supports pattern which is matched against attribute key. + HASH Action = "hash" + + // EXTRACT extracts values using a regular expression rule from the input + // 'key' to target keys specified in the 'rule'. If a target key already + // exists, it will be overridden. + EXTRACT Action = "extract" + + // CONVERT converts the type of an existing attribute, if convertable + CONVERT Action = "convert" +) + +type attributeAction struct { + Key string + FromAttribute string + FromContext string + ConvertedType string + DefaultValue *pcommon.Value + // Compiled regex if provided + Regex *regexp.Regexp + // Attribute names extracted from the regexp's subexpressions. + AttrNames []string + // Number of non empty strings in above array + + // TODO https://go.opentelemetry.io/collector/issues/296 + // Do benchmark testing between having action be of type string vs integer. + // The reason is attributes processor will most likely be commonly used + // and could impact performance. + Action Action + AttributeValue *pcommon.Value +} + +// AttrProc is an attribute processor. +type AttrProc struct { + actions []attributeAction +} + +// NewAttrProc validates that the input configuration has all of the required fields for the processor +// and returns a AttrProc to be used to process attributes. +// An error is returned if there are any invalid inputs. +func NewAttrProc(settings *Settings) (*AttrProc, error) { + attributeActions := make([]attributeAction, 0, len(settings.Actions)) + for i := range settings.Actions { + a := &settings.Actions[i] + // Convert `action` to lowercase for comparison. + a.Action = Action(strings.ToLower(string(a.Action))) + + switch a.Action { + case DELETE, HASH: + // requires `key` and/or `pattern` + if a.Key == "" && a.RegexPattern == "" { + return nil, fmt.Errorf("error creating AttrProc due to missing required field (at least one of \"key\" and \"pattern\" have to be used) at the %d-th action", i) + } + default: + // `key` is a required field + if a.Key == "" { + return nil, fmt.Errorf("error creating AttrProc due to missing required field \"key\" at the %d-th action", i) + } + } + + action := attributeAction{ + Key: a.Key, + Action: a.Action, + } + + valueSourceCount := a.valueSourceCount() + + switch a.Action { + case INSERT, UPDATE, UPSERT: + if valueSourceCount == 0 && a.DefaultValue == nil { + return nil, fmt.Errorf("error with key %q (%d-th action): error creating AttrProc. Either field \"value\", \"from_attribute\", \"from_context\", or \"default_value\" must be specified", a.Key, i) + } + + if valueSourceCount > 1 { + return nil, fmt.Errorf("error with key %q (%d-th action): error creating AttrProc due to multiple value sources being set", a.Key, i) + } + if a.RegexPattern != "" { + return nil, fmt.Errorf("error with key %q (%d-th action): error creating AttrProc. Action \"%s\" does not use the \"pattern\" field. This must not be specified", a.Key, i, a.Action) + } + if a.ConvertedType != "" { + return nil, fmt.Errorf("error with key %q (%d-th action): error creating AttrProc. Action \"%s\" does not use the \"converted_type\" field. This must not be specified", a.Key, i, a.Action) + } + // Convert the raw value from the configuration to the internal trace representation of the value. + if a.Value != nil { + val := pcommon.NewValueEmpty() + err := val.FromRaw(a.Value) + if err != nil { + return nil, err + } + action.AttributeValue = &val + } else { + action.FromAttribute = a.FromAttribute + action.FromContext = a.FromContext + } + + // Handle default_value + if a.DefaultValue != nil { + val := pcommon.NewValueEmpty() + err := val.FromRaw(a.DefaultValue) + if err != nil { + return nil, fmt.Errorf("error with key %q (%d-th action): error creating AttrProc due to invalid default value: %w", a.Key, i, err) + } + action.DefaultValue = &val + } + case HASH, DELETE: + if a.Value != nil || a.FromAttribute != "" { + return nil, fmt.Errorf("error with key %q (%d-th action): error creating AttrProc. Action \"%s\" does not use \"value\" or \"from_attribute\" field. These must not be specified", a.Key, i, a.Action) + } + + if a.RegexPattern != "" { + re, err := regexp.Compile(a.RegexPattern) + if err != nil { + return nil, fmt.Errorf("error with key %q (%d-th action): error creating AttrProc. Field \"pattern\" has invalid pattern: \"%s\"", a.Key, i, a.RegexPattern) + } + action.Regex = re + } + if a.ConvertedType != "" { + return nil, fmt.Errorf("error with key %q (%d-th action): error creating AttrProc. Action \"%s\" does not use the \"converted_type\" field. This must not be specified", a.Key, i, a.Action) + } + case EXTRACT: + if valueSourceCount > 0 { + return nil, fmt.Errorf("error with key %q (%d-th action): error creating AttrProc. Action \"%s\" does not use a value source field. These must not be specified", a.Key, i, a.Action) + } + if a.RegexPattern == "" { + return nil, fmt.Errorf("error with key %q (%d-th action): error creating AttrProc due to missing required field \"pattern\" for action \"%s\"", a.Key, i, a.Action) + } + if a.ConvertedType != "" { + return nil, fmt.Errorf("error with key %q (%d-th action): error creating AttrProc. Action \"%s\" does not use the \"converted_type\" field. This must not be specified", a.Key, i, a.Action) + } + re, err := regexp.Compile(a.RegexPattern) + if err != nil { + return nil, fmt.Errorf("error with key %q (%d-th action): error creating AttrProc. Field \"pattern\" has invalid pattern: \"%s\"", a.Key, i, a.RegexPattern) + } + attrNames := re.SubexpNames() + if len(attrNames) <= 1 { + return nil, fmt.Errorf("error with key %q (%d-th action): error creating AttrProc. Field \"pattern\" contains no named matcher groups", a.Key, i) + } + + for subExpIndex := 1; subExpIndex < len(attrNames); subExpIndex++ { + if attrNames[subExpIndex] == "" { + return nil, fmt.Errorf("error with key %q (%d-th action): error creating AttrProc. Field \"pattern\" contains at least one unnamed matcher group", a.Key, i) + } + } + action.Regex = re + action.AttrNames = attrNames + case CONVERT: + if valueSourceCount > 0 || a.RegexPattern != "" { + return nil, fmt.Errorf("error with key %q (%d-th action): error creating AttrProc. Action \"%s\" does not use value sources or \"pattern\" field. These must not be specified", a.Key, i, a.Action) + } + switch a.ConvertedType { + case stringConversionTarget: + case intConversionTarget: + case doubleConversionTarget: + case "": + return nil, fmt.Errorf("error with key %q (%d-th action): error creating AttrProc due to missing required field \"converted_type\" for action \"%s\"", a.Key, i, a.Action) + default: + return nil, fmt.Errorf("error with key %q (%d-th action): error creating AttrProc due to invalid value \"%s\" in field \"converted_type\" for action \"%s\"", a.Key, i, a.ConvertedType, a.Action) + } + action.ConvertedType = a.ConvertedType + default: + return nil, fmt.Errorf("error with key %q (%d-th action): error creating AttrProc due to unsupported action %q", a.Key, i, a.Action) + } + + attributeActions = append(attributeActions, action) + } + return &AttrProc{actions: attributeActions}, nil +} + +// Process applies the AttrProc to an attribute map. +func (ap *AttrProc) Process(ctx context.Context, logger *zap.Logger, attrs pcommon.Map) { + for i := range ap.actions { + action := &ap.actions[i] + // TODO https://go.opentelemetry.io/collector/issues/296 + // Do benchmark testing between having action be of type string vs integer. + // The reason is attributes processor will most likely be commonly used + // and could impact performance. + switch action.Action { + case DELETE: + attrs.Remove(action.Key) + + if action.Regex != nil { + attrs.RemoveIf(func(k string, _ pcommon.Value) bool { + return action.Regex.MatchString(k) + }) + } + case INSERT: + av, found := getSourceAttributeValue(ctx, *action, attrs) + if !found { + continue + } + if _, found = attrs.Get(action.Key); found { + continue + } + av.CopyTo(attrs.PutEmpty(action.Key)) + case UPDATE: + av, found := getSourceAttributeValue(ctx, *action, attrs) + if !found { + continue + } + val, found := attrs.Get(action.Key) + if !found { + continue + } + av.CopyTo(val) + case UPSERT: + av, found := getSourceAttributeValue(ctx, *action, attrs) + if !found { + continue + } + val, found := attrs.Get(action.Key) + if found { + av.CopyTo(val) + } else { + av.CopyTo(attrs.PutEmpty(action.Key)) + } + case HASH: + if value, exists := attrs.Get(action.Key); exists { + sha2Hasher(value) + } + + if action.Regex != nil { + for key, val := range attrs.All() { + if action.Regex.MatchString(key) { + sha2Hasher(val) + } + } + } + case EXTRACT: + extractAttributes(*action, attrs) + case CONVERT: + convertAttribute(logger, *action, attrs) + } + } +} + +func getAttributeValueFromContext(ctx context.Context, key string) (pcommon.Value, bool) { + const ( + metadataPrefix = "metadata." + authPrefix = "auth." + clientAddressKey = "client.address" + ) + + ci := client.FromContext(ctx) + var vals []string + + switch { + case key == clientAddressKey: + vals = []string{clientutil.Address(ci)} + case strings.HasPrefix(key, metadataPrefix): + mdKey := strings.TrimPrefix(key, metadataPrefix) + vals = ci.Metadata.Get(mdKey) + case strings.HasPrefix(key, authPrefix): + if ci.Auth == nil { + return pcommon.Value{}, false + } + + attrName := strings.TrimPrefix(key, authPrefix) + attr := ci.Auth.GetAttribute(attrName) + + switch a := attr.(type) { + case string: + return pcommon.NewValueStr(a), true + case []string: + vals = a + default: + // TODO: Warn about unexpected attribute types. + return pcommon.Value{}, false + } + default: + // Fallback to metadata for backwards compatibility. + vals = ci.Metadata.Get(key) + } + + if len(vals) == 0 { + return pcommon.Value{}, false + } + + return pcommon.NewValueStr(strings.Join(vals, ";")), true +} + +func getSourceAttributeValue(ctx context.Context, action attributeAction, attrs pcommon.Map) (pcommon.Value, bool) { + // Set the key with a value from the configuration. + if action.AttributeValue != nil { + return *action.AttributeValue, true + } + + if action.FromContext != "" { + if val, ok := getAttributeValueFromContext(ctx, action.FromContext); ok { + return val, true + } + // If FromContext didn't find the value, fall through to try FromAttribute and DefaultValue + } + + if action.FromAttribute != "" { + if val, ok := attrs.Get(action.FromAttribute); ok { + return val, true + } + // If FromAttribute didn't find the value, fall through to DefaultValue + } + + // Use default value if no other source provided a value + if action.DefaultValue != nil { + return *action.DefaultValue, true + } + + return pcommon.Value{}, false +} + +func convertAttribute(logger *zap.Logger, action attributeAction, attrs pcommon.Map) { + if value, exists := attrs.Get(action.Key); exists { + convertValue(logger, action.Key, action.ConvertedType, value) + } +} + +func extractAttributes(action attributeAction, attrs pcommon.Map) { + value, found := attrs.Get(action.Key) + + // Extracting values only functions on strings. + if !found || value.Type() != pcommon.ValueTypeStr { + return + } + + // Note: The number of matches will always be equal to number of + // subexpressions. + matches := action.Regex.FindStringSubmatch(value.Str()) + if matches == nil { + return + } + + // Start from index 1, which is the first submatch (index 0 is the entire + // match). + for i := 1; i < len(matches); i++ { + attrs.PutStr(action.AttrNames[i], matches[i]) + } +} diff --git a/otel-patches/coreinternal/attraction/attraction_bench_test.go b/otel-patches/coreinternal/attraction/attraction_bench_test.go new file mode 100644 index 000000000000..4664c11d7a81 --- /dev/null +++ b/otel-patches/coreinternal/attraction/attraction_bench_test.go @@ -0,0 +1,95 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package attraction + +import ( + "fmt" + "testing" + + "go.opentelemetry.io/collector/pdata/pcommon" +) + +// newMap builds a deterministic attribute map for benchmarks: some keys match ^secret\. +// and the rest don't. +func newMap(b *testing.B, totalAttrs int, secretRatio float64) pcommon.Map { + b.Helper() + + secretCount := int(float64(totalAttrs) * secretRatio) + secretCount = max(secretCount, 0) + secretCount = min(secretCount, totalAttrs) + publicCount := totalAttrs - secretCount + + attrs := pcommon.NewMap() + attrs.EnsureCapacity(totalAttrs) + for i := range secretCount { + attrs.PutStr(fmt.Sprintf("secret.k%d", i), "value") + } + for i := range publicCount { + attrs.PutStr(fmt.Sprintf("public.k%d", i), "value") + } + return attrs +} + +func BenchmarkAttrProc_HashRegex(b *testing.B) { + ap, err := NewAttrProc(&Settings{ + Actions: []ActionKeyValue{ + { + RegexPattern: "^secret\\.", + Action: HASH, + }, + }, + }) + if err != nil { + b.Fatal(err) + } + + cases := []struct { + name string + // totalAttrs is the total number of attributes in the map. + totalAttrs int + // secretRatio is the fraction of attributes whose keys start + // with "secret." (i.e., match ^secret\.). + secretRatio float64 + }{ + { + name: "N20_R10", + totalAttrs: 20, + secretRatio: 0.10, // low hashing + }, + { + name: "N20_R50", + totalAttrs: 20, + secretRatio: 0.50, // hashing dominates + }, + { + name: "N2000_R10", + totalAttrs: 2000, + secretRatio: 0.10, + }, + { + name: "N2000_R50", + totalAttrs: 2000, + secretRatio: 0.50, + }, + } + + for _, tc := range cases { + b.Run(tc.name, func(b *testing.B) { + b.ReportAllocs() + + template := newMap(b, tc.totalAttrs, tc.secretRatio) + loopAttrs := pcommon.NewMap() + loopAttrs.EnsureCapacity(tc.totalAttrs) + + for b.Loop() { + b.StopTimer() + loopAttrs.Clear() + template.CopyTo(loopAttrs) + b.StartTimer() + + ap.Process(b.Context(), nil, loopAttrs) + } + }) + } +} diff --git a/otel-patches/coreinternal/attraction/attraction_test.go b/otel-patches/coreinternal/attraction/attraction_test.go new file mode 100644 index 000000000000..ac6b6b1f2d37 --- /dev/null +++ b/otel-patches/coreinternal/attraction/attraction_test.go @@ -0,0 +1,1382 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package attraction + +import ( + "context" + "crypto/sha256" + "encoding/binary" + "errors" + "fmt" + "math" + "net" + "regexp" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "go.opentelemetry.io/collector/client" + "go.opentelemetry.io/collector/pdata/pcommon" +) + +// Common structure for all the Tests +type testCase struct { + name string + inputAttributes map[string]any + expectedAttributes map[string]any +} + +// runIndividualTestCase is the common logic of passing trace data through a configured attributes processor. +func runIndividualTestCase(t *testing.T, tt testCase, ap *AttrProc) { + t.Run(tt.name, func(t *testing.T) { + inputMap := pcommon.NewMap() + assert.NoError(t, inputMap.FromRaw(tt.inputAttributes)) + ap.Process(t.Context(), nil, inputMap) + require.Equal(t, tt.expectedAttributes, inputMap.AsRaw()) + }) +} + +func TestAttributes_InsertValue(t *testing.T) { + testCases := []testCase{ + // Ensure `attribute1` is set for spans with no attributes. + { + name: "InsertEmptyAttributes", + inputAttributes: map[string]any{}, + expectedAttributes: map[string]any{ + "attribute1": int64(123), + }, + }, + // Ensure `attribute1` is set. + { + name: "InsertKeyNoExists", + inputAttributes: map[string]any{ + "anotherkey": "bob", + }, + expectedAttributes: map[string]any{ + "anotherkey": "bob", + "attribute1": int64(123), + }, + }, + // Ensures no insert is performed because the keys `attribute1` already exists. + { + name: "InsertKeyExists", + inputAttributes: map[string]any{ + "attribute1": "bob", + }, + expectedAttributes: map[string]any{ + "attribute1": "bob", + }, + }, + } + + cfg := &Settings{ + Actions: []ActionKeyValue{ + {Key: "attribute1", Action: INSERT, Value: 123}, + }, + } + + ap, err := NewAttrProc(cfg) + require.NoError(t, err) + require.NotNil(t, ap) + + for _, tt := range testCases { + runIndividualTestCase(t, tt, ap) + } +} + +func TestAttributes_InsertFromAttribute(t *testing.T) { + testCases := []testCase{ + // Ensure no attribute is inserted because because attributes do not exist. + { + name: "InsertEmptyAttributes", + inputAttributes: map[string]any{}, + expectedAttributes: map[string]any{}, + }, + // Ensure no attribute is inserted because because from_attribute `string_key` does not exist. + { + name: "InsertMissingFromAttribute", + inputAttributes: map[string]any{ + "bob": int64(1), + }, + expectedAttributes: map[string]any{ + "bob": int64(1), + }, + }, + // Ensure `string key` is set. + { + name: "InsertAttributeExists", + inputAttributes: map[string]any{ + "anotherkey": int64(8892342), + }, + expectedAttributes: map[string]any{ + "anotherkey": int64(8892342), + "string key": int64(8892342), + }, + }, + // Ensures no insert is performed because the keys `string key` already exist. + { + name: "InsertKeysExists", + inputAttributes: map[string]any{ + "anotherkey": int64(8892342), + "string key": "here", + }, + expectedAttributes: map[string]any{ + "anotherkey": int64(8892342), + "string key": "here", + }, + }, + } + cfg := &Settings{ + Actions: []ActionKeyValue{ + {Key: "string key", Action: INSERT, FromAttribute: "anotherkey"}, + }, + } + + ap, err := NewAttrProc(cfg) + require.NoError(t, err) + require.NotNil(t, ap) + + for _, tt := range testCases { + runIndividualTestCase(t, tt, ap) + } +} + +func TestAttributes_UpdateValue(t *testing.T) { + testCases := []testCase{ + // Ensure no changes to the span as there is no attributes map. + { + name: "UpdateNoAttributes", + inputAttributes: map[string]any{}, + expectedAttributes: map[string]any{}, + }, + // Ensure no changes to the span as the key does not exist. + { + name: "UpdateKeyNoExist", + inputAttributes: map[string]any{ + "boo": "foo", + }, + expectedAttributes: map[string]any{ + "boo": "foo", + }, + }, + // Ensure the attribute `db.secret` is updated. + { + name: "UpdateAttributes", + inputAttributes: map[string]any{ + "db.secret": "password1234", + }, + expectedAttributes: map[string]any{ + "db.secret": "redacted", + }, + }, + } + + cfg := &Settings{ + Actions: []ActionKeyValue{ + {Key: "db.secret", Action: UPDATE, Value: "redacted"}, + }, + } + + ap, err := NewAttrProc(cfg) + require.NoError(t, err) + require.NotNil(t, ap) + + for _, tt := range testCases { + runIndividualTestCase(t, tt, ap) + } +} + +func TestAttributes_UpdateFromAttribute(t *testing.T) { + testCases := []testCase{ + // Ensure no changes to the span as there is no attributes map. + { + name: "UpdateNoAttributes", + inputAttributes: map[string]any{}, + expectedAttributes: map[string]any{}, + }, + // Ensure the attribute `boo` isn't updated because attribute `foo` isn't present in the span. + { + name: "UpdateKeyNoExistFromAttribute", + inputAttributes: map[string]any{ + "boo": "bob", + }, + expectedAttributes: map[string]any{ + "boo": "bob", + }, + }, + // Ensure no updates as the target key `boo` doesn't exists. + { + name: "UpdateKeyNoExistMainAttributed", + inputAttributes: map[string]any{ + "foo": "over there", + }, + expectedAttributes: map[string]any{ + "foo": "over there", + }, + }, + // Ensure no updates as the target key `boo` doesn't exists. + { + name: "UpdateKeyFromExistingAttribute", + inputAttributes: map[string]any{ + "foo": "there is a party over here", + "boo": "not here", + }, + expectedAttributes: map[string]any{ + "foo": "there is a party over here", + "boo": "there is a party over here", + }, + }, + } + + cfg := &Settings{ + Actions: []ActionKeyValue{ + {Key: "boo", Action: UPDATE, FromAttribute: "foo"}, + }, + } + + ap, err := NewAttrProc(cfg) + require.NoError(t, err) + require.NotNil(t, ap) + + for _, tt := range testCases { + runIndividualTestCase(t, tt, ap) + } +} + +func TestAttributes_UpsertValue(t *testing.T) { + testCases := []testCase{ + // Ensure `region` is set for spans with no attributes. + { + name: "UpsertNoAttributes", + inputAttributes: map[string]any{}, + expectedAttributes: map[string]any{ + "region": "planet-earth", + }, + }, + // Ensure `region` is inserted for spans with some attributes(the key doesn't exist). + { + name: "UpsertAttributeNoExist", + inputAttributes: map[string]any{ + "mission": "to mars", + }, + expectedAttributes: map[string]any{ + "mission": "to mars", + "region": "planet-earth", + }, + }, + // Ensure `region` is updated for spans with the attribute key `region`. + { + name: "UpsertAttributeExists", + inputAttributes: map[string]any{ + "mission": "to mars", + "region": "solar system", + }, + expectedAttributes: map[string]any{ + "mission": "to mars", + "region": "planet-earth", + }, + }, + } + + cfg := &Settings{ + Actions: []ActionKeyValue{ + {Key: "region", Action: UPSERT, Value: "planet-earth"}, + }, + } + + ap, err := NewAttrProc(cfg) + require.NoError(t, err) + require.NotNil(t, ap) + + for _, tt := range testCases { + runIndividualTestCase(t, tt, ap) + } +} + +func TestAttributes_Extract(t *testing.T) { + testCases := []testCase{ + // Ensure `new_user_key` is not set for spans with no attributes. + { + name: "UpsertEmptyAttributes", + inputAttributes: map[string]any{}, + expectedAttributes: map[string]any{}, + }, + // Ensure `new_user_key` is not inserted for spans with missing attribute `user_key`. + { + name: "No extract with no target key", + inputAttributes: map[string]any{ + "boo": "ghosts are scary", + }, + expectedAttributes: map[string]any{ + "boo": "ghosts are scary", + }, + }, + // Ensure `new_user_key` is not inserted for spans with missing attribute `user_key`. + { + name: "No extract with non string target key", + inputAttributes: map[string]any{ + "boo": "ghosts are scary", + "user_key": int64(1234), + }, + expectedAttributes: map[string]any{ + "boo": "ghosts are scary", + "user_key": int64(1234), + }, + }, + // Ensure `new_user_key` is not updated for spans with attribute + // `user_key` because `user_key` does not match the regular expression. + { + name: "No extract with no pattern matching", + inputAttributes: map[string]any{ + "user_key": "does not match", + "boo": "ghosts are scary", + }, + expectedAttributes: map[string]any{ + "user_key": "does not match", + "boo": "ghosts are scary", + }, + }, + // Ensure `new_user_key` is not updated for spans with attribute + // `user_key` because `user_key` does not match all of the regular + // expression. + { + name: "No extract with no pattern matching", + inputAttributes: map[string]any{ + "user_key": "/api/v1/document/12345678/update", + "boo": "ghosts are scary", + }, + expectedAttributes: map[string]any{ + "user_key": "/api/v1/document/12345678/update", + "boo": "ghosts are scary", + }, + }, + // Ensure `new_user_key` and `version` is inserted for spans with attribute `user_key`. + { + name: "Extract insert new values.", + inputAttributes: map[string]any{ + "user_key": "/api/v1/document/12345678/update/v1", + "foo": "casper the friendly ghost", + }, + expectedAttributes: map[string]any{ + "user_key": "/api/v1/document/12345678/update/v1", + "new_user_key": "12345678", + "version": "v1", + "foo": "casper the friendly ghost", + }, + }, + // Ensure `new_user_key` and `version` is updated for spans with attribute `user_key`. + { + name: "Extract updates existing values ", + inputAttributes: map[string]any{ + "user_key": "/api/v1/document/12345678/update/v1", + "new_user_key": "2321", + "version": "na", + "foo": "casper the friendly ghost", + }, + expectedAttributes: map[string]any{ + "user_key": "/api/v1/document/12345678/update/v1", + "new_user_key": "12345678", + "version": "v1", + "foo": "casper the friendly ghost", + }, + }, + // Ensure `new_user_key` is updated and `version` is inserted for spans with attribute `user_key`. + { + name: "Extract upserts values", + inputAttributes: map[string]any{ + "user_key": "/api/v1/document/12345678/update/v1", + "new_user_key": "2321", + "foo": "casper the friendly ghost", + }, + expectedAttributes: map[string]any{ + "user_key": "/api/v1/document/12345678/update/v1", + "new_user_key": "12345678", + "version": "v1", + "foo": "casper the friendly ghost", + }, + }, + } + + cfg := &Settings{ + Actions: []ActionKeyValue{ + {Key: "user_key", RegexPattern: "^\\/api\\/v1\\/document\\/(?P.*)\\/update\\/(?P.*)$", Action: EXTRACT}, + }, + } + + ap, err := NewAttrProc(cfg) + require.NoError(t, err) + require.NotNil(t, ap) + + for _, tt := range testCases { + runIndividualTestCase(t, tt, ap) + } +} + +func TestAttributes_UpsertFromAttribute(t *testing.T) { + testCases := []testCase{ + // Ensure `new_user_key` is not set for spans with no attributes. + { + name: "UpsertEmptyAttributes", + inputAttributes: map[string]any{}, + expectedAttributes: map[string]any{}, + }, + // Ensure `new_user_key` is not inserted for spans with missing attribute `user_key`. + { + name: "UpsertFromAttributeNoExist", + inputAttributes: map[string]any{ + "boo": "ghosts are scary", + }, + expectedAttributes: map[string]any{ + "boo": "ghosts are scary", + }, + }, + // Ensure `new_user_key` is inserted for spans with attribute `user_key`. + { + name: "UpsertFromAttributeExistsInsert", + inputAttributes: map[string]any{ + "user_key": int64(2245), + "foo": "casper the friendly ghost", + }, + expectedAttributes: map[string]any{ + "user_key": int64(2245), + "new_user_key": int64(2245), + "foo": "casper the friendly ghost", + }, + }, + // Ensure `new_user_key` is updated for spans with attribute `user_key`. + { + name: "UpsertFromAttributeExistsUpdate", + inputAttributes: map[string]any{ + "user_key": int64(2245), + "new_user_key": int64(5422), + "foo": "casper the friendly ghost", + }, + expectedAttributes: map[string]any{ + "user_key": int64(2245), + "new_user_key": int64(2245), + "foo": "casper the friendly ghost", + }, + }, + } + + cfg := &Settings{ + Actions: []ActionKeyValue{ + {Key: "new_user_key", Action: UPSERT, FromAttribute: "user_key"}, + }, + } + + ap, err := NewAttrProc(cfg) + require.NoError(t, err) + require.NotNil(t, ap) + + for _, tt := range testCases { + runIndividualTestCase(t, tt, ap) + } +} + +func TestAttributes_Delete(t *testing.T) { + testCases := []testCase{ + // Ensure the span contains no changes. + { + name: "DeleteEmptyAttributes", + inputAttributes: map[string]any{}, + expectedAttributes: map[string]any{}, + }, + // Ensure the span contains no changes because the key doesn't exist. + { + name: "DeleteAttributeNoExist", + inputAttributes: map[string]any{ + "boo": "ghosts are scary", + }, + expectedAttributes: map[string]any{ + "boo": "ghosts are scary", + }, + }, + // Ensure `duplicate_key` is deleted for spans with the attribute set. + { + name: "DeleteAttributeExists", + inputAttributes: map[string]any{ + "duplicate_key": 3245.6, + "original_key": 3245.6, + }, + expectedAttributes: map[string]any{ + "original_key": 3245.6, + }, + }, + // Ensure `duplicate_key` is deleted by regexp for spans with the attribute set. + { + name: "DeleteAttributeExists", + inputAttributes: map[string]any{ + "duplicate_key_a": 3245.6, + "duplicate_key_b": 3245.6, + "duplicate_key_c": 3245.6, + "original_key": 3245.6, + "not_duplicate_key": 3246.6, + }, + expectedAttributes: map[string]any{ + "original_key": 3245.6, + "not_duplicate_key": 3246.6, + }, + }, + } + + cfg := &Settings{ + Actions: []ActionKeyValue{ + {Key: "duplicate_key", RegexPattern: "^duplicate_key_.", Action: DELETE}, + }, + } + + ap, err := NewAttrProc(cfg) + require.NoError(t, err) + require.NotNil(t, ap) + + for _, tt := range testCases { + runIndividualTestCase(t, tt, ap) + } +} + +func TestAttributes_Delete_Regexp(t *testing.T) { + testCases := []testCase{ + // Ensure the span contains no changes. + { + name: "DeleteEmptyAttributes", + inputAttributes: map[string]any{}, + expectedAttributes: map[string]any{}, + }, + // Ensure the span contains no changes because the key doesn't exist. + { + name: "DeleteAttributeNoExist", + inputAttributes: map[string]any{ + "boo": "ghosts are scary", + }, + expectedAttributes: map[string]any{ + "boo": "ghosts are scary", + }, + }, + // Ensure `duplicate_key` is deleted for spans with the attribute set. + { + name: "DeleteAttributeExists", + inputAttributes: map[string]any{ + "duplicate_key": 3245.6, + "original_key": 3245.6, + }, + expectedAttributes: map[string]any{ + "original_key": 3245.6, + }, + }, + } + + cfg := &Settings{ + Actions: []ActionKeyValue{ + {RegexPattern: "duplicate.*", Action: DELETE}, + }, + } + + ap, err := NewAttrProc(cfg) + require.NoError(t, err) + require.NotNil(t, ap) + + for _, tt := range testCases { + runIndividualTestCase(t, tt, ap) + } +} + +func TestAttributes_HashValue(t *testing.T) { + intVal := int64(24) + intBytes := make([]byte, int64ByteSize) + binary.LittleEndian.PutUint64(intBytes, uint64(intVal)) + + doubleVal := 2.4 + doubleBytes := make([]byte, float64ByteSize) + binary.LittleEndian.PutUint64(doubleBytes, math.Float64bits(doubleVal)) + + testCases := []testCase{ + // Ensure no changes to the span as there is no attributes map. + { + name: "HashNoAttributes", + inputAttributes: map[string]any{}, + expectedAttributes: map[string]any{}, + }, + // Ensure no changes to the span as the key does not exist. + { + name: "HashKeyNoExist", + inputAttributes: map[string]any{ + "boo": "foo", + }, + expectedAttributes: map[string]any{ + "boo": "foo", + }, + }, + // Ensure string data types are hashed correctly + { + name: "HashString", + inputAttributes: map[string]any{ + "updateme": "foo", + }, + expectedAttributes: map[string]any{ + "updateme": hash([]byte("foo")), + }, + }, + // Ensure int data types are hashed correctly + { + name: "HashInt", + inputAttributes: map[string]any{ + "updateme": intVal, + }, + expectedAttributes: map[string]any{ + "updateme": hash(intBytes), + }, + }, + // Ensure double data types are hashed correctly + { + name: "HashDouble", + inputAttributes: map[string]any{ + "updateme": doubleVal, + }, + expectedAttributes: map[string]any{ + "updateme": hash(doubleBytes), + }, + }, + // Ensure bool data types are hashed correctly + { + name: "HashBoolTrue", + inputAttributes: map[string]any{ + "updateme": true, + }, + expectedAttributes: map[string]any{ + "updateme": hash([]byte{1}), + }, + }, + // Ensure bool data types are hashed correctly + { + name: "HashBoolFalse", + inputAttributes: map[string]any{ + "updateme": false, + }, + expectedAttributes: map[string]any{ + "updateme": hash([]byte{0}), + }, + }, + // Ensure regex pattern is being used + { + name: "HashRegex", + inputAttributes: map[string]any{ + "updatemebyregexp": false, + "donotupdatemebyregexp": false, + }, + expectedAttributes: map[string]any{ + "updatemebyregexp": hash([]byte{0}), + "donotupdatemebyregexp": false, + }, + }, + } + + cfg := &Settings{ + Actions: []ActionKeyValue{ + {Key: "updateme", RegexPattern: "^updatemeby.*", Action: HASH}, + }, + } + + ap, err := NewAttrProc(cfg) + require.NoError(t, err) + require.NotNil(t, ap) + + for _, tt := range testCases { + runIndividualTestCase(t, tt, ap) + } +} + +func TestAttributes_FromAttributeNoChange(t *testing.T) { + tc := testCase{ + name: "FromAttributeNoChange", + inputAttributes: map[string]any{ + "boo": "ghosts are scary", + }, + expectedAttributes: map[string]any{ + "boo": "ghosts are scary", + }, + } + + cfg := &Settings{ + Actions: []ActionKeyValue{ + {Key: "boo", Action: INSERT, FromAttribute: "boo"}, + {Key: "boo", Action: UPDATE, FromAttribute: "boo"}, + {Key: "boo", Action: UPSERT, FromAttribute: "boo"}, + }, + } + + ap, err := NewAttrProc(cfg) + require.NoError(t, err) + require.NotNil(t, ap) + + runIndividualTestCase(t, tc, ap) +} + +func TestAttributes_Ordering(t *testing.T) { + testCases := []testCase{ + // For this example, the operations performed are + // 1. insert `operation`: `default` + // 2. insert `svc.operation`: `default` + // 3. delete `operation`. + { + name: "OrderingApplyAllSteps", + inputAttributes: map[string]any{ + "foo": "casper the friendly ghost", + }, + expectedAttributes: map[string]any{ + "foo": "casper the friendly ghost", + "svc.operation": "default", + }, + }, + // For this example, the operations performed are + // 1. do nothing for the first action of insert `operation`: `default` + // 2. insert `svc.operation`: `arithmetic` + // 3. delete `operation`. + { + name: "OrderingOperationExists", + inputAttributes: map[string]any{ + "foo": "casper the friendly ghost", + "operation": "arithmetic", + }, + expectedAttributes: map[string]any{ + "foo": "casper the friendly ghost", + "svc.operation": "arithmetic", + }, + }, + + // For this example, the operations performed are + // 1. insert `operation`: `default` + // 2. update `svc.operation` to `default` + // 3. delete `operation`. + { + name: "OrderingSvcOperationExists", + inputAttributes: map[string]any{ + "foo": "casper the friendly ghost", + "svc.operation": "some value", + }, + expectedAttributes: map[string]any{ + "foo": "casper the friendly ghost", + "svc.operation": "default", + }, + }, + + // For this example, the operations performed are + // 1. do nothing for the first action of insert `operation`: `default` + // 2. update `svc.operation` to `arithmetic` + // 3. delete `operation`. + { + name: "OrderingBothAttributesExist", + inputAttributes: map[string]any{ + "foo": "casper the friendly ghost", + "operation": "arithmetic", + "svc.operation": "add", + }, + expectedAttributes: map[string]any{ + "foo": "casper the friendly ghost", + "svc.operation": "arithmetic", + }, + }, + } + + cfg := &Settings{ + Actions: []ActionKeyValue{ + {Key: "operation", Action: INSERT, Value: "default"}, + {Key: "svc.operation", Action: UPSERT, FromAttribute: "operation"}, + {Key: "operation", Action: DELETE}, + }, + } + + ap, err := NewAttrProc(cfg) + require.NoError(t, err) + require.NotNil(t, ap) + + for _, tt := range testCases { + runIndividualTestCase(t, tt, ap) + } +} + +func TestInvalidConfig(t *testing.T) { + testcase := []struct { + name string + actionLists []ActionKeyValue + errorString string + }{ + { + name: "missing key", + actionLists: []ActionKeyValue{ + {Key: "one", Action: DELETE}, + {Key: "", Value: 123, Action: UPSERT}, + }, + errorString: "error creating AttrProc due to missing required field \"key\" at the 1-th action", + }, + { + name: "invalid action", + actionLists: []ActionKeyValue{ + {Key: "invalid", Action: "invalid"}, + }, + errorString: "error with key \"invalid\" (0-th action): error creating AttrProc due to unsupported action \"invalid\"", + }, + { + name: "unsupported value", + actionLists: []ActionKeyValue{ + {Key: "UnsupportedValue", Value: []int{}, Action: UPSERT}, + }, + errorString: "", + }, + { + name: "missing value or from attribute", + actionLists: []ActionKeyValue{ + {Key: "MissingValueFromAttributes", Action: INSERT}, + }, + errorString: "error with key \"MissingValueFromAttributes\" (0-th action): error creating AttrProc. Either field \"value\", \"from_attribute\", \"from_context\", or \"default_value\" must be specified", + }, + { + name: "both set value and from attribute", + actionLists: []ActionKeyValue{ + {Key: "BothSet", Value: 123, FromAttribute: "aa", Action: UPSERT}, + }, + errorString: "error with key \"BothSet\" (0-th action): error creating AttrProc due to multiple value sources being set", + }, + { + name: "pattern shouldn't be specified", + actionLists: []ActionKeyValue{ + {Key: "key", RegexPattern: "(?P.*?)$", FromAttribute: "aa", Action: INSERT}, + }, + errorString: "error with key \"key\" (0-th action): error creating AttrProc. Action \"insert\" does not use the \"pattern\" field. This must not be specified", + }, + { + name: "missing rule for extract", + actionLists: []ActionKeyValue{ + {Key: "aa", Action: EXTRACT}, + }, + errorString: "error with key \"aa\" (0-th action): error creating AttrProc due to missing required field \"pattern\" for action \"extract\"", + }, + { + name: "set value for extract", + actionLists: []ActionKeyValue{ + {Key: "Key", RegexPattern: "(?P.*?)$", Value: "value", Action: EXTRACT}, + }, + errorString: "error with key \"Key\" (0-th action): error creating AttrProc. Action \"extract\" does not use a value source field. These must not be specified", + }, + { + name: "set from attribute for extract", + actionLists: []ActionKeyValue{ + {Key: "key", RegexPattern: "(?P.*?)$", FromAttribute: "aa", Action: EXTRACT}, + }, + errorString: "error with key \"key\" (0-th action): error creating AttrProc. Action \"extract\" does not use a value source field. These must not be specified", + }, + { + name: "invalid regex", + actionLists: []ActionKeyValue{ + {Key: "aa", RegexPattern: "(?P.*?)$", Action: EXTRACT}, + }, + errorString: "error with key \"aa\" (0-th action): error creating AttrProc. Field \"pattern\" has invalid pattern: \"(?P.*?)$\"", + }, + { + name: "regex with unnamed capture group", + actionLists: []ActionKeyValue{ + {Key: "aa", RegexPattern: ".*$", Action: EXTRACT}, + }, + errorString: "error with key \"aa\" (0-th action): error creating AttrProc. Field \"pattern\" contains no named matcher groups", + }, + { + name: "regex with one unnamed capture groups", + actionLists: []ActionKeyValue{ + {Key: "aa", RegexPattern: "^\\/api\\/v1\\/document\\/(?P.*)\\/update\\/(.*)$", Action: EXTRACT}, + }, + errorString: "error with key \"aa\" (0-th action): error creating AttrProc. Field \"pattern\" contains at least one unnamed matcher group", + }, + } + + for _, tc := range testcase { + t.Run(tc.name, func(t *testing.T) { + ap, err := NewAttrProc(&Settings{Actions: tc.actionLists}) + assert.Nil(t, ap) + assert.Equal(t, errors.New(tc.errorString), err) + }) + } +} + +func TestValidConfiguration(t *testing.T) { + cfg := &Settings{ + Actions: []ActionKeyValue{ + {Key: "one", Action: "Delete"}, + {Key: "two", Value: 123, Action: "INSERT"}, + {Key: "three", FromAttribute: "two", Action: "upDaTE"}, + {Key: "five", FromAttribute: "two", Action: "upsert"}, + {Key: "two", RegexPattern: `^/api/v1/document/(?P.*)/update$`, Action: "EXTRact"}, + }, + } + ap, err := NewAttrProc(cfg) + require.NoError(t, err) + + av := pcommon.NewValueInt(123) + compiledRegex := regexp.MustCompile(`^/api/v1/document/(?P.*)/update$`) + assert.Equal(t, []attributeAction{ + {Key: "one", Action: DELETE}, + { + Key: "two", Action: INSERT, + AttributeValue: &av, + }, + {Key: "three", FromAttribute: "two", Action: UPDATE}, + {Key: "five", FromAttribute: "two", Action: UPSERT}, + {Key: "two", Regex: compiledRegex, AttrNames: []string{"", "documentId"}, Action: EXTRACT}, + }, ap.actions) +} + +func hash(b []byte) string { + h := sha256.New() + h.Write(b) + return fmt.Sprintf("%x", h.Sum(nil)) +} + +type mockInfoAuth map[string]any + +func (a mockInfoAuth) GetAttribute(name string) any { + return a[name] +} + +func (a mockInfoAuth) GetAttributeNames() []string { + names := make([]string, 0, len(a)) + for name := range a { + names = append(names, name) + } + return names +} + +func TestFromContext(t *testing.T) { + mdCtx := client.NewContext(t.Context(), client.Info{ + Metadata: client.NewMetadata(map[string][]string{ + "source_single_val": {"single_val"}, + "source_multiple_val": {"first_val", "second_val"}, + }), + Auth: mockInfoAuth{ + "source_auth_val": "auth_val", + }, + Addr: &net.IPAddr{ + IP: net.IPv4(192, 168, 1, 1), + }, + }) + + testCases := []struct { + name string + ctx context.Context + expectedAttributes map[string]any + action *ActionKeyValue + }{ + { + name: "no_metadata", + ctx: t.Context(), + expectedAttributes: map[string]any{}, + action: &ActionKeyValue{Key: "dest", FromContext: "source", Action: INSERT}, + }, + { + name: "no_value", + ctx: mdCtx, + expectedAttributes: map[string]any{}, + action: &ActionKeyValue{Key: "dest", FromContext: "source", Action: INSERT}, + }, + { + name: "single_value", + ctx: mdCtx, + expectedAttributes: map[string]any{"dest": "single_val"}, + action: &ActionKeyValue{Key: "dest", FromContext: "source_single_val", Action: INSERT}, + }, + { + name: "multiple_values", + ctx: mdCtx, + expectedAttributes: map[string]any{"dest": "first_val;second_val"}, + action: &ActionKeyValue{Key: "dest", FromContext: "source_multiple_val", Action: INSERT}, + }, + { + name: "with_metadata_prefix_single_value", + ctx: mdCtx, + expectedAttributes: map[string]any{"dest": "single_val"}, + action: &ActionKeyValue{Key: "dest", FromContext: "metadata.source_single_val", Action: INSERT}, + }, + { + name: "with_auth_prefix_single_value", + ctx: mdCtx, + expectedAttributes: map[string]any{"dest": "auth_val"}, + action: &ActionKeyValue{Key: "dest", FromContext: "auth.source_auth_val", Action: INSERT}, + }, + { + name: "with_auth_prefix_no_value", + ctx: mdCtx, + expectedAttributes: map[string]any{}, + action: &ActionKeyValue{Key: "dest", FromContext: "auth.unknown_val", Action: INSERT}, + }, + { + name: "with_address", + ctx: mdCtx, + expectedAttributes: map[string]any{"dest": "192.168.1.1"}, + action: &ActionKeyValue{Key: "dest", FromContext: "client.address", Action: INSERT}, + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + ap, err := NewAttrProc(&Settings{ + Actions: []ActionKeyValue{*tc.action}, + }) + require.NoError(t, err) + require.NotNil(t, ap) + attrMap := pcommon.NewMap() + ap.Process(tc.ctx, nil, attrMap) + require.Equal(t, tc.expectedAttributes, attrMap.AsRaw()) + }) + } +} + +func TestAttributes_DefaultValue(t *testing.T) { + t.Run("INSERT with default_value when from_attribute missing", func(t *testing.T) { + testCases := []testCase{ + { + name: "default_value_used_when_from_attribute_missing", + inputAttributes: map[string]any{}, + expectedAttributes: map[string]any{ + "env": "production", + }, + }, + { + name: "default_value_not_used_when_from_attribute_exists", + inputAttributes: map[string]any{ + "environment": "staging", + }, + expectedAttributes: map[string]any{ + "environment": "staging", + "env": "staging", + }, + }, + { + name: "default_value_not_used_when_target_already_exists", + inputAttributes: map[string]any{ + "env": "existing", + }, + expectedAttributes: map[string]any{ + "env": "existing", + }, + }, + } + + cfg := &Settings{ + Actions: []ActionKeyValue{ + {Key: "env", FromAttribute: "environment", DefaultValue: "production", Action: INSERT}, + }, + } + + ap, err := NewAttrProc(cfg) + require.NoError(t, err) + require.NotNil(t, ap) + + for _, tt := range testCases { + runIndividualTestCase(t, tt, ap) + } + }) + + t.Run("UPDATE with default_value", func(t *testing.T) { + testCases := []testCase{ + { + name: "default_value_not_used_when_target_missing", + inputAttributes: map[string]any{}, + expectedAttributes: map[string]any{}, + }, + { + name: "default_value_used_to_update_existing_key", + inputAttributes: map[string]any{ + "service.namespace": "old", + }, + expectedAttributes: map[string]any{ + "service.namespace": "default", + }, + }, + { + name: "from_attribute_takes_precedence_over_default", + inputAttributes: map[string]any{ + "namespace": "custom", + "service.namespace": "old", + }, + expectedAttributes: map[string]any{ + "namespace": "custom", + "service.namespace": "custom", + }, + }, + } + + cfg := &Settings{ + Actions: []ActionKeyValue{ + {Key: "service.namespace", FromAttribute: "namespace", DefaultValue: "default", Action: UPDATE}, + }, + } + + ap, err := NewAttrProc(cfg) + require.NoError(t, err) + require.NotNil(t, ap) + + for _, tt := range testCases { + runIndividualTestCase(t, tt, ap) + } + }) + + t.Run("UPSERT with default_value", func(t *testing.T) { + testCases := []testCase{ + { + name: "default_value_creates_new_attribute", + inputAttributes: map[string]any{}, + expectedAttributes: map[string]any{ + "region": "us-east-1", + }, + }, + { + name: "default_value_updates_existing_attribute", + inputAttributes: map[string]any{ + "region": "old-value", + }, + expectedAttributes: map[string]any{ + "region": "us-east-1", + }, + }, + { + name: "from_attribute_takes_precedence", + inputAttributes: map[string]any{ + "cloud.region": "eu-west-1", + }, + expectedAttributes: map[string]any{ + "cloud.region": "eu-west-1", + "region": "eu-west-1", + }, + }, + { + name: "value_takes_precedence_over_default", + inputAttributes: map[string]any{}, + expectedAttributes: map[string]any{ + "region": "us-west-2", + }, + }, + } + + // First three test cases use from_attribute + default_value + cfg := &Settings{ + Actions: []ActionKeyValue{ + {Key: "region", FromAttribute: "cloud.region", DefaultValue: "us-east-1", Action: UPSERT}, + }, + } + + ap, err := NewAttrProc(cfg) + require.NoError(t, err) + require.NotNil(t, ap) + + for i := range 3 { + runIndividualTestCase(t, testCases[i], ap) + } + + // Fourth test case uses value + default_value (value should win) + cfg2 := &Settings{ + Actions: []ActionKeyValue{ + {Key: "region", Value: "us-west-2", DefaultValue: "us-east-1", Action: UPSERT}, + }, + } + + ap2, err := NewAttrProc(cfg2) + require.NoError(t, err) + require.NotNil(t, ap2) + + runIndividualTestCase(t, testCases[3], ap2) + }) + + t.Run("default_value with different data types", func(t *testing.T) { + testCases := []struct { + name string + action ActionKeyValue + inputAttributes map[string]any + expectedAttributes map[string]any + }{ + { + name: "string_default_value", + action: ActionKeyValue{Key: "string_attr", FromAttribute: "missing", DefaultValue: "default_string", Action: INSERT}, + inputAttributes: map[string]any{}, + expectedAttributes: map[string]any{ + "string_attr": "default_string", + }, + }, + { + name: "int_default_value", + action: ActionKeyValue{Key: "int_attr", FromAttribute: "missing", DefaultValue: 42, Action: INSERT}, + inputAttributes: map[string]any{}, + expectedAttributes: map[string]any{ + "int_attr": int64(42), + }, + }, + { + name: "bool_default_value", + action: ActionKeyValue{Key: "bool_attr", FromAttribute: "missing", DefaultValue: true, Action: INSERT}, + inputAttributes: map[string]any{}, + expectedAttributes: map[string]any{ + "bool_attr": true, + }, + }, + { + name: "double_default_value", + action: ActionKeyValue{Key: "double_attr", FromAttribute: "missing", DefaultValue: 3.14, Action: INSERT}, + inputAttributes: map[string]any{}, + expectedAttributes: map[string]any{ + "double_attr": 3.14, + }, + }, + } + + for _, tt := range testCases { + t.Run(tt.name, func(t *testing.T) { + cfg := &Settings{ + Actions: []ActionKeyValue{tt.action}, + } + + ap, err := NewAttrProc(cfg) + require.NoError(t, err) + require.NotNil(t, ap) + + inputMap := pcommon.NewMap() + assert.NoError(t, inputMap.FromRaw(tt.inputAttributes)) + ap.Process(t.Context(), nil, inputMap) + require.Equal(t, tt.expectedAttributes, inputMap.AsRaw()) + }) + } + }) + + t.Run("default_value with from_context", func(t *testing.T) { + mdCtx := client.NewContext(t.Context(), client.Info{ + Metadata: client.NewMetadata(map[string][]string{ + "region": {"us-west-1"}, + }), + }) + + testCases := []struct { + name string + ctx context.Context + inputAttributes map[string]any + expectedAttributes map[string]any + }{ + { + name: "default_value_used_when_context_missing", + ctx: t.Context(), + inputAttributes: map[string]any{}, + expectedAttributes: map[string]any{ + "tenant_id": "default-tenant", + }, + }, + { + name: "context_value_takes_precedence", + ctx: mdCtx, + inputAttributes: map[string]any{ + "cloud.region": "ignored", + }, + expectedAttributes: map[string]any{ + "cloud.region": "ignored", + "region": "us-west-1", + }, + }, + { + name: "default_value_used_when_context_key_missing", + ctx: mdCtx, + inputAttributes: map[string]any{}, + expectedAttributes: map[string]any{ + "tenant_id": "default-tenant", + }, + }, + } + + cfg1 := &Settings{ + Actions: []ActionKeyValue{ + {Key: "tenant_id", FromContext: "metadata.tenant", DefaultValue: "default-tenant", Action: INSERT}, + }, + } + + ap1, err := NewAttrProc(cfg1) + require.NoError(t, err) + require.NotNil(t, ap1) + + attrMap := pcommon.NewMap() + ap1.Process(testCases[0].ctx, nil, attrMap) + require.Equal(t, testCases[0].expectedAttributes, attrMap.AsRaw()) + + attrMap = pcommon.NewMap() + ap1.Process(testCases[2].ctx, nil, attrMap) + require.Equal(t, testCases[2].expectedAttributes, attrMap.AsRaw()) + + cfg2 := &Settings{ + Actions: []ActionKeyValue{ + {Key: "region", FromContext: "metadata.region", DefaultValue: "us-east-1", Action: INSERT}, + }, + } + + ap2, err := NewAttrProc(cfg2) + require.NoError(t, err) + require.NotNil(t, ap2) + + attrMap = pcommon.NewMap() + assert.NoError(t, attrMap.FromRaw(testCases[1].inputAttributes)) + ap2.Process(testCases[1].ctx, nil, attrMap) + require.Equal(t, testCases[1].expectedAttributes, attrMap.AsRaw()) + }) + + t.Run("multiple_actions_with_default_values", func(t *testing.T) { + testCases := []testCase{ + { + name: "multiple_defaults_with_mixed_sources", + inputAttributes: map[string]any{ + "cloud.region": "eu-west-1", + }, + expectedAttributes: map[string]any{ + "env": "prod", + "region": "eu-west-1", + "cloud.region": "eu-west-1", + "tier": "frontend", + }, + }, + } + + cfg := &Settings{ + Actions: []ActionKeyValue{ + {Key: "env", FromAttribute: "environment", DefaultValue: "prod", Action: INSERT}, + {Key: "region", FromAttribute: "cloud.region", DefaultValue: "us-east-1", Action: INSERT}, + {Key: "tier", Value: "frontend", Action: INSERT}, + }, + } + + ap, err := NewAttrProc(cfg) + require.NoError(t, err) + require.NotNil(t, ap) + + for _, tt := range testCases { + runIndividualTestCase(t, tt, ap) + } + }) +} + +func TestInvalidDefaultValueConfig(t *testing.T) { + testCases := []struct { + name string + action ActionKeyValue + errorString string + }{ + { + name: "invalid_default_value_type", + action: ActionKeyValue{ + Key: "test", + DefaultValue: []int{1, 2, 3}, + Action: INSERT, + }, + errorString: "error with key \"test\" (0-th action): error creating AttrProc due to invalid default value", + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + ap, err := NewAttrProc(&Settings{Actions: []ActionKeyValue{tc.action}}) + assert.Nil(t, ap) + assert.Error(t, err) + assert.Contains(t, err.Error(), tc.errorString) + }) + } +} diff --git a/otel-patches/coreinternal/attraction/config.schema.yaml b/otel-patches/coreinternal/attraction/config.schema.yaml new file mode 100644 index 000000000000..2078322308f3 --- /dev/null +++ b/otel-patches/coreinternal/attraction/config.schema.yaml @@ -0,0 +1,41 @@ +$defs: + action: + description: Action is the enum to capture the four types of actions to perform on an attribute. + type: string + action_key_value: + description: ActionKeyValue specifies the attribute key to act upon. + type: object + properties: + action: + description: Action specifies the type of action to perform. The set of values are {INSERT, UPDATE, UPSERT, DELETE, HASH}. Both lower case and upper case are supported. INSERT - Inserts the key/value to attributes when the key does not exist. No action is applied to attributes where the key already exists. Either Value, FromAttribute or FromContext must be set. UPDATE - Updates an existing key with a value. No action is applied to attributes where the key does not exist. Either Value, FromAttribute or FromContext must be set. UPSERT - Performs insert or update action depending on the attributes containing the key. The key/value is inserted to attributes that did not originally have the key. The key/value is updated for attributes where the key already existed. Either Value, FromAttribute or FromContext must be set. DELETE - Deletes the attribute. If the key doesn't exist, no action is performed. HASH - Calculates the SHA-1 hash of an existing value and overwrites the value with its SHA-1 hash result. If the feature gate `coreinternal.attraction.hash.sha256` is enabled, it uses SHA2-256 instead. EXTRACT - Extracts values using a regular expression rule from the input 'key' to target keys specified in the 'rule'. If a target key already exists, it will be overridden. CONVERT - converts the type of an existing attribute, if convertable This is a required field. + $ref: action + converted_type: + description: ConvertedType specifies the target type of an attribute to be converted If the key doesn't exist, no action is performed. If the value cannot be converted, the original value will be left as-is + type: string + default_value: + description: DefaultValue specifies the value to use if Value/FromAttribute/FromContext doesn't provide a value (e.g., environment variable not set, attribute doesn't exist). Only used with INSERT, UPDATE, and UPSERT actions. + x-customType: any + from_attribute: + description: FromAttribute specifies the attribute to use to populate the value. If the attribute doesn't exist, no action is performed. + type: string + from_context: + description: FromContext specifies the context value to use to populate the value. The values would be searched in client.Info.Metadata. If the key doesn't exist, no action is performed. If the key has multiple values the values will be joined with `;` separator. + type: string + key: + description: Key specifies the attribute to act upon. This is a required field. + type: string + pattern: + description: 'A regex pattern must be specified for the action EXTRACT. It uses the attribute specified by `key'' to extract values from The target keys are inferred based on the names of the matcher groups provided and the names will be inferred based on the values of the matcher group. Note: All subexpressions must have a name. Note: The value type of the source key must be a string. If it isn''t, no extraction will occur.' + type: string + value: + description: Value specifies the value to populate for the key. The type of the value is inferred from the configuration. + x-customType: any + settings: + description: Settings specifies the processor settings. + type: object + properties: + actions: + description: Actions specifies the list of attributes to act on. The set of actions are {INSERT, UPDATE, UPSERT, DELETE, HASH, EXTRACT, CONVERT}. This is a required field. + type: array + items: + $ref: action_key_value diff --git a/otel-patches/coreinternal/attraction/hasher.go b/otel-patches/coreinternal/attraction/hasher.go new file mode 100644 index 000000000000..4db8c88d84fc --- /dev/null +++ b/otel-patches/coreinternal/attraction/hasher.go @@ -0,0 +1,64 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package attraction // import "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/attraction" + +import ( + "crypto/sha256" + "encoding/binary" + "encoding/hex" + "math" + + "go.opentelemetry.io/collector/pdata/pcommon" +) + +const ( + int64ByteSize = 8 + float64ByteSize = 8 +) + +var ( + byteTrue = [1]byte{1} + byteFalse = [1]byte{0} +) + +// sha2Hasher hashes an AttributeValue using SHA2-256 and returns a +// hashed version of the attribute. In practice, this would mostly be used +// for string attributes, but we support all types for completeness/correctness +// and eliminate any surprises. +func sha2Hasher(attr pcommon.Value) { + var sum [sha256.Size]byte + ok := true + + switch attr.Type() { + case pcommon.ValueTypeStr: + sum = sha256.Sum256([]byte(attr.Str())) + case pcommon.ValueTypeBool: + if attr.Bool() { + sum = sha256.Sum256(byteTrue[:]) + } else { + sum = sha256.Sum256(byteFalse[:]) + } + case pcommon.ValueTypeInt: + var b [int64ByteSize]byte + binary.LittleEndian.PutUint64(b[:], uint64(attr.Int())) + sum = sha256.Sum256(b[:]) + case pcommon.ValueTypeDouble: + var b [float64ByteSize]byte + binary.LittleEndian.PutUint64(b[:], math.Float64bits(attr.Double())) + sum = sha256.Sum256(b[:]) + default: + // No-op for empty, maps, slices, bytes. + ok = false + } + + if !ok { + attr.SetStr("") + return + } + + // Hex encoding is always 64 bytes for SHA-256. + var hashedBytes [sha256.Size * 2]byte + hex.Encode(hashedBytes[:], sum[:]) + attr.SetStr(string(hashedBytes[:])) +} diff --git a/otel-patches/coreinternal/attraction/hasher_test.go b/otel-patches/coreinternal/attraction/hasher_test.go new file mode 100644 index 000000000000..6306783d0aa3 --- /dev/null +++ b/otel-patches/coreinternal/attraction/hasher_test.go @@ -0,0 +1,85 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package attraction + +import ( + "crypto/sha256" + "encoding/binary" + "encoding/hex" + "math" + "testing" + + "github.com/stretchr/testify/require" + "go.opentelemetry.io/collector/pdata/pcommon" +) + +func TestSha2Hasher(t *testing.T) { + tests := []struct { + name string + in pcommon.Value + want string + }{ + { + name: "string", + in: pcommon.NewValueStr("foo"), + want: sha256Hex(t, []byte("foo")), + }, + { + name: "bool_true", + in: pcommon.NewValueBool(true), + want: sha256Hex(t, []byte{1}), + }, + { + name: "bool_false", + in: pcommon.NewValueBool(false), + want: sha256Hex(t, []byte{0}), + }, + { + name: "int64", + in: pcommon.NewValueInt(24), + want: func() string { + var b [8]byte + binary.LittleEndian.PutUint64(b[:], uint64(24)) + return sha256Hex(t, b[:]) + }(), + }, + { + name: "double", + in: pcommon.NewValueDouble(2.4), + want: func() string { + var b [8]byte + binary.LittleEndian.PutUint64(b[:], math.Float64bits(2.4)) + return sha256Hex(t, b[:]) + }(), + }, + { + name: "unsupported_type_empty", + in: pcommon.NewValueEmpty(), + }, + { + name: "unsupported_type_bytes", + in: func() pcommon.Value { + v := pcommon.NewValueBytes() + v.Bytes().Append(1, 2, 3) + return v + }(), + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + sha2Hasher(tt.in) + require.Equal(t, tt.want, tt.in.Str()) + }) + } +} + +func sha256Hex(t *testing.T, b []byte) string { + t.Helper() + sum := sha256.Sum256(b) + var out [sha256.Size * 2]byte + hex.Encode(out[:], sum[:]) + return string(out[:]) +} diff --git a/otel-patches/coreinternal/attraction/package_test.go b/otel-patches/coreinternal/attraction/package_test.go new file mode 100644 index 000000000000..8fc9f8eb82d1 --- /dev/null +++ b/otel-patches/coreinternal/attraction/package_test.go @@ -0,0 +1,14 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package attraction + +import ( + "testing" + + "go.uber.org/goleak" +) + +func TestMain(m *testing.M) { + goleak.VerifyTestMain(m) +} diff --git a/otel-patches/coreinternal/attraction/type_converter.go b/otel-patches/coreinternal/attraction/type_converter.go new file mode 100644 index 000000000000..323909351d09 --- /dev/null +++ b/otel-patches/coreinternal/attraction/type_converter.go @@ -0,0 +1,73 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package attraction // import "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/attraction" + +import ( + "strconv" + + "go.opentelemetry.io/collector/pdata/pcommon" + "go.uber.org/zap" +) + +const ( + stringConversionTarget = "string" + intConversionTarget = "int" + doubleConversionTarget = "double" +) + +func convertValue(logger *zap.Logger, key, to string, v pcommon.Value) { + switch to { + case stringConversionTarget: + switch v.Type() { + case pcommon.ValueTypeStr: + default: + v.SetStr(v.AsString()) + } + case intConversionTarget: + switch v.Type() { + case pcommon.ValueTypeInt: + case pcommon.ValueTypeDouble: + v.SetInt(int64(v.Double())) + case pcommon.ValueTypeBool: + if v.Bool() { + v.SetInt(1) + } else { + v.SetInt(0) + } + case pcommon.ValueTypeStr: + s := v.Str() + n, err := strconv.ParseInt(s, 10, 64) + if err == nil { + v.SetInt(n) + } else { + logger.Debug("String could not be converted to int", zap.String("key", key), zap.String("value", s), zap.Error(err)) + } + default: + logger.Debug("Unable to convert type", zap.String("key", key), zap.String("from", v.Type().String()), zap.String("to", intConversionTarget)) + } + case doubleConversionTarget: + switch v.Type() { + case pcommon.ValueTypeInt: + v.SetDouble(float64(v.Int())) + case pcommon.ValueTypeDouble: + case pcommon.ValueTypeBool: + if v.Bool() { + v.SetDouble(1) + } else { + v.SetDouble(0) + } + case pcommon.ValueTypeStr: + s := v.Str() + n, err := strconv.ParseFloat(s, 64) + if err == nil { + v.SetDouble(n) + } else { + logger.Debug("String could not be converted to double", zap.String("key", key), zap.String("value", s), zap.Error(err)) + } + default: + logger.Debug("Unable to convert type", zap.String("key", key), zap.String("from", v.Type().String()), zap.String("to", doubleConversionTarget)) + } + default: // No-op + } +} diff --git a/otel-patches/coreinternal/clientutil/BUILD.bazel b/otel-patches/coreinternal/clientutil/BUILD.bazel new file mode 100644 index 000000000000..7506d98992b8 --- /dev/null +++ b/otel-patches/coreinternal/clientutil/BUILD.bazel @@ -0,0 +1,20 @@ +load("@@rules_go+//go:def.bzl", "go_library", "go_test") + +go_library( + name = "clientutil", + srcs = ["client.go"], + importpath = "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/clientutil", # keep + visibility = ["//visibility:public"], + deps = ["@io_opentelemetry_go_collector_client//:client"], +) + +go_test( + name = "clientutil_test", + srcs = ["client_test.go"], + embed = [":clientutil"], + gotags = ["test"], + deps = [ + "@com_github_stretchr_testify//assert", + "@io_opentelemetry_go_collector_client//:client", + ], +) diff --git a/otel-patches/coreinternal/clientutil/client.go b/otel-patches/coreinternal/clientutil/client.go new file mode 100644 index 000000000000..c40c2d5f4335 --- /dev/null +++ b/otel-patches/coreinternal/clientutil/client.go @@ -0,0 +1,40 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package clientutil // import "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/clientutil" + +import ( + "net" + "strings" + + "go.opentelemetry.io/collector/client" +) + +// Address returns the address of the client connecting to the collector. +func Address(client client.Info) string { + if client.Addr == nil { + return "" + } + switch addr := client.Addr.(type) { + case *net.UDPAddr: + return addr.IP.String() + case *net.TCPAddr: + return addr.IP.String() + case *net.IPAddr: + return addr.IP.String() + } + + // If this is not a known address type, check for known "untyped" formats. + // 1.1.1.1: + + lastColonIndex := strings.LastIndex(client.Addr.String(), ":") + if lastColonIndex != -1 { + ipString := client.Addr.String()[:lastColonIndex] + ip := net.ParseIP(ipString) + if ip != nil { + return ip.String() + } + } + + return client.Addr.String() +} diff --git a/otel-patches/coreinternal/clientutil/client_test.go b/otel-patches/coreinternal/clientutil/client_test.go new file mode 100644 index 000000000000..2dcfa0dea395 --- /dev/null +++ b/otel-patches/coreinternal/clientutil/client_test.go @@ -0,0 +1,79 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package clientutil + +import ( + "net" + "testing" + + "github.com/stretchr/testify/assert" + "go.opentelemetry.io/collector/client" +) + +type fakeAddr string + +func (s fakeAddr) String() string { + return string(s) +} + +func (fakeAddr) Network() string { + return "tcp" +} + +func TestAddress(t *testing.T) { + tests := []struct { + name string + client client.Info + want string + }{ + { + name: "UDPAddr", + client: client.Info{ + Addr: &net.UDPAddr{ + IP: net.IPv4(192, 0, 2, 1), + Port: 1234, + }, + }, + want: "192.0.2.1", + }, + { + name: "TCPAddr", + client: client.Info{ + Addr: &net.TCPAddr{ + IP: net.IPv4(192, 0, 2, 2), + Port: 1234, + }, + }, + want: "192.0.2.2", + }, + { + name: "IPAddr", + client: client.Info{ + Addr: &net.IPAddr{ + IP: net.IPv4(192, 0, 2, 3), + }, + }, + want: "192.0.2.3", + }, + { + name: "fake_addr_with_port", + client: client.Info{ + Addr: fakeAddr("1.1.1.1:3200"), + }, + want: "1.1.1.1", + }, + { + name: "fake_addr_without_port", + client: client.Info{ + Addr: fakeAddr("1.1.1.1"), + }, + want: "1.1.1.1", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert.Equal(t, tt.want, Address(tt.client)) + }) + } +} diff --git a/otel-patches/coreinternal/consumerretry/BUILD.bazel b/otel-patches/coreinternal/consumerretry/BUILD.bazel new file mode 100644 index 000000000000..60e5253234b2 --- /dev/null +++ b/otel-patches/coreinternal/consumerretry/BUILD.bazel @@ -0,0 +1,39 @@ +load("@@rules_go+//go:def.bzl", "go_library", "go_test") + +go_library( + name = "consumerretry", + srcs = [ + "config.go", + "logs.go", + "testutil.go", + ], + importpath = "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/consumerretry", # keep + visibility = ["//visibility:public"], + deps = [ + "@com_github_cenkalti_backoff_v4//:backoff", + "@io_opentelemetry_go_collector_consumer//:consumer", + "@io_opentelemetry_go_collector_consumer_consumererror//:consumererror", + "@io_opentelemetry_go_collector_consumer_consumertest//:consumertest", + "@io_opentelemetry_go_collector_pdata//plog", + "@io_opentelemetry_go_otel//attribute", + "@io_opentelemetry_go_otel_trace//:trace", + "@org_uber_go_zap//:zap", + ], +) + +go_test( + name = "consumerretry_test", + srcs = [ + "logs_test.go", + "package_test.go", + ], + embed = [":consumerretry"], + gotags = ["test"], + deps = [ + "//otel-patches/coreinternal/testdata", # keep + "@com_github_stretchr_testify//assert", + "@io_opentelemetry_go_collector_consumer_consumererror//:consumererror", + "@org_uber_go_goleak//:goleak", + "@org_uber_go_zap//:zap", + ], +) diff --git a/otel-patches/coreinternal/consumerretry/config.go b/otel-patches/coreinternal/consumerretry/config.go new file mode 100644 index 000000000000..7f7c22cac8eb --- /dev/null +++ b/otel-patches/coreinternal/consumerretry/config.go @@ -0,0 +1,33 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package consumerretry // import "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/consumerretry" + +import "time" + +// Config defines configuration for retrying batches in case of receiving a retryable error from a downstream +// consumer. If the retryable error doesn't provide a delay, exponential backoff is applied. +type Config struct { + // Enabled indicates whether to not retry sending logs in case of receiving a retryable error from a downstream + // consumer. Default is false. + Enabled bool `mapstructure:"enabled"` + // InitialInterval the time to wait after the first failure before retrying. Default value is 1 second. + InitialInterval time.Duration `mapstructure:"initial_interval"` + // MaxInterval is the upper bound on backoff interval. Once this value is reached the delay between + // consecutive retries will always be `MaxInterval`. Default value is 30 seconds. + MaxInterval time.Duration `mapstructure:"max_interval"` + // MaxElapsedTime is the maximum amount of time (including retries) spent trying to send a logs batch to + // a downstream consumer. Once this value is reached, the data is discarded. It never stops if MaxElapsedTime == 0. + // Default value is 5 minutes. + MaxElapsedTime time.Duration `mapstructure:"max_elapsed_time"` +} + +// NewDefaultConfig returns the default Config. +func NewDefaultConfig() Config { + return Config{ + Enabled: false, + InitialInterval: 1 * time.Second, + MaxInterval: 30 * time.Second, + MaxElapsedTime: 5 * time.Minute, + } +} diff --git a/otel-patches/coreinternal/consumerretry/config.schema.yaml b/otel-patches/coreinternal/consumerretry/config.schema.yaml new file mode 100644 index 000000000000..b2a1d2b37399 --- /dev/null +++ b/otel-patches/coreinternal/consumerretry/config.schema.yaml @@ -0,0 +1,20 @@ +$defs: + config: + description: Config defines configuration for retrying batches in case of receiving a retryable error from a downstream consumer. If the retryable error doesn't provide a delay, exponential backoff is applied. + type: object + properties: + enabled: + description: Enabled indicates whether to not retry sending logs in case of receiving a retryable error from a downstream consumer. Default is false. + type: boolean + initial_interval: + description: InitialInterval the time to wait after the first failure before retrying. Default value is 1 second. + type: string + format: duration + max_elapsed_time: + description: MaxElapsedTime is the maximum amount of time (including retries) spent trying to send a logs batch to a downstream consumer. Once this value is reached, the data is discarded. It never stops if MaxElapsedTime == 0. Default value is 5 minutes. + type: string + format: duration + max_interval: + description: MaxInterval is the upper bound on backoff interval. Once this value is reached the delay between consecutive retries will always be `MaxInterval`. Default value is 30 seconds. + type: string + format: duration diff --git a/otel-patches/coreinternal/consumerretry/logs.go b/otel-patches/coreinternal/consumerretry/logs.go new file mode 100644 index 000000000000..8a717e2d366c --- /dev/null +++ b/otel-patches/coreinternal/consumerretry/logs.go @@ -0,0 +1,113 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package consumerretry // import "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/consumerretry" + +import ( + "context" + "errors" + "fmt" + "time" + + "github.com/cenkalti/backoff/v4" + "go.opentelemetry.io/collector/consumer" + "go.opentelemetry.io/collector/consumer/consumererror" + "go.opentelemetry.io/collector/pdata/plog" + "go.opentelemetry.io/otel/attribute" + "go.opentelemetry.io/otel/trace" + "go.uber.org/zap" +) + +type logsConsumer struct { + consumer.Logs + cfg Config + logger *zap.Logger +} + +func NewLogs(config Config, logger *zap.Logger, next consumer.Logs) consumer.Logs { + return &logsConsumer{ + Logs: next, + cfg: config, + logger: logger, + } +} + +func (lc *logsConsumer) ConsumeLogs(ctx context.Context, logs plog.Logs) error { + if !lc.cfg.Enabled { + err := lc.Logs.ConsumeLogs(ctx, logs) + if err != nil { + lc.logger.Error("ConsumeLogs() failed. "+ + "Enable retry_on_failure to slow down reading logs and avoid dropping.", zap.Error(err)) + } + return err + } + + // Do not use NewExponentialBackOff since it calls Reset and the code here must + // call Reset after changing the InitialInterval (this saves an unnecessary call to Now). + expBackoff := backoff.ExponentialBackOff{ + MaxElapsedTime: lc.cfg.MaxElapsedTime, + InitialInterval: lc.cfg.InitialInterval, + MaxInterval: lc.cfg.MaxInterval, + RandomizationFactor: backoff.DefaultRandomizationFactor, + Multiplier: backoff.DefaultMultiplier, + Stop: backoff.Stop, + Clock: backoff.SystemClock, + } + expBackoff.Reset() + + span := trace.SpanFromContext(ctx) + retryNum := int64(0) + retryableErr := consumererror.Logs{} + for { + span.AddEvent( + "Sending logs.", + trace.WithAttributes(attribute.Int64("retry_num", retryNum))) + + err := lc.Logs.ConsumeLogs(ctx, logs) + if err == nil { + return nil + } + + if consumererror.IsPermanent(err) { + lc.logger.Error( + "ConsumeLogs() failed. The error is not retryable. Dropping data.", + zap.Error(err), + zap.Int("dropped_items", logs.LogRecordCount()), + ) + return err + } + + if errors.As(err, &retryableErr) { + logs = retryableErr.Data() + } + + // TODO: take delay from the error once it is available in the consumererror package. + backoffDelay := expBackoff.NextBackOff() + if backoffDelay == backoff.Stop { + lc.logger.Error("Max elapsed time expired. Dropping data.", zap.Error(err), zap.Int("dropped_items", + logs.LogRecordCount())) + return err + } + + backoffDelayStr := backoffDelay.String() + span.AddEvent( + "ConsumeLogs() failed. Will retry the request after interval.", + trace.WithAttributes( + attribute.String("interval", backoffDelayStr), + attribute.String("error", err.Error()))) + lc.logger.Debug( + "ConsumeLogs() failed. Will retry the request after interval.", + zap.Error(err), + zap.String("interval", backoffDelayStr), + zap.Int("logs_count", logs.LogRecordCount()), + ) + retryNum++ + + // back-off, but get interrupted when shutting down or request is cancelled or timed out. + select { + case <-ctx.Done(): + return fmt.Errorf("context is cancelled or timed out %w", err) + case <-time.After(backoffDelay): + } + } +} diff --git a/otel-patches/coreinternal/consumerretry/logs_test.go b/otel-patches/coreinternal/consumerretry/logs_test.go new file mode 100644 index 000000000000..9739232c5248 --- /dev/null +++ b/otel-patches/coreinternal/consumerretry/logs_test.go @@ -0,0 +1,113 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package consumerretry + +import ( + "context" + "errors" + "testing" + "time" + + "github.com/stretchr/testify/assert" + "go.opentelemetry.io/collector/consumer/consumererror" + "go.uber.org/zap" + + "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/testdata" +) + +func TestConsumeLogs(t *testing.T) { + tests := []struct { + name string + cfg Config + consumer *MockLogsRejecter + expectedErr error + }{ + { + name: "no_retry_success", + expectedErr: nil, + cfg: NewDefaultConfig(), + consumer: NewMockLogsRejecter(0), + }, + { + name: "permanent_error", + expectedErr: consumererror.NewPermanent(errors.New("permanent error")), + cfg: Config{Enabled: true}, + consumer: NewMockLogsRejecter(-1), + }, + { + name: "timeout_error", + expectedErr: errors.New("retry later"), + cfg: Config{ + Enabled: true, + InitialInterval: 1 * time.Millisecond, + MaxInterval: 5 * time.Millisecond, + MaxElapsedTime: 10 * time.Millisecond, + }, + consumer: NewMockLogsRejecter(20), + }, + { + name: "retry_success", + expectedErr: nil, + cfg: Config{ + Enabled: true, + InitialInterval: 1 * time.Millisecond, + MaxInterval: 2 * time.Millisecond, + MaxElapsedTime: 100 * time.Millisecond, + }, + consumer: NewMockLogsRejecter(5), + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + consumer := NewLogs(tt.cfg, zap.NewNop(), tt.consumer) + err := consumer.ConsumeLogs(t.Context(), testdata.GenerateLogsTwoLogRecordsSameResource()) + assert.Equal(t, tt.expectedErr, err) + if err == nil { + assert.Len(t, tt.consumer.AllLogs(), 1) + assert.Equal(t, 2, tt.consumer.AllLogs()[0].LogRecordCount()) + if tt.consumer.acceptAfter > 0 { + assert.Equal(t, tt.consumer.rejectCount.Load(), tt.consumer.acceptAfter) + } + } else if tt.consumer.acceptAfter > 0 { + assert.Less(t, tt.consumer.rejectCount.Load(), tt.consumer.acceptAfter) + } + }) + } +} + +func TestConsumeLogs_ContextDeadline(t *testing.T) { + consumer := NewLogs(Config{ + Enabled: true, + InitialInterval: 1 * time.Millisecond, + MaxInterval: 5 * time.Millisecond, + MaxElapsedTime: 50 * time.Millisecond, + }, zap.NewNop(), NewMockLogsRejecter(10)) + + ctx, cancel := context.WithTimeout(t.Context(), 5*time.Millisecond) + defer cancel() + err := consumer.ConsumeLogs(ctx, testdata.GenerateLogsTwoLogRecordsSameResource()) + assert.ErrorContains(t, err, "context is cancelled or timed out retry later") +} + +func TestConsumeLogs_PartialRetry(t *testing.T) { + sink := &mockPartialLogsRejecter{} + consumer := NewLogs(Config{ + Enabled: true, + InitialInterval: 1 * time.Millisecond, + MaxInterval: 5 * time.Millisecond, + MaxElapsedTime: 50 * time.Millisecond, + }, zap.NewNop(), sink) + + logs := testdata.GenerateLogsTwoLogRecordsSameResource() + testdata.GenerateLogsOneLogRecordNoResource().ResourceLogs().MoveAndAppendTo(logs.ResourceLogs()) + assert.NoError(t, consumer.ConsumeLogs(t.Context(), logs)) + + // Verify the logs batch is broken into two parts, one with the partial error and one without. + assert.Len(t, sink.AllLogs(), 2) + assert.Equal(t, 1, sink.AllLogs()[0].ResourceLogs().Len()) + assert.Equal(t, 2, sink.AllLogs()[0].LogRecordCount()) + assert.Equal(t, 1, sink.AllLogs()[1].ResourceLogs().Len()) + assert.Equal(t, 1, sink.AllLogs()[1].LogRecordCount()) +} diff --git a/otel-patches/coreinternal/consumerretry/package_test.go b/otel-patches/coreinternal/consumerretry/package_test.go new file mode 100644 index 000000000000..836884ba6c9d --- /dev/null +++ b/otel-patches/coreinternal/consumerretry/package_test.go @@ -0,0 +1,14 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package consumerretry + +import ( + "testing" + + "go.uber.org/goleak" +) + +func TestMain(m *testing.M) { + goleak.VerifyTestMain(m) +} diff --git a/otel-patches/coreinternal/consumerretry/testutil.go b/otel-patches/coreinternal/consumerretry/testutil.go new file mode 100644 index 000000000000..915239a91af4 --- /dev/null +++ b/otel-patches/coreinternal/consumerretry/testutil.go @@ -0,0 +1,59 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package consumerretry // import "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/consumerretry" + +import ( + "context" + "errors" + "sync/atomic" + + "go.opentelemetry.io/collector/consumer/consumererror" + "go.opentelemetry.io/collector/consumer/consumertest" + "go.opentelemetry.io/collector/pdata/plog" +) + +type MockLogsRejecter struct { + consumertest.LogsSink + rejectCount *atomic.Int32 + acceptAfter int32 +} + +// NewMockLogsRejecter creates new MockLogsRejecter. acceptAfter is a number of rejects before accepting, +// 0 means always accept, -1 means always reject with permanent error +func NewMockLogsRejecter(acceptAfter int32) *MockLogsRejecter { + return &MockLogsRejecter{ + acceptAfter: acceptAfter, + rejectCount: &atomic.Int32{}, + } +} + +func (m *MockLogsRejecter) ConsumeLogs(ctx context.Context, logs plog.Logs) error { + if m.acceptAfter < 0 { + return consumererror.NewPermanent(errors.New("permanent error")) + } + if m.rejectCount.Load() < m.acceptAfter { + m.rejectCount.Add(1) + return errors.New("retry later") + } + return m.LogsSink.ConsumeLogs(ctx, logs) +} + +// mockPartialLogsRejecter is a mock LogsConsumer that accepts only one logs object and rejects the rest. +type mockPartialLogsRejecter struct { + consumertest.LogsSink +} + +func (m *mockPartialLogsRejecter) ConsumeLogs(ctx context.Context, logs plog.Logs) error { + if logs.ResourceLogs().Len() <= 1 { + return m.LogsSink.ConsumeLogs(ctx, logs) + } + accepted := plog.NewLogs() + rejected := plog.NewLogs() + logs.ResourceLogs().At(0).CopyTo(accepted.ResourceLogs().AppendEmpty()) + for i := 1; i < logs.ResourceLogs().Len(); i++ { + logs.ResourceLogs().At(i).CopyTo(rejected.ResourceLogs().AppendEmpty()) + } + _ = m.LogsSink.ConsumeLogs(ctx, accepted) + return consumererror.NewLogs(errors.New("partial error"), rejected) +} diff --git a/otel-patches/coreinternal/documentation.md b/otel-patches/coreinternal/documentation.md new file mode 100644 index 000000000000..54746c8480e5 --- /dev/null +++ b/otel-patches/coreinternal/documentation.md @@ -0,0 +1,24 @@ +[comment]: <> (Code generated by mdatagen. DO NOT EDIT.) + +# coreinternal + +## Feature Gates + +This component has the following feature gates: + +| Feature Gate | Stage | Description | From Version | To Version | Reference | +| ------------ | ----- | ----------- | ------------ | ---------- | --------- | +| `internal.coreinternal.goldendataset.DontEmitV0DatabaseConventions` | alpha | When enabled, goldendataset no longer generates spans with deprecated semconv v1.28.0 attribute db.system. | v0.154.0 | N/A | [Link](https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/45299) | +| `internal.coreinternal.goldendataset.DontEmitV0FaaSConventions` | alpha | When enabled, goldendataset no longer generates spans with deprecated semconv FaaS attributes like faas.execution. | v0.155.0 | N/A | [Link](https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/45293) | +| `internal.coreinternal.goldendataset.DontEmitV0HTTPConventions` | alpha | When enabled, goldendataset no longer generates spans with deprecated semconv HTTP attributes like http.user_agent and http.client_ip. | v0.154.0 | N/A | [Link](https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/45293) | +| `internal.coreinternal.goldendataset.DontEmitV0MessagingConventions` | alpha | When enabled, goldendataset no longer generates spans with deprecated semconv v1.16.0 attribute messaging.destination. | v0.155.0 | N/A | [Link](https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/45077) | +| `internal.coreinternal.goldendataset.DontEmitV0NetworkConventions` | beta | When enabled, goldendataset no longer generates spans with deprecated semconv v1.12.0 attributes (net.host.ip, net.peer.ip, http.host, http.server_name). | v0.147.0 | N/A | [Link](https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/45076) | +| `internal.coreinternal.goldendataset.DontEmitV0RPCConventions` | beta | When enabled, goldendataset no longer generates spans with deprecated semconv RPC attributes rpc.service and peer.service. | v0.148.0 | N/A | [Link](https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/47548) | +| `internal.coreinternal.goldendataset.EmitV1DatabaseConventions` | alpha | When enabled, goldendataset generates spans with db.system.name (semconv v1.40.0) instead of the deprecated db.system (semconv v1.28.0). | v0.154.0 | N/A | [Link](https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/45299) | +| `internal.coreinternal.goldendataset.EmitV1FaaSConventions` | alpha | When enabled, goldendataset generates spans with faas.invocation_id (semconv v1.40.0) alongside legacy faas.execution to support migration. | v0.155.0 | N/A | [Link](https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/45293) | +| `internal.coreinternal.goldendataset.EmitV1HTTPConventions` | alpha | When enabled, goldendataset generates spans with user_agent.original and client.address (semconv v1.40.0) alongside legacy http.user_agent and http.client_ip to support migration. | v0.154.0 | N/A | [Link](https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/45293) | +| `internal.coreinternal.goldendataset.EmitV1MessagingConventions` | alpha | When enabled, goldendataset generates spans with messaging.destination.name (semconv v1.40.0) alongside legacy messaging.destination to support migration. | v0.155.0 | N/A | [Link](https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/45077) | +| `internal.coreinternal.goldendataset.EmitV1NetworkConventions` | beta | When enabled, goldendataset generates spans with network.local.address, network.peer.address, and server.address (semconv v1.38.0) instead of the deprecated net.host.ip, net.peer.ip, http.host, http.server_name (semconv v1.12.0). Enable together with pkg.translator.zipkin.EmitV1NetworkConventions for consistent round-trip translation in tests. | v0.147.0 | N/A | [Link](https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/45076) | +| `internal.coreinternal.goldendataset.EmitV1RPCConventions` | beta | When enabled, goldendataset generates spans with rpc.method and service.peer.name (semconv v1.40.0) alongside legacy rpc.service and peer.service to support migration. | v0.148.0 | N/A | [Link](https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/47548) | + +For more information about feature gates, see the [Feature Gates](https://github.com/open-telemetry/opentelemetry-collector/blob/main/featuregate/README.md) documentation. diff --git a/otel-patches/coreinternal/errorutil/BUILD.bazel b/otel-patches/coreinternal/errorutil/BUILD.bazel new file mode 100644 index 000000000000..bb57ed3042a7 --- /dev/null +++ b/otel-patches/coreinternal/errorutil/BUILD.bazel @@ -0,0 +1,16 @@ +load("@@rules_go+//go:def.bzl", "go_library") + +go_library( + name = "errorutil", + srcs = [ + "grpc.go", + "http.go", + ], + importpath = "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/errorutil", # keep + visibility = ["//visibility:public"], + deps = [ + "@io_opentelemetry_go_collector_consumer_consumererror//:consumererror", + "@org_golang_google_grpc//codes", + "@org_golang_google_grpc//status", + ], +) diff --git a/otel-patches/coreinternal/errorutil/grpc.go b/otel-patches/coreinternal/errorutil/grpc.go new file mode 100644 index 000000000000..08b75990f0fc --- /dev/null +++ b/otel-patches/coreinternal/errorutil/grpc.go @@ -0,0 +1,25 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package errorutil // import "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/errorutil" + +import ( + "go.opentelemetry.io/collector/consumer/consumererror" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" +) + +func GrpcError(err error) error { + s, ok := status.FromError(err) + if !ok { + // Default to a retryable error + // https://github.com/open-telemetry/opentelemetry-proto/blob/main/docs/specification.md#failures + code := codes.Unavailable + if consumererror.IsPermanent(err) { + // non-retryable error + code = codes.Unknown + } + s = status.New(code, err.Error()) + } + return s.Err() +} diff --git a/otel-patches/coreinternal/errorutil/http.go b/otel-patches/coreinternal/errorutil/http.go new file mode 100644 index 000000000000..2d643042daaa --- /dev/null +++ b/otel-patches/coreinternal/errorutil/http.go @@ -0,0 +1,33 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package errorutil // import "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/errorutil" + +import ( + "net/http" + + "go.opentelemetry.io/collector/consumer/consumererror" +) + +func HTTPError(w http.ResponseWriter, err error) { + if err == nil { + return + } + http.Error(w, err.Error(), GetHTTPStatusCodeFromError(err)) +} + +func GetHTTPStatusCodeFromError(err error) int { + // See requirements for receivers + // https://github.com/open-telemetry/opentelemetry-collector/blob/8e522ad950de6326a0841d7e1bef808bbc0d3537/receiver/doc.go#L10-L29 + + // See https://github.com/open-telemetry/opentelemetry-proto/blob/main/docs/specification.md#failures-1 + // to see a list of retryable http status codes. + + // non-retryable status + status := http.StatusBadRequest + if !consumererror.IsPermanent(err) { + // retryable status + status = http.StatusServiceUnavailable + } + return status +} diff --git a/otel-patches/coreinternal/generated_package_test.go b/otel-patches/coreinternal/generated_package_test.go new file mode 100644 index 000000000000..2c88ed360351 --- /dev/null +++ b/otel-patches/coreinternal/generated_package_test.go @@ -0,0 +1,13 @@ +// Code generated by mdatagen. DO NOT EDIT. + +package coreinternal + +import ( + "testing" + + "go.uber.org/goleak" +) + +func TestMain(m *testing.M) { + goleak.VerifyTestMain(m) +} diff --git a/otel-patches/coreinternal/go.mod b/otel-patches/coreinternal/go.mod new file mode 100644 index 000000000000..7dbb854293ee --- /dev/null +++ b/otel-patches/coreinternal/go.mod @@ -0,0 +1,106 @@ +module github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal + +go 1.25.0 + +require ( + github.com/cenkalti/backoff/v4 v4.3.0 + github.com/elastic/lunes v0.2.2 + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden v0.156.0 + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.156.0 + github.com/stretchr/testify v1.11.1 + github.com/testcontainers/testcontainers-go v0.43.0 + go.opentelemetry.io/collector/client v1.62.0 + go.opentelemetry.io/collector/component v1.62.0 + go.opentelemetry.io/collector/component/componenttest v0.156.0 + go.opentelemetry.io/collector/consumer v1.62.0 + go.opentelemetry.io/collector/consumer/consumererror v0.156.0 + go.opentelemetry.io/collector/consumer/consumertest v0.156.0 + go.opentelemetry.io/collector/featuregate v1.62.0 + go.opentelemetry.io/collector/pdata v1.62.0 + go.opentelemetry.io/collector/pdata/pprofile v0.156.0 + go.opentelemetry.io/collector/receiver v1.62.0 + go.opentelemetry.io/collector/receiver/receivertest v0.156.0 + go.opentelemetry.io/otel v1.44.1-0.20260622141720-fbe3d073ba93 + go.opentelemetry.io/otel/trace v1.44.1-0.20260622141720-fbe3d073ba93 + go.uber.org/goleak v1.3.0 + go.uber.org/multierr v1.11.0 + go.uber.org/zap v1.28.0 + golang.org/x/text v0.40.0 + google.golang.org/grpc v1.82.0 +) + +require ( + dario.cat/mergo v1.0.2 // indirect + github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c // indirect + github.com/Microsoft/go-winio v0.6.2 // indirect + github.com/cespare/xxhash/v2 v2.3.0 // indirect + github.com/containerd/errdefs v1.0.0 // indirect + github.com/containerd/errdefs/pkg v0.3.0 // indirect + github.com/containerd/log v0.1.0 // indirect + github.com/containerd/platforms v1.0.0-rc.2 // indirect + github.com/cpuguy83/dockercfg v0.3.2 // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect + github.com/distribution/reference v0.6.0 // indirect + github.com/docker/go-connections v0.7.0 // indirect + github.com/docker/go-units v0.5.0 // indirect + github.com/ebitengine/purego v0.10.0 // indirect + github.com/felixge/httpsnoop v1.0.4 // indirect + github.com/go-logr/logr v1.4.3 // indirect + github.com/go-logr/stdr v1.2.2 // indirect + github.com/go-ole/go-ole v1.3.0 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/hashicorp/go-version v1.9.0 // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/klauspost/compress v1.19.0 // indirect + github.com/lufia/plan9stats v0.0.0-20260330125221-c963978e514e // indirect + github.com/magefile/mage v1.15.0 // indirect + github.com/magiconair/properties v1.8.10 // indirect + github.com/moby/docker-image-spec v1.3.1 // indirect + github.com/moby/go-archive v0.2.0 // indirect + github.com/moby/moby/api v1.55.0 // indirect + github.com/moby/moby/client v0.5.0 // indirect + github.com/moby/patternmatcher v0.6.1 // indirect + github.com/moby/sys/sequential v0.6.0 // indirect + github.com/moby/sys/user v0.4.0 // indirect + github.com/moby/sys/userns v0.1.0 // indirect + github.com/moby/term v0.5.2 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.156.0 // indirect + github.com/opencontainers/go-digest v1.0.0 // indirect + github.com/opencontainers/image-spec v1.1.1 // indirect + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect + github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect + github.com/shirou/gopsutil/v4 v4.26.6 // indirect + github.com/sirupsen/logrus v1.9.4 // indirect + github.com/tklauser/go-sysconf v0.3.16 // indirect + github.com/tklauser/numcpus v0.11.0 // indirect + github.com/yusufpapurcu/wmi v1.2.4 // indirect + go.opentelemetry.io/auto/sdk v1.2.1 // indirect + go.opentelemetry.io/collector/consumer/xconsumer v0.156.0 // indirect + go.opentelemetry.io/collector/internal/componentalias v0.156.0 // indirect + go.opentelemetry.io/collector/pdata/xpdata v0.156.0 // indirect + go.opentelemetry.io/collector/pipeline v1.62.0 // indirect + go.opentelemetry.io/collector/receiver/xreceiver v0.156.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.69.0 // indirect + go.opentelemetry.io/otel/metric v1.44.1-0.20260622141720-fbe3d073ba93 // indirect + go.opentelemetry.io/otel/sdk v1.44.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.44.1-0.20260622141720-fbe3d073ba93 // indirect + golang.org/x/crypto v0.54.0 // indirect + golang.org/x/sys v0.47.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260618152121-87f3d3e198d3 // indirect + google.golang.org/protobuf v1.36.12-0.20260116114154-8c4c4ae446ca // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect + pgregory.net/rapid v1.3.0 // indirect +) + +retract ( + v0.76.2 + v0.76.1 + v0.65.0 +) + +// DATADOG LOCAL PATCH: upstream's go.mod replaces these sibling packages with relative paths +// into the full opentelemetry-collector-contrib monorepo checkout (../../pkg/*), which don't +// exist when vendoring just this one internal package in isolation. Dropped so these resolve +// as normal published modules instead. diff --git a/otel-patches/coreinternal/go.sum b/otel-patches/coreinternal/go.sum new file mode 100644 index 000000000000..0ff19e9ca0c8 --- /dev/null +++ b/otel-patches/coreinternal/go.sum @@ -0,0 +1,225 @@ +dario.cat/mergo v1.0.2 h1:85+piFYR1tMbRrLcDwR18y4UKJ3aH1Tbzi24VRW1TK8= +dario.cat/mergo v1.0.2/go.mod h1:E/hbnu0NxMFBjpMIE34DRGLWqDy0g5FuKDhCb31ngxA= +github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6 h1:He8afgbRMd7mFxO99hRNu+6tazq8nFF9lIwo9JFroBk= +github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8= +github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c h1:udKWzYgxTojEKWjV8V+WSxDXJ4NFATAsZjh8iIbsQIg= +github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= +github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= +github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= +github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= +github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/containerd/errdefs v1.0.0 h1:tg5yIfIlQIrxYtu9ajqY42W3lpS19XqdxRQeEwYG8PI= +github.com/containerd/errdefs v1.0.0/go.mod h1:+YBYIdtsnF4Iw6nWZhJcqGSg/dwvV7tyJ/kCkyJ2k+M= +github.com/containerd/errdefs/pkg v0.3.0 h1:9IKJ06FvyNlexW690DXuQNx2KA2cUJXx151Xdx3ZPPE= +github.com/containerd/errdefs/pkg v0.3.0/go.mod h1:NJw6s9HwNuRhnjJhM7pylWwMyAkmCQvQ4GpJHEqRLVk= +github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= +github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= +github.com/containerd/platforms v1.0.0-rc.2 h1:0SPgaNZPVWGEi4grZdV8VRYQn78y+nm6acgLGv/QzE4= +github.com/containerd/platforms v1.0.0-rc.2/go.mod h1:J71L7B+aiM5SdIEqmd9wp6THLVRzJGXfNuWCZCllLA4= +github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= +github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= +github.com/creack/pty v1.1.24 h1:bJrF4RRfyJnbTJqzRLHzcGaZK1NeM5kTC9jGgovnR1s= +github.com/creack/pty v1.1.24/go.mod h1:08sCNb52WyoAwi2QDyzUCTgcvVFhUzewun7wtTfvcwE= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= +github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= +github.com/docker/go-connections v0.7.0 h1:6SsRfJddP22WMrCkj19x9WKjEDTB+ahsdiGYf0mN39c= +github.com/docker/go-connections v0.7.0/go.mod h1:no1qkHdjq7kLMGUXYAduOhYPSJxxvgWBh7ogVvptn3Q= +github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= +github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/ebitengine/purego v0.10.0 h1:QIw4xfpWT6GWTzaW5XEKy3HXoqrJGx1ijYHzTF0/ISU= +github.com/ebitengine/purego v0.10.0/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= +github.com/elastic/lunes v0.2.2 h1:dZFEaebNg9l+mzvOQN6Nd/c9y6y8rUe3tBWsTgvM08U= +github.com/elastic/lunes v0.2.2/go.mod h1:u3W/BdONWTrh0JjNZ21C907dDc+cUZttZrGa625nf2k= +github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= +github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= +github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= +github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= +github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= +github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/hashicorp/go-version v1.9.0 h1:CeOIz6k+LoN3qX9Z0tyQrPtiB1DFYRPfCIBtaXPSCnA= +github.com/hashicorp/go-version v1.9.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/klauspost/compress v1.19.0 h1:sXLILfc9jV2QYWkzFOPWStmcUVH2RHEB1JCdY2oVvCQ= +github.com/klauspost/compress v1.19.0/go.mod h1:cwPg85FWrGar70rWktvGQj8/hthj3wpl0PGDogxkrSQ= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/lufia/plan9stats v0.0.0-20260330125221-c963978e514e h1:Q6MvJtQK/iRcRtzAscm/zF23XxJlbECiGPyRicsX+Ak= +github.com/lufia/plan9stats v0.0.0-20260330125221-c963978e514e/go.mod h1:autxFIvghDt3jPTLoqZ9OZ7s9qTGNAWmYCjVFWPX/zg= +github.com/magefile/mage v1.15.0 h1:BvGheCMAsG3bWUDbZ8AyXXpCNwU9u5CB6sM+HNb9HYg= +github.com/magefile/mage v1.15.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A= +github.com/magiconair/properties v1.8.10 h1:s31yESBquKXCV9a/ScB3ESkOjUYYv+X0rg8SYxI99mE= +github.com/magiconair/properties v1.8.10/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0= +github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo= +github.com/moby/go-archive v0.2.0 h1:zg5QDUM2mi0JIM9fdQZWC7U8+2ZfixfTYoHL7rWUcP8= +github.com/moby/go-archive v0.2.0/go.mod h1:mNeivT14o8xU+5q1YnNrkQVpK+dnNe/K6fHqnTg4qPU= +github.com/moby/moby/api v1.55.0 h1:2/sexvQyqIWS8pRSCFddBfpW2qE7vR7FCL+vN8pxwMc= +github.com/moby/moby/api v1.55.0/go.mod h1:+RQ6wluLwtYaTd1WnPLykIDPekkuyD/ROWQClE83pzs= +github.com/moby/moby/client v0.5.0 h1:5XhyPk2fuOWf6RlSFa3MkIIgDZkF25xToXW8Q/BH7cc= +github.com/moby/moby/client v0.5.0/go.mod h1:rcVpF8ncl9vo5gaIBdol6CnbEtSj1uxMvEV/UrykF/s= +github.com/moby/patternmatcher v0.6.1 h1:qlhtafmr6kgMIJjKJMDmMWq7WLkKIo23hsrpR3x084U= +github.com/moby/patternmatcher v0.6.1/go.mod h1:hDPoyOpDY7OrrMDLaYoY3hf52gNCR/YOUYxkhApJIxc= +github.com/moby/sys/sequential v0.6.0 h1:qrx7XFUd/5DxtqcoH1h438hF5TmOvzC/lspjy7zgvCU= +github.com/moby/sys/sequential v0.6.0/go.mod h1:uyv8EUTrca5PnDsdMGXhZe6CCe8U/UiTWd+lL+7b/Ko= +github.com/moby/sys/user v0.4.0 h1:jhcMKit7SA80hivmFJcbB1vqmw//wU61Zdui2eQXuMs= +github.com/moby/sys/user v0.4.0/go.mod h1:bG+tYYYJgaMtRKgEmuueC0hJEAZWwtIbZTB+85uoHjs= +github.com/moby/sys/userns v0.1.0 h1:tVLXkFOxVu9A64/yh59slHVv9ahO9UIev4JZusOLG/g= +github.com/moby/sys/userns v0.1.0/go.mod h1:IHUYgu/kao6N8YZlp9Cf444ySSvCmDlmzUcYfDHOl28= +github.com/moby/term v0.5.2 h1:6qk3FJAFDs6i/q3W/pQ97SX192qKfZgGjCQqfCJkgzQ= +github.com/moby/term v0.5.2/go.mod h1:d3djjFCrjnB+fl8NJux+EJzu0msscUP+f8it8hPkFLc= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee h1:W5t00kpgFdJifH4BDsTlE89Zl93FEloxaWZfGcifgq8= +github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden v0.156.0 h1:SCjJcfLQUNrvS3pxmTCpkauG+EuBO9FfpYxwZGh1R2k= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden v0.156.0/go.mod h1:a2EWclAv09obxPpx4JrIDGlcoU5XmsC9Z55hN43InIM= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.156.0 h1:TaVowoyPtdhUwoQ1Q8BfKNfLR/o/uzQbqw1yXDDh+qU= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.156.0/go.mod h1:ctcl2y2QGid6re21XtVXie2vfndDeFBawU7xNLHj/nA= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.156.0 h1:K+3RiL9FC4/4xmZwgCY1Wg5fr4Wrf9OnYDf4F2tR5qY= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.156.0/go.mod h1:2N4pEbxN0lw3vb1zYlXK/okuTC+hRFbLEbgdcoP13mM= +github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= +github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= +github.com/opencontainers/image-spec v1.1.1 h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJwooC2xJA040= +github.com/opencontainers/image-spec v1.1.1/go.mod h1:qpqAh3Dmcf36wStyyWU+kCeDgrGnAve2nCC8+7h8Q0M= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt9k/+g42oCprj/FisM4qX9L3sZB3upGN2ZU= +github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= +github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= +github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= +github.com/shirou/gopsutil/v4 v4.26.6 h1:Mzr/npDtQC/xpeEuQKHZt8Zo9CmPvhTj8nkR8w5TLDs= +github.com/shirou/gopsutil/v4 v4.26.6/go.mod h1:LZ6ewCSkBqUpvSOf+LsTGnRinC6iaNUNMGBtDkJBaLQ= +github.com/sirupsen/logrus v1.9.4 h1:TsZE7l11zFCLZnZ+teH4Umoq5BhEIfIzfRDZ1Uzql2w= +github.com/sirupsen/logrus v1.9.4/go.mod h1:ftWc9WdOfJ0a92nsE2jF5u5ZwH8Bv2zdeOC42RjbV2g= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.5.3 h1:jmXUvGomnU1o3W/V5h2VEradbpJDwGrzugQQvL0POH4= +github.com/stretchr/objx v0.5.3/go.mod h1:rDQraq+vQZU7Fde9LOZLr8Tax6zZvy4kuNKF+QYS+U0= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +github.com/testcontainers/testcontainers-go v0.43.0 h1:oEQx5MW2DGd9z3AeEQfB2lPM0eLs7ztyaGRu75bFo5A= +github.com/testcontainers/testcontainers-go v0.43.0/go.mod h1:+VxkT2NQnKOZPKi6praMuMKYHYyOGXr0XSBSlSMCzFo= +github.com/tklauser/go-sysconf v0.3.16 h1:frioLaCQSsF5Cy1jgRBrzr6t502KIIwQ0MArYICU0nA= +github.com/tklauser/go-sysconf v0.3.16/go.mod h1:/qNL9xxDhc7tx3HSRsLWNnuzbVfh3e7gh/BmM179nYI= +github.com/tklauser/numcpus v0.11.0 h1:nSTwhKH5e1dMNsCdVBukSZrURJRoHbSEQjdEbY+9RXw= +github.com/tklauser/numcpus v0.11.0/go.mod h1:z+LwcLq54uWZTX0u/bGobaV34u6V7KNlTZejzM6/3MQ= +github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= +github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= +go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= +go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= +go.opentelemetry.io/collector/client v1.62.0 h1:Vud5nn4gX2TzMnHpNhuUhvAi4GGcO0RsaId0dftHAjM= +go.opentelemetry.io/collector/client v1.62.0/go.mod h1:iao8KfxMeND0zdp+PcHGPY9r1BDgS+OppY7RKLlUeUU= +go.opentelemetry.io/collector/component v1.62.0 h1:F1MHUlUEjSJgwcumsCbbH2rRmTK4dC8m/ipp9v4vFh0= +go.opentelemetry.io/collector/component v1.62.0/go.mod h1:NqdVWse4diWnlqh5WurI2KncJuBXe1zzYtxuC9Mmew0= +go.opentelemetry.io/collector/component/componenttest v0.156.0 h1:IV7xYP57kkKoBk7o9dYvToeotZ369A6/V+QIlLgnsEc= +go.opentelemetry.io/collector/component/componenttest v0.156.0/go.mod h1:YL7ByaKwuSuB+eBtm56awLXFlKJ7KI6jfrsjZd0uv8Y= +go.opentelemetry.io/collector/consumer v1.62.0 h1:nJzGs8soiciZvGhiA4OYwPRRCrTsXnNHrmzi/jaT3ck= +go.opentelemetry.io/collector/consumer v1.62.0/go.mod h1:uNbRHJ9LqgHxcWdLTvRTO4K3SSGZop1qlHKfV5lUvGg= +go.opentelemetry.io/collector/consumer/consumererror v0.156.0 h1:cbP/TPvhmWYmu9OQWYfMJQWhUjy9QJW7nwI4ndDMKcA= +go.opentelemetry.io/collector/consumer/consumererror v0.156.0/go.mod h1:vCs2p3dVyx1cSiZPi8zxr6FvspEPhJ0vw5QqqEj6EaY= +go.opentelemetry.io/collector/consumer/consumertest v0.156.0 h1:hQcocbgZHL/ebRjO7VzXmHv0sYLzg6dl8vGn3BNxukg= +go.opentelemetry.io/collector/consumer/consumertest v0.156.0/go.mod h1:R/OttdDWuo4Hz80AFBop6VA79Rd/Pk9HROUWySSwiGc= +go.opentelemetry.io/collector/consumer/xconsumer v0.156.0 h1:XRkLqtyWnc1CVzAFdMDfmozKhrrqe/WW0ldzNALce7U= +go.opentelemetry.io/collector/consumer/xconsumer v0.156.0/go.mod h1:noYZwt6zId25ebyGRJfWSs4TfFV8RkUJeNyCoE0YaEU= +go.opentelemetry.io/collector/featuregate v1.62.0 h1:pYY7RlulSCTOS9mFWxasMLwYJCfNXHtnOkZlv3jg/V4= +go.opentelemetry.io/collector/featuregate v1.62.0/go.mod h1:4ga1QBMPEejXXmpyJS8lmaRpknJ3Lb9Bvk6e420bUFU= +go.opentelemetry.io/collector/internal/componentalias v0.156.0 h1:Ku9pTxb4imQME35PoR0mzXv+v3jLtbGxRT0PiH4j034= +go.opentelemetry.io/collector/internal/componentalias v0.156.0/go.mod h1:1YJUCQ6Her24ZhJnYgKSuov7AaFB1jEPawvEAjrp1ms= +go.opentelemetry.io/collector/internal/testutil v0.156.0 h1:Nu02vhHA2UQ3Yjyjisk3N24HHxwvw7PQiTz9O1PuiUY= +go.opentelemetry.io/collector/internal/testutil v0.156.0/go.mod h1:Jkjs6rkqs973LqgZ0Fe3zrokQRKULYXPIf4HuqStiEE= +go.opentelemetry.io/collector/pdata v1.62.0 h1:xGdwl2Cs5Rq5nKs0nYvAxm3Qq20HcySVAmUElATS8Es= +go.opentelemetry.io/collector/pdata v1.62.0/go.mod h1:WFy5R6XGpz2Q4MaekeEm+qc4GY5V3+BhQIwGPkp+fj0= +go.opentelemetry.io/collector/pdata/pprofile v0.156.0 h1:TnQzA2d5iMGH5//mGLqPjwdYqsFD/A7o2WgDdppxdVM= +go.opentelemetry.io/collector/pdata/pprofile v0.156.0/go.mod h1:3dtjs/mliblJJCCTXUE0AkpBNfBEybPruj3ml6WCOoI= +go.opentelemetry.io/collector/pdata/testdata v0.156.0 h1:0+0YZYap+zHwx4c3TrgvWGbODlErrFXpUsT+RsyGmoQ= +go.opentelemetry.io/collector/pdata/testdata v0.156.0/go.mod h1:7amnd10hSandpk/VHGBJ9vMR59PnKh2ngwbtFLKezi4= +go.opentelemetry.io/collector/pdata/xpdata v0.156.0 h1:p5eRg+/kJduIzXUDyCM1tMiYomV5Yz0JzG30t7iwi4w= +go.opentelemetry.io/collector/pdata/xpdata v0.156.0/go.mod h1:cs5rPBIE1du6CSJIUIqDYRRGzfuV4kyURKEMQHnu+zQ= +go.opentelemetry.io/collector/pipeline v1.62.0 h1:+fFaLegFsMPhBl6oHauS09qOoKWgtufjM3g9i/wXZ44= +go.opentelemetry.io/collector/pipeline v1.62.0/go.mod h1:RD90NG3Jbk965Xaqym3JyHkuol4uZJjQVUkD9ddXJIs= +go.opentelemetry.io/collector/receiver v1.62.0 h1:hBjVSZTLrY5IXgcI8SQyDE2D/15vivQrIiaIvi8Yri0= +go.opentelemetry.io/collector/receiver v1.62.0/go.mod h1:Sao2WTwFxmX563Q/CIEXzU6cql+rCQ1NCwG2IALtBrg= +go.opentelemetry.io/collector/receiver/receivertest v0.156.0 h1:7Z+8tXDZv11Qfaf/DmWxaCpUAdjWrwRtd9xttMjNZko= +go.opentelemetry.io/collector/receiver/receivertest v0.156.0/go.mod h1:qRWqCgqOSglqCaMqlmAiryXtWOktPbHjm8VQggbUgq8= +go.opentelemetry.io/collector/receiver/xreceiver v0.156.0 h1:f8YN4oLLoXa1pNyrSDu316JOEUkG4bhtYQMuU08Xyf0= +go.opentelemetry.io/collector/receiver/xreceiver v0.156.0/go.mod h1:ywkZIgtGTiLm0KBbhL1lRrxu5iytUeAhsstd0IyuG+w= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.69.0 h1:8tvICD4vSTOOsNrsI4Ljf6C+6UKvpTEH5XY3JMoyPoo= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.69.0/go.mod h1:z9+yiacE0IHRqM4qFfkbt/JYlmYXgss8GY/jXoNuPJI= +go.opentelemetry.io/otel v1.44.1-0.20260622141720-fbe3d073ba93 h1:r3rusw/U3IyJ0+r6xWXv1VF8TTUGVIAnK8tuzf/8Re0= +go.opentelemetry.io/otel v1.44.1-0.20260622141720-fbe3d073ba93/go.mod h1:BMgjTHL9WPRlRjL2oZCBTL4whCGtXch2H4BhOPIAyYc= +go.opentelemetry.io/otel/metric v1.44.1-0.20260622141720-fbe3d073ba93 h1:DCOdBzLW6tMYSutG82cKWgIX9JWNFixROrcgKm7Dn+Q= +go.opentelemetry.io/otel/metric v1.44.1-0.20260622141720-fbe3d073ba93/go.mod h1:8O7hanEPBNgEMmybD3s2VBKcgWOCsA6tzHBPODAiquo= +go.opentelemetry.io/otel/metric/x v0.66.0 h1:YkCrx1zLOChi9ZcZ6euupOcsgzbVlec7D/xoEU1+cTA= +go.opentelemetry.io/otel/metric/x v0.66.0/go.mod h1:d1+BDj9t96do0/1LoU1ayfCv79ZgNE41qbhBvnMOBZk= +go.opentelemetry.io/otel/sdk v1.44.0 h1:nHYwb9lK+fJPU/dnT6s7W7Z8itMWyqrnVfbheVYrZ58= +go.opentelemetry.io/otel/sdk v1.44.0/go.mod h1:Osuydd3Se74nqjAKxid74N5eC+jfEqfTegHRnq58oK0= +go.opentelemetry.io/otel/sdk/metric v1.44.1-0.20260622141720-fbe3d073ba93 h1:BoVal+uHGOzlFZvHGq8bNR677inewlKioUjJPdPPCBE= +go.opentelemetry.io/otel/sdk/metric v1.44.1-0.20260622141720-fbe3d073ba93/go.mod h1:xZjeGP2g1Hxokmw5N6WDyiJb4OOKitlYGqGiwgu4CjM= +go.opentelemetry.io/otel/trace v1.44.1-0.20260622141720-fbe3d073ba93 h1:dNiK0YMSSGzwwgfNXkgBGmy33HyfUXNqKu9wBPafZhw= +go.opentelemetry.io/otel/trace v1.44.1-0.20260622141720-fbe3d073ba93/go.mod h1:oLl1jrMQAVo6v3GAggN+1VH9VIz9iUSvW53sW1Q8PIE= +go.opentelemetry.io/proto/slim/otlp v1.10.0 h1:iR97Vs/ZDR+y9TfuP9b1XBtdPWeC+OMslIBmhcLU7jM= +go.opentelemetry.io/proto/slim/otlp v1.10.0/go.mod h1:lV9250stpjYLPNA5viFabIgP2QlUGRT1GdTgAf8SIUk= +go.opentelemetry.io/proto/slim/otlp/collector/profiles/v1development v0.3.0 h1:RUF5rO0hAlgiJt1fzQVzcVs3vZVNHIcMLgOgG4rWNcQ= +go.opentelemetry.io/proto/slim/otlp/collector/profiles/v1development v0.3.0/go.mod h1:I89cynRj8y+383o7tEQVg2SVA6SRgDVIouWPUVXjx0U= +go.opentelemetry.io/proto/slim/otlp/profiles/v1development v0.3.0 h1:CQvJSldHRUN6Z8jsUeYv8J0lXRvygALXIzsmAeCcZE0= +go.opentelemetry.io/proto/slim/otlp/profiles/v1development v0.3.0/go.mod h1:xSQ+mEfJe/GjK1LXEyVOoSI1N9JV9ZI923X5kup43W4= +go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= +go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= +go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= +go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= +go.uber.org/zap v1.28.0 h1:IZzaP1Fv73/T/pBMLk4VutPl36uNC+OSUh3JLG3FIjo= +go.uber.org/zap v1.28.0/go.mod h1:rDLpOi171uODNm/mxFcuYWxDsqWSAVkFdX4XojSKg/Q= +go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= +go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= +golang.org/x/crypto v0.54.0 h1:YLIA59K4fiNzHzjnZt2tUJQjQtUWfWbeHBqKtk3eScw= +golang.org/x/crypto v0.54.0/go.mod h1:KWL8ny2AZdGR2cWmzeHrp2azQPGogOv+HeQaVEXC2dk= +golang.org/x/net v0.56.0 h1:Rw8j/hFzGvJUZwNBXnAtf5sVDVt+65SK2C7IxCxZt5o= +golang.org/x/net v0.56.0/go.mod h1:D3Ku6r+V6JROoZK144D2XfMHFcMq/0zSfLelVTCFKec= +golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.47.0 h1:o7XGOvZQCADBQQ4Y7VNq2dRWQR7JmOUW8Kxx4ZsNgWs= +golang.org/x/sys v0.47.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/term v0.45.0 h1:NwWyBmoJCbfTHpxrWoZ9C6/VxOf7ic219I8xZZFdrf0= +golang.org/x/term v0.45.0/go.mod h1:9aqxs0blBcrm/n0L9QW0aRVD+ktan8ssZromtqJC43w= +golang.org/x/text v0.40.0 h1:Ub2Z6/xjgF1WrYQz2nuITOEegKFtiIy+rieRJ5lHZKs= +golang.org/x/text v0.40.0/go.mod h1:hpnzDAfGV753zIKo+wk3u1bVKCGPbrnF7+7LBF/UHVY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260618152121-87f3d3e198d3 h1:phvBWCAQMGN1945mp5fjCXP6jEF0+a0+4TjokS4sxNY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260618152121-87f3d3e198d3/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= +google.golang.org/grpc v1.82.0 h1:vguDnZUPjE26w09A63VoxZPnvPjB5Riyc0mkXPFmAIU= +google.golang.org/grpc v1.82.0/go.mod h1:yzTZ1TB1Z3SG+LIYaI+WiE8D5+PZ3ArnrSp8zF3+/ZA= +google.golang.org/protobuf v1.36.12-0.20260116114154-8c4c4ae446ca h1:/ro7D0tSP+jEnQPzy9e1r5L6mAcEShGlE5kFsShX5O8= +google.golang.org/protobuf v1.36.12-0.20260116114154-8c4c4ae446ca/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q= +gotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA= +pgregory.net/rapid v1.3.0 h1:vBvO0VSqti75J1jjYqpgPNBLKMd1+gxa9fYo7vk/Exc= +pgregory.net/rapid v1.3.0/go.mod h1:dPlE4OBBxgXPqkP79flB6sJL1dx5azpI7HQ9MY9Z7uk= diff --git a/otel-patches/coreinternal/goldendataset/BUILD.bazel b/otel-patches/coreinternal/goldendataset/BUILD.bazel new file mode 100644 index 000000000000..8de1c7bd51f3 --- /dev/null +++ b/otel-patches/coreinternal/goldendataset/BUILD.bazel @@ -0,0 +1,58 @@ +load("@@rules_go+//go:def.bzl", "go_library", "go_test") + +go_library( + name = "goldendataset", + srcs = [ + "generator_commons.go", + "metrics_gen.go", + "pict_metrics_gen.go", + "pict_metrics_input_defs.go", + "pict_tracing_input_defs.go", + "resource_generator.go", + "span_generator.go", + "traces_generator.go", + ], + importpath = "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/goldendataset", # keep + visibility = ["//visibility:public"], + deps = [ + "@@gazelle++go_deps+com_github_open_telemetry_opentelemetry_collector_contrib_internal_coreinternal//internal/metadata", + "@io_opentelemetry_go_collector_pdata//pcommon", + "@io_opentelemetry_go_collector_pdata//pmetric", + "@io_opentelemetry_go_collector_pdata//ptrace", + "@io_opentelemetry_go_otel//semconv/v1.16.0:v1_16_0", + "@io_opentelemetry_go_otel//semconv/v1.18.0:v1_18_0", + "@io_opentelemetry_go_otel//semconv/v1.19.0:v1_19_0", + "@io_opentelemetry_go_otel//semconv/v1.20.0:v1_20_0", + "@io_opentelemetry_go_otel//semconv/v1.21.0:v1_21_0", + "@io_opentelemetry_go_otel//semconv/v1.25.0:v1_25_0", + "@io_opentelemetry_go_otel//semconv/v1.26.0:v1_26_0", + "@io_opentelemetry_go_otel//semconv/v1.28.0:v1_28_0", + "@io_opentelemetry_go_otel//semconv/v1.38.0:v1_38_0", + "@io_opentelemetry_go_otel//semconv/v1.40.0:v1_40_0", + ], # keep +) + +go_test( + name = "goldendataset_test", + srcs = [ + "metrics_gen_test.go", + "package_test.go", + "pict_metrics_gen_test.go", + "resource_generator_test.go", + "span_generator_test.go", + "traces_generator_test.go", + ], + data = glob(["testdata/**"]), + embed = [":goldendataset"], + gotags = ["test"], + deps = [ + "@@gazelle++go_deps+com_github_open_telemetry_opentelemetry_collector_contrib_internal_coreinternal//internal/metadata", + "@com_github_stretchr_testify//assert", + "@com_github_stretchr_testify//require", + "@io_opentelemetry_go_collector_featuregate//:featuregate", + "@io_opentelemetry_go_collector_pdata//pcommon", + "@io_opentelemetry_go_collector_pdata//pmetric", + "@io_opentelemetry_go_collector_pdata//ptrace", + "@org_uber_go_goleak//:goleak", + ], # keep +) diff --git a/otel-patches/coreinternal/goldendataset/generator_commons.go b/otel-patches/coreinternal/goldendataset/generator_commons.go new file mode 100644 index 000000000000..3685d5dbda01 --- /dev/null +++ b/otel-patches/coreinternal/goldendataset/generator_commons.go @@ -0,0 +1,28 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package goldendataset // import "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/goldendataset" + +import ( + "encoding/csv" + "os" + "path/filepath" +) + +func loadPictOutputFile(fileName string) ([][]string, error) { + file, err := os.Open(filepath.Clean(fileName)) + if err != nil { + return nil, err + } + defer func() { + cerr := file.Close() + if err == nil { + err = cerr + } + }() + + reader := csv.NewReader(file) + reader.Comma = '\t' + + return reader.ReadAll() +} diff --git a/otel-patches/coreinternal/goldendataset/metrics_gen.go b/otel-patches/coreinternal/goldendataset/metrics_gen.go new file mode 100644 index 000000000000..4a7e249e6cb3 --- /dev/null +++ b/otel-patches/coreinternal/goldendataset/metrics_gen.go @@ -0,0 +1,230 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package goldendataset // import "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/goldendataset" + +import ( + "fmt" + + "go.opentelemetry.io/collector/pdata/pcommon" + "go.opentelemetry.io/collector/pdata/pmetric" +) + +// Simple utilities for generating metrics for testing + +// MetricsCfg holds parameters for generating dummy metrics for testing. Set values on this struct to generate +// metrics with the corresponding number/type of attributes and pass into MetricsFromCfg to generate metrics. +type MetricsCfg struct { + // The type of metric to generate + MetricDescriptorType pmetric.MetricType + // MetricValueType is the type of the numeric value: int or double. + MetricValueType pmetric.NumberDataPointValueType + // If MetricDescriptorType is one of the Sum, this describes if the sum is monotonic or not. + IsMonotonicSum bool + // A prefix for every metric name + MetricNamePrefix string + // The number of instrumentation library metrics per resource + NumILMPerResource int + // The size of the MetricSlice and number of Metrics + NumMetricsPerILM int + // The number of labels on the LabelsMap associated with each point + NumPtLabels int + // The number of points to generate per Metric + NumPtsPerMetric int + // The number of Attributes to insert into each Resource's AttributesMap + NumResourceAttrs int + // The number of ResourceMetrics for the single MetricData generated + NumResourceMetrics int + // The base value for each point + PtVal int + // The start time for each point + StartTime uint64 + // The duration of the steps between each generated point starting at StartTime + StepSize uint64 +} + +// DefaultCfg produces a MetricsCfg with default values. These should be good enough to produce sane +// (but boring) metrics, and can be used as a starting point for making alterations. +func DefaultCfg() MetricsCfg { + return MetricsCfg{ + MetricDescriptorType: pmetric.MetricTypeGauge, + MetricValueType: pmetric.NumberDataPointValueTypeInt, + MetricNamePrefix: "", + NumILMPerResource: 1, + NumMetricsPerILM: 1, + NumPtLabels: 1, + NumPtsPerMetric: 1, + NumResourceAttrs: 1, + NumResourceMetrics: 1, + PtVal: 1, + StartTime: 940000000000000000, + StepSize: 42, + } +} + +// MetricsFromCfg produces pmetric.Metrics with the passed-in config. +func MetricsFromCfg(cfg MetricsCfg) pmetric.Metrics { + mg := newMetricGenerator() + return mg.genMetricFromCfg(cfg) +} + +type metricGenerator struct { + metricID int +} + +func newMetricGenerator() metricGenerator { + return metricGenerator{} +} + +func (g *metricGenerator) genMetricFromCfg(cfg MetricsCfg) pmetric.Metrics { + md := pmetric.NewMetrics() + rms := md.ResourceMetrics() + rms.EnsureCapacity(cfg.NumResourceMetrics) + for i := 0; i < cfg.NumResourceMetrics; i++ { + rm := rms.AppendEmpty() + resource := rm.Resource() + for j := 0; j < cfg.NumResourceAttrs; j++ { + resource.Attributes().PutStr( + fmt.Sprintf("resource-attr-name-%d", j), + fmt.Sprintf("resource-attr-val-%d", j), + ) + } + g.populateIlm(cfg, rm) + } + return md +} + +func (g *metricGenerator) populateIlm(cfg MetricsCfg, rm pmetric.ResourceMetrics) { + ilms := rm.ScopeMetrics() + ilms.EnsureCapacity(cfg.NumILMPerResource) + for i := 0; i < cfg.NumILMPerResource; i++ { + ilm := ilms.AppendEmpty() + g.populateMetrics(cfg, ilm) + } +} + +func (g *metricGenerator) populateMetrics(cfg MetricsCfg, ilm pmetric.ScopeMetrics) { + metrics := ilm.Metrics() + metrics.EnsureCapacity(cfg.NumMetricsPerILM) + for i := 0; i < cfg.NumMetricsPerILM; i++ { + metric := metrics.AppendEmpty() + g.populateMetricDesc(cfg, metric) + //exhaustive:enforce + switch cfg.MetricDescriptorType { + case pmetric.MetricTypeGauge: + populateNumberPoints(cfg, metric.SetEmptyGauge().DataPoints()) + case pmetric.MetricTypeSum: + sum := metric.SetEmptySum() + sum.SetIsMonotonic(cfg.IsMonotonicSum) + sum.SetAggregationTemporality(pmetric.AggregationTemporalityCumulative) + populateNumberPoints(cfg, sum.DataPoints()) + case pmetric.MetricTypeHistogram: + histo := metric.SetEmptyHistogram() + histo.SetAggregationTemporality(pmetric.AggregationTemporalityCumulative) + populateDoubleHistogram(cfg, histo) + case pmetric.MetricTypeExponentialHistogram: + histo := metric.SetEmptyExponentialHistogram() + histo.SetAggregationTemporality(pmetric.AggregationTemporalityCumulative) + populateExpoHistogram(cfg, histo) + case pmetric.MetricTypeSummary: + panic("unsupported type summary") + } + } +} + +func (g *metricGenerator) populateMetricDesc(cfg MetricsCfg, metric pmetric.Metric) { + metric.SetName(fmt.Sprintf("%smetric_%d", cfg.MetricNamePrefix, g.metricID)) + g.metricID++ + metric.SetDescription("my-md-description") + metric.SetUnit("my-md-units") +} + +func populateNumberPoints(cfg MetricsCfg, pts pmetric.NumberDataPointSlice) { + pts.EnsureCapacity(cfg.NumPtsPerMetric) + for i := 0; i < cfg.NumPtsPerMetric; i++ { + pt := pts.AppendEmpty() + pt.SetStartTimestamp(pcommon.Timestamp(cfg.StartTime)) + pt.SetTimestamp(getTimestamp(cfg.StartTime, cfg.StepSize, i)) + switch cfg.MetricValueType { + case pmetric.NumberDataPointValueTypeInt: + pt.SetIntValue(int64(cfg.PtVal + i)) + case pmetric.NumberDataPointValueTypeDouble: + pt.SetDoubleValue(float64(cfg.PtVal + i)) + default: + panic("Should not happen") + } + populatePtAttributes(cfg, pt.Attributes()) + } +} + +func populateDoubleHistogram(cfg MetricsCfg, dh pmetric.Histogram) { + pts := dh.DataPoints() + pts.EnsureCapacity(cfg.NumPtsPerMetric) + for i := 0; i < cfg.NumPtsPerMetric; i++ { + pt := pts.AppendEmpty() + pt.SetStartTimestamp(pcommon.Timestamp(cfg.StartTime)) + ts := getTimestamp(cfg.StartTime, cfg.StepSize, i) + pt.SetTimestamp(ts) + populatePtAttributes(cfg, pt.Attributes()) + setDoubleHistogramBounds(pt, 1, 2, 3, 4, 5) + addDoubleHistogramVal(pt, 1) + for i := 0; i < cfg.PtVal; i++ { + addDoubleHistogramVal(pt, 3) + } + addDoubleHistogramVal(pt, 5) + } +} + +func setDoubleHistogramBounds(hdp pmetric.HistogramDataPoint, bounds ...float64) { + counts := make([]uint64, len(bounds)+1) + hdp.BucketCounts().FromRaw(counts) + hdp.ExplicitBounds().FromRaw(bounds) +} + +func addDoubleHistogramVal(hdp pmetric.HistogramDataPoint, val float64) { + hdp.SetCount(hdp.Count() + 1) + hdp.SetSum(hdp.Sum() + val) + // TODO: HasSum, Min, HasMin, Max, HasMax are not covered in tests. + buckets := hdp.BucketCounts() + bounds := hdp.ExplicitBounds() + for i := 0; i < bounds.Len(); i++ { + bound := bounds.At(i) + if val <= bound { + buckets.SetAt(i, buckets.At(i)+1) + break + } + } +} + +func populatePtAttributes(cfg MetricsCfg, lm pcommon.Map) { + for i := 0; i < cfg.NumPtLabels; i++ { + k := fmt.Sprintf("pt-label-key-%d", i) + v := fmt.Sprintf("pt-label-val-%d", i) + lm.PutStr(k, v) + } +} + +func getTimestamp(startTime, stepSize uint64, i int) pcommon.Timestamp { + return pcommon.Timestamp(startTime + (stepSize * uint64(i+1))) +} + +func populateExpoHistogram(cfg MetricsCfg, dh pmetric.ExponentialHistogram) { + pts := dh.DataPoints() + pts.EnsureCapacity(cfg.NumPtsPerMetric) + for i := 0; i < cfg.NumPtsPerMetric; i++ { + pt := pts.AppendEmpty() + pt.SetStartTimestamp(pcommon.Timestamp(cfg.StartTime)) + ts := getTimestamp(cfg.StartTime, cfg.StepSize, i) + pt.SetTimestamp(ts) + populatePtAttributes(cfg, pt.Attributes()) + + pt.SetSum(100 * float64(cfg.PtVal)) + pt.SetCount(uint64(cfg.PtVal)) + pt.SetScale(int32(cfg.PtVal)) + pt.SetZeroCount(uint64(cfg.PtVal)) + pt.SetMin(float64(cfg.PtVal)) + pt.SetMax(float64(cfg.PtVal)) + pt.Positive().SetOffset(int32(cfg.PtVal)) + pt.Positive().BucketCounts().FromRaw([]uint64{uint64(cfg.PtVal)}) + } +} diff --git a/otel-patches/coreinternal/goldendataset/metrics_gen_test.go b/otel-patches/coreinternal/goldendataset/metrics_gen_test.go new file mode 100644 index 000000000000..9b78c6615829 --- /dev/null +++ b/otel-patches/coreinternal/goldendataset/metrics_gen_test.go @@ -0,0 +1,95 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package goldendataset + +import ( + "testing" + + "github.com/stretchr/testify/require" + "go.opentelemetry.io/collector/pdata/pmetric" +) + +func TestGenDefault(t *testing.T) { + md := MetricsFromCfg(DefaultCfg()) + require.Equal(t, 1, md.MetricCount()) + require.Equal(t, 1, md.DataPointCount()) + rms := md.ResourceMetrics() + rm := rms.At(0) + resource := rm.Resource() + rattrs := resource.Attributes() + rattrs.Len() + require.Equal(t, 1, rattrs.Len()) + val, _ := rattrs.Get("resource-attr-name-0") + require.Equal(t, "resource-attr-val-0", val.Str()) + ilms := rm.ScopeMetrics() + require.Equal(t, 1, ilms.Len()) + ms := ilms.At(0).Metrics() + require.Equal(t, 1, ms.Len()) + pdm := ms.At(0) + require.Equal(t, "metric_0", pdm.Name()) + require.Equal(t, "my-md-description", pdm.Description()) + require.Equal(t, "my-md-units", pdm.Unit()) + + require.Equal(t, pmetric.MetricTypeGauge, pdm.Type()) + pts := pdm.Gauge().DataPoints() + require.Equal(t, 1, pts.Len()) + pt := pts.At(0) + + require.Equal(t, 1, pt.Attributes().Len()) + ptAttributes, _ := pt.Attributes().Get("pt-label-key-0") + require.Equal(t, "pt-label-val-0", ptAttributes.Str()) + + require.EqualValues(t, 940000000000000000, pt.StartTimestamp()) + require.EqualValues(t, 940000000000000042, pt.Timestamp()) + require.EqualValues(t, 1, pt.IntValue()) +} + +func TestDoubleHistogramFunctions(t *testing.T) { + pt := pmetric.NewHistogramDataPoint() + setDoubleHistogramBounds(pt, 1, 2, 3, 4, 5) + require.Equal(t, 5, pt.ExplicitBounds().Len()) + require.Equal(t, 6, pt.BucketCounts().Len()) + + addDoubleHistogramVal(pt, 1) + require.EqualValues(t, 1, pt.Count()) + require.EqualValues(t, 1, pt.Sum()) + require.EqualValues(t, 1, pt.BucketCounts().At(0)) + + addDoubleHistogramVal(pt, 2) + require.EqualValues(t, 2, pt.Count()) + require.EqualValues(t, 3, pt.Sum()) + require.EqualValues(t, 1, pt.BucketCounts().At(1)) + + addDoubleHistogramVal(pt, 2) + require.EqualValues(t, 3, pt.Count()) + require.EqualValues(t, 5, pt.Sum()) + require.EqualValues(t, 2, pt.BucketCounts().At(1)) +} + +func TestGenDoubleHistogram(t *testing.T) { + cfg := DefaultCfg() + cfg.MetricDescriptorType = pmetric.MetricTypeHistogram + cfg.PtVal = 2 + md := MetricsFromCfg(cfg) + pts := getMetric(md).Histogram().DataPoints() + pt := pts.At(0) + buckets := pt.BucketCounts() + require.Equal(t, 6, buckets.Len()) + require.EqualValues(t, 2, buckets.At(2)) +} + +func TestGenDoubleGauge(t *testing.T) { + cfg := DefaultCfg() + cfg.MetricDescriptorType = pmetric.MetricTypeGauge + md := MetricsFromCfg(cfg) + metric := getMetric(md) + pts := metric.Gauge().DataPoints() + require.Equal(t, 1, pts.Len()) + pt := pts.At(0) + require.EqualValues(t, float64(1), pt.IntValue()) +} + +func getMetric(md pmetric.Metrics) pmetric.Metric { + return md.ResourceMetrics().At(0).ScopeMetrics().At(0).Metrics().At(0) +} diff --git a/otel-patches/coreinternal/goldendataset/package_test.go b/otel-patches/coreinternal/goldendataset/package_test.go new file mode 100644 index 000000000000..f480d2f0e611 --- /dev/null +++ b/otel-patches/coreinternal/goldendataset/package_test.go @@ -0,0 +1,14 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package goldendataset + +import ( + "testing" + + "go.uber.org/goleak" +) + +func TestMain(m *testing.M) { + goleak.VerifyTestMain(m) +} diff --git a/otel-patches/coreinternal/goldendataset/pict_metrics_gen.go b/otel-patches/coreinternal/goldendataset/pict_metrics_gen.go new file mode 100644 index 000000000000..c23db493264b --- /dev/null +++ b/otel-patches/coreinternal/goldendataset/pict_metrics_gen.go @@ -0,0 +1,97 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package goldendataset // import "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/goldendataset" + +import ( + "fmt" + + "go.opentelemetry.io/collector/pdata/pmetric" +) + +// GenerateMetrics takes the filename of a PICT-generated file, walks through all of the rows in the PICT +// file and for each row, generates a MetricData object, collecting them and returning them to the caller. +func GenerateMetrics(metricPairsFile string) ([]pmetric.Metrics, error) { + pictData, err := loadPictOutputFile(metricPairsFile) + if err != nil { + return nil, err + } + out := make([]pmetric.Metrics, 0, len(pictData)) + for i, values := range pictData { + if i == 0 { + continue + } + metricInputs := PICTMetricInputs{ + NumPtsPerMetric: PICTNumPtsPerMetric(values[0]), + MetricType: PICTMetricType(values[1]), + NumPtLabels: PICTNumPtLabels(values[2]), + } + cfg := pictToCfg(metricInputs) + cfg.MetricNamePrefix = fmt.Sprintf("pict_%d_", i) + md := MetricsFromCfg(cfg) + out = append(out, md) + } + return out, nil +} + +func pictToCfg(inputs PICTMetricInputs) MetricsCfg { + cfg := DefaultCfg() + switch inputs.NumResourceAttrs { + case AttrsNone: + cfg.NumResourceAttrs = 0 + case AttrsOne: + cfg.NumResourceAttrs = 1 + case AttrsTwo: + cfg.NumResourceAttrs = 2 + } + + switch inputs.NumPtsPerMetric { + case NumPtsPerMetricOne: + cfg.NumPtsPerMetric = 1 + case NumPtsPerMetricMany: + cfg.NumPtsPerMetric = 16 + } + + switch inputs.MetricType { + case MetricTypeIntGauge: + cfg.MetricDescriptorType = pmetric.MetricTypeGauge + cfg.MetricValueType = pmetric.NumberDataPointValueTypeInt + case MetricTypeMonotonicIntSum: + cfg.MetricDescriptorType = pmetric.MetricTypeSum + cfg.MetricValueType = pmetric.NumberDataPointValueTypeInt + cfg.IsMonotonicSum = true + case MetricTypeNonMonotonicIntSum: + cfg.MetricDescriptorType = pmetric.MetricTypeSum + cfg.MetricValueType = pmetric.NumberDataPointValueTypeInt + cfg.IsMonotonicSum = false + case MetricTypeDoubleGauge: + cfg.MetricDescriptorType = pmetric.MetricTypeGauge + cfg.MetricValueType = pmetric.NumberDataPointValueTypeDouble + case MetricTypeMonotonicDoubleSum: + cfg.MetricDescriptorType = pmetric.MetricTypeSum + cfg.MetricValueType = pmetric.NumberDataPointValueTypeDouble + cfg.IsMonotonicSum = true + case MetricTypeNonMonotonicDoubleSum: + cfg.MetricDescriptorType = pmetric.MetricTypeSum + cfg.MetricValueType = pmetric.NumberDataPointValueTypeDouble + cfg.IsMonotonicSum = false + case MetricTypeDoubleExemplarsHistogram: + cfg.MetricDescriptorType = pmetric.MetricTypeHistogram + cfg.MetricValueType = pmetric.NumberDataPointValueTypeEmpty + case MetricTypeIntExemplarsHistogram: + cfg.MetricDescriptorType = pmetric.MetricTypeHistogram + cfg.MetricValueType = pmetric.NumberDataPointValueTypeEmpty + default: + panic("Should not happen, unsupported type " + string(inputs.MetricType)) + } + + switch inputs.NumPtLabels { + case LabelsNone: + cfg.NumPtLabels = 0 + case LabelsOne: + cfg.NumPtLabels = 1 + case LabelsMany: + cfg.NumPtLabels = 16 + } + return cfg +} diff --git a/otel-patches/coreinternal/goldendataset/pict_metrics_gen_test.go b/otel-patches/coreinternal/goldendataset/pict_metrics_gen_test.go new file mode 100644 index 000000000000..47ec630fd535 --- /dev/null +++ b/otel-patches/coreinternal/goldendataset/pict_metrics_gen_test.go @@ -0,0 +1,85 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package goldendataset + +import ( + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "go.opentelemetry.io/collector/pdata/pmetric" +) + +func TestGenerateMetricDatas(t *testing.T) { + mds, err := GenerateMetrics("testdata/generated_pict_pairs_metrics.txt") + require.NoError(t, err) + require.Len(t, mds, 25) +} + +func TestPICTtoCfg(t *testing.T) { + tests := []struct { + name string + inputs PICTMetricInputs + cfg MetricsCfg + }{ + { + name: "none", + inputs: PICTMetricInputs{ + NumResourceAttrs: AttrsNone, + NumPtsPerMetric: NumPtsPerMetricOne, + MetricType: MetricTypeIntGauge, + NumPtLabels: LabelsNone, + }, + cfg: MetricsCfg{ + NumResourceAttrs: 0, + NumPtsPerMetric: 1, + MetricDescriptorType: pmetric.MetricTypeGauge, + MetricValueType: pmetric.NumberDataPointValueTypeInt, + NumPtLabels: 0, + }, + }, + { + name: "one", + inputs: PICTMetricInputs{ + NumResourceAttrs: AttrsOne, + NumPtsPerMetric: NumPtsPerMetricOne, + MetricType: MetricTypeDoubleGauge, + NumPtLabels: LabelsOne, + }, + cfg: MetricsCfg{ + NumResourceAttrs: 1, + NumPtsPerMetric: 1, + MetricDescriptorType: pmetric.MetricTypeGauge, + MetricValueType: pmetric.NumberDataPointValueTypeDouble, + NumPtLabels: 1, + }, + }, + { + name: "many", + inputs: PICTMetricInputs{ + NumResourceAttrs: AttrsTwo, + NumPtsPerMetric: NumPtsPerMetricMany, + MetricType: MetricTypeDoubleExemplarsHistogram, + NumPtLabels: LabelsMany, + }, + cfg: MetricsCfg{ + NumResourceAttrs: 2, + NumPtsPerMetric: 16, + MetricDescriptorType: pmetric.MetricTypeHistogram, + NumPtLabels: 16, + }, + }, + } + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + actual := pictToCfg(test.inputs) + expected := test.cfg + assert.Equal(t, expected.NumResourceAttrs, actual.NumResourceAttrs) + assert.Equal(t, expected.NumPtsPerMetric, actual.NumPtsPerMetric) + assert.Equal(t, expected.MetricDescriptorType, actual.MetricDescriptorType) + assert.Equal(t, expected.MetricValueType, actual.MetricValueType) + assert.Equal(t, expected.NumPtLabels, actual.NumPtLabels) + }) + } +} diff --git a/otel-patches/coreinternal/goldendataset/pict_metrics_input_defs.go b/otel-patches/coreinternal/goldendataset/pict_metrics_input_defs.go new file mode 100644 index 000000000000..60495de460a2 --- /dev/null +++ b/otel-patches/coreinternal/goldendataset/pict_metrics_input_defs.go @@ -0,0 +1,58 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package goldendataset // import "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/goldendataset" + +// Start of PICT inputs for generating golden dataset metrics (pict_input_metrics.txt) + +// PICTMetricInputs defines one pairwise combination of MetricData variations +type PICTMetricInputs struct { + // Specifies the number of points on each metric. + NumPtsPerMetric PICTNumPtsPerMetric + // Specifies the types of metrics that can be generated. + MetricType PICTMetricType + // Specifies the number of labels on each datapoint. + NumPtLabels PICTNumPtLabels + // Specifies the number of attributes on each resource. + NumResourceAttrs PICTNumResourceAttrs +} + +// PICTMetricType enumerates the types of metrics that can be generated. +type PICTMetricType string + +const ( + MetricTypeIntGauge PICTMetricType = "IntGauge" + MetricTypeMonotonicIntSum PICTMetricType = "MonotonicIntSum" + MetricTypeNonMonotonicIntSum PICTMetricType = "NonMonotonicIntSum" + MetricTypeDoubleGauge PICTMetricType = "DoubleGauge" + MetricTypeMonotonicDoubleSum PICTMetricType = "MonotonicDoubleSum" + MetricTypeNonMonotonicDoubleSum PICTMetricType = "NonMonotonicDoubleSum" + MetricTypeDoubleExemplarsHistogram PICTMetricType = "DoubleExemplarsHistogram" + MetricTypeIntExemplarsHistogram PICTMetricType = "IntExemplarsHistogram" +) + +// PICTNumPtLabels enumerates the number of labels on each datapoint. +type PICTNumPtLabels string + +const ( + LabelsNone PICTNumPtLabels = "NoLabels" + LabelsOne PICTNumPtLabels = "OneLabel" + LabelsMany PICTNumPtLabels = "ManyLabels" +) + +// PICTNumPtsPerMetric enum for the number of points on each metric. +type PICTNumPtsPerMetric string + +const ( + NumPtsPerMetricOne PICTNumPtsPerMetric = "OnePt" + NumPtsPerMetricMany PICTNumPtsPerMetric = "ManyPts" +) + +// PICTNumResourceAttrs enum for the number of attributes on each resource. +type PICTNumResourceAttrs string + +const ( + AttrsNone PICTNumResourceAttrs = "NoAttrs" + AttrsOne PICTNumResourceAttrs = "OneAttr" + AttrsTwo PICTNumResourceAttrs = "TwoAttrs" +) diff --git a/otel-patches/coreinternal/goldendataset/pict_tracing_input_defs.go b/otel-patches/coreinternal/goldendataset/pict_tracing_input_defs.go new file mode 100644 index 000000000000..6c7f5b79bb35 --- /dev/null +++ b/otel-patches/coreinternal/goldendataset/pict_tracing_input_defs.go @@ -0,0 +1,156 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package goldendataset // import "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/goldendataset" + +// Start of PICT inputs for generating golden dataset ResourceSpans (pict_input_traces.txt) + +// Input columns in pict_input_traces.txt +const ( + TracesColumnResource = 0 + TracesColumnInstrumentationLibrary = 1 + TracesColumnSpans = 2 +) + +// PICTInputResource enum for the supported types of resource instances that can be generated. +type PICTInputResource string + +const ( + ResourceEmpty PICTInputResource = "Empty" + ResourceVMOnPrem PICTInputResource = "VMOnPrem" + ResourceVMCloud PICTInputResource = "VMCloud" + ResourceK8sOnPrem PICTInputResource = "K8sOnPrem" + ResourceK8sCloud PICTInputResource = "K8sCloud" + ResourceFaas PICTInputResource = "Faas" + ResourceExec PICTInputResource = "Exec" +) + +// PICTInputInstrumentationLibrary enum for the number and kind of instrumentation library instances that can be generated. +type PICTInputInstrumentationLibrary string + +const ( + LibraryNone PICTInputInstrumentationLibrary = "None" + LibraryOne PICTInputInstrumentationLibrary = "One" + LibraryTwo PICTInputInstrumentationLibrary = "Two" +) + +// PICTInputSpans enum for the relative sizes of tracing spans that can be attached to an instrumentation library span instance. +type PICTInputSpans string + +const ( + LibrarySpansNone PICTInputSpans = "None" + LibrarySpansOne PICTInputSpans = "One" + LibrarySpansSeveral PICTInputSpans = "Several" + LibrarySpansAll PICTInputSpans = "All" +) + +// PICTTracingInputs defines one pairwise combination of ResourceSpans variations +type PICTTracingInputs struct { + // Specifies the category of attributes to populate the Resource field with + Resource PICTInputResource + // Specifies the number and library categories to populte the ScopeSpans field with + InstrumentationLibrary PICTInputInstrumentationLibrary + // Specifies the relative number of spans to populate the ScopeSpans' Spans field with + Spans PICTInputSpans +} + +// Start of PICT inputs for generating golden dataset Spans (pict_input_spans.txt) + +// Input columns in pict_input_spans.txt +const ( + SpansColumnParent = 0 + SpansColumnTracestate = 1 + SpansColumnKind = 2 + SpansColumnAttributes = 3 + SpansColumnEvents = 4 + SpansColumnLinks = 5 + SpansColumnStatus = 6 +) + +// PICTInputParent enum for the parent/child types of spans that can be generated. +type PICTInputParent string + +const ( + SpanParentRoot PICTInputParent = "Root" + SpanParentChild PICTInputParent = "Child" +) + +// PICTInputTracestate enum for the categories of tracestate values that can be generated for a span. +type PICTInputTracestate string + +const ( + TraceStateEmpty PICTInputTracestate = "Empty" + TraceStateOne PICTInputTracestate = "One" + TraceStateFour PICTInputTracestate = "Four" +) + +// PICTInputKind enum for the span kind values that can be set for a span. +type PICTInputKind string + +const ( + SpanKindUnspecified PICTInputKind = "Unspecified" + SpanKindInternal PICTInputKind = "Internal" + SpanKindServer PICTInputKind = "Server" + SpanKindClient PICTInputKind = "Client" + SpanKindProducer PICTInputKind = "Producer" + SpanKindConsumer PICTInputKind = "Consumer" +) + +// PICTInputAttributes enum for the categories of representative attributes a generated span can be populated with. +type PICTInputAttributes string + +const ( + SpanAttrEmpty PICTInputAttributes = "Empty" + SpanAttrDatabaseSQL PICTInputAttributes = "DatabaseSQL" + SpanAttrDatabaseNoSQL PICTInputAttributes = "DatabaseNoSQL" + SpanAttrFaaSDatasource PICTInputAttributes = "FaaSDatasource" + SpanAttrFaaSHTTP PICTInputAttributes = "FaaSHTTP" + SpanAttrFaaSPubSub PICTInputAttributes = "FaaSPubSub" + SpanAttrFaaSTimer PICTInputAttributes = "FaaSTimer" + SpanAttrFaaSOther PICTInputAttributes = "FaaSOther" + SpanAttrHTTPClient PICTInputAttributes = "HTTPClient" + SpanAttrHTTPServer PICTInputAttributes = "HTTPServer" + SpanAttrMessagingProducer PICTInputAttributes = "MessagingProducer" + SpanAttrMessagingConsumer PICTInputAttributes = "MessagingConsumer" + SpanAttrGRPCClient PICTInputAttributes = "gRPCClient" + SpanAttrGRPCServer PICTInputAttributes = "gRPCServer" + SpanAttrInternal PICTInputAttributes = "Internal" + SpanAttrMaxCount PICTInputAttributes = "MaxCount" +) + +// PICTInputSpanChild enum for the categories of events and/or links a generated span can be populated with. +type PICTInputSpanChild string + +const ( + SpanChildCountEmpty PICTInputSpanChild = "Empty" + SpanChildCountOne PICTInputSpanChild = "One" + SpanChildCountTwo PICTInputSpanChild = "Two" + SpanChildCountEight PICTInputSpanChild = "Eight" +) + +// PICTInputStatus enum for the status values a generated span can be populated with. +type PICTInputStatus string + +const ( + SpanStatusUnset PICTInputStatus = "Unset" + SpanStatusOk PICTInputStatus = "Ok" + SpanStatusError PICTInputStatus = "Error" +) + +// PICTSpanInputs defines one pairwise combination of Span variations +type PICTSpanInputs struct { + // Specifies whether the ParentSpanId field should be populated or not + Parent PICTInputParent + // Specifies the category of contents to populate the TraceState field with + Tracestate PICTInputTracestate + // Specifies the value to populate the Kind field with + Kind PICTInputKind + // Specifies the category of values to populate the Attributes field with + Attributes PICTInputAttributes + // Specifies the category of contents to populate the Events field with + Events PICTInputSpanChild + // Specifies the category of contents to populate the Links field with + Links PICTInputSpanChild + // Specifies the value to populate the Status field with + Status PICTInputStatus +} diff --git a/otel-patches/coreinternal/goldendataset/resource_generator.go b/otel-patches/coreinternal/goldendataset/resource_generator.go new file mode 100644 index 000000000000..91d2fd917125 --- /dev/null +++ b/otel-patches/coreinternal/goldendataset/resource_generator.go @@ -0,0 +1,118 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package goldendataset // import "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/goldendataset" + +import ( + "go.opentelemetry.io/collector/pdata/pcommon" + conventions "go.opentelemetry.io/otel/semconv/v1.18.0" +) + +// GenerateResource generates a PData Resource object with representative attributes for the +// underlying resource type specified by the rscID input parameter. +func GenerateResource(rscID PICTInputResource) pcommon.Resource { + resource := pcommon.NewResource() + switch rscID { + case ResourceEmpty: + break + case ResourceVMOnPrem: + appendOnpremVMAttributes(resource.Attributes()) + case ResourceVMCloud: + appendCloudVMAttributes(resource.Attributes()) + case ResourceK8sOnPrem: + appendOnpremK8sAttributes(resource.Attributes()) + case ResourceK8sCloud: + appendCloudK8sAttributes(resource.Attributes()) + case ResourceFaas: + appendFassAttributes(resource.Attributes()) + case ResourceExec: + appendExecAttributes(resource.Attributes()) + } + return resource +} + +func appendOnpremVMAttributes(attrMap pcommon.Map) { + attrMap.PutStr(string(conventions.ServiceNameKey), "customers") + attrMap.PutStr(string(conventions.ServiceNamespaceKey), "production") + attrMap.PutStr(string(conventions.ServiceVersionKey), "semver:0.7.3") + subMap := attrMap.PutEmptyMap(string(conventions.HostNameKey)) + subMap.PutStr("public", "tc-prod9.internal.example.com") + subMap.PutStr("internal", "172.18.36.18") + attrMap.PutStr(string(conventions.HostImageIDKey), "661ADFA6-E293-4870-9EFA-1AA052C49F18") + attrMap.PutStr(string(conventions.TelemetrySDKLanguageKey), conventions.TelemetrySDKLanguageJava.Value.AsString()) + attrMap.PutStr(string(conventions.TelemetrySDKNameKey), "opentelemetry") + attrMap.PutStr(string(conventions.TelemetrySDKVersionKey), "0.3.0") +} + +func appendCloudVMAttributes(attrMap pcommon.Map) { + attrMap.PutStr(string(conventions.ServiceNameKey), "shoppingcart") + attrMap.PutStr(string(conventions.ServiceNameKey), "customers") + attrMap.PutStr(string(conventions.ServiceNamespaceKey), "production") + attrMap.PutStr(string(conventions.ServiceVersionKey), "semver:0.7.3") + attrMap.PutStr(string(conventions.TelemetrySDKLanguageKey), conventions.TelemetrySDKLanguageJava.Value.AsString()) + attrMap.PutStr(string(conventions.TelemetrySDKNameKey), "opentelemetry") + attrMap.PutStr(string(conventions.TelemetrySDKVersionKey), "0.3.0") + attrMap.PutStr(string(conventions.HostIDKey), "57e8add1f79a454bae9fb1f7756a009a") + attrMap.PutStr(string(conventions.HostNameKey), "env-check") + attrMap.PutStr(string(conventions.HostImageIDKey), "5.3.0-1020-azure") + attrMap.PutStr(string(conventions.HostTypeKey), "B1ms") + attrMap.PutStr(string(conventions.CloudProviderKey), "azure") + attrMap.PutStr(string(conventions.CloudAccountIDKey), "2f5b8278-4b80-4930-a6bb-d86fc63a2534") + attrMap.PutStr(string(conventions.CloudRegionKey), "South Central US") +} + +func appendOnpremK8sAttributes(attrMap pcommon.Map) { + attrMap.PutStr(string(conventions.ContainerNameKey), "cert-manager") + attrMap.PutStr(string(conventions.ContainerImageNameKey), "quay.io/jetstack/cert-manager-controller") + attrMap.PutStr(string(conventions.ContainerImageTagKey), "v0.14.2") + attrMap.PutStr(string(conventions.K8SClusterNameKey), "docker-desktop") + attrMap.PutStr(string(conventions.K8SNamespaceNameKey), "cert-manager") + attrMap.PutStr(string(conventions.K8SDeploymentNameKey), "cm-1-cert-manager") + attrMap.PutStr(string(conventions.K8SPodNameKey), "cm-1-cert-manager-6448b4949b-t2jtd") + attrMap.PutStr(string(conventions.HostNameKey), "docker-desktop") +} + +func appendCloudK8sAttributes(attrMap pcommon.Map) { + attrMap.PutStr(string(conventions.ContainerNameKey), "otel-collector") + attrMap.PutStr(string(conventions.ContainerImageNameKey), "otel/opentelemetry-collector-contrib") + attrMap.PutStr(string(conventions.ContainerImageTagKey), "0.4.0") + attrMap.PutStr(string(conventions.K8SClusterNameKey), "erp-dev") + attrMap.PutStr(string(conventions.K8SNamespaceNameKey), "monitoring") + attrMap.PutStr(string(conventions.K8SDeploymentNameKey), "otel-collector") + attrMap.PutStr(string(conventions.K8SDeploymentUIDKey), "4D614B27-EDAF-409B-B631-6963D8F6FCD4") + attrMap.PutStr(string(conventions.K8SReplicaSetNameKey), "otel-collector-2983fd34") + attrMap.PutStr(string(conventions.K8SReplicaSetUIDKey), "EC7D59EF-D5B6-48B7-881E-DA6B7DD539B6") + attrMap.PutStr(string(conventions.K8SPodNameKey), "otel-collector-6484db5844-c6f9m") + attrMap.PutStr(string(conventions.K8SPodUIDKey), "FDFD941E-2A7A-4945-B601-88DD486161A4") + attrMap.PutStr(string(conventions.HostIDKey), "ec2e3fdaffa294348bdf355156b94cda") + attrMap.PutStr(string(conventions.HostNameKey), "10.99.118.157") + attrMap.PutStr(string(conventions.HostImageIDKey), "ami-011c865bf7da41a9d") + attrMap.PutStr(string(conventions.HostTypeKey), "m5.xlarge") + attrMap.PutStr(string(conventions.CloudProviderKey), "aws") + attrMap.PutStr(string(conventions.CloudAccountIDKey), "12345678901") + attrMap.PutStr(string(conventions.CloudRegionKey), "us-east-1") + attrMap.PutStr(string(conventions.CloudAvailabilityZoneKey), "us-east-1c") +} + +func appendFassAttributes(attrMap pcommon.Map) { + attrMap.PutStr(string(conventions.FaaSIDKey), "https://us-central1-dist-system-demo.cloudfunctions.net/env-vars-print") + attrMap.PutStr(string(conventions.FaaSNameKey), "env-vars-print") + attrMap.PutStr(string(conventions.FaaSVersionKey), "semver:1.0.0") + attrMap.PutStr(string(conventions.CloudProviderKey), "gcp") + attrMap.PutStr(string(conventions.CloudAccountIDKey), "opentelemetry") + attrMap.PutStr(string(conventions.CloudRegionKey), "us-central1") + attrMap.PutStr(string(conventions.CloudAvailabilityZoneKey), "us-central1-a") +} + +func appendExecAttributes(attrMap pcommon.Map) { + attrMap.PutStr(string(conventions.ProcessExecutableNameKey), "otelcol") + parts := attrMap.PutEmptySlice(string(conventions.ProcessCommandLineKey)) + parts.AppendEmpty().SetStr("otelcol") + parts.AppendEmpty().SetStr("--config=/etc/otel-collector-config.yaml") + attrMap.PutStr(string(conventions.ProcessExecutablePathKey), "/usr/local/bin/otelcol") + attrMap.PutInt(string(conventions.ProcessPIDKey), 2020) + attrMap.PutStr(string(conventions.ProcessOwnerKey), "otel") + attrMap.PutStr(string(conventions.OSTypeKey), "linux") + attrMap.PutStr(string(conventions.OSDescriptionKey), + "Linux ubuntu 5.4.0-42-generic #46-Ubuntu SMP Fri Jul 10 00:24:02 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux") +} diff --git a/otel-patches/coreinternal/goldendataset/resource_generator_test.go b/otel-patches/coreinternal/goldendataset/resource_generator_test.go new file mode 100644 index 000000000000..79474113c207 --- /dev/null +++ b/otel-patches/coreinternal/goldendataset/resource_generator_test.go @@ -0,0 +1,22 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package goldendataset + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestGenerateResource(t *testing.T) { + resourceIDs := []PICTInputResource{ResourceEmpty, ResourceVMOnPrem, ResourceVMCloud, ResourceK8sOnPrem, ResourceK8sCloud, ResourceFaas, ResourceExec} + for _, rscID := range resourceIDs { + rsc := GenerateResource(rscID) + if rscID == ResourceEmpty { + assert.Equal(t, 0, rsc.Attributes().Len()) + } else { + assert.Positive(t, rsc.Attributes().Len()) + } + } +} diff --git a/otel-patches/coreinternal/goldendataset/span_generator.go b/otel-patches/coreinternal/goldendataset/span_generator.go new file mode 100644 index 000000000000..01b41c2abf89 --- /dev/null +++ b/otel-patches/coreinternal/goldendataset/span_generator.go @@ -0,0 +1,610 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package goldendataset // import "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/goldendataset" + +import ( + "fmt" + "io" + "net/http" + "time" + + "go.opentelemetry.io/collector/pdata/pcommon" + "go.opentelemetry.io/collector/pdata/ptrace" + conventionsv116 "go.opentelemetry.io/otel/semconv/v1.16.0" + conventionsv118 "go.opentelemetry.io/otel/semconv/v1.18.0" + conventionsv119 "go.opentelemetry.io/otel/semconv/v1.19.0" + conventionsv120 "go.opentelemetry.io/otel/semconv/v1.20.0" + conventionsv121 "go.opentelemetry.io/otel/semconv/v1.21.0" + conventionsv125 "go.opentelemetry.io/otel/semconv/v1.25.0" + conventionsv126 "go.opentelemetry.io/otel/semconv/v1.26.0" + conventionsv128 "go.opentelemetry.io/otel/semconv/v1.28.0" + conventionsv138 "go.opentelemetry.io/otel/semconv/v1.38.0" + conventions "go.opentelemetry.io/otel/semconv/v1.40.0" + + "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/internal/metadata" +) + +var statusCodeMap = map[PICTInputStatus]ptrace.StatusCode{ + SpanStatusUnset: ptrace.StatusCodeUnset, + SpanStatusOk: ptrace.StatusCodeOk, + SpanStatusError: ptrace.StatusCodeError, +} + +var statusMsgMap = map[PICTInputStatus]string{ + SpanStatusUnset: "Unset", + SpanStatusOk: "Ok", + SpanStatusError: "Error", +} + +// appendSpans appends to the ptrace.SpanSlice objects the number of spans specified by the count input +// parameter. The random parameter injects the random number generator to use in generating IDs and other random values. +// Using a random number generator with the same seed value enables reproducible tests. +// +// If err is not nil, the spans slice will have nil values. +func appendSpans(count int, pictFile string, random io.Reader, spanList ptrace.SpanSlice) error { + pairsData, err := loadPictOutputFile(pictFile) + if err != nil { + return err + } + pairsTotal := len(pairsData) + index := 1 + var inputs []string + var spanInputs *PICTSpanInputs + var traceID pcommon.TraceID + var parentID pcommon.SpanID + for range count { + if index >= pairsTotal { + index = 1 + } + inputs = pairsData[index] + spanInputs = &PICTSpanInputs{ + Parent: PICTInputParent(inputs[SpansColumnParent]), + Tracestate: PICTInputTracestate(inputs[SpansColumnTracestate]), + Kind: PICTInputKind(inputs[SpansColumnKind]), + Attributes: PICTInputAttributes(inputs[SpansColumnAttributes]), + Events: PICTInputSpanChild(inputs[SpansColumnEvents]), + Links: PICTInputSpanChild(inputs[SpansColumnLinks]), + Status: PICTInputStatus(inputs[SpansColumnStatus]), + } + switch spanInputs.Parent { + case SpanParentRoot: + traceID = generateTraceID(random) + parentID = pcommon.SpanID([8]byte{}) + case SpanParentChild: + // use existing if available + if traceID.IsEmpty() { + traceID = generateTraceID(random) + } + if parentID.IsEmpty() { + parentID = generateSpanID(random) + } + } + spanName := generateSpanName(spanInputs) + fillSpan(traceID, parentID, spanName, spanInputs, random, spanList.AppendEmpty()) + index++ + } + return nil +} + +func generateSpanName(spanInputs *PICTSpanInputs) string { + return fmt.Sprintf("/%s/%s/%s/%s/%s/%s/%s", spanInputs.Parent, spanInputs.Tracestate, spanInputs.Kind, + spanInputs.Attributes, spanInputs.Events, spanInputs.Links, spanInputs.Status) +} + +// fillSpan generates a single ptrace.Span based on the input values provided. They are: +// +// traceID - the trace ID to use, should not be nil +// parentID - the parent span ID or nil if it is a root span +// spanName - the span name, should not be blank +// spanInputs - the pairwise combination of field value variations for this span +// random - the random number generator to use in generating ID values +// +// The generated span is returned. +func fillSpan(traceID pcommon.TraceID, parentID pcommon.SpanID, spanName string, spanInputs *PICTSpanInputs, random io.Reader, span ptrace.Span) { + endTime := time.Now().Add(-50 * time.Microsecond) + span.SetTraceID(traceID) + span.SetSpanID(generateSpanID(random)) + span.TraceState().FromRaw(generateTraceState(spanInputs.Tracestate)) + span.SetParentSpanID(parentID) + span.SetName(spanName) + span.SetKind(lookupSpanKind(spanInputs.Kind)) + span.SetStartTimestamp(pcommon.Timestamp(endTime.Add(-215 * time.Millisecond).UnixNano())) + span.SetEndTimestamp(pcommon.Timestamp(endTime.UnixNano())) + appendSpanAttributes(spanInputs.Attributes, spanInputs.Status, span.Attributes()) + span.SetDroppedAttributesCount(0) + appendSpanEvents(spanInputs.Events, span.Events()) + span.SetDroppedEventsCount(0) + appendSpanLinks(spanInputs.Links, random, span.Links()) + span.SetDroppedLinksCount(0) + fillStatus(spanInputs.Status, span.Status()) +} + +func generateTraceState(tracestate PICTInputTracestate) string { + switch tracestate { + case TraceStateOne: + return "lasterror=f39cd56cc44274fd5abd07ef1164246d10ce2955" + case TraceStateFour: + return "err@ck=80ee5638,rate@ck=1.62,rojo=00f067aa0ba902b7,congo=t61rcWkgMzE" + default: + return "" + } +} + +func lookupSpanKind(kind PICTInputKind) ptrace.SpanKind { + switch kind { + case SpanKindClient: + return ptrace.SpanKindClient + case SpanKindServer: + return ptrace.SpanKindServer + case SpanKindProducer: + return ptrace.SpanKindProducer + case SpanKindConsumer: + return ptrace.SpanKindConsumer + case SpanKindInternal: + return ptrace.SpanKindInternal + default: + return ptrace.SpanKindUnspecified + } +} + +func appendSpanAttributes(spanTypeID PICTInputAttributes, statusStr PICTInputStatus, attrMap pcommon.Map) { + includeStatus := statusStr != SpanStatusUnset + switch spanTypeID { + case SpanAttrEmpty: + return + case SpanAttrDatabaseSQL: + appendDatabaseSQLAttributes(attrMap) + case SpanAttrDatabaseNoSQL: + appendDatabaseNoSQLAttributes(attrMap) + case SpanAttrFaaSDatasource: + appendFaaSDatasourceAttributes(attrMap) + case SpanAttrFaaSHTTP: + appendFaaSHTTPAttributes(includeStatus, attrMap) + case SpanAttrFaaSPubSub: + appendFaaSPubSubAttributes(attrMap) + case SpanAttrFaaSTimer: + appendFaaSTimerAttributes(attrMap) + case SpanAttrFaaSOther: + appendFaaSOtherAttributes(attrMap) + case SpanAttrHTTPClient: + appendHTTPClientAttributes(includeStatus, attrMap) + case SpanAttrHTTPServer: + appendHTTPServerAttributes(includeStatus, attrMap) + case SpanAttrMessagingProducer: + appendMessagingProducerAttributes(attrMap) + case SpanAttrMessagingConsumer: + appendMessagingConsumerAttributes(attrMap) + case SpanAttrGRPCClient: + appendGRPCClientAttributes(attrMap) + case SpanAttrGRPCServer: + appendGRPCServerAttributes(attrMap) + case SpanAttrInternal: + appendInternalAttributes(attrMap) + case SpanAttrMaxCount: + appendMaxCountAttributes(includeStatus, attrMap) + default: + appendGRPCClientAttributes(attrMap) + } +} + +func fillStatus(statusStr PICTInputStatus, spanStatus ptrace.Status) { + if statusStr == SpanStatusUnset { + return + } + spanStatus.SetCode(statusCodeMap[statusStr]) + spanStatus.SetMessage(statusMsgMap[statusStr]) +} + +func appendDatabaseSQLAttributes(attrMap pcommon.Map) { + if !metadata.InternalCoreinternalGoldendatasetDontEmitV0DatabaseConventionsFeatureGate.IsEnabled() { + attrMap.PutStr(string(conventionsv128.DBSystemKey), "mysql") + } + if metadata.InternalCoreinternalGoldendatasetEmitV1DatabaseConventionsFeatureGate.IsEnabled() { + attrMap.PutStr(string(conventions.DBSystemNameKey), "mysql") + } + attrMap.PutStr(string(conventionsv125.DBConnectionStringKey), "Server=shopdb.example.com;Database=ShopDb;Uid=billing_user;TableCache=true;UseCompression=True;MinimumPoolSize=10;MaximumPoolSize=50;") + attrMap.PutStr(string(conventionsv125.DBUserKey), "billing_user") + if !metadata.InternalCoreinternalGoldendatasetDontEmitV0NetworkConventionsFeatureGate.IsEnabled() { + attrMap.PutStr("net.host.ip", "192.0.3.122") + } + if metadata.InternalCoreinternalGoldendatasetEmitV1NetworkConventionsFeatureGate.IsEnabled() { + attrMap.PutStr(string(conventions.NetworkLocalAddressKey), "192.0.3.122") + } + attrMap.PutInt(string(conventionsv125.NetHostPortKey), 51306) + attrMap.PutStr(string(conventionsv125.NetPeerNameKey), "shopdb.example.com") + if !metadata.InternalCoreinternalGoldendatasetDontEmitV0NetworkConventionsFeatureGate.IsEnabled() { + attrMap.PutStr("net.peer.ip", "192.0.2.12") + } + if metadata.InternalCoreinternalGoldendatasetEmitV1NetworkConventionsFeatureGate.IsEnabled() { + attrMap.PutStr(string(conventions.NetworkPeerAddressKey), "192.0.2.12") + } + attrMap.PutInt(string(conventionsv125.NetPeerPortKey), 3306) + attrMap.PutStr(string(conventionsv125.NetTransportKey), "IP.TCP") + attrMap.PutStr(string(conventionsv125.DBNameKey), "shopdb") + attrMap.PutStr(string(conventionsv125.DBStatementKey), "SELECT * FROM orders WHERE order_id = 'o4711'") + attrMap.PutStr(string(conventionsv126.EnduserIDKey), "unittest") +} + +func appendDatabaseNoSQLAttributes(attrMap pcommon.Map) { + if !metadata.InternalCoreinternalGoldendatasetDontEmitV0DatabaseConventionsFeatureGate.IsEnabled() { + attrMap.PutStr(string(conventionsv128.DBSystemKey), "mongodb") + } + if metadata.InternalCoreinternalGoldendatasetEmitV1DatabaseConventionsFeatureGate.IsEnabled() { + attrMap.PutStr(string(conventions.DBSystemNameKey), "mongodb") + } + attrMap.PutStr(string(conventionsv125.DBUserKey), "the_user") + attrMap.PutStr(string(conventionsv125.NetPeerNameKey), "mongodb0.example.com") + if !metadata.InternalCoreinternalGoldendatasetDontEmitV0NetworkConventionsFeatureGate.IsEnabled() { + attrMap.PutStr("net.peer.ip", "192.0.2.14") + } + if metadata.InternalCoreinternalGoldendatasetEmitV1NetworkConventionsFeatureGate.IsEnabled() { + attrMap.PutStr(string(conventions.NetworkPeerAddressKey), "192.0.2.14") + } + attrMap.PutInt(string(conventionsv125.NetPeerPortKey), 27017) + attrMap.PutStr(string(conventionsv125.NetTransportKey), "IP.TCP") + attrMap.PutStr(string(conventionsv125.DBNameKey), "shopDb") + attrMap.PutStr(string(conventionsv125.DBOperationKey), "findAndModify") + attrMap.PutStr(string(conventionsv125.DBMongoDBCollectionKey), "products") + attrMap.PutStr(string(conventionsv126.EnduserIDKey), "unittest") +} + +func appendFaaSDatasourceAttributes(attrMap pcommon.Map) { + attrMap.PutStr(string(conventions.FaaSTriggerKey), conventions.FaaSTriggerDatasource.Value.AsString()) + if !metadata.InternalCoreinternalGoldendatasetDontEmitV0FaaSConventionsFeatureGate.IsEnabled() { + attrMap.PutStr(string(conventionsv118.FaaSExecutionKey), "DB85AF51-5E13-473D-8454-1E2D59415EAB") + } + if metadata.InternalCoreinternalGoldendatasetEmitV1FaaSConventionsFeatureGate.IsEnabled() { + attrMap.PutStr(string(conventions.FaaSInvocationIDKey), "DB85AF51-5E13-473D-8454-1E2D59415EAB") + } + attrMap.PutStr(string(conventions.FaaSDocumentCollectionKey), "faa-flight-delay-information-incoming") + attrMap.PutStr(string(conventions.FaaSDocumentOperationKey), "insert") + attrMap.PutStr(string(conventions.FaaSDocumentTimeKey), "2020-05-09T19:50:06Z") + attrMap.PutStr(string(conventions.FaaSDocumentNameKey), "delays-20200509-13.csv") + attrMap.PutStr(string(conventionsv126.EnduserIDKey), "unittest") +} + +func appendFaaSHTTPAttributes(includeStatus bool, attrMap pcommon.Map) { + attrMap.PutStr(string(conventions.FaaSTriggerKey), conventions.FaaSTriggerHTTP.Value.AsString()) + attrMap.PutStr(string(conventionsv125.HTTPMethodKey), http.MethodPost) + attrMap.PutStr(string(conventionsv125.HTTPSchemeKey), "https") + if !metadata.InternalCoreinternalGoldendatasetDontEmitV0NetworkConventionsFeatureGate.IsEnabled() { + attrMap.PutStr("http.host", "api.opentelemetry.io") + } + if metadata.InternalCoreinternalGoldendatasetEmitV1NetworkConventionsFeatureGate.IsEnabled() { + attrMap.PutStr(string(conventions.ServerAddressKey), "api.opentelemetry.io") + } + attrMap.PutStr(string(conventionsv125.HTTPTargetKey), "/blog/posts") + attrMap.PutStr(string(conventionsv119.HTTPFlavorKey), "2") + if includeStatus { + attrMap.PutInt(string(conventionsv125.HTTPStatusCodeKey), 201) + } + if !metadata.InternalCoreinternalGoldendatasetDontEmitV0HTTPConventionsFeatureGate.IsEnabled() { + attrMap.PutStr(string(conventionsv118.HTTPUserAgentKey), + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1 Safari/605.1.15") + } + if metadata.InternalCoreinternalGoldendatasetEmitV1HTTPConventionsFeatureGate.IsEnabled() { + attrMap.PutStr(string(conventions.UserAgentOriginalKey), + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1 Safari/605.1.15") + } + attrMap.PutStr(string(conventionsv126.EnduserIDKey), "unittest") +} + +func appendFaaSPubSubAttributes(attrMap pcommon.Map) { + attrMap.PutStr(string(conventions.FaaSTriggerKey), conventions.FaaSTriggerPubSub.Value.AsString()) + attrMap.PutStr(string(conventions.MessagingSystemKey), "sqs") + if !metadata.InternalCoreinternalGoldendatasetDontEmitV0MessagingConventionsFeatureGate.IsEnabled() { + attrMap.PutStr(string(conventionsv116.MessagingDestinationKey), "video-views-au") + } + if metadata.InternalCoreinternalGoldendatasetEmitV1MessagingConventionsFeatureGate.IsEnabled() { + attrMap.PutStr(string(conventions.MessagingDestinationNameKey), "video-views-au") + } + attrMap.PutStr(string(conventionsv125.MessagingOperationKey), "process") + attrMap.PutStr(string(conventionsv126.EnduserIDKey), "unittest") +} + +func appendFaaSTimerAttributes(attrMap pcommon.Map) { + attrMap.PutStr(string(conventions.FaaSTriggerKey), conventions.FaaSTriggerTimer.Value.AsString()) + if !metadata.InternalCoreinternalGoldendatasetDontEmitV0FaaSConventionsFeatureGate.IsEnabled() { + attrMap.PutStr(string(conventionsv118.FaaSExecutionKey), "73103A4C-E22F-4493-BDE8-EAE5CAB37B50") + } + if metadata.InternalCoreinternalGoldendatasetEmitV1FaaSConventionsFeatureGate.IsEnabled() { + attrMap.PutStr(string(conventions.FaaSInvocationIDKey), "73103A4C-E22F-4493-BDE8-EAE5CAB37B50") + } + attrMap.PutStr(string(conventions.FaaSTimeKey), "2020-05-09T20:00:08Z") + attrMap.PutStr(string(conventions.FaaSCronKey), "0/15 * * * *") + attrMap.PutStr(string(conventionsv126.EnduserIDKey), "unittest") +} + +func appendFaaSOtherAttributes(attrMap pcommon.Map) { + attrMap.PutStr(string(conventions.FaaSTriggerKey), conventions.FaaSTriggerOther.Value.AsString()) + attrMap.PutInt("processed.count", 256) + attrMap.PutDouble("processed.data", 14.46) + attrMap.PutBool("processed.errors", false) + attrMap.PutStr(string(conventionsv126.EnduserIDKey), "unittest") +} + +func appendHTTPClientAttributes(includeStatus bool, attrMap pcommon.Map) { + attrMap.PutStr(string(conventionsv125.HTTPMethodKey), http.MethodGet) + attrMap.PutStr(string(conventionsv125.HTTPURLKey), "https://opentelemetry.io/registry/") + if includeStatus { + attrMap.PutInt(string(conventionsv125.HTTPStatusCodeKey), 200) + attrMap.PutStr("http.status_text", "More Than OK") + } + attrMap.PutStr(string(conventionsv126.EnduserIDKey), "unittest") +} + +func appendHTTPServerAttributes(includeStatus bool, attrMap pcommon.Map) { + attrMap.PutStr(string(conventionsv125.HTTPMethodKey), http.MethodPost) + attrMap.PutStr(string(conventionsv125.HTTPSchemeKey), "https") + if !metadata.InternalCoreinternalGoldendatasetDontEmitV0NetworkConventionsFeatureGate.IsEnabled() { + attrMap.PutStr("http.server_name", "api22.opentelemetry.io") + } + if metadata.InternalCoreinternalGoldendatasetEmitV1NetworkConventionsFeatureGate.IsEnabled() { + attrMap.PutStr(string(conventions.ServerAddressKey), "api22.opentelemetry.io") + } + attrMap.PutInt(string(conventionsv125.NetHostPortKey), 443) + attrMap.PutStr(string(conventionsv125.HTTPTargetKey), "/blog/posts") + attrMap.PutStr(string(conventionsv119.HTTPFlavorKey), "2") + if includeStatus { + attrMap.PutInt(string(conventionsv125.HTTPStatusCodeKey), 201) + } + if !metadata.InternalCoreinternalGoldendatasetDontEmitV0HTTPConventionsFeatureGate.IsEnabled() { + attrMap.PutStr(string(conventionsv118.HTTPUserAgentKey), + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36") + } + if metadata.InternalCoreinternalGoldendatasetEmitV1HTTPConventionsFeatureGate.IsEnabled() { + attrMap.PutStr(string(conventions.UserAgentOriginalKey), + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36") + } + attrMap.PutStr(string(conventions.HTTPRouteKey), "/blog/posts") + if !metadata.InternalCoreinternalGoldendatasetDontEmitV0HTTPConventionsFeatureGate.IsEnabled() { + attrMap.PutStr(string(conventionsv120.HTTPClientIPKey), "2001:506:71f0:16e::1") + } + if metadata.InternalCoreinternalGoldendatasetEmitV1HTTPConventionsFeatureGate.IsEnabled() { + attrMap.PutStr(string(conventions.ClientAddressKey), "2001:506:71f0:16e::1") + } + attrMap.PutStr(string(conventionsv126.EnduserIDKey), "unittest") +} + +func appendMessagingProducerAttributes(attrMap pcommon.Map) { + attrMap.PutStr(string(conventions.MessagingSystemKey), "nats") + if !metadata.InternalCoreinternalGoldendatasetDontEmitV0MessagingConventionsFeatureGate.IsEnabled() { + attrMap.PutStr(string(conventionsv116.MessagingDestinationKey), "time.us.east.atlanta") + } + if metadata.InternalCoreinternalGoldendatasetEmitV1MessagingConventionsFeatureGate.IsEnabled() { + attrMap.PutStr(string(conventions.MessagingDestinationNameKey), "time.us.east.atlanta") + } + attrMap.PutStr(string(conventionsv119.MessagingDestinationKindKey), "topic") + attrMap.PutStr(string(conventions.MessagingMessageIDKey), "AA7C5438-D93A-43C8-9961-55613204648F") + attrMap.PutInt("messaging.sequence", 1) + if !metadata.InternalCoreinternalGoldendatasetDontEmitV0NetworkConventionsFeatureGate.IsEnabled() { + attrMap.PutStr("net.peer.ip", "10.10.212.33") + } + if metadata.InternalCoreinternalGoldendatasetEmitV1NetworkConventionsFeatureGate.IsEnabled() { + attrMap.PutStr(string(conventions.NetworkPeerAddressKey), "10.10.212.33") + } + attrMap.PutStr(string(conventionsv126.EnduserIDKey), "unittest") +} + +func appendMessagingConsumerAttributes(attrMap pcommon.Map) { + attrMap.PutStr(string(conventions.MessagingSystemKey), "kafka") + if !metadata.InternalCoreinternalGoldendatasetDontEmitV0MessagingConventionsFeatureGate.IsEnabled() { + attrMap.PutStr(string(conventionsv116.MessagingDestinationKey), "infrastructure-events-zone1") + } + if metadata.InternalCoreinternalGoldendatasetEmitV1MessagingConventionsFeatureGate.IsEnabled() { + attrMap.PutStr(string(conventions.MessagingDestinationNameKey), "infrastructure-events-zone1") + } + attrMap.PutStr(string(conventionsv125.MessagingOperationKey), "receive") + if !metadata.InternalCoreinternalGoldendatasetDontEmitV0NetworkConventionsFeatureGate.IsEnabled() { + attrMap.PutStr("net.peer.ip", "2600:1700:1f00:11c0:4de0:c223:a800:4e87") + } + if metadata.InternalCoreinternalGoldendatasetEmitV1NetworkConventionsFeatureGate.IsEnabled() { + attrMap.PutStr(string(conventions.NetworkPeerAddressKey), "2600:1700:1f00:11c0:4de0:c223:a800:4e87") + } + attrMap.PutStr(string(conventionsv126.EnduserIDKey), "unittest") +} + +func appendGRPCClientAttributes(attrMap pcommon.Map) { + if !metadata.InternalCoreinternalGoldendatasetDontEmitV0RPCConventionsFeatureGate.IsEnabled() { + attrMap.PutStr(string(conventionsv138.RPCServiceKey), "PullRequestsService") + } + if metadata.InternalCoreinternalGoldendatasetEmitV1RPCConventionsFeatureGate.IsEnabled() { + attrMap.PutStr(string(conventions.RPCMethodKey), "PullRequestsService/PullRequestByID") + } + if !metadata.InternalCoreinternalGoldendatasetDontEmitV0NetworkConventionsFeatureGate.IsEnabled() { + attrMap.PutStr("net.peer.ip", "2600:1700:1f00:11c0:4de0:c223:a800:4e87") + } + if metadata.InternalCoreinternalGoldendatasetEmitV1NetworkConventionsFeatureGate.IsEnabled() { + attrMap.PutStr(string(conventions.NetworkPeerAddressKey), "2600:1700:1f00:11c0:4de0:c223:a800:4e87") + } + attrMap.PutInt(string(conventionsv125.NetHostPortKey), 8443) + attrMap.PutStr(string(conventionsv126.EnduserIDKey), "unittest") +} + +func appendGRPCServerAttributes(attrMap pcommon.Map) { + if !metadata.InternalCoreinternalGoldendatasetDontEmitV0RPCConventionsFeatureGate.IsEnabled() { + attrMap.PutStr(string(conventionsv138.RPCServiceKey), "PullRequestsService") + } + if metadata.InternalCoreinternalGoldendatasetEmitV1RPCConventionsFeatureGate.IsEnabled() { + attrMap.PutStr(string(conventions.RPCMethodKey), "PullRequestsService/PullRequestByID") + } + if !metadata.InternalCoreinternalGoldendatasetDontEmitV0NetworkConventionsFeatureGate.IsEnabled() { + attrMap.PutStr("net.peer.ip", "192.168.1.70") + } + if metadata.InternalCoreinternalGoldendatasetEmitV1NetworkConventionsFeatureGate.IsEnabled() { + attrMap.PutStr(string(conventions.NetworkPeerAddressKey), "192.168.1.70") + } + attrMap.PutStr(string(conventionsv126.EnduserIDKey), "unittest") +} + +func appendInternalAttributes(attrMap pcommon.Map) { + attrMap.PutStr("parameters", "account=7310,amount=1817.10") + attrMap.PutStr(string(conventionsv126.EnduserIDKey), "unittest") +} + +func appendMaxCountAttributes(includeStatus bool, attrMap pcommon.Map) { + attrMap.PutStr(string(conventionsv125.HTTPMethodKey), http.MethodPost) + attrMap.PutStr(string(conventionsv125.HTTPSchemeKey), "https") + if !metadata.InternalCoreinternalGoldendatasetDontEmitV0NetworkConventionsFeatureGate.IsEnabled() { + attrMap.PutStr("http.host", "api.opentelemetry.io") + } + if metadata.InternalCoreinternalGoldendatasetEmitV1NetworkConventionsFeatureGate.IsEnabled() { + attrMap.PutStr(string(conventions.ServerAddressKey), "api.opentelemetry.io") + } + attrMap.PutStr(string(conventionsv125.NetHostNameKey), "api22.opentelemetry.io") + if !metadata.InternalCoreinternalGoldendatasetDontEmitV0NetworkConventionsFeatureGate.IsEnabled() { + attrMap.PutStr("net.host.ip", "2600:1700:1f00:11c0:1ced:afa5:fd88:9d48") + } + if metadata.InternalCoreinternalGoldendatasetEmitV1NetworkConventionsFeatureGate.IsEnabled() { + attrMap.PutStr(string(conventions.NetworkLocalAddressKey), "2600:1700:1f00:11c0:1ced:afa5:fd88:9d48") + } + attrMap.PutInt(string(conventionsv125.NetHostPortKey), 443) + attrMap.PutStr(string(conventionsv125.HTTPTargetKey), "/blog/posts") + attrMap.PutStr(string(conventionsv119.HTTPFlavorKey), "2") + if includeStatus { + attrMap.PutInt(string(conventionsv125.HTTPStatusCodeKey), 201) + attrMap.PutStr("http.status_text", "Created") + } + if !metadata.InternalCoreinternalGoldendatasetDontEmitV0HTTPConventionsFeatureGate.IsEnabled() { + attrMap.PutStr(string(conventionsv118.HTTPUserAgentKey), + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36") + } + if metadata.InternalCoreinternalGoldendatasetEmitV1HTTPConventionsFeatureGate.IsEnabled() { + attrMap.PutStr(string(conventions.UserAgentOriginalKey), + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36") + } + attrMap.PutStr(string(conventions.HTTPRouteKey), "/blog/posts") + if !metadata.InternalCoreinternalGoldendatasetDontEmitV0HTTPConventionsFeatureGate.IsEnabled() { + attrMap.PutStr(string(conventionsv120.HTTPClientIPKey), "2600:1700:1f00:11c0:1ced:afa5:fd77:9d01") + } + if metadata.InternalCoreinternalGoldendatasetEmitV1HTTPConventionsFeatureGate.IsEnabled() { + attrMap.PutStr(string(conventions.ClientAddressKey), "2600:1700:1f00:11c0:1ced:afa5:fd77:9d01") + } + if !metadata.InternalCoreinternalGoldendatasetDontEmitV0RPCConventionsFeatureGate.IsEnabled() { + attrMap.PutStr(string(conventionsv138.PeerServiceKey), "IdentifyImageService") + } + if metadata.InternalCoreinternalGoldendatasetEmitV1RPCConventionsFeatureGate.IsEnabled() { + attrMap.PutStr(string(conventions.ServicePeerNameKey), "IdentifyImageService") + } + if !metadata.InternalCoreinternalGoldendatasetDontEmitV0NetworkConventionsFeatureGate.IsEnabled() { + attrMap.PutStr("net.peer.ip", "2600:1700:1f00:11c0:1ced:afa5:fd77:9ddc") + } + if metadata.InternalCoreinternalGoldendatasetEmitV1NetworkConventionsFeatureGate.IsEnabled() { + attrMap.PutStr(string(conventions.NetworkPeerAddressKey), "2600:1700:1f00:11c0:1ced:afa5:fd77:9ddc") + } + attrMap.PutInt(string(conventionsv125.NetPeerPortKey), 39111) + attrMap.PutDouble("ai-sampler.weight", 0.07) + attrMap.PutBool("ai-sampler.absolute", false) + attrMap.PutInt("ai-sampler.maxhops", 6) + attrMap.PutStr("application.create.location", "https://api.opentelemetry.io/blog/posts/806673B9-4F4D-4284-9635-3A3E3E3805BE") + stages := attrMap.PutEmptySlice("application.stages") + stages.AppendEmpty().SetStr("Launch") + stages.AppendEmpty().SetStr("Injestion") + stages.AppendEmpty().SetStr("Validation") + subMap := attrMap.PutEmptyMap("application.abflags") + subMap.PutBool("UIx", false) + subMap.PutBool("UI4", true) + subMap.PutBool("flow-alt3", false) + attrMap.PutStr("application.thread", "proc-pool-14") + attrMap.PutStr("application.session", "") + attrMap.PutInt("application.persist.size", 1172184) + attrMap.PutInt("application.queue.size", 0) + attrMap.PutStr("application.job.id", "0E38800B-9C4C-484E-8F2B-C7864D854321") + attrMap.PutDouble("application.service.sla", 0.34) + attrMap.PutDouble("application.service.slo", 0.55) + attrMap.PutStr(string(conventionsv126.EnduserIDKey), "unittest") + attrMap.PutStr(string(conventionsv126.EnduserRoleKey), "poweruser") + attrMap.PutStr(string(conventionsv126.EnduserScopeKey), "email profile administrator") +} + +func appendSpanEvents(eventCnt PICTInputSpanChild, spanEvents ptrace.SpanEventSlice) { + listSize := calculateListSize(eventCnt) + for i := range listSize { + appendSpanEvent(i, spanEvents) + } +} + +func appendSpanLinks(linkCnt PICTInputSpanChild, random io.Reader, spanLinks ptrace.SpanLinkSlice) { + listSize := calculateListSize(linkCnt) + for i := range listSize { + appendSpanLink(random, i, spanLinks) + } +} + +func calculateListSize(listCnt PICTInputSpanChild) int { + switch listCnt { + case SpanChildCountOne: + return 1 + case SpanChildCountTwo: + return 2 + case SpanChildCountEight: + return 8 + default: + return 0 + } +} + +func appendSpanEvent(index int, spanEvents ptrace.SpanEventSlice) { + spanEvent := spanEvents.AppendEmpty() + t := time.Now().Add(-75 * time.Microsecond) + spanEvent.SetTimestamp(pcommon.Timestamp(t.UnixNano())) + switch index % 4 { + case 0, 3: + spanEvent.SetName("message") + attrMap := spanEvent.Attributes() + if index%2 == 0 { + attrMap.PutStr("message.type", "SENT") + } else { + attrMap.PutStr("message.type", "RECEIVED") + } + attrMap.PutInt(string(conventions.MessagingMessageIDKey), int64(index/4)) + attrMap.PutInt(string(conventionsv121.MessagingMessagePayloadCompressedSizeBytesKey), int64(17*index)) + attrMap.PutInt(string(conventionsv121.MessagingMessagePayloadSizeBytesKey), int64(24*index)) + case 1: + spanEvent.SetName("custom") + attrMap := spanEvent.Attributes() + attrMap.PutBool("app.inretry", true) + attrMap.PutDouble("app.progress", 0.6) + attrMap.PutStr("app.statemap", "14|5|202") + default: + spanEvent.SetName("annotation") + } + + spanEvent.SetDroppedAttributesCount(0) +} + +func appendSpanLink(random io.Reader, index int, spanLinks ptrace.SpanLinkSlice) { + spanLink := spanLinks.AppendEmpty() + spanLink.SetTraceID(generateTraceID(random)) + spanLink.SetSpanID(generateSpanID(random)) + spanLink.TraceState().FromRaw("") + if index%4 != 2 { + attrMap := spanLink.Attributes() + appendMessagingConsumerAttributes(attrMap) + if index%4 == 1 { + attrMap.PutBool("app.inretry", true) + attrMap.PutDouble("app.progress", 0.6) + attrMap.PutStr("app.statemap", "14|5|202") + } + } + spanLink.SetDroppedAttributesCount(0) +} + +func generateTraceID(random io.Reader) pcommon.TraceID { + var r [16]byte + _, err := random.Read(r[:]) + if err != nil { + panic(err) + } + return pcommon.TraceID(r) +} + +func generateSpanID(random io.Reader) pcommon.SpanID { + var r [8]byte + _, err := random.Read(r[:]) + if err != nil { + panic(err) + } + return pcommon.SpanID(r) +} diff --git a/otel-patches/coreinternal/goldendataset/span_generator_test.go b/otel-patches/coreinternal/goldendataset/span_generator_test.go new file mode 100644 index 000000000000..9229274b7968 --- /dev/null +++ b/otel-patches/coreinternal/goldendataset/span_generator_test.go @@ -0,0 +1,147 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package goldendataset + +import ( + "crypto/rand" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "go.opentelemetry.io/collector/featuregate" + "go.opentelemetry.io/collector/pdata/pcommon" + "go.opentelemetry.io/collector/pdata/ptrace" + + "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/internal/metadata" +) + +func TestGenerateParentSpan(t *testing.T) { + random := rand.Reader + traceID := generateTraceID(random) + spanInputs := &PICTSpanInputs{ + Parent: SpanParentRoot, + Tracestate: TraceStateEmpty, + Kind: SpanKindServer, + Attributes: SpanAttrHTTPServer, + Events: SpanChildCountTwo, + Links: SpanChildCountOne, + Status: SpanStatusOk, + } + span := ptrace.NewSpan() + fillSpan(traceID, pcommon.SpanID([8]byte{}), "/gotest-parent", spanInputs, random, span) + assert.Equal(t, traceID, span.TraceID()) + assert.True(t, span.ParentSpanID().IsEmpty()) + assert.Equal(t, 11, span.Attributes().Len()) + assert.Equal(t, ptrace.StatusCodeOk, span.Status().Code()) +} + +func TestGenerateChildSpan(t *testing.T) { + random := rand.Reader + traceID := generateTraceID(random) + parentID := generateSpanID(random) + spanInputs := &PICTSpanInputs{ + Parent: SpanParentChild, + Tracestate: TraceStateEmpty, + Kind: SpanKindClient, + Attributes: SpanAttrDatabaseSQL, + Events: SpanChildCountEmpty, + Links: SpanChildCountEmpty, + Status: SpanStatusOk, + } + span := ptrace.NewSpan() + fillSpan(traceID, parentID, "get_test_info", spanInputs, random, span) + assert.Equal(t, traceID, span.TraceID()) + assert.Equal(t, parentID, span.ParentSpanID()) + assert.Equal(t, 12, span.Attributes().Len()) + assert.Equal(t, ptrace.StatusCodeOk, span.Status().Code()) +} + +func TestGenerateSpans(t *testing.T) { + random := rand.Reader + count1 := 16 + spans := ptrace.NewSpanSlice() + err := appendSpans(count1, "testdata/generated_pict_pairs_spans.txt", random, spans) + assert.NoError(t, err) + assert.Equal(t, count1, spans.Len()) + + count2 := 256 + spans = ptrace.NewSpanSlice() + err = appendSpans(count2, "testdata/generated_pict_pairs_spans.txt", random, spans) + assert.NoError(t, err) + assert.Equal(t, count2, spans.Len()) + + count3 := 118 + spans = ptrace.NewSpanSlice() + err = appendSpans(count3, "testdata/generated_pict_pairs_spans.txt", random, spans) + assert.NoError(t, err) + assert.Equal(t, count3, spans.Len()) +} + +func TestGenerateMessagingProducerSpanFeatureGates(t *testing.T) { + testCases := []struct { + name string + dontEmitV0 bool + emitV1 bool + expectedKeys []string + absentKeys []string + }{ + { + name: "default_v0_only", + dontEmitV0: false, + emitV1: false, + expectedKeys: []string{"messaging.destination"}, + absentKeys: []string{"messaging.destination.name"}, + }, + { + name: "double_publish", + dontEmitV0: false, + emitV1: true, + expectedKeys: []string{"messaging.destination", "messaging.destination.name"}, + absentKeys: []string{}, + }, + { + name: "v1_only", + dontEmitV0: true, + emitV1: true, + expectedKeys: []string{"messaging.destination.name"}, + absentKeys: []string{"messaging.destination"}, + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + require.NoError(t, featuregate.GlobalRegistry().Set(metadata.InternalCoreinternalGoldendatasetDontEmitV0MessagingConventionsFeatureGate.ID(), tc.dontEmitV0)) + require.NoError(t, featuregate.GlobalRegistry().Set(metadata.InternalCoreinternalGoldendatasetEmitV1MessagingConventionsFeatureGate.ID(), tc.emitV1)) + + t.Cleanup(func() { + require.NoError(t, featuregate.GlobalRegistry().Set(metadata.InternalCoreinternalGoldendatasetDontEmitV0MessagingConventionsFeatureGate.ID(), false)) + require.NoError(t, featuregate.GlobalRegistry().Set(metadata.InternalCoreinternalGoldendatasetEmitV1MessagingConventionsFeatureGate.ID(), false)) + }) + + random := rand.Reader + traceID := generateTraceID(random) + spanInputs := &PICTSpanInputs{ + Parent: SpanParentRoot, + Tracestate: TraceStateEmpty, + Kind: SpanKindProducer, + Attributes: SpanAttrMessagingProducer, + Events: SpanChildCountEmpty, + Links: SpanChildCountEmpty, + Status: SpanStatusOk, + } + span := ptrace.NewSpan() + fillSpan(traceID, pcommon.SpanID([8]byte{}), "/gotest-parent", spanInputs, random, span) + + attrs := span.Attributes() + for _, k := range tc.expectedKeys { + _, ok := attrs.Get(k) + assert.True(t, ok, "Expected attribute %s to be present", k) + } + for _, k := range tc.absentKeys { + _, ok := attrs.Get(k) + assert.False(t, ok, "Expected attribute %s to be absent", k) + } + }) + } +} diff --git a/otel-patches/coreinternal/goldendataset/testdata/generated_pict_pairs_metrics.txt b/otel-patches/coreinternal/goldendataset/testdata/generated_pict_pairs_metrics.txt new file mode 100644 index 000000000000..8413a5bb5ca6 --- /dev/null +++ b/otel-patches/coreinternal/goldendataset/testdata/generated_pict_pairs_metrics.txt @@ -0,0 +1,26 @@ +NumPtsPerMetric MetricType NumLabels NumResourceAttrs +OnePt DoubleExemplarsHistogram NoLabels NoAttrs +ManyPts NonMonotonicDoubleSum OneLabel OneAttr +OnePt NonMonotonicIntSum ManyLabels OneAttr +ManyPts NonMonotonicDoubleSum NoLabels TwoAttrs +OnePt DoubleExemplarsHistogram OneLabel TwoAttrs +ManyPts NonMonotonicDoubleSum ManyLabels NoAttrs +OnePt DoubleGauge NoLabels OneAttr +ManyPts DoubleExemplarsHistogram ManyLabels OneAttr +ManyPts MonotonicIntSum ManyLabels TwoAttrs +ManyPts NonMonotonicIntSum OneLabel NoAttrs +ManyPts IntGauge ManyLabels NoAttrs +OnePt IntExemplarsHistogram OneLabel OneAttr +OnePt MonotonicIntSum NoLabels NoAttrs +ManyPts IntExemplarsHistogram NoLabels TwoAttrs +ManyPts MonotonicDoubleSum OneLabel OneAttr +ManyPts DoubleGauge ManyLabels NoAttrs +OnePt IntGauge NoLabels TwoAttrs +OnePt NonMonotonicIntSum NoLabels TwoAttrs +OnePt MonotonicDoubleSum ManyLabels NoAttrs +ManyPts DoubleGauge OneLabel TwoAttrs +ManyPts IntGauge OneLabel OneAttr +OnePt IntExemplarsHistogram ManyLabels NoAttrs +OnePt MonotonicIntSum OneLabel OneAttr +OnePt NonMonotonicDoubleSum ManyLabels NoAttrs +ManyPts MonotonicDoubleSum NoLabels TwoAttrs diff --git a/otel-patches/coreinternal/goldendataset/testdata/generated_pict_pairs_spans.txt b/otel-patches/coreinternal/goldendataset/testdata/generated_pict_pairs_spans.txt new file mode 100644 index 000000000000..61d1bae4452d --- /dev/null +++ b/otel-patches/coreinternal/goldendataset/testdata/generated_pict_pairs_spans.txt @@ -0,0 +1,307 @@ +Parent Tracestate Kind Attributes Events Links Status +Child One Consumer FaaSDatasource Empty Nil AlreadyExists +Child Empty Unspecified gRPCClient Two One ResourceExhausted +Child Four Client gRPCClient Eight Eight DataLoss +Root Four Server FaaSHTTP One Empty ResourceExhausted +Child One Server FaaSOther Nil Two Unimplemented +Child One Unspecified HTTPClient Nil Eight InternalError +Root One Producer FaaSPubSub Two Empty Cancelled +Child One Client DatabaseSQL One One PermissionDenied +Child Four Unspecified FaaSTimer Empty Two FailedPrecondition +Child Empty Unspecified MessagingConsumer Eight Nil InvalidArgument +Root Empty Server FaaSTimer Two Eight AlreadyExists +Child One Internal Nil Eight Two ResourceExhausted +Child Empty Unspecified FaaSHTTP Nil Nil DeadlineExceeded +Child Empty Producer MessagingProducer Empty Empty Ok +Root Four Server HTTPServer Nil One Ok +Root Four Producer Empty One Nil OutOfRange +Child Empty Consumer FaaSDatasource One Two Unavailable +Child One Client gRPCClient Nil Empty OutOfRange +Child Empty Internal Internal One Eight FailedPrecondition +Root Empty Server FaaSTimer Eight One OutOfRange +Child Four Consumer FaaSDatasource Empty One Unauthenticated +Child Empty Client HTTPClient Two Nil DataLoss +Child Empty Unspecified FaaSPubSub Empty Two UnknownError +Child Four Client gRPCClient Two Two Ok +Child Four Unspecified HTTPClient Eight Empty Ok +Root One Server FaaSHTTP Empty Eight Aborted +Child One Client DatabaseNoSQL Nil One FailedPrecondition +Child Empty Client HTTPClient Empty One ResourceExhausted +Child Four Internal Nil Nil Empty AlreadyExists +Root Four Producer FaaSPubSub Eight One AlreadyExists +Child Four Client HTTPClient One Two InvalidArgument +Root One Server FaaSTimer Nil Nil UnknownError +Child Empty Unspecified HTTPServer One Two Cancelled +Child Four Server FaaSHTTP Eight One Cancelled +Child Empty Server FaaSTimer Nil Eight ResourceExhausted +Root One Server gRPCServer Nil Eight InvalidArgument +Child Four Unspecified gRPCServer Two Two Nil +Child One Consumer MessagingConsumer Nil Eight ResourceExhausted +Child One Unspecified MessagingProducer Two Nil FailedPrecondition +Child Four Consumer MessagingConsumer Two Empty Unavailable +Child One Producer FaaSPubSub One Nil Ok +Root Four Server MaxCount Empty Nil Cancelled +Root One Server HTTPServer Empty Eight DeadlineExceeded +Child One Consumer MessagingConsumer Empty Two FailedPrecondition +Child Empty Unspecified MaxCount Two One InvalidArgument +Child One Unspecified FaaSHTTP Two Two OutOfRange +Child Four Unspecified DatabaseSQL Eight Two Aborted +Child One Unspecified MaxCount Eight Eight UnknownError +Child Four Unspecified FaaSOther Eight Empty FailedPrecondition +Root One Server HTTPServer Eight Nil Unavailable +Root Empty Server MaxCount Nil Two Ok +Child Empty Consumer MessagingConsumer One One Aborted +Child One Client Empty Eight One Nil +Root Four Producer MessagingProducer Eight Eight PermissionDenied +Child Empty Internal Nil Empty Nil Nil +Child Empty Unspecified DatabaseNoSQL Two Two NotFound +Child Empty Client DatabaseSQL Nil Empty Nil +Child Four Producer FaaSPubSub Nil Eight ResourceExhausted +Child Empty Unspecified FaaSOther Two One DeadlineExceeded +Child Four Consumer FaaSDatasource Eight Empty InternalError +Root Empty Producer Empty Two Two ResourceExhausted +Root Four Server FaaSOther One Eight Nil +Child Four Internal Internal Two Nil PermissionDenied +Child One Client DatabaseSQL Empty Eight FailedPrecondition +Child Four Producer MessagingProducer One One InvalidArgument +Child Four Unspecified DatabaseNoSQL Empty Empty InvalidArgument +Child Four Unspecified DatabaseNoSQL One Nil ResourceExhausted +Child Empty Producer MessagingProducer Nil Nil Aborted +Child Empty Server gRPCServer Empty Empty Aborted +Child One Unspecified DatabaseNoSQL Eight One DataLoss +Root One Producer MessagingProducer Nil Two DataLoss +Root Four Producer FaaSPubSub Empty One FailedPrecondition +Child Four Client DatabaseNoSQL Empty Eight Unavailable +Child Four Consumer Nil One One NotFound +Root One Server Nil Two Eight DataLoss +Child Four Internal Internal Nil One UnknownError +Child One Producer FaaSPubSub Nil One Unavailable +Child Four Client DatabaseNoSQL Two Empty Unimplemented +Child One Unspecified FaaSOther Empty Empty UnknownError +Child One Client gRPCClient Empty Nil Nil +Child One Unspecified Internal Eight Two Nil +Child Four Unspecified FaaSDatasource Two Eight Ok +Child One Unspecified Empty Nil Empty Ok +Child One Consumer FaaSDatasource Empty Eight OutOfRange +Child Empty Consumer MessagingConsumer Eight One Unimplemented +Child Empty Unspecified Nil One Eight Unimplemented +Child Four Client gRPCClient One Nil Unimplemented +Child Empty Unspecified DatabaseSQL Two Nil Ok +Child One Client DatabaseNoSQL Nil Eight Unauthenticated +Child Four Internal Internal One Empty DeadlineExceeded +Child One Unspecified gRPCServer One Nil OutOfRange +Child Empty Unspecified MaxCount One Two AlreadyExists +Root Empty Server FaaSOther Nil Empty PermissionDenied +Child Four Internal Internal Empty Two InvalidArgument +Root Four Producer MessagingProducer Eight Two DeadlineExceeded +Root One Server FaaSOther Eight Nil NotFound +Child Empty Unspecified Nil Two One Unavailable +Child Four Internal Internal Nil Eight Ok +Child Four Producer Empty Empty Eight FailedPrecondition +Child One Server gRPCServer Eight One DeadlineExceeded +Child Four Consumer MessagingConsumer Two Nil Nil +Root Four Server gRPCServer Eight Two FailedPrecondition +Root Four Producer Empty Empty Nil Unavailable +Root Empty Server HTTPServer Two Empty Unauthenticated +Child Empty Unspecified FaaSHTTP One Empty DataLoss +Child Four Client DatabaseNoSQL One Nil DeadlineExceeded +Root One Producer FaaSPubSub Empty Nil Unimplemented +Root Empty Producer MessagingProducer One One InternalError +Child Empty Unspecified FaaSOther Two Empty AlreadyExists +Child Empty Unspecified DatabaseSQL Empty Nil ResourceExhausted +Child Four Unspecified gRPCClient Eight Nil Unauthenticated +Child Four Client HTTPClient Two Nil UnknownError +Child Four Unspecified HTTPServer Empty Two PermissionDenied +Root Four Producer MessagingProducer One Two AlreadyExists +Child One Unspecified HTTPClient Eight Two PermissionDenied +Child Four Consumer Nil Nil Two Ok +Child Empty Internal Internal Nil Empty NotFound +Child Four Unspecified FaaSDatasource Nil Two FailedPrecondition +Root One Server MaxCount Empty Empty InternalError +Child One Consumer Nil One Eight InvalidArgument +Child One Unspecified HTTPClient Empty Nil OutOfRange +Child Four Client HTTPClient Empty One DeadlineExceeded +Child Empty Client DatabaseSQL Nil Eight Cancelled +Child Four Internal Internal Nil Two Cancelled +Child Four Consumer MessagingConsumer Two Nil InternalError +Child Empty Consumer MessagingConsumer Eight Nil OutOfRange +Root Four Producer MessagingProducer Empty Two Unimplemented +Root One Server FaaSTimer One Empty InvalidArgument +Child Empty Client Empty Empty Eight NotFound +Child Four Unspecified FaaSOther Two Two InternalError +Child One Client DatabaseNoSQL One One Ok +Child One Unspecified MessagingConsumer One Empty Ok +Child Four Unspecified FaaSHTTP Two Empty NotFound +Root Empty Server FaaSTimer Empty Eight Unimplemented +Child One Unspecified FaaSPubSub Nil Nil PermissionDenied +Root Empty Server HTTPServer Eight Two InvalidArgument +Child Four Client HTTPClient One Two Unauthenticated +Child Empty Server gRPCServer One Nil InternalError +Root Empty Producer MessagingProducer Empty Eight OutOfRange +Child Four Producer MessagingProducer Eight Nil Nil +Child Empty Consumer FaaSDatasource Eight Empty Unimplemented +Child Empty Unspecified FaaSPubSub Empty Eight DataLoss +Child Four Unspecified MessagingConsumer Empty Empty AlreadyExists +Child Empty Producer FaaSPubSub One One NotFound +Child One Internal Internal Two Nil InternalError +Root Four Server FaaSTimer Nil One NotFound +Child Four Unspecified FaaSOther Nil One Unavailable +Child Empty Unspecified FaaSHTTP One Nil InternalError +Child Empty Unspecified gRPCServer Eight Nil AlreadyExists +Child One Client HTTPClient Nil One Unimplemented +Child One Client HTTPClient Empty Eight NotFound +Child Four Consumer FaaSDatasource One Eight UnknownError +Root Empty Producer MessagingProducer Two Two Unauthenticated +Child Empty Unspecified FaaSDatasource Two One Aborted +Child One Consumer MessagingConsumer Empty Nil DataLoss +Child One Consumer MessagingConsumer Eight One Cancelled +Child Empty Unspecified FaaSDatasource One Two DataLoss +Child Empty Client gRPCClient Empty Eight FailedPrecondition +Child Empty Unspecified Internal Eight Two ResourceExhausted +Child Empty Client gRPCClient One Nil InternalError +Child Empty Consumer Nil Two Nil PermissionDenied +Child Empty Producer FaaSPubSub One Eight OutOfRange +Child One Unspecified gRPCServer One Nil Ok +Child One Consumer FaaSDatasource One Empty DeadlineExceeded +Child One Unspecified FaaSDatasource Nil Eight NotFound +Child Empty Unspecified DatabaseNoSQL Empty Two PermissionDenied +Child One Unspecified FaaSHTTP Empty Empty UnknownError +Child Empty Server HTTPServer Empty One Aborted +Child Empty Unspecified HTTPClient Eight Eight Cancelled +Child Four Producer MessagingProducer One Empty Cancelled +Child Four Server MaxCount One Eight FailedPrecondition +Child Empty Internal Nil One Eight OutOfRange +Child One Unspecified gRPCServer Empty Two Cancelled +Child Four Server HTTPServer Nil Empty AlreadyExists +Child Four Unspecified Empty Two Two InvalidArgument +Root Empty Server HTTPServer Eight Two DataLoss +Child Empty Client gRPCClient Two Two Unavailable +Child Four Unspecified HTTPServer One One Nil +Child One Client gRPCClient Nil Eight DeadlineExceeded +Root One Server FaaSTimer Empty Eight Cancelled +Child Empty Consumer Nil Eight Eight Cancelled +Child Four Server FaaSTimer Eight Nil Ok +Root One Producer Empty Eight Empty UnknownError +Child One Client Empty Eight Nil AlreadyExists +Child Empty Internal Nil Eight Nil Unauthenticated +Child One Internal Nil Nil Eight DeadlineExceeded +Child One Producer Empty Two Two Cancelled +Child One Unspecified FaaSHTTP Eight Nil InvalidArgument +Child Empty Unspecified HTTPClient One One FailedPrecondition +Child One Unspecified HTTPServer Nil Empty ResourceExhausted +Child One Server Nil One Eight InternalError +Child Four Unspecified Empty Eight Nil Unauthenticated +Child Empty Unspecified MessagingConsumer Eight Two NotFound +Child Four Unspecified MaxCount Empty Eight NotFound +Child One Client gRPCClient One Two InvalidArgument +Child Four Unspecified DatabaseSQL Nil Empty InvalidArgument +Child Four Unspecified FaaSOther One Two OutOfRange +Child Empty Unspecified HTTPServer Two Nil FailedPrecondition +Child Empty Consumer FaaSDatasource Two Eight Nil +Child One Server FaaSTimer Nil One Aborted +Child Four Unspecified DatabaseNoSQL Two Empty UnknownError +Child Empty Server MaxCount Nil Nil OutOfRange +Child Four Unspecified FaaSTimer Nil Nil Unavailable +Child One Unspecified FaaSHTTP Eight Eight AlreadyExists +Child Empty Client DatabaseSQL Empty Eight UnknownError +Child One Producer Empty Eight Nil DeadlineExceeded +Child Empty Producer FaaSPubSub Empty One InternalError +Child Empty Unspecified gRPCClient Two One PermissionDenied +Child One Unspecified DatabaseSQL One Eight Unauthenticated +Child Four Client gRPCClient One Empty Cancelled +Child One Server MaxCount Empty Two Unimplemented +Child Empty Server Nil One Eight UnknownError +Root One Server gRPCServer Eight Eight DataLoss +Child Four Unspecified FaaSPubSub Two One Nil +Root One Server gRPCServer Nil Eight Unimplemented +Child One Server FaaSTimer Two Two Nil +Child Four Unspecified gRPCServer Two Eight Unauthenticated +Child Empty Server FaaSOther One Eight Unauthenticated +Child One Unspecified FaaSDatasource One Eight PermissionDenied +Child Empty Server Nil Two Two FailedPrecondition +Child One Unspecified Empty One Nil PermissionDenied +Child Four Internal Internal One Two Unimplemented +Child Empty Unspecified Empty Eight Two DataLoss +Child Empty Unspecified FaaSTimer Two Empty DeadlineExceeded +Child Empty Unspecified FaaSOther One Eight Aborted +Child One Unspecified FaaSOther One Nil ResourceExhausted +Child Empty Unspecified gRPCServer Two Nil PermissionDenied +Child Empty Unspecified MaxCount Eight Eight Aborted +Child One Consumer MessagingConsumer Two Nil Unauthenticated +Child Four Client Empty One One Unimplemented +Child Four Server MaxCount Two Eight PermissionDenied +Child One Unspecified FaaSDatasource Nil Nil ResourceExhausted +Child Empty Unspecified gRPCServer Eight Empty Unavailable +Child One Unspecified HTTPServer Nil One UnknownError +Child Four Internal Internal Nil Eight OutOfRange +Child One Unspecified FaaSOther One Nil Ok +Child Four Client DatabaseSQL Eight Two InternalError +Child Empty Unspecified DatabaseSQL One Eight NotFound +Child Empty Client DatabaseSQL One Nil OutOfRange +Child Four Server FaaSTimer Eight Empty Unauthenticated +Child Four Client DatabaseSQL One Nil AlreadyExists +Child Empty Unspecified HTTPServer Empty One InternalError +Root One Server MaxCount One One Nil +Child Four Unspecified MessagingProducer Two Nil ResourceExhausted +Child Four Client HTTPClient One Two Aborted +Child Empty Client DatabaseNoSQL Two Nil AlreadyExists +Child One Unspecified MaxCount Nil Empty DataLoss +Child One Internal Internal Empty Nil DataLoss +Child One Producer MessagingProducer One Two NotFound +Child One Unspecified FaaSTimer Two Two PermissionDenied +Root One Server FaaSOther Eight Empty Cancelled +Child Empty Client DatabaseSQL Empty One DeadlineExceeded +Child One Unspecified HTTPServer Two Eight Unimplemented +Child Four Client HTTPClient Nil Eight Nil +Root Empty Server MaxCount Nil Nil Unavailable +Child Four Internal Internal One One Aborted +Child One Unspecified FaaSHTTP Empty Nil PermissionDenied +Child One Unspecified FaaSHTTP Nil Two Unimplemented +Child One Unspecified MessagingConsumer Two Two PermissionDenied +Root One Server FaaSOther Nil Nil InvalidArgument +Child Empty Unspecified HTTPClient Empty Eight Unavailable +Child One Unspecified FaaSPubSub Eight Empty Unauthenticated +Child Empty Client gRPCClient Empty Empty AlreadyExists +Child One Unspecified DatabaseNoSQL One Empty InternalError +Root One Server FaaSHTTP One Empty Unauthenticated +Child Empty Server MaxCount Empty Empty ResourceExhausted +Child Four Client DatabaseSQL One Nil Unavailable +Root Four Server gRPCServer Nil Eight ResourceExhausted +Child Empty Internal Internal Nil Empty Unauthenticated +Child Four Unspecified HTTPServer Two Empty NotFound +Child Four Server MaxCount Two Eight Unauthenticated +Child Empty Unspecified MessagingConsumer Empty Two DeadlineExceeded +Child Four Client HTTPClient Two Two AlreadyExists +Child One Unspecified gRPCClient Nil Two NotFound +Child Empty Unspecified FaaSPubSub Nil Nil InvalidArgument +Child One Internal Internal Two Two AlreadyExists +Child Empty Consumer FaaSDatasource One Two InvalidArgument +Child Empty Server FaaSOther Nil Eight DataLoss +Child One Unspecified gRPCClient Nil Empty UnknownError +Child One Server Nil One Empty Aborted +Child Four Unspecified FaaSTimer One Two DataLoss +Child Empty Unspecified FaaSPubSub Empty One Aborted +Child One Unspecified FaaSHTTP Eight One Nil +Child One Client DatabaseSQL Eight Nil DataLoss +Child Empty Server HTTPServer Nil Eight OutOfRange +Child One Client gRPCClient Eight Two Aborted +Child One Unspecified DatabaseNoSQL Two Eight Nil +Child Four Client DatabaseNoSQL Eight Empty Aborted +Child Empty Internal Internal Eight One Unavailable +Child One Unspecified gRPCServer One Eight NotFound +Child Empty Unspecified FaaSHTTP One Two Ok +Child Four Unspecified gRPCServer One Empty UnknownError +Child Four Client DatabaseNoSQL One Nil Cancelled +Child Four Unspecified MessagingProducer Two Empty Unavailable +Child Empty Unspecified Empty Nil Eight Aborted +Child Four Server MaxCount Nil Nil DeadlineExceeded +Child Empty Client DatabaseSQL One Nil Unimplemented +Child Four Unspecified FaaSTimer Two Empty InternalError +Child Empty Unspecified DatabaseNoSQL One Eight OutOfRange +Root One Server FaaSHTTP Empty Empty Unavailable +Child One Unspecified FaaSDatasource Two Empty Cancelled +Child Empty Consumer MessagingConsumer Two One UnknownError +Child Empty Unspecified FaaSHTTP Two One FailedPrecondition +Child One Client Empty Two Nil InternalError +Root One Producer FaaSPubSub Eight Two DeadlineExceeded +Root One Producer MessagingProducer Empty Two UnknownError diff --git a/otel-patches/coreinternal/goldendataset/testdata/generated_pict_pairs_traces.txt b/otel-patches/coreinternal/goldendataset/testdata/generated_pict_pairs_traces.txt new file mode 100644 index 000000000000..6d3647b966db --- /dev/null +++ b/otel-patches/coreinternal/goldendataset/testdata/generated_pict_pairs_traces.txt @@ -0,0 +1,33 @@ +Resource InstrumentationLibrary Spans +VMOnPrem None None +Nil One None +Exec One Several +Exec None All +Nil Two One +Empty Two Several +VMCloud Two All +K8sOnPrem None One +Empty Two None +Nil None Several +K8sOnPrem One None +K8sCloud One All +VMCloud One One +Nil None All +K8sOnPrem Two Several +K8sCloud Two One +Exec Two None +VMOnPrem Two One +K8sCloud None None +Faas One None +Faas Two Several +Exec One One +VMCloud None Several +Faas None All +Empty One One +K8sCloud None Several +VMOnPrem One All +VMOnPrem One Several +K8sOnPrem Two All +VMCloud Two None +Empty None All +Faas One One diff --git a/otel-patches/coreinternal/goldendataset/testdata/pict_input_metrics.txt b/otel-patches/coreinternal/goldendataset/testdata/pict_input_metrics.txt new file mode 100644 index 000000000000..4d2cabfe360a --- /dev/null +++ b/otel-patches/coreinternal/goldendataset/testdata/pict_input_metrics.txt @@ -0,0 +1,4 @@ +NumPtsPerMetric: OnePt, ManyPts +MetricType: DoubleGauge, MonotonicDoubleSum, NonMonotonicDoubleSum, DoubleExemplarsHistogram, IntGauge, MonotonicIntSum, NonMonotonicIntSum, IntExemplarsHistogram +NumLabels: NoLabels, OneLabel, ManyLabels +NumResourceAttrs: NoAttrs, OneAttr, TwoAttrs diff --git a/otel-patches/coreinternal/goldendataset/testdata/pict_input_spans.txt b/otel-patches/coreinternal/goldendataset/testdata/pict_input_spans.txt new file mode 100644 index 000000000000..f25602987d1e --- /dev/null +++ b/otel-patches/coreinternal/goldendataset/testdata/pict_input_spans.txt @@ -0,0 +1,14 @@ +Parent: Root, Child +Tracestate: Empty, One, Four +Kind: Unspecified, Internal, Server, Client, Producer, Consumer +Attributes: Empty, DatabaseSQL, DatabaseNoSQL, FaaSDatasource, FaaSHTTP, FaaSPubSub, FaaSTimer, FaaSOther, HTTPClient, HTTPServer, MessagingProducer, MessagingConsumer, gRPCClient, gRPCServer, Internal, MaxCount +Events: Empty, One, Two, Eight +Links: Empty, One, Two, Eight +Status: Unset, Ok, Error + +IF [Parent] = "Root" THEN [Kind] in {"Server", "Producer"}; +IF [Kind] = "Internal" THEN [Attributes] in {"Nil", "Internal"}; +IF [Kind] = "Server" THEN [Attributes] in {"Nil", "FaaSHTTP", "FaaSTimer", "FaaSOther", "HTTPServer", "gRPCServer", "MaxCount"}; +IF [Kind] = "Client" THEN [Attributes] in {"Empty", "DatabaseSQL", "DatabaseNoSQL", "HTTPClient", "gRPCClient"}; +IF [Kind] = "Producer" THEN [Attributes] in {"Empty", "MessagingProducer", "FaaSPubSub"}; +IF [Kind] = "Consumer" THEN [Attributes] in {"Nil", "MessagingConsumer", "FaaSDatasource"}; diff --git a/otel-patches/coreinternal/goldendataset/testdata/pict_input_traces.txt b/otel-patches/coreinternal/goldendataset/testdata/pict_input_traces.txt new file mode 100644 index 000000000000..9eb0b9a29c16 --- /dev/null +++ b/otel-patches/coreinternal/goldendataset/testdata/pict_input_traces.txt @@ -0,0 +1,3 @@ +Resource: Empty, VMOnPrem, VMCloud, K8sOnPrem, K8sCloud, Faas, Exec +InstrumentationLibrary: None, One, Two +Spans: None, One, Several, All diff --git a/otel-patches/coreinternal/goldendataset/traces_generator.go b/otel-patches/coreinternal/goldendataset/traces_generator.go new file mode 100644 index 000000000000..2e89bdfeb1c6 --- /dev/null +++ b/otel-patches/coreinternal/goldendataset/traces_generator.go @@ -0,0 +1,158 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package goldendataset // import "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/goldendataset" + +import ( + "encoding/binary" + "errors" + "fmt" + "io" + "math/rand/v2" + + "go.opentelemetry.io/collector/pdata/pcommon" + "go.opentelemetry.io/collector/pdata/ptrace" + + "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/internal/metadata" +) + +// GenerateTraces generates a slice of OTLP ResourceSpans objects based on the PICT-generated pairwise +// parameters defined in the parameters file specified by the tracePairsFile parameter. The pairs to generate +// spans for defined in the file specified by the spanPairsFile parameter. +// The slice of ResourceSpans are returned. If an err is returned, the slice elements will be nil. +func GenerateTraces(tracePairsFile, spanPairsFile string) ([]ptrace.Traces, error) { + if metadata.InternalCoreinternalGoldendatasetDontEmitV0NetworkConventionsFeatureGate.IsEnabled() && !metadata.InternalCoreinternalGoldendatasetEmitV1NetworkConventionsFeatureGate.IsEnabled() { + return nil, errors.New("internal.coreinternal.goldendataset.DontEmitV0NetworkConventions cannot be enabled without enabling internal.coreinternal.goldendataset.EmitV1NetworkConventions") + } + if metadata.InternalCoreinternalGoldendatasetDontEmitV0DatabaseConventionsFeatureGate.IsEnabled() && !metadata.InternalCoreinternalGoldendatasetEmitV1DatabaseConventionsFeatureGate.IsEnabled() { + return nil, errors.New("internal.coreinternal.goldendataset.DontEmitV0DatabaseConventions cannot be enabled without enabling internal.coreinternal.goldendataset.EmitV1DatabaseConventions") + } + if metadata.InternalCoreinternalGoldendatasetDontEmitV0RPCConventionsFeatureGate.IsEnabled() && !metadata.InternalCoreinternalGoldendatasetEmitV1RPCConventionsFeatureGate.IsEnabled() { + return nil, errors.New("internal.coreinternal.goldendataset.DontEmitV0RPCConventions cannot be enabled without enabling internal.coreinternal.goldendataset.EmitV1RPCConventions") + } + if metadata.InternalCoreinternalGoldendatasetDontEmitV0MessagingConventionsFeatureGate.IsEnabled() && !metadata.InternalCoreinternalGoldendatasetEmitV1MessagingConventionsFeatureGate.IsEnabled() { + return nil, errors.New("internal.coreinternal.goldendataset.DontEmitV0MessagingConventions cannot be enabled without enabling internal.coreinternal.goldendataset.EmitV1MessagingConventions") + } + random := (*randReader)(rand.New(rand.NewPCG(42, 0))) + pairsData, err := loadPictOutputFile(tracePairsFile) + if err != nil { + return nil, err + } + pairsTotal := len(pairsData) - 1 + traces := make([]ptrace.Traces, pairsTotal) + for index, values := range pairsData { + if index == 0 { + continue + } + tracingInputs := &PICTTracingInputs{ + Resource: PICTInputResource(values[TracesColumnResource]), + InstrumentationLibrary: PICTInputInstrumentationLibrary(values[TracesColumnInstrumentationLibrary]), + Spans: PICTInputSpans(values[TracesColumnSpans]), + } + traces[index-1] = ptrace.NewTraces() + spanErr := appendResourceSpan(tracingInputs, spanPairsFile, random, traces[index-1].ResourceSpans()) + if spanErr != nil { + return nil, err + } + } + return traces, err +} + +// TODO: use math/rand/v2.ChaCha8.Read when we upgrade to go1.23. +type randReader rand.Rand + +func (r *randReader) Read(p []byte) (n int, err error) { + for len(p) >= 8 { + binary.BigEndian.PutUint64(p[:8], (*rand.Rand)(r).Uint64()) + p = p[8:] + n += 8 + } + if len(p) > 0 { + var buf [8]byte + binary.BigEndian.PutUint64(buf[:], (*rand.Rand)(r).Uint64()) + n += copy(p, buf[:]) + } + return n, err +} + +// generateResourceSpan generates a single PData ResourceSpans populated based on the provided inputs. They are: +// +// tracingInputs - the pairwise combination of field value variations for this ResourceSpans +// spanPairsFile - the file with the PICT-generated parameter combinations to generate spans for +// random - the random number generator to use in generating ID values +// +// The generated resource spans. If err is not nil, some or all of the resource spans fields will be nil. +func appendResourceSpan(tracingInputs *PICTTracingInputs, spanPairsFile string, + random io.Reader, resourceSpansSlice ptrace.ResourceSpansSlice, +) error { + resourceSpan := resourceSpansSlice.AppendEmpty() + err := appendScopeSpans(tracingInputs, spanPairsFile, random, resourceSpan.ScopeSpans()) + if err != nil { + return err + } + GenerateResource(tracingInputs.Resource).CopyTo(resourceSpan.Resource()) + return nil +} + +func appendScopeSpans(tracingInputs *PICTTracingInputs, spanPairsFile string, + random io.Reader, scopeSpansSlice ptrace.ScopeSpansSlice, +) error { + var count int + switch tracingInputs.InstrumentationLibrary { + case LibraryNone: + count = 1 + case LibraryOne: + count = 1 + case LibraryTwo: + count = 2 + } + for i := 0; i < count; i++ { + err := fillScopeSpans(tracingInputs, i, spanPairsFile, random, scopeSpansSlice.AppendEmpty()) + if err != nil { + return err + } + } + return nil +} + +func fillScopeSpans(tracingInputs *PICTTracingInputs, index int, spanPairsFile string, random io.Reader, scopeSpans ptrace.ScopeSpans) error { + spanCaseCount, err := countTotalSpanCases(spanPairsFile) + if err != nil { + return err + } + fillInstrumentationLibrary(tracingInputs, index, scopeSpans.Scope()) + switch tracingInputs.Spans { + case LibrarySpansNone: + return nil + case LibrarySpansOne: + return appendSpans(1, spanPairsFile, random, scopeSpans.Spans()) + case LibrarySpansSeveral: + return appendSpans(spanCaseCount/4, spanPairsFile, random, scopeSpans.Spans()) + case LibrarySpansAll: + return appendSpans(spanCaseCount, spanPairsFile, random, scopeSpans.Spans()) + default: + return appendSpans(16, spanPairsFile, random, scopeSpans.Spans()) + } +} + +func countTotalSpanCases(spanPairsFile string) (int, error) { + pairsData, err := loadPictOutputFile(spanPairsFile) + if err != nil { + return 0, err + } + count := len(pairsData) - 1 + return count, err +} + +func fillInstrumentationLibrary(tracingInputs *PICTTracingInputs, index int, scope pcommon.InstrumentationScope) { + if tracingInputs.InstrumentationLibrary == LibraryNone { + return + } + nameStr := fmt.Sprintf("%s-%s-%s-%d", tracingInputs.Resource, tracingInputs.InstrumentationLibrary, tracingInputs.Spans, index) + verStr := "semver:1.1.7" + if index > 0 { + verStr = "" + } + scope.SetName(nameStr) + scope.SetVersion(verStr) +} diff --git a/otel-patches/coreinternal/goldendataset/traces_generator_test.go b/otel-patches/coreinternal/goldendataset/traces_generator_test.go new file mode 100644 index 000000000000..740275d3ea3d --- /dev/null +++ b/otel-patches/coreinternal/goldendataset/traces_generator_test.go @@ -0,0 +1,57 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package goldendataset + +import ( + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "go.opentelemetry.io/collector/featuregate" + + "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/internal/metadata" +) + +func TestGenerateTraces(t *testing.T) { + rscSpans, err := GenerateTraces("testdata/generated_pict_pairs_traces.txt", + "testdata/generated_pict_pairs_spans.txt") + assert.NoError(t, err) + assert.Len(t, rscSpans, 32) +} + +func TestGenerateTracesInvalidRPCFeatureGateCombination(t *testing.T) { + require.NoError(t, featuregate.GlobalRegistry().Set(metadata.InternalCoreinternalGoldendatasetDontEmitV0RPCConventionsFeatureGate.ID(), true)) + require.NoError(t, featuregate.GlobalRegistry().Set(metadata.InternalCoreinternalGoldendatasetEmitV1RPCConventionsFeatureGate.ID(), false)) + t.Cleanup(func() { + require.NoError(t, featuregate.GlobalRegistry().Set(metadata.InternalCoreinternalGoldendatasetDontEmitV0RPCConventionsFeatureGate.ID(), false)) + require.NoError(t, featuregate.GlobalRegistry().Set(metadata.InternalCoreinternalGoldendatasetEmitV1RPCConventionsFeatureGate.ID(), false)) + }) + + _, err := GenerateTraces("testdata/generated_pict_pairs_traces.txt", "testdata/generated_pict_pairs_spans.txt") + require.ErrorContains(t, err, "internal.coreinternal.goldendataset.DontEmitV0RPCConventions cannot be enabled without enabling internal.coreinternal.goldendataset.EmitV1RPCConventions") +} + +func TestGenerateTracesInvalidDatabaseFeatureGateCombination(t *testing.T) { + require.NoError(t, featuregate.GlobalRegistry().Set(metadata.InternalCoreinternalGoldendatasetDontEmitV0DatabaseConventionsFeatureGate.ID(), true)) + require.NoError(t, featuregate.GlobalRegistry().Set(metadata.InternalCoreinternalGoldendatasetEmitV1DatabaseConventionsFeatureGate.ID(), false)) + t.Cleanup(func() { + require.NoError(t, featuregate.GlobalRegistry().Set(metadata.InternalCoreinternalGoldendatasetDontEmitV0DatabaseConventionsFeatureGate.ID(), false)) + require.NoError(t, featuregate.GlobalRegistry().Set(metadata.InternalCoreinternalGoldendatasetEmitV1DatabaseConventionsFeatureGate.ID(), false)) + }) + + _, err := GenerateTraces("testdata/generated_pict_pairs_traces.txt", "testdata/generated_pict_pairs_spans.txt") + require.ErrorContains(t, err, "internal.coreinternal.goldendataset.DontEmitV0DatabaseConventions cannot be enabled without enabling internal.coreinternal.goldendataset.EmitV1DatabaseConventions") +} + +func TestGenerateTracesInvalidMessagingFeatureGateCombination(t *testing.T) { + require.NoError(t, featuregate.GlobalRegistry().Set(metadata.InternalCoreinternalGoldendatasetDontEmitV0MessagingConventionsFeatureGate.ID(), true)) + require.NoError(t, featuregate.GlobalRegistry().Set(metadata.InternalCoreinternalGoldendatasetEmitV1MessagingConventionsFeatureGate.ID(), false)) + t.Cleanup(func() { + require.NoError(t, featuregate.GlobalRegistry().Set(metadata.InternalCoreinternalGoldendatasetDontEmitV0MessagingConventionsFeatureGate.ID(), false)) + require.NoError(t, featuregate.GlobalRegistry().Set(metadata.InternalCoreinternalGoldendatasetEmitV1MessagingConventionsFeatureGate.ID(), false)) + }) + + _, err := GenerateTraces("testdata/generated_pict_pairs_traces.txt", "testdata/generated_pict_pairs_spans.txt") + require.ErrorContains(t, err, "internal.coreinternal.goldendataset.DontEmitV0MessagingConventions cannot be enabled without enabling internal.coreinternal.goldendataset.EmitV1MessagingConventions") +} diff --git a/otel-patches/coreinternal/internal/metadata/BUILD.bazel b/otel-patches/coreinternal/internal/metadata/BUILD.bazel new file mode 100644 index 000000000000..f88c050b4696 --- /dev/null +++ b/otel-patches/coreinternal/internal/metadata/BUILD.bazel @@ -0,0 +1,9 @@ +load("@@rules_go+//go:def.bzl", "go_library") + +go_library( + name = "metadata", + srcs = ["generated_feature_gates.go"], + importpath = "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/internal/metadata", # keep + visibility = ["//visibility:public"], + deps = ["@io_opentelemetry_go_collector_featuregate//:featuregate"], +) diff --git a/otel-patches/coreinternal/internal/metadata/generated_feature_gates.go b/otel-patches/coreinternal/internal/metadata/generated_feature_gates.go new file mode 100644 index 000000000000..364a3bdccf84 --- /dev/null +++ b/otel-patches/coreinternal/internal/metadata/generated_feature_gates.go @@ -0,0 +1,103 @@ +// Code generated by mdatagen. DO NOT EDIT. + +package metadata + +import ( + "go.opentelemetry.io/collector/featuregate" +) + +var InternalCoreinternalGoldendatasetDontEmitV0DatabaseConventionsFeatureGate = featuregate.GlobalRegistry().MustRegister( + "internal.coreinternal.goldendataset.DontEmitV0DatabaseConventions", + featuregate.StageAlpha, + featuregate.WithRegisterDescription("When enabled, goldendataset no longer generates spans with deprecated semconv v1.28.0 attribute db.system."), + featuregate.WithRegisterReferenceURL("https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/45299"), + featuregate.WithRegisterFromVersion("v0.154.0"), +) + +var InternalCoreinternalGoldendatasetDontEmitV0FaaSConventionsFeatureGate = featuregate.GlobalRegistry().MustRegister( + "internal.coreinternal.goldendataset.DontEmitV0FaaSConventions", + featuregate.StageAlpha, + featuregate.WithRegisterDescription("When enabled, goldendataset no longer generates spans with deprecated semconv FaaS attributes like faas.execution."), + featuregate.WithRegisterReferenceURL("https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/45293"), + featuregate.WithRegisterFromVersion("v0.155.0"), +) + +var InternalCoreinternalGoldendatasetDontEmitV0HTTPConventionsFeatureGate = featuregate.GlobalRegistry().MustRegister( + "internal.coreinternal.goldendataset.DontEmitV0HTTPConventions", + featuregate.StageAlpha, + featuregate.WithRegisterDescription("When enabled, goldendataset no longer generates spans with deprecated semconv HTTP attributes like http.user_agent and http.client_ip."), + featuregate.WithRegisterReferenceURL("https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/45293"), + featuregate.WithRegisterFromVersion("v0.154.0"), +) + +var InternalCoreinternalGoldendatasetDontEmitV0MessagingConventionsFeatureGate = featuregate.GlobalRegistry().MustRegister( + "internal.coreinternal.goldendataset.DontEmitV0MessagingConventions", + featuregate.StageAlpha, + featuregate.WithRegisterDescription("When enabled, goldendataset no longer generates spans with deprecated semconv v1.16.0 attribute messaging.destination."), + featuregate.WithRegisterReferenceURL("https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/45077"), + featuregate.WithRegisterFromVersion("v0.155.0"), +) + +var InternalCoreinternalGoldendatasetDontEmitV0NetworkConventionsFeatureGate = featuregate.GlobalRegistry().MustRegister( + "internal.coreinternal.goldendataset.DontEmitV0NetworkConventions", + featuregate.StageBeta, + featuregate.WithRegisterDescription("When enabled, goldendataset no longer generates spans with deprecated semconv v1.12.0 attributes (net.host.ip, net.peer.ip, http.host, http.server_name)."), + featuregate.WithRegisterReferenceURL("https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/45076"), + featuregate.WithRegisterFromVersion("v0.147.0"), +) + +var InternalCoreinternalGoldendatasetDontEmitV0RPCConventionsFeatureGate = featuregate.GlobalRegistry().MustRegister( + "internal.coreinternal.goldendataset.DontEmitV0RPCConventions", + featuregate.StageBeta, + featuregate.WithRegisterDescription("When enabled, goldendataset no longer generates spans with deprecated semconv RPC attributes rpc.service and peer.service."), + featuregate.WithRegisterReferenceURL("https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/47548"), + featuregate.WithRegisterFromVersion("v0.148.0"), +) + +var InternalCoreinternalGoldendatasetEmitV1DatabaseConventionsFeatureGate = featuregate.GlobalRegistry().MustRegister( + "internal.coreinternal.goldendataset.EmitV1DatabaseConventions", + featuregate.StageAlpha, + featuregate.WithRegisterDescription("When enabled, goldendataset generates spans with db.system.name (semconv v1.40.0) instead of the deprecated db.system (semconv v1.28.0)."), + featuregate.WithRegisterReferenceURL("https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/45299"), + featuregate.WithRegisterFromVersion("v0.154.0"), +) + +var InternalCoreinternalGoldendatasetEmitV1FaaSConventionsFeatureGate = featuregate.GlobalRegistry().MustRegister( + "internal.coreinternal.goldendataset.EmitV1FaaSConventions", + featuregate.StageAlpha, + featuregate.WithRegisterDescription("When enabled, goldendataset generates spans with faas.invocation_id (semconv v1.40.0) alongside legacy faas.execution to support migration."), + featuregate.WithRegisterReferenceURL("https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/45293"), + featuregate.WithRegisterFromVersion("v0.155.0"), +) + +var InternalCoreinternalGoldendatasetEmitV1HTTPConventionsFeatureGate = featuregate.GlobalRegistry().MustRegister( + "internal.coreinternal.goldendataset.EmitV1HTTPConventions", + featuregate.StageAlpha, + featuregate.WithRegisterDescription("When enabled, goldendataset generates spans with user_agent.original and client.address (semconv v1.40.0) alongside legacy http.user_agent and http.client_ip to support migration."), + featuregate.WithRegisterReferenceURL("https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/45293"), + featuregate.WithRegisterFromVersion("v0.154.0"), +) + +var InternalCoreinternalGoldendatasetEmitV1MessagingConventionsFeatureGate = featuregate.GlobalRegistry().MustRegister( + "internal.coreinternal.goldendataset.EmitV1MessagingConventions", + featuregate.StageAlpha, + featuregate.WithRegisterDescription("When enabled, goldendataset generates spans with messaging.destination.name (semconv v1.40.0) alongside legacy messaging.destination to support migration."), + featuregate.WithRegisterReferenceURL("https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/45077"), + featuregate.WithRegisterFromVersion("v0.155.0"), +) + +var InternalCoreinternalGoldendatasetEmitV1NetworkConventionsFeatureGate = featuregate.GlobalRegistry().MustRegister( + "internal.coreinternal.goldendataset.EmitV1NetworkConventions", + featuregate.StageBeta, + featuregate.WithRegisterDescription("When enabled, goldendataset generates spans with network.local.address, network.peer.address, and server.address (semconv v1.38.0) instead of the deprecated net.host.ip, net.peer.ip, http.host, http.server_name (semconv v1.12.0). Enable together with pkg.translator.zipkin.EmitV1NetworkConventions for consistent round-trip translation in tests."), + featuregate.WithRegisterReferenceURL("https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/45076"), + featuregate.WithRegisterFromVersion("v0.147.0"), +) + +var InternalCoreinternalGoldendatasetEmitV1RPCConventionsFeatureGate = featuregate.GlobalRegistry().MustRegister( + "internal.coreinternal.goldendataset.EmitV1RPCConventions", + featuregate.StageBeta, + featuregate.WithRegisterDescription("When enabled, goldendataset generates spans with rpc.method and service.peer.name (semconv v1.40.0) alongside legacy rpc.service and peer.service to support migration."), + featuregate.WithRegisterReferenceURL("https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/47548"), + featuregate.WithRegisterFromVersion("v0.148.0"), +) diff --git a/otel-patches/coreinternal/metadata.yaml b/otel-patches/coreinternal/metadata.yaml new file mode 100644 index 000000000000..030eca361fa3 --- /dev/null +++ b/otel-patches/coreinternal/metadata.yaml @@ -0,0 +1,113 @@ +type: coreinternal + +status: + disable_codecov_badge: true + stability: + alpha: [logs, metrics, traces, profiles] + codeowners: + active: [open-telemetry/collector-approvers] + class: pkg + +feature_gates: + - id: internal.coreinternal.goldendataset.DontEmitV0DatabaseConventions + stage: alpha + description: >- + When enabled, goldendataset no longer generates spans with deprecated + semconv v1.28.0 attribute db.system. + from_version: v0.154.0 + reference_url: https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/45299 + skip_strict_validation: true + - id: internal.coreinternal.goldendataset.DontEmitV0FaaSConventions + stage: alpha + description: >- + When enabled, goldendataset no longer generates spans with deprecated + semconv FaaS attributes like faas.execution. + from_version: v0.155.0 + reference_url: https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/45293 + skip_strict_validation: true + - id: internal.coreinternal.goldendataset.DontEmitV0HTTPConventions + stage: alpha + description: >- + When enabled, goldendataset no longer generates spans with deprecated + semconv HTTP attributes like http.user_agent and http.client_ip. + from_version: v0.154.0 + reference_url: https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/45293 + skip_strict_validation: true + - id: internal.coreinternal.goldendataset.DontEmitV0MessagingConventions + stage: alpha + description: >- + When enabled, goldendataset no longer generates spans with deprecated + semconv v1.16.0 attribute messaging.destination. + from_version: v0.155.0 + reference_url: https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/45077 + skip_strict_validation: true + - id: internal.coreinternal.goldendataset.DontEmitV0NetworkConventions + stage: beta + description: >- + When enabled, goldendataset no longer generates spans with deprecated + semconv v1.12.0 attributes (net.host.ip, net.peer.ip, http.host, http.server_name). + from_version: v0.147.0 + reference_url: https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/45076 + skip_strict_validation: true + - id: internal.coreinternal.goldendataset.DontEmitV0RPCConventions + stage: beta + description: >- + When enabled, goldendataset no longer generates spans with deprecated + semconv RPC attributes rpc.service and peer.service. + from_version: v0.148.0 + reference_url: https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/47548 + skip_strict_validation: true + - id: internal.coreinternal.goldendataset.EmitV1DatabaseConventions + stage: alpha + description: >- + When enabled, goldendataset generates spans with db.system.name + (semconv v1.40.0) instead of the deprecated db.system (semconv v1.28.0). + from_version: v0.154.0 + reference_url: https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/45299 + skip_strict_validation: true + - id: internal.coreinternal.goldendataset.EmitV1FaaSConventions + stage: alpha + description: >- + When enabled, goldendataset generates spans with faas.invocation_id + (semconv v1.40.0) alongside legacy faas.execution to support migration. + from_version: v0.155.0 + reference_url: https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/45293 + skip_strict_validation: true + - id: internal.coreinternal.goldendataset.EmitV1HTTPConventions + stage: alpha + description: >- + When enabled, goldendataset generates spans with user_agent.original + and client.address (semconv v1.40.0) alongside legacy http.user_agent + and http.client_ip to support migration. + from_version: v0.154.0 + reference_url: https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/45293 + skip_strict_validation: true + - id: internal.coreinternal.goldendataset.EmitV1MessagingConventions + stage: alpha + description: >- + When enabled, goldendataset generates spans with messaging.destination.name + (semconv v1.40.0) alongside legacy messaging.destination to support migration. + from_version: v0.155.0 + reference_url: https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/45077 + skip_strict_validation: true + - id: internal.coreinternal.goldendataset.EmitV1NetworkConventions + stage: beta + description: >- + When enabled, goldendataset generates spans with network.local.address, + network.peer.address, and server.address (semconv v1.38.0) instead of + the deprecated net.host.ip, net.peer.ip, http.host, http.server_name + (semconv v1.12.0). Enable together with + pkg.translator.zipkin.EmitV1NetworkConventions for consistent round-trip + translation in tests. + from_version: v0.147.0 + reference_url: https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/45076 + skip_strict_validation: true + - id: internal.coreinternal.goldendataset.EmitV1RPCConventions + stage: beta + description: >- + When enabled, goldendataset generates spans with rpc.method and + service.peer.name (semconv v1.40.0) alongside legacy rpc.service and + peer.service to support migration. + from_version: v0.148.0 + reference_url: https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/47548 + skip_strict_validation: true diff --git a/otel-patches/coreinternal/metricstestutil/BUILD.bazel b/otel-patches/coreinternal/metricstestutil/BUILD.bazel new file mode 100644 index 000000000000..dd92423a43c2 --- /dev/null +++ b/otel-patches/coreinternal/metricstestutil/BUILD.bazel @@ -0,0 +1,28 @@ +load("@@rules_go+//go:def.bzl", "go_library", "go_test") + +go_library( + name = "metricstestutil", + srcs = ["metric_diff.go"], + importpath = "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/metricstestutil", # keep + visibility = ["//visibility:public"], + deps = [ + "@io_opentelemetry_go_collector_pdata//pcommon", + "@io_opentelemetry_go_collector_pdata//pmetric", + ], +) + +go_test( + name = "metricstestutil_test", + srcs = [ + "metric_diff_test.go", + "package_test.go", + ], + embed = [":metricstestutil"], + gotags = ["test"], + deps = [ + "@@gazelle++go_deps+com_github_open_telemetry_opentelemetry_collector_contrib_internal_coreinternal//goldendataset", + "@com_github_stretchr_testify//assert", + "@io_opentelemetry_go_collector_pdata//pmetric", + "@org_uber_go_goleak//:goleak", + ], # keep +) diff --git a/otel-patches/coreinternal/metricstestutil/metric_diff.go b/otel-patches/coreinternal/metricstestutil/metric_diff.go new file mode 100644 index 000000000000..b1e104afdccb --- /dev/null +++ b/otel-patches/coreinternal/metricstestutil/metric_diff.go @@ -0,0 +1,356 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package metricstestutil // import "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/metricstestutil" + +import ( + "fmt" + "reflect" + "strings" + + "go.opentelemetry.io/collector/pdata/pcommon" + "go.opentelemetry.io/collector/pdata/pmetric" +) + +// MetricDiff is intended to support producing human-readable diffs between two MetricData structs during +// testing. Two MetricDatas, when compared, could produce a list of MetricDiffs containing all of their +// differences, which could be used to correct the differences between the expected and actual values. +type MetricDiff struct { + ExpectedValue any + ActualValue any + Msg string +} + +func (mf MetricDiff) String() string { + return fmt.Sprintf("{msg='%v' expected=[%v] actual=[%v]}\n", mf.Msg, mf.ExpectedValue, mf.ActualValue) +} + +func DiffMetrics(diffs []*MetricDiff, expected, actual pmetric.Metrics) []*MetricDiff { + return append(diffs, diffMetricData(expected, actual)...) +} + +func diffRMSlices(sent, recd []pmetric.ResourceMetrics) []*MetricDiff { + var diffs []*MetricDiff + if len(sent) != len(recd) { + return []*MetricDiff{{ + ExpectedValue: len(sent), + ActualValue: len(recd), + Msg: "Sent vs received ResourceMetrics not equal length", + }} + } + for i := range sent { + sentRM := sent[i] + recdRM := recd[i] + diffs = diffRMs(diffs, sentRM, recdRM) + } + return diffs +} + +func diffRMs(diffs []*MetricDiff, expected, actual pmetric.ResourceMetrics) []*MetricDiff { + diffs = diffResource(diffs, expected.Resource(), actual.Resource()) + diffs = diffILMSlice( + diffs, + expected.ScopeMetrics(), + actual.ScopeMetrics(), + ) + return diffs +} + +func diffILMSlice( + diffs []*MetricDiff, + expected pmetric.ScopeMetricsSlice, + actual pmetric.ScopeMetricsSlice, +) []*MetricDiff { + var mismatch bool + diffs, mismatch = diffValues(diffs, actual.Len(), expected.Len(), "ScopeMetricsSlice len") + if mismatch { + return diffs + } + for i := 0; i < expected.Len(); i++ { + diffs = diffILM(diffs, expected.At(i), actual.At(i)) + } + return diffs +} + +func diffILM( + diffs []*MetricDiff, + expected pmetric.ScopeMetrics, + actual pmetric.ScopeMetrics, +) []*MetricDiff { + return diffMetrics(diffs, expected.Metrics(), actual.Metrics()) +} + +func diffMetrics(diffs []*MetricDiff, expected, actual pmetric.MetricSlice) []*MetricDiff { + var mismatch bool + diffs, mismatch = diffValues(diffs, actual.Len(), expected.Len(), "MetricSlice len") + if mismatch { + return diffs + } + for i := 0; i < expected.Len(); i++ { + diffs = DiffMetric(diffs, expected.At(i), actual.At(i)) + } + return diffs +} + +func diffMetricData(expected, actual pmetric.Metrics) []*MetricDiff { + expectedRMSlice := expected.ResourceMetrics() + actualRMSlice := actual.ResourceMetrics() + return diffRMSlices(toSlice(expectedRMSlice), toSlice(actualRMSlice)) +} + +func toSlice(s pmetric.ResourceMetricsSlice) (out []pmetric.ResourceMetrics) { + for i := 0; i < s.Len(); i++ { + out = append(out, s.At(i)) + } + return out +} + +func DiffMetric(diffs []*MetricDiff, expected, actual pmetric.Metric) []*MetricDiff { + var mismatch bool + diffs, mismatch = diffMetricDescriptor(diffs, expected, actual) + if mismatch { + return diffs + } + //exhaustive:enforce + switch actual.Type() { + case pmetric.MetricTypeGauge: + diffs = diffNumberPts(diffs, expected.Gauge().DataPoints(), actual.Gauge().DataPoints()) + case pmetric.MetricTypeSum: + diffs = diff(diffs, expected.Sum().IsMonotonic(), actual.Sum().IsMonotonic(), "Sum IsMonotonic") + diffs = diff(diffs, expected.Sum().AggregationTemporality(), actual.Sum().AggregationTemporality(), "Sum AggregationTemporality") + diffs = diffNumberPts(diffs, expected.Sum().DataPoints(), actual.Sum().DataPoints()) + case pmetric.MetricTypeHistogram: + diffs = diff(diffs, expected.Histogram().AggregationTemporality(), actual.Histogram().AggregationTemporality(), "Histogram AggregationTemporality") + diffs = diffHistogramPts(diffs, expected.Histogram().DataPoints(), actual.Histogram().DataPoints()) + case pmetric.MetricTypeExponentialHistogram: + diffs = diff(diffs, expected.ExponentialHistogram().AggregationTemporality(), actual.ExponentialHistogram().AggregationTemporality(), "ExponentialHistogram AggregationTemporality") + diffs = diffExponentialHistogramPts(diffs, expected.ExponentialHistogram().DataPoints(), actual.ExponentialHistogram().DataPoints()) + case pmetric.MetricTypeSummary: + // Note: Summary data points are not currently handled + panic("unsupported test case for summary data") + default: + panic("unsupported test case") + } + return diffs +} + +func diffMetricDescriptor( + diffs []*MetricDiff, + expected pmetric.Metric, + actual pmetric.Metric, +) ([]*MetricDiff, bool) { + diffs = diff(diffs, expected.Name(), actual.Name(), "Metric Name") + diffs = diff(diffs, expected.Description(), actual.Description(), "Metric Description") + diffs = diff(diffs, expected.Unit(), actual.Unit(), "Metric Unit") + return diffValues(diffs, expected.Type(), actual.Type(), "Metric Type") +} + +func diffNumberPts( + diffs []*MetricDiff, + expected pmetric.NumberDataPointSlice, + actual pmetric.NumberDataPointSlice, +) []*MetricDiff { + var mismatch bool + diffs, mismatch = diffValues(diffs, expected.Len(), actual.Len(), "NumberDataPointSlice len") + if mismatch { + return diffs + } + for i := 0; i < expected.Len(); i++ { + exPt := expected.At(i) + acPt := actual.At(i) + + diffs = diffMetricAttrs(diffs, exPt.Attributes(), acPt.Attributes()) + diffs, mismatch = diffValues(diffs, exPt.ValueType(), acPt.ValueType(), "NumberDataPoint Value Type") + if mismatch { + return diffs + } + switch exPt.ValueType() { + case pmetric.NumberDataPointValueTypeInt: + diffs = diff(diffs, exPt.IntValue(), acPt.IntValue(), "NumberDataPoint Value") + case pmetric.NumberDataPointValueTypeDouble: + diffs = diff(diffs, exPt.DoubleValue(), acPt.DoubleValue(), "NumberDataPoint Value") + } + diffExemplars(diffs, exPt.Exemplars(), acPt.Exemplars()) + } + return diffs +} + +func diffHistogramPts( + diffs []*MetricDiff, + expected pmetric.HistogramDataPointSlice, + actual pmetric.HistogramDataPointSlice, +) []*MetricDiff { + var mismatch bool + diffs, mismatch = diffValues(diffs, expected.Len(), actual.Len(), "HistogramDataPointSlice len") + if mismatch { + return diffs + } + for i := 0; i < expected.Len(); i++ { + diffs = diffHistogramPt(diffs, expected.At(i), actual.At(i)) + } + return diffs +} + +func diffHistogramPt( + diffs []*MetricDiff, + expected pmetric.HistogramDataPoint, + actual pmetric.HistogramDataPoint, +) []*MetricDiff { + diffs = diffMetricAttrs(diffs, expected.Attributes(), actual.Attributes()) + diffs = diff(diffs, expected.Count(), actual.Count(), "HistogramDataPoint Count") + diffs = diff(diffs, expected.Sum(), actual.Sum(), "HistogramDataPoint Sum") + // TODO: HasSum, Min, HasMin, Max, HasMax are not covered in tests. + var mismatch bool + diffs, mismatch = diffValues(diffs, expected.BucketCounts().Len(), actual.BucketCounts().Len(), "HistogramDataPoint BucketCounts len") + if mismatch { + return diffs + } + for i := 0; i < expected.BucketCounts().Len(); i++ { + diffs = diff(diffs, expected.BucketCounts().At(i), actual.BucketCounts().At(i), "HistogramDataPoint BucketCounts") + } + diffs, mismatch = diffValues(diffs, expected.ExplicitBounds().Len(), actual.ExplicitBounds().Len(), "HistogramDataPoint ExplicitBounds len") + if mismatch { + return diffs + } + for i := 0; i < expected.ExplicitBounds().Len(); i++ { + diffs = diff(diffs, expected.ExplicitBounds().At(i), actual.ExplicitBounds().At(i), "HistogramDataPoint ExplicitBounds") + } + return diffExemplars(diffs, expected.Exemplars(), actual.Exemplars()) +} + +func diffExponentialHistogramPts( + diffs []*MetricDiff, + expected pmetric.ExponentialHistogramDataPointSlice, + actual pmetric.ExponentialHistogramDataPointSlice, +) []*MetricDiff { + var mismatch bool + diffs, mismatch = diffValues(diffs, expected.Len(), actual.Len(), "ExponentialHistogramDataPointSlice len") + if mismatch { + return diffs + } + for i := 0; i < expected.Len(); i++ { + diffs = diffExponentialHistogramPt(diffs, expected.At(i), actual.At(i)) + } + return diffs +} + +func diffExponentialHistogramPt( + diffs []*MetricDiff, + expected pmetric.ExponentialHistogramDataPoint, + actual pmetric.ExponentialHistogramDataPoint, +) []*MetricDiff { + diffs = diffMetricAttrs(diffs, expected.Attributes(), actual.Attributes()) + diffs = diff(diffs, expected.Count(), actual.Count(), "ExponentialHistogramDataPoint Count") + diffs = diff(diffs, expected.HasSum(), actual.HasSum(), "ExponentialHistogramDataPoint HasSum") + diffs = diff(diffs, expected.HasMin(), actual.HasMin(), "ExponentialHistogramDataPoint HasMin") + diffs = diff(diffs, expected.HasMax(), actual.HasMax(), "ExponentialHistogramDataPoint HasMax") + diffs = diff(diffs, expected.Sum(), actual.Sum(), "ExponentialHistogramDataPoint Sum") + diffs = diff(diffs, expected.Min(), actual.Min(), "ExponentialHistogramDataPoint Min") + diffs = diff(diffs, expected.Max(), actual.Max(), "ExponentialHistogramDataPoint Max") + diffs = diff(diffs, expected.ZeroCount(), actual.ZeroCount(), "ExponentialHistogramDataPoint ZeroCount") + diffs = diff(diffs, expected.Scale(), actual.Scale(), "ExponentialHistogramDataPoint Scale") + + diffs = diffExponentialHistogramPtBuckets(diffs, expected.Positive(), actual.Positive()) + diffs = diffExponentialHistogramPtBuckets(diffs, expected.Negative(), actual.Negative()) + + return diffExemplars(diffs, expected.Exemplars(), actual.Exemplars()) +} + +func diffExponentialHistogramPtBuckets( + diffs []*MetricDiff, + expected pmetric.ExponentialHistogramDataPointBuckets, + actual pmetric.ExponentialHistogramDataPointBuckets, +) []*MetricDiff { + diffs = diff(diffs, expected.Offset(), actual.Offset(), "ExponentialHistogramDataPoint Buckets Offset") + exC := expected.BucketCounts() + acC := actual.BucketCounts() + diffs, mod := diffValues(diffs, exC.Len(), acC.Len(), "ExponentialHistogramDataPoint Buckets Len") + if mod { + return diffs + } + for i := 0; i < exC.Len(); i++ { + diffs = diff(diffs, exC.At(i), acC.At(i), fmt.Sprintf("ExponentialHistogramDataPoint Buckets Count[%d]", i)) + } + return diffs +} + +func diffExemplars( + diffs []*MetricDiff, + expected pmetric.ExemplarSlice, + actual pmetric.ExemplarSlice, +) []*MetricDiff { + var mismatch bool + diffs, mismatch = diffValues(diffs, expected.Len(), actual.Len(), "ExemplarSlice len") + if mismatch { + return diffs + } + for i := 0; i < expected.Len(); i++ { + diffs = diff(diffs, expected.At(i).ValueType(), actual.At(i).ValueType(), "Exemplar Value Type") + switch expected.At(i).ValueType() { + case pmetric.ExemplarValueTypeInt: + diffs = diff(diffs, expected.At(i).IntValue(), actual.At(i).IntValue(), "Exemplar Value") + case pmetric.ExemplarValueTypeDouble: + diffs = diff(diffs, expected.At(i).DoubleValue(), actual.At(i).DoubleValue(), "Exemplar Value") + } + } + return diffs +} + +func diffResource(diffs []*MetricDiff, expected, actual pcommon.Resource) []*MetricDiff { + return diffResourceAttrs(diffs, expected.Attributes(), actual.Attributes()) +} + +func diffResourceAttrs(diffs []*MetricDiff, expected, actual pcommon.Map) []*MetricDiff { + if !reflect.DeepEqual(expected.AsRaw(), actual.AsRaw()) { + diffs = append(diffs, &MetricDiff{ + ExpectedValue: attrMapToString(expected), + ActualValue: attrMapToString(actual), + Msg: "Resource attributes", + }) + } + return diffs +} + +func diffMetricAttrs(diffs []*MetricDiff, expected, actual pcommon.Map) []*MetricDiff { + if !reflect.DeepEqual(expected.AsRaw(), actual.AsRaw()) { + diffs = append(diffs, &MetricDiff{ + ExpectedValue: attrMapToString(expected), + ActualValue: attrMapToString(actual), + Msg: "Metric attributes", + }) + } + return diffs +} + +func diff(diffs []*MetricDiff, expected, actual any, msg string) []*MetricDiff { + out, _ := diffValues(diffs, expected, actual, msg) + return out +} + +func diffValues( + diffs []*MetricDiff, + expected any, + actual any, + msg string, +) ([]*MetricDiff, bool) { + if !reflect.DeepEqual(expected, actual) { + return append(diffs, &MetricDiff{ + Msg: msg, + ExpectedValue: expected, + ActualValue: actual, + }), true + } + return diffs, false +} + +func attrMapToString(m pcommon.Map) string { + var out strings.Builder + for k, v := range m.All() { + out.WriteString("[") + out.WriteString(k) + out.WriteString("=") + out.WriteString(v.AsString()) + out.WriteString("]") + } + return out.String() +} diff --git a/otel-patches/coreinternal/metricstestutil/metric_diff_test.go b/otel-patches/coreinternal/metricstestutil/metric_diff_test.go new file mode 100644 index 000000000000..df969762c8bf --- /dev/null +++ b/otel-patches/coreinternal/metricstestutil/metric_diff_test.go @@ -0,0 +1,85 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package metricstestutil + +import ( + "testing" + + "github.com/stretchr/testify/assert" + "go.opentelemetry.io/collector/pdata/pmetric" + + "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/goldendataset" +) + +func TestSameMetrics(t *testing.T) { + expected := goldendataset.MetricsFromCfg(goldendataset.DefaultCfg()) + actual := goldendataset.MetricsFromCfg(goldendataset.DefaultCfg()) + diffs := diffMetricData(expected, actual) + assert.Nil(t, diffs) +} + +func TestDifferentValues(t *testing.T) { + expected := goldendataset.MetricsFromCfg(goldendataset.DefaultCfg()) + cfg := goldendataset.DefaultCfg() + cfg.PtVal = 2 + actual := goldendataset.MetricsFromCfg(cfg) + diffs := diffMetricData(expected, actual) + assert.Len(t, diffs, 1) +} + +func TestDifferentNumPts(t *testing.T) { + expected := goldendataset.MetricsFromCfg(goldendataset.DefaultCfg()) + cfg := goldendataset.DefaultCfg() + cfg.NumPtsPerMetric = 2 + actual := goldendataset.MetricsFromCfg(cfg) + diffs := diffMetricData(expected, actual) + assert.Len(t, diffs, 1) +} + +func TestDifferentPtValueTypes(t *testing.T) { + expected := goldendataset.MetricsFromCfg(goldendataset.DefaultCfg()) + cfg := goldendataset.DefaultCfg() + cfg.MetricValueType = pmetric.NumberDataPointValueTypeDouble + actual := goldendataset.MetricsFromCfg(cfg) + diffs := diffMetricData(expected, actual) + assert.Len(t, diffs, 1) +} + +func TestHistogram(t *testing.T) { + cfg1 := goldendataset.DefaultCfg() + cfg1.MetricDescriptorType = pmetric.MetricTypeHistogram + expected := goldendataset.MetricsFromCfg(cfg1) + cfg2 := goldendataset.DefaultCfg() + cfg2.MetricDescriptorType = pmetric.MetricTypeHistogram + cfg2.PtVal = 2 + actual := goldendataset.MetricsFromCfg(cfg2) + diffs := diffMetricData(expected, actual) + assert.Len(t, diffs, 3) +} + +func TestAttributes(t *testing.T) { + cfg1 := goldendataset.DefaultCfg() + cfg1.MetricDescriptorType = pmetric.MetricTypeHistogram + cfg1.NumPtLabels = 1 + expected := goldendataset.MetricsFromCfg(cfg1) + cfg2 := goldendataset.DefaultCfg() + cfg2.MetricDescriptorType = pmetric.MetricTypeHistogram + cfg2.NumPtLabels = 2 + actual := goldendataset.MetricsFromCfg(cfg2) + diffs := DiffMetrics(nil, expected, actual) + assert.Len(t, diffs, 1) +} + +func TestExponentialHistogram(t *testing.T) { + cfg1 := goldendataset.DefaultCfg() + cfg1.MetricDescriptorType = pmetric.MetricTypeExponentialHistogram + cfg1.PtVal = 1 + expected := goldendataset.MetricsFromCfg(cfg1) + cfg2 := goldendataset.DefaultCfg() + cfg2.MetricDescriptorType = pmetric.MetricTypeExponentialHistogram + cfg2.PtVal = 3 + actual := goldendataset.MetricsFromCfg(cfg2) + diffs := DiffMetrics(nil, expected, actual) + assert.Len(t, diffs, 8) +} diff --git a/otel-patches/coreinternal/metricstestutil/package_test.go b/otel-patches/coreinternal/metricstestutil/package_test.go new file mode 100644 index 000000000000..05ff154ac171 --- /dev/null +++ b/otel-patches/coreinternal/metricstestutil/package_test.go @@ -0,0 +1,14 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package metricstestutil + +import ( + "testing" + + "go.uber.org/goleak" +) + +func TestMain(m *testing.M) { + goleak.VerifyTestMain(m) +} diff --git a/otel-patches/coreinternal/occonventions/BUILD.bazel b/otel-patches/coreinternal/occonventions/BUILD.bazel new file mode 100644 index 000000000000..8e3b51952e16 --- /dev/null +++ b/otel-patches/coreinternal/occonventions/BUILD.bazel @@ -0,0 +1,8 @@ +load("@@rules_go+//go:def.bzl", "go_library") + +go_library( + name = "occonventions", + srcs = ["opencensus.go"], + importpath = "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/occonventions", # keep + visibility = ["//visibility:public"], +) diff --git a/otel-patches/coreinternal/occonventions/opencensus.go b/otel-patches/coreinternal/occonventions/opencensus.go new file mode 100644 index 000000000000..e84e2557f242 --- /dev/null +++ b/otel-patches/coreinternal/occonventions/opencensus.go @@ -0,0 +1,13 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package occonventions // import "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/occonventions" + +// OTLP attributes to map certain OpenCensus proto fields. These fields don't have +// corresponding fields in OTLP, nor are defined in OTLP semantic conventions. +const ( + AttributeProcessStartTime = "opencensus.starttime" + AttributeExporterVersion = "opencensus.exporterversion" + AttributeResourceType = "opencensus.resourcetype" + AttributeSameProcessAsParentSpan = "opencensus.same_process_as_parent_span" +) diff --git a/otel-patches/coreinternal/parseutils/BUILD.bazel b/otel-patches/coreinternal/parseutils/BUILD.bazel new file mode 100644 index 000000000000..ec0e41b76f0b --- /dev/null +++ b/otel-patches/coreinternal/parseutils/BUILD.bazel @@ -0,0 +1,34 @@ +load("@@rules_go+//go:def.bzl", "go_library", "go_test") + +go_library( + name = "parseutils", + srcs = [ + "csv.go", + "doc.go", + "parser.go", + "uri.go", + ], + importpath = "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/parseutils", # keep + visibility = ["//visibility:public"], + deps = [ + "@io_opentelemetry_go_otel//semconv/v1.40.0:v1_40_0", + "@org_uber_go_multierr//:multierr", + ], +) + +go_test( + name = "parseutils_test", + srcs = [ + "csv_test.go", + "package_test.go", + "parser_test.go", + "uri_test.go", + ], + embed = [":parseutils"], + gotags = ["test"], + deps = [ + "@com_github_stretchr_testify//assert", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/otel-patches/coreinternal/parseutils/csv.go b/otel-patches/coreinternal/parseutils/csv.go new file mode 100644 index 000000000000..dec4344b43e5 --- /dev/null +++ b/otel-patches/coreinternal/parseutils/csv.go @@ -0,0 +1,85 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package parseutils // import "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/parseutils" + +import ( + "encoding/csv" + "errors" + "fmt" + "io" + "strings" +) + +// ReadCSVRow reads a CSV row from the csv reader, returning the fields parsed from the line. +// We make the assumption that the payload we are reading is a single row, so we allow newline characters in fields. +// However, the csv package does not support newlines in a CSV field (it assumes rows are newline separated), +// so in order to support parsing newlines in a field, we need to stitch together the results of multiple Read calls. +func ReadCSVRow(row string, delimiter rune, lazyQuotes bool) ([]string, error) { + reader := csv.NewReader(strings.NewReader(row)) + reader.Comma = delimiter + // -1 indicates a variable length of fields + reader.FieldsPerRecord = -1 + reader.LazyQuotes = lazyQuotes + + lines := make([][]string, 0, 1) + for { + line, err := reader.Read() + if errors.Is(err, io.EOF) { + break + } + + if err != nil && len(line) == 0 { + return nil, fmt.Errorf("read csv line: %w", err) + } + + lines = append(lines, line) + } + + // If the input is empty, we might not get any lines + if len(lines) == 0 { + return nil, errors.New("no csv lines found") + } + + /* + This parser is parsing a single value, which came from a single log entry. + Therefore, if there are multiple lines here, it should be assumed that each + subsequent line contains a continuation of the last field in the previous line. + + Given a file w/ headers "A,B,C,D,E" and contents "aa,b\nb,cc,d\nd,ee", + expect reader.Read() to return bodies: + - ["aa","b"] + - ["b","cc","d"] + - ["d","ee"] + */ + + joinedLine := lines[0] + for i := 1; i < len(lines); i++ { + nextLine := lines[i] + + // The first element of the next line is a continuation of the previous line's last element + joinedLine[len(joinedLine)-1] += "\n" + nextLine[0] + + // The remainder are separate elements + for n := 1; n < len(nextLine); n++ { + joinedLine = append(joinedLine, nextLine[n]) + } + } + + return joinedLine, nil +} + +// MapCSVHeaders creates a map of headers[i] -> fields[i]. +func MapCSVHeaders(headers, fields []string) (map[string]any, error) { + if len(fields) != len(headers) { + return nil, fmt.Errorf("wrong number of fields: expected %d, found %d", len(headers), len(fields)) + } + + parsedValues := make(map[string]any, len(headers)) + + for i, val := range fields { + parsedValues[headers[i]] = val + } + + return parsedValues, nil +} diff --git a/otel-patches/coreinternal/parseutils/csv_test.go b/otel-patches/coreinternal/parseutils/csv_test.go new file mode 100644 index 000000000000..1d93b89bcf3e --- /dev/null +++ b/otel-patches/coreinternal/parseutils/csv_test.go @@ -0,0 +1,175 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package parseutils + +import ( + "testing" + + "github.com/stretchr/testify/require" +) + +func Test_ParseCSV(t *testing.T) { + testCases := []struct { + name string + row string + delimiter rune + lazyQuotes bool + expectedRow []string + expectedErr string + }{ + { + name: "Typical CSV row", + row: "field1,field2,field3", + delimiter: ',', + lazyQuotes: false, + expectedRow: []string{"field1", "field2", "field3"}, + }, + { + name: "Quoted CSV row", + row: `field1,"field2,contains delimiter",field3`, + delimiter: ',', + lazyQuotes: false, + expectedRow: []string{"field1", "field2,contains delimiter", "field3"}, + }, + { + name: "Bare quote in field (strict)", + row: `field1,field"2,field3`, + delimiter: ',', + lazyQuotes: false, + expectedRow: []string{"field1"}, + }, + { + name: "Bare quote in field (lazy quotes)", + row: `field1,field"2,field3`, + delimiter: ',', + lazyQuotes: true, + expectedRow: []string{"field1", `field"2`, "field3"}, + }, + { + name: "Empty row", + row: "", + delimiter: ',', + lazyQuotes: false, + expectedErr: "no csv lines found", + }, + { + name: "Newlines in field", + row: "field1,fie\nld2,field3", + delimiter: ',', + lazyQuotes: false, + expectedRow: []string{"field1", "fie\nld2", "field3"}, + }, + { + name: "Newlines prefix field", + row: "field1,\nfield2,field3", + delimiter: ',', + lazyQuotes: false, + expectedRow: []string{"field1", "\nfield2", "field3"}, + }, + { + name: "Newlines suffix field", + row: "field1,field2\n,field3", + delimiter: ',', + lazyQuotes: false, + expectedRow: []string{"field1", "field2\n", "field3"}, + }, + { + name: "Newlines prefix row", + row: "\nfield1,field2,field3", + delimiter: ',', + lazyQuotes: false, + expectedRow: []string{"field1", "field2", "field3"}, + }, + { + name: "Newlines suffix row", + row: "field1,field2,field3\n", + delimiter: ',', + lazyQuotes: false, + expectedRow: []string{"field1", "field2", "field3"}, + }, + { + name: "Newlines in first row", + row: "fiel\nd1,field2,field3", + delimiter: ',', + lazyQuotes: false, + expectedRow: []string{"fiel\nd1", "field2", "field3"}, + }, + { + name: "Newlines in all rows", + row: "\nfiel\nd1,fie\nld2,fie\nld3\n", + delimiter: ',', + lazyQuotes: false, + expectedRow: []string{"fiel\nd1", "fie\nld2", "fie\nld3"}, + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + s, err := ReadCSVRow(tc.row, tc.delimiter, tc.lazyQuotes) + if tc.expectedErr != "" { + require.ErrorContains(t, err, tc.expectedErr) + } else { + require.Equal(t, tc.expectedRow, s) + } + }) + } +} + +func Test_MapCSVHeaders(t *testing.T) { + testCases := []struct { + name string + headers []string + fields []string + expectedMap map[string]any + expectedErr string + }{ + { + name: "Map headers to fields", + headers: []string{"Col1", "Col2", "Col3"}, + fields: []string{"Val1", "Val2", "Val3"}, + expectedMap: map[string]any{ + "Col1": "Val1", + "Col2": "Val2", + "Col3": "Val3", + }, + }, + { + name: "Missing field", + headers: []string{"Col1", "Col2", "Col3"}, + fields: []string{"Val1", "Val2"}, + expectedErr: "wrong number of fields: expected 3, found 2", + }, + { + name: "Too many fields", + headers: []string{"Col1", "Col2", "Col3"}, + fields: []string{"Val1", "Val2", "Val3", "Val4"}, + expectedErr: "wrong number of fields: expected 3, found 4", + }, + { + name: "Single field", + headers: []string{"Col1"}, + fields: []string{"Val1"}, + expectedMap: map[string]any{ + "Col1": "Val1", + }, + }, + { + name: "No fields", + headers: []string{}, + fields: []string{}, + expectedMap: map[string]any{}, + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + m, err := MapCSVHeaders(tc.headers, tc.fields) + if tc.expectedErr != "" { + require.ErrorContains(t, err, tc.expectedErr) + } else { + require.Equal(t, tc.expectedMap, m) + } + }) + } +} diff --git a/otel-patches/coreinternal/parseutils/doc.go b/otel-patches/coreinternal/parseutils/doc.go new file mode 100644 index 000000000000..f63f940df0a8 --- /dev/null +++ b/otel-patches/coreinternal/parseutils/doc.go @@ -0,0 +1,4 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package parseutils // import "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/parseutils" diff --git a/otel-patches/coreinternal/parseutils/package_test.go b/otel-patches/coreinternal/parseutils/package_test.go new file mode 100644 index 000000000000..20e63515f3af --- /dev/null +++ b/otel-patches/coreinternal/parseutils/package_test.go @@ -0,0 +1,14 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package parseutils + +import ( + "testing" + + "go.uber.org/goleak" +) + +func TestMain(m *testing.M) { + goleak.VerifyTestMain(m) +} diff --git a/otel-patches/coreinternal/parseutils/parser.go b/otel-patches/coreinternal/parseutils/parser.go new file mode 100644 index 000000000000..8ce88ebe57f5 --- /dev/null +++ b/otel-patches/coreinternal/parseutils/parser.go @@ -0,0 +1,81 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package parseutils // import "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/parseutils" + +import ( + "errors" + "fmt" + "strings" + + "go.uber.org/multierr" +) + +// SplitString will split the input on the delimiter and return the resulting slice while respecting quotes. Outer quotes are stripped. +// Use in place of `strings.Split` when quotes need to be respected. +// Requires `delimiter` not be an empty string +func SplitString(input, delimiter string) ([]string, error) { + var result []string + var current strings.Builder + delimiterLength := len(delimiter) + var quoteChar byte // 0 means we are not in quotes + escaped := false + + for i := 0; i < len(input); i++ { + if quoteChar == 0 && i+delimiterLength <= len(input) && input[i:i+delimiterLength] == delimiter { // delimiter + if current.Len() == 0 { // leading || trailing delimiter; ignore + i += delimiterLength - 1 + continue + } + result = append(result, current.String()) + current.Reset() + i += delimiterLength - 1 + continue + } + + if !escaped { // consider quote termination so long as previous character wasn't backslash + if quoteChar == 0 && (input[i] == '"' || input[i] == '\'') { // start of quote + quoteChar = input[i] + continue + } + if input[i] == quoteChar { // end of quote + quoteChar = 0 + continue + } + // Only if we weren't escaped could the next character result in escaped state + escaped = input[i] == '\\' // potentially escaping next character + } else { + escaped = false + } + + current.WriteByte(input[i]) + } + + if quoteChar != 0 { // check for closed quotes + return nil, errors.New("never reached the end of a quoted value") + } + if current.Len() > 0 { // avoid adding empty value bc of a trailing delimiter + return append(result, current.String()), nil + } + + return result, nil +} + +// ParseKeyValuePairs will split each string in `pairs` on the `delimiter` into a key and value string that get added to a map and returned. +func ParseKeyValuePairs(pairs []string, delimiter string) (map[string]any, error) { + parsed := make(map[string]any) + var err error + for _, p := range pairs { + pair := strings.SplitN(p, delimiter, 2) + if len(pair) != 2 { + err = multierr.Append(err, fmt.Errorf("cannot split %q into 2 items, got %d item(s)", p, len(pair))) + continue + } + + key := strings.TrimSpace(pair[0]) + value := strings.TrimSpace(pair[1]) + + parsed[key] = value + } + return parsed, err +} diff --git a/otel-patches/coreinternal/parseutils/parser_test.go b/otel-patches/coreinternal/parseutils/parser_test.go new file mode 100644 index 000000000000..a78f55983e0a --- /dev/null +++ b/otel-patches/coreinternal/parseutils/parser_test.go @@ -0,0 +1,350 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package parseutils + +import ( + "errors" + "testing" + + "github.com/stretchr/testify/assert" +) + +func Test_SplitString(t *testing.T) { + testCases := []struct { + name string + input string + delimiter string + expected []string + expectedErr error + }{ + { + name: "simple", + input: "a b c", + delimiter: " ", + expected: []string{ + "a", + "b", + "c", + }, + }, + { + name: "single quotes", + input: "a 'b c d'", + delimiter: " ", + expected: []string{ + "a", + "b c d", + }, + }, + { + name: "double quotes", + input: `a " b c " d`, + delimiter: " ", + expected: []string{ + "a", + " b c ", + "d", + }, + }, + { + name: "multi-char delimiter", + input: "abc!@! def !@! g", + delimiter: "!@!", + expected: []string{ + "abc", + " def ", + " g", + }, + }, + { + name: "leading and trailing delimiters", + input: " name=ottl func=key_value hello=world ", + delimiter: " ", + expected: []string{ + "name=ottl", + "func=key_value", + "hello=world", + }, + }, + { + name: "embedded double quotes in single quoted value", + input: `ab c='this is a "co ol" value'`, + delimiter: " ", + expected: []string{ + "ab", + `c=this is a "co ol" value`, + }, + }, + { + name: "embedded double quotes end single quoted value", + input: `ab c='this is a "co ol"'`, + delimiter: " ", + expected: []string{ + "ab", + `c=this is a "co ol"`, + }, + }, + { + name: "embedded escaped quotes", + input: `ab c="this \"is \"" d='a \'co ol\' value' e="\""`, + delimiter: " ", + expected: []string{ + "ab", + `c=this \"is \"`, + `d=a \'co ol\' value`, + `e=\"`, + }, + }, + { + name: "quoted values include whitespace", + input: `name=" ottl " func=" key_ value"`, + delimiter: " ", + expected: []string{ + "name= ottl ", + "func= key_ value", + }, + }, + { + name: "delimiter longer than input", + input: "abc", + delimiter: "aaaa", + expected: []string{ + "abc", + }, + }, + { + name: "delimiter not found", + input: "a b c", + delimiter: "!", + expected: []string{ + "a b c", + }, + }, + { + name: "newlines in input", + input: `a +b +c`, + delimiter: " ", + expected: []string{ + "a\nb\nc", + }, + }, + { + name: "newline delimiter", + input: `a b c +d e f +g +h`, + delimiter: "\n", + expected: []string{ + "a b c", + "d e f", + "g ", + "h", + }, + }, + { + name: "empty input", + input: "", + delimiter: " ", + expected: nil, + }, + { + name: "equal input and delimiter", + input: "abc", + delimiter: "abc", + expected: nil, + }, + { + name: "unclosed quotes", + input: "a 'b c", + delimiter: " ", + expectedErr: errors.New("never reached the end of a quoted value"), + }, + { + name: "mismatched quotes", + input: `a 'b c' "d '`, + delimiter: " ", + expectedErr: errors.New("never reached the end of a quoted value"), + }, + { + name: "tab delimiters", + input: "a b c", + delimiter: "\t", + expected: []string{ + "a", + "b", + "c", + }, + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + result, err := SplitString(tc.input, tc.delimiter) + + if tc.expectedErr == nil { + assert.NoError(t, err) + assert.Equal(t, tc.expected, result) + } else { + assert.EqualError(t, err, tc.expectedErr.Error()) + assert.Nil(t, result) + } + }) + } +} + +func Test_ParseKeyValuePairs(t *testing.T) { + testCases := []struct { + name string + pairs []string + delimiter string + expected map[string]any + expectedErr error + }{ + { + name: "multiple delimiters", + pairs: []string{"a==b", "c=d=", "e=f"}, + delimiter: "=", + expected: map[string]any{ + "a": "=b", + "c": "d=", + "e": "f", + }, + }, + { + name: "no delimiter found", + pairs: []string{"ab"}, + delimiter: "=", + expectedErr: errors.New("cannot split \"ab\" into 2 items, got 1 item(s)"), + }, + { + name: "no delimiter found 2x", + pairs: []string{"ab", "cd"}, + delimiter: "=", + expectedErr: errors.New("cannot split \"ab\" into 2 items, got 1 item(s); cannot split \"cd\" into 2 items, got 1 item(s)"), + }, + { + name: "empty pairs", + pairs: []string{}, + delimiter: "=", + expected: map[string]any{}, + }, + { + name: "empty pair string", + pairs: []string{""}, + delimiter: "=", + expectedErr: errors.New("cannot split \"\" into 2 items, got 1 item(s)"), + }, + { + name: "empty delimiter", + pairs: []string{"a=b", "c=d"}, + delimiter: "", + expected: map[string]any{ + "a": "=b", + "c": "=d", + }, + }, + { + name: "empty pairs & delimiter", + pairs: []string{}, + delimiter: "", + expected: map[string]any{}, + }, + { + name: "early delimiter", + pairs: []string{"=a=b"}, + delimiter: "=", + expected: map[string]any{ + "": "a=b", + }, + }, + { + name: "weird spacing", + pairs: []string{" a= b ", " c = d "}, + delimiter: "=", + expected: map[string]any{ + "a": "b", + "c": "d", + }, + }, + { + name: "escaped quotes", + pairs: []string{"key=foobar", `key2="foo bar"`, `key3="foo \"bar\""`, `key4='\'foo\' \'bar\''`}, + delimiter: "=", + expected: map[string]any{ + "key": "foobar", + "key2": `"foo bar"`, + "key3": `"foo \"bar\""`, + "key4": `'\'foo\' \'bar\''`, + }, + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + result, err := ParseKeyValuePairs(tc.pairs, tc.delimiter) + + if tc.expectedErr == nil { + assert.NoError(t, err) + assert.Equal(t, tc.expected, result) + } else { + assert.EqualError(t, err, tc.expectedErr.Error()) + } + }) + } +} + +func BenchmarkSplitString(b *testing.B) { + benchCases := []struct { + name string + input string + delimiter string + }{ + { + name: "simple_short", + input: "a b c", + delimiter: " ", + }, + { + name: "quoted_values", + input: `name="John Doe" age=30 city="New York"`, + delimiter: " ", + }, + { + name: "multi_char_delimiter", + input: "key1=val1!@!key2=val2!@!key3=val3!@!key4=val4", + delimiter: "!@!", + }, + { + name: "many_fields", + input: `a=1 b=2 c=3 d=4 e=5 f=6 g=7 h=8 i=9 j=10 k=11 l=12 m=13 n=14 o=15 p=16`, + delimiter: " ", + }, + { + name: "long_quoted_value", + input: `key1="this is a very long quoted value that contains many words and spaces" key2="another long value here"`, + delimiter: " ", + }, + { + name: "escaped_quotes", + input: `a="hello \"world\"" b='it\'s cool' c="test \"value\""`, + delimiter: " ", + }, + { + name: "leading_trailing_delimiters", + input: " name=ottl func=key_value hello=world foo=bar ", + delimiter: " ", + }, + } + + for _, bc := range benchCases { + b.Run(bc.name, func(b *testing.B) { + for i := 0; i < b.N; i++ { + _, _ = SplitString(bc.input, bc.delimiter) + } + }) + } +} diff --git a/otel-patches/coreinternal/parseutils/uri.go b/otel-patches/coreinternal/parseutils/uri.go new file mode 100644 index 000000000000..3501fbfbafdc --- /dev/null +++ b/otel-patches/coreinternal/parseutils/uri.go @@ -0,0 +1,164 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package parseutils // import "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/parseutils" + +import ( + "net/url" + "strconv" + "strings" + + conventions "go.opentelemetry.io/otel/semconv/v1.40.0" +) + +const ( + // replace once conventions includes these + AttributeURLUserInfo = "url.user_info" + AttributeURLUsername = "url.username" + AttributeURLPassword = "url.password" +) + +// parseURI takes an absolute or relative uri and returns the parsed values. +func ParseURI(value string, semconvCompliant bool) (map[string]any, error) { + m := make(map[string]any) + + if strings.HasPrefix(value, "?") { + // remove the query string '?' prefix before parsing + v, err := url.ParseQuery(value[1:]) + if err != nil { + return nil, err + } + return queryToMap(v, m), nil + } + + var x *url.URL + var err error + var mappingFn func(*url.URL, map[string]any) (map[string]any, error) + + if semconvCompliant { + mappingFn = urlToSemconvMap + x, err = url.Parse(value) + if err != nil { + return nil, err + } + } else { + x, err = url.ParseRequestURI(value) + if err != nil { + return nil, err + } + + mappingFn = urlToMap + } + return mappingFn(x, m) +} + +// urlToMap converts a url.URL to a map, excludes any values that are not set. +func urlToSemconvMap(parsedURI *url.URL, m map[string]any) (map[string]any, error) { + m[string(conventions.URLOriginalKey)] = parsedURI.String() + m[string(conventions.URLDomainKey)] = parsedURI.Hostname() + m[string(conventions.URLSchemeKey)] = parsedURI.Scheme + m[string(conventions.URLPathKey)] = parsedURI.Path + + if portString := parsedURI.Port(); portString != "" { + port, err := strconv.Atoi(portString) + if err != nil { + return nil, err + } + m[string(conventions.URLPortKey)] = port + } + + if fragment := parsedURI.Fragment; fragment != "" { + m[string(conventions.URLFragmentKey)] = fragment + } + + if parsedURI.User != nil { + m[AttributeURLUserInfo] = parsedURI.User.String() + + if username := parsedURI.User.Username(); username != "" { + m[AttributeURLUsername] = username + } + + if pwd, isSet := parsedURI.User.Password(); isSet { + m[AttributeURLPassword] = pwd + } + } + + if query := parsedURI.RawQuery; query != "" { + m[string(conventions.URLQueryKey)] = query + } + + if periodIdx := strings.LastIndex(parsedURI.Path, "."); periodIdx != -1 { + if periodIdx < len(parsedURI.Path)-1 { + m[string(conventions.URLExtensionKey)] = parsedURI.Path[periodIdx+1:] + } + } + + return m, nil +} + +// urlToMap converts a url.URL to a map, excludes any values that are not set. +func urlToMap(p *url.URL, m map[string]any) (map[string]any, error) { + scheme := p.Scheme + if scheme != "" { + m["scheme"] = scheme + } + + user := p.User.Username() + if user != "" { + m["user"] = user + } + + host := p.Hostname() + if host != "" { + m["host"] = host + } + + port := p.Port() + if port != "" { + m["port"] = port + } + + path := p.EscapedPath() + if path != "" { + m["path"] = path + } + + return queryToMap(p.Query(), m), nil +} + +// queryToMap converts a query string url.Values to a map. +func queryToMap(query url.Values, m map[string]any) map[string]any { + // no-op if query is empty, do not create the key m["query"] + if len(query) == 0 { + return m + } + + /* 'parameter' will represent url.Values + map[string]any{ + "parameter-a": []any{ + "a", + "b", + }, + "parameter-b": []any{ + "x", + "y", + }, + } + */ + parameters := map[string]any{} + for param, values := range query { + parameters[param] = queryParamValuesToMap(values) + } + m["query"] = parameters + return m +} + +// queryParamValuesToMap takes query string parameter values and +// returns an []interface populated with the values +func queryParamValuesToMap(values []string) []any { + v := make([]any, len(values)) + for i, value := range values { + v[i] = value + } + return v +} diff --git a/otel-patches/coreinternal/parseutils/uri_test.go b/otel-patches/coreinternal/parseutils/uri_test.go new file mode 100644 index 000000000000..e1602a6de1ef --- /dev/null +++ b/otel-patches/coreinternal/parseutils/uri_test.go @@ -0,0 +1,628 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package parseutils + +import ( + "net/url" + "testing" + + "github.com/stretchr/testify/require" +) + +// Test all usecases: absolute uri, relative uri, query string +func TestParseURI(t *testing.T) { + cases := []struct { + name string + inputBody string + outputBody map[string]any + expectErr bool + }{ + { + "scheme-http", + "http://", + map[string]any{ + "scheme": "http", + }, + false, + }, + { + "scheme-user", + "http://myuser:mypass@", + map[string]any{ + "scheme": "http", + "user": "myuser", + }, + false, + }, + { + "scheme-host", + "http://golang.com", + map[string]any{ + "scheme": "http", + "host": "golang.com", + }, + false, + }, + { + "scheme-host-root", + "http://golang.com/", + map[string]any{ + "scheme": "http", + "host": "golang.com", + "path": "/", + }, + false, + }, + { + "scheme-host-minimal", + "http://golang", + map[string]any{ + "scheme": "http", + "host": "golang", + }, + false, + }, + { + "host-missing-scheme", + "golang.org", + map[string]any{}, + true, + }, + { + "sheme-port", + "http://:8080", + map[string]any{ + "scheme": "http", + "port": "8080", + }, + false, + }, + { + "port-missing-scheme", + ":8080", + map[string]any{}, + true, + }, + { + "path", + "/docs", + map[string]any{ + "path": "/docs", + }, + false, + }, + { + "path-advanced", + `/x/y%2Fz`, + map[string]any{ + "path": `/x/y%2Fz`, + }, + false, + }, + { + "path-root", + "/", + map[string]any{ + "path": "/", + }, + false, + }, + { + "path-query", + "/v1/app?user=golang", + map[string]any{ + "path": "/v1/app", + "query": map[string]any{ + "user": []any{ + "golang", + }, + }, + }, + false, + }, + { + "invalid-query", + "?q;go", + map[string]any{}, + true, + }, + { + "scheme-path", + "http:///v1/app", + map[string]any{ + "scheme": "http", + "path": "/v1/app", + }, + false, + }, + { + "scheme-host-query", + "https://app.com?token=0000&env=prod&env=stage", + map[string]any{ + "scheme": "https", + "host": "app.com", + "query": map[string]any{ + "token": []any{ + "0000", + }, + "env": []any{ + "prod", + "stage", + }, + }, + }, + false, + }, + { + "minimal", + "http://golang.org", + map[string]any{ + "scheme": "http", + "host": "golang.org", + }, + false, + }, + { + "advanced", + "https://go:password@golang.org:8443/v2/app?env=stage&token=456&index=105838&env=prod", + map[string]any{ + "scheme": "https", + "user": "go", + "host": "golang.org", + "port": "8443", + "path": "/v2/app", + "query": map[string]any{ + "token": []any{ + "456", + }, + "index": []any{ + "105838", + }, + "env": []any{ + "stage", + "prod", + }, + }, + }, + false, + }, + { + "magnet", + "magnet:?xt=urn:sha1:HNCKHTQCWBTRNJIV4WNAE52SJUQCZO6C", + map[string]any{ + "scheme": "magnet", + "query": map[string]any{ + "xt": []any{ + "urn:sha1:HNCKHTQCWBTRNJIV4WNAE52SJUQCZO6C", + }, + }, + }, + false, + }, + { + "sftp", + "sftp://ftp.com//home/name/employee.csv", + map[string]any{ + "scheme": "sftp", + "host": "ftp.com", + "path": "//home/name/employee.csv", + }, + false, + }, + { + "missing-schema", + "golang.org/app", + map[string]any{}, + true, + }, + { + "query-advanced", + "?token=0000&env=prod&env=stage&task=update&task=new&action=update", + map[string]any{ + "query": map[string]any{ + "token": []any{ + "0000", + }, + "env": []any{ + "prod", + "stage", + }, + "task": []any{ + "update", + "new", + }, + "action": []any{ + "update", + }, + }, + }, + false, + }, + { + "query", + "?token=0000", + map[string]any{ + "query": map[string]any{ + "token": []any{ + "0000", + }, + }, + }, + false, + }, + { + "query-empty", + "?", + map[string]any{}, + false, + }, + { + "query-empty-key", + "?user=", + map[string]any{ + "query": map[string]any{ + "user": []any{ + "", // no value + }, + }, + }, + false, + }, + // Query string without a ? prefix is treated as a URI, therefor + // an error will be returned by url.Parse("user=dev") + { + "query-no-?-prefix", + "user=dev", + map[string]any{}, + true, + }, + } + + for _, tc := range cases { + t.Run(tc.name, func(t *testing.T) { + x, err := ParseURI(tc.inputBody, false) + if tc.expectErr { + require.Error(t, err) + return + } + require.NoError(t, err) + require.Equal(t, tc.outputBody, x) + }) + } +} + +func TestURLToMap(t *testing.T) { + cases := []struct { + name string + inputBody *url.URL + outputBody map[string]any + }{ + { + "absolute-uri", + &url.URL{ + Scheme: "https", + Host: "google.com:8443", + Path: "/app", + RawQuery: "stage=prod&stage=dev", + }, + map[string]any{ + "scheme": "https", + "host": "google.com", + "port": "8443", + "path": "/app", + "query": map[string]any{ + "stage": []any{ + "prod", + "dev", + }, + }, + }, + }, + { + "absolute-uri-simple", + &url.URL{ + Scheme: "http", + Host: "google.com", + }, + map[string]any{ + "scheme": "http", + "host": "google.com", + }, + }, + { + "path", + &url.URL{ + Path: "/app", + RawQuery: "stage=prod&stage=dev", + }, + map[string]any{ + "path": "/app", + "query": map[string]any{ + "stage": []any{ + "prod", + "dev", + }, + }, + }, + }, + { + "path-simple", + &url.URL{ + Path: "/app", + }, + map[string]any{ + "path": "/app", + }, + }, + { + "query", + &url.URL{ + RawQuery: "stage=prod&stage=dev", + }, + map[string]any{ + "query": map[string]any{ + "stage": []any{ + "prod", + "dev", + }, + }, + }, + }, + } + + for _, tc := range cases { + t.Run(tc.name, func(t *testing.T) { + m := make(map[string]any) + resMap, err := urlToMap(tc.inputBody, m) + require.NoError(t, err) + require.Equal(t, tc.outputBody, resMap) + }) + } +} + +func TestQueryToMap(t *testing.T) { + cases := []struct { + name string + inputBody url.Values + outputBody map[string]any + }{ + { + "query", + url.Values{ + "stage": []string{ + "prod", + "dev", + }, + }, + map[string]any{ + "query": map[string]any{ + "stage": []any{ + "prod", + "dev", + }, + }, + }, + }, + { + "empty", + url.Values{}, + map[string]any{}, + }, + } + + for _, tc := range cases { + t.Run(tc.name, func(t *testing.T) { + m := make(map[string]any) + require.Equal(t, tc.outputBody, queryToMap(tc.inputBody, m)) + }) + } +} + +func TestQueryParamValuesToMap(t *testing.T) { + cases := []struct { + name string + inputBody []string + outputBody []any + }{ + { + "simple", + []string{ + "prod", + "dev", + }, + []any{ + "prod", + "dev", + }, + }, + { + "empty", + []string{}, + []any{}, + }, + } + + for _, tc := range cases { + t.Run(tc.name, func(t *testing.T) { + require.Equal(t, tc.outputBody, queryParamValuesToMap(tc.inputBody)) + }) + } +} + +func BenchmarkURLToMap(b *testing.B) { + m := make(map[string]any) + v := "https://dev:password@www.golang.org:8443/v1/app/stage?token=d9e28b1d-2c7b-4853-be6a-d94f34a5d4ab&env=prod&env=stage&token=c6fa29f9-a31b-4584-b98d-aa8473b0e18d®ion=us-east1b&mode=fast" + u, err := url.ParseRequestURI(v) + require.NoError(b, err) + for b.Loop() { + _, _ = urlToMap(u, m) + } +} + +func BenchmarkQueryToMap(b *testing.B) { + m := make(map[string]any) + v := "?token=d9e28b1d-2c7b-4853-be6a-d94f34a5d4ab&env=prod&env=stage&token=c6fa29f9-a31b-4584-b98d-aa8473b0e18d®ion=us-east1b&mode=fast" + u, err := url.ParseQuery(v) + require.NoError(b, err) + for b.Loop() { + queryToMap(u, m) + } +} + +func BenchmarkQueryParamValuesToMap(b *testing.B) { + v := []string{ + "d9e28b1d-2c7b-4853-be6a-d94f34a5d4ab", + "c6fa29f9-a31b-4584-b98d-aa8473b0e18", + } + for b.Loop() { + queryParamValuesToMap(v) + } +} + +func TestParseSemconv(t *testing.T) { + testCases := []struct { + Name string + Original string + ExpectedMap map[string]any + }{ + { + "complete example", + "http://myusername:mypassword@www.example.com:80/foo.gif?key1=val1&key2=val2#fragment", + map[string]any{ + "url.path": "/foo.gif", + "url.fragment": "fragment", + "url.extension": "gif", + AttributeURLPassword: "mypassword", + "url.original": "http://myusername:mypassword@www.example.com:80/foo.gif?key1=val1&key2=val2#fragment", + "url.scheme": "http", + "url.port": 80, + AttributeURLUserInfo: "myusername:mypassword", + "url.domain": "www.example.com", + "url.query": "key1=val1&key2=val2", + AttributeURLUsername: "myusername", + }, + }, + { + "simple example", + "http://www.example.com", + map[string]any{ + "url.original": "http://www.example.com", + "url.scheme": "http", + "url.domain": "www.example.com", + "url.path": "", + }, + }, + { + "custom port", + "http://www.example.com:77", + map[string]any{ + "url.original": "http://www.example.com:77", + "url.scheme": "http", + "url.domain": "www.example.com", + "url.path": "", + "url.port": 77, + }, + }, + { + "file", + "http://www.example.com:77/file.png", + map[string]any{ + "url.original": "http://www.example.com:77/file.png", + "url.scheme": "http", + "url.domain": "www.example.com", + "url.path": "/file.png", + "url.port": 77, + "url.extension": "png", + }, + }, + { + "fragment", + "http://www.example.com:77/foo#bar", + map[string]any{ + "url.original": "http://www.example.com:77/foo#bar", + "url.scheme": "http", + "url.domain": "www.example.com", + "url.path": "/foo", + "url.port": 77, + "url.fragment": "bar", + }, + }, + { + "query example", + "https://www.example.com:77/foo?key=val", + map[string]any{ + "url.original": "https://www.example.com:77/foo?key=val", + "url.scheme": "https", + "url.domain": "www.example.com", + "url.path": "/foo", + "url.port": 77, + "url.query": "key=val", + }, + }, + { + "user info", + "https://user:pw@www.example.com:77/foo", + map[string]any{ + "url.original": "https://user:pw@www.example.com:77/foo", + "url.scheme": "https", + "url.domain": "www.example.com", + "url.path": "/foo", + "url.port": 77, + AttributeURLUserInfo: "user:pw", + AttributeURLUsername: "user", + AttributeURLPassword: "pw", + }, + }, + { + "user info - no password", + "https://user:@www.example.com:77/foo", + map[string]any{ + "url.original": "https://user:@www.example.com:77/foo", + "url.scheme": "https", + "url.domain": "www.example.com", + "url.path": "/foo", + "url.port": 77, + AttributeURLUserInfo: "user:", + AttributeURLUsername: "user", + AttributeURLPassword: "", + }, + }, + { + "non-http scheme: ftp", + "ftp://ftp.is.co.za/rfc/rfc1808.txt", + map[string]any{ + "url.original": "ftp://ftp.is.co.za/rfc/rfc1808.txt", + "url.scheme": "ftp", + "url.path": "/rfc/rfc1808.txt", + "url.extension": "txt", + "url.domain": "ftp.is.co.za", + }, + }, + { + "non-http scheme: telnet", + "telnet://192.0.2.16:80/", + map[string]any{ + "url.original": "telnet://192.0.2.16:80/", + "url.scheme": "telnet", + "url.path": "/", + "url.port": 80, + "url.domain": "192.0.2.16", + }, + }, + } + + for _, tc := range testCases { + t.Run(tc.Name, func(t *testing.T) { + resMap, err := ParseURI(tc.Original, true) + require.NoError(t, err) + + require.Len(t, resMap, len(tc.ExpectedMap)) + for k, v := range tc.ExpectedMap { + actualValue, found := resMap[k] + require.True(t, found, "key not found %q", k) + require.Equal(t, v, actualValue) + } + }) + } +} diff --git a/otel-patches/coreinternal/scraperinttest/BUILD.bazel b/otel-patches/coreinternal/scraperinttest/BUILD.bazel new file mode 100644 index 000000000000..e25b796896e6 --- /dev/null +++ b/otel-patches/coreinternal/scraperinttest/BUILD.bazel @@ -0,0 +1,24 @@ +load("@@rules_go+//go:def.bzl", "go_library") + +go_library( + name = "scraperinttest", + srcs = ["scraperint.go"], + importpath = "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/scraperinttest", # keep + visibility = ["//visibility:public"], + deps = [ + "@com_github_open_telemetry_opentelemetry_collector_contrib_pkg_golden//:golden", + "@com_github_open_telemetry_opentelemetry_collector_contrib_pkg_pdatatest//pmetrictest", + "@com_github_stretchr_testify//assert", + "@com_github_stretchr_testify//require", + "@com_github_testcontainers_testcontainers_go//:testcontainers-go", + "@io_opentelemetry_go_collector_component//:component", + "@io_opentelemetry_go_collector_component_componenttest//:componenttest", + "@io_opentelemetry_go_collector_consumer_consumertest//:consumertest", + "@io_opentelemetry_go_collector_pdata//pmetric", + "@io_opentelemetry_go_collector_receiver//:receiver", + "@io_opentelemetry_go_collector_receiver_receivertest//:receivertest", + "@org_uber_go_multierr//:multierr", + "@org_uber_go_zap//:zap", + "@org_uber_go_zap//zaptest/observer", + ], +) diff --git a/otel-patches/coreinternal/scraperinttest/README.md b/otel-patches/coreinternal/scraperinttest/README.md new file mode 100644 index 000000000000..d51769745847 --- /dev/null +++ b/otel-patches/coreinternal/scraperinttest/README.md @@ -0,0 +1,5 @@ +# scraperinttest + +This package is intended to be a temporary workspace for extracting common functionality +from scraper integration tests. Once stabilized, this code can likely move to `pdatatest` +or its sub-packages `pmetrictest`, etc. diff --git a/otel-patches/coreinternal/scraperinttest/scraperint.go b/otel-patches/coreinternal/scraperinttest/scraperint.go new file mode 100644 index 000000000000..0cb863b38d9c --- /dev/null +++ b/otel-patches/coreinternal/scraperinttest/scraperint.go @@ -0,0 +1,321 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package scraperinttest // import "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/scraperinttest" + +import ( + "context" + "errors" + "fmt" + "io" + "path/filepath" + "strings" + "sync" + "testing" + "time" + "unicode" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "github.com/testcontainers/testcontainers-go" + "go.opentelemetry.io/collector/component" + "go.opentelemetry.io/collector/component/componenttest" + "go.opentelemetry.io/collector/consumer/consumertest" + "go.opentelemetry.io/collector/pdata/pmetric" + "go.opentelemetry.io/collector/receiver" + "go.opentelemetry.io/collector/receiver/receivertest" + "go.uber.org/multierr" + "go.uber.org/zap" + "go.uber.org/zap/zaptest/observer" + + "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden" + "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest/pmetrictest" +) + +func NewIntegrationTest(f receiver.Factory, opts ...TestOption) *IntegrationTest { + it := &IntegrationTest{ + factory: f, + createContainerTimeout: 5 * time.Minute, + customConfig: func(*testing.T, component.Config, *ContainerInfo) {}, + expectedFile: filepath.Join("testdata", "integration", "expected.yaml"), + compareTimeout: time.Minute, + } + for _, opt := range opts { + opt(it) + } + return it +} + +type IntegrationTest struct { + containerRequests []testcontainers.ContainerRequest + allowHardcodedHostPort bool + createContainerTimeout time.Duration + + factory receiver.Factory + customConfig customConfigFunc + + expectedFile string + compareOptions []pmetrictest.CompareMetricsOption + compareTimeout time.Duration + + failOnErrorLogs bool + writeExpected bool +} + +func (it *IntegrationTest) Run(t *testing.T) { + it.validate(t) + ci := it.createContainers(t) + defer ci.terminate(t) + + cfg := it.factory.CreateDefaultConfig() + it.customConfig(t, cfg, ci) + sink := new(consumertest.MetricsSink) + settings := receivertest.NewNopSettings(it.factory.Type()) + observedZapCore, observedLogs := observer.New(zap.WarnLevel) + settings.Logger = zap.New(observedZapCore) + + rcvr, err := it.factory.CreateMetrics(t.Context(), settings, cfg, sink) + require.NoError(t, err, "failed creating metrics receiver") + require.NoError(t, rcvr.Start(t.Context(), componenttest.NewNopHost())) + defer func() { + require.NoError(t, rcvr.Shutdown(t.Context())) + }() + + var expected pmetric.Metrics + if !it.writeExpected { + expected, err = golden.ReadMetrics(it.expectedFile) + require.NoError(t, err) + } + + // Defined outside of Eventually so it can be printed if the test fails + var validateErr error + defer func() { + if t.Failed() && validateErr != nil { + t.Error(validateErr.Error()) + + logs := strings.Builder{} + allLogs := observedLogs.All() + for i := range allLogs { + e := &allLogs[i] + logs.WriteString(e.Message + "\n") + } + t.Errorf("full log:\n%s", logs.String()) + + if len(sink.AllMetrics()) == 0 { + t.Error("no data emitted by scraper") + return + } + metricBytes, err := golden.MarshalMetricsYAML(sink.AllMetrics()[len(sink.AllMetrics())-1]) + require.NoError(t, err) + t.Errorf("latest result:\n%s", metricBytes) + } + }() + + require.Eventually(t, + func() bool { + allMetrics := sink.AllMetrics() + if len(allMetrics) == 0 { + return false + } + if it.failOnErrorLogs && len(observedLogs.All()) > 0 { + logs := strings.Builder{} + allLogs := observedLogs.All() + for i := range allLogs { + e := &allLogs[i] + logs.WriteString(e.Message + "\n") + } + t.Errorf("full log:\n%s", logs.String()) + } + + if it.writeExpected { + require.NoError(t, golden.WriteMetrics(t, it.expectedFile, allMetrics[0])) + return true + } + validateErr = pmetrictest.CompareMetrics(expected, allMetrics[len(allMetrics)-1], it.compareOptions...) + return validateErr == nil + }, + it.compareTimeout, it.compareTimeout/20) +} + +func (it *IntegrationTest) createContainers(t *testing.T) *ContainerInfo { + var wg sync.WaitGroup + ci := &ContainerInfo{ + containers: make(map[string]testcontainers.Container, len(it.containerRequests)), + } + wg.Add(len(it.containerRequests)) + for i := range it.containerRequests { + cr := it.containerRequests[i] + go func(req testcontainers.ContainerRequest) { + var errs error + assert.Eventuallyf(t, func() bool { + c, err := testcontainers.GenericContainer( + t.Context(), + testcontainers.GenericContainerRequest{ + ContainerRequest: req, + Started: true, + }) + if err != nil { + errs = multierr.Append(errs, fmt.Errorf("execute container request: %w", err)) + return false + } + ci.add(req.Name, c) + return true + }, it.createContainerTimeout, time.Second, "create container timeout: %v", errs) + wg.Done() + }(cr) + } + wg.Wait() + return ci +} + +func (it *IntegrationTest) validate(t *testing.T) { + containerNames := make(map[string]bool, len(it.containerRequests)) + for i := range it.containerRequests { + cr := &it.containerRequests[i] + if _, ok := containerNames[cr.Name]; ok { + require.False(t, ok, "duplicate container name: %q", cr.Name) + } else { + containerNames[cr.Name] = true + } + if !it.allowHardcodedHostPort { + for _, port := range cr.ExposedPorts { + require.False(t, strings.ContainsRune(port, ':'), "exposed port hardcoded to host port: %q", port) + } + } + require.NoError(t, cr.Validate()) + } +} + +type TestOption func(*IntegrationTest) + +func WithContainerRequest(cr testcontainers.ContainerRequest) TestOption { + return func(it *IntegrationTest) { + it.containerRequests = append(it.containerRequests, cr) + } +} + +func AllowHardcodedHostPort() TestOption { + return func(it *IntegrationTest) { + it.allowHardcodedHostPort = true + } +} + +func WithCreateContainerTimeout(t time.Duration) TestOption { + return func(it *IntegrationTest) { + it.createContainerTimeout = t + } +} + +func WithCustomConfig(c customConfigFunc) TestOption { + return func(it *IntegrationTest) { + it.customConfig = c + } +} + +func WithExpectedFile(f string) TestOption { + return func(it *IntegrationTest) { + it.expectedFile = f + } +} + +// This option is useful for debugging scrapers but should not be used permanently +// because the logs do not correlate to a single scrape interval. In other words, +// when a retryable failure occurs, this setting will likely force a failure anyways. +func FailOnErrorLogs() TestOption { + return func(it *IntegrationTest) { + it.failOnErrorLogs = true + } +} + +func WriteExpected() TestOption { + return func(it *IntegrationTest) { + it.writeExpected = true + } +} + +func WithCompareOptions(opts ...pmetrictest.CompareMetricsOption) TestOption { + return func(it *IntegrationTest) { + it.compareOptions = opts + } +} + +func WithCompareTimeout(t time.Duration) TestOption { + return func(it *IntegrationTest) { + it.compareTimeout = t + } +} + +type customConfigFunc func(*testing.T, component.Config, *ContainerInfo) + +type ContainerInfo struct { + sync.Mutex + containers map[string]testcontainers.Container +} + +func (ci *ContainerInfo) Host(t *testing.T) string { + return ci.HostForNamedContainer(t, "") +} + +func (ci *ContainerInfo) HostForNamedContainer(t *testing.T, containerName string) string { + c := ci.container(t, containerName) + h, err := c.Host(t.Context()) + require.NoErrorf(t, err, "get host for container %q: %v", containerName, err) + return h +} + +func (ci *ContainerInfo) MappedPort(t *testing.T, port string) string { + return ci.MappedPortForNamedContainer(t, "", port) +} + +func (ci *ContainerInfo) MappedPortForNamedContainer(t *testing.T, containerName, port string) string { + c := ci.container(t, containerName) + p, err := c.MappedPort(t.Context(), port) + require.NoErrorf(t, err, "get port %q for container %q: %v", port, containerName, err) + return p.Port() +} + +func (ci *ContainerInfo) container(t *testing.T, name string) testcontainers.Container { + require.NotEmpty(t, ci.containers, "no containers in use") + c, ok := ci.containers[name] + require.True(t, ok, "container with name %q not found", name) + return c +} + +func (ci *ContainerInfo) add(name string, c testcontainers.Container) { + ci.Lock() + defer ci.Unlock() + ci.containers[name] = c +} + +func (ci *ContainerInfo) terminate(t *testing.T) { + for name, c := range ci.containers { + require.NoError(t, c.Terminate(t.Context()), "terminate container %q", name) + } +} + +func RunScript(script []string) testcontainers.ContainerHook { + return func(ctx context.Context, container testcontainers.Container) error { + code, r, err := container.Exec(ctx, script) + if err != nil { + return err + } + if code == 0 { + return nil + } + + // Try to read the error message for the sake of debugging + errBytes, readerErr := io.ReadAll(r) + if readerErr != nil { + return fmt.Errorf("setup script returned non-zero exit code: %d", code) + } + + // Error message may have non-printable chars, so clean it up + errStr := strings.Map(func(r rune) rune { + if unicode.IsPrint(r) { + return r + } + return -1 + }, string(errBytes)) + return errors.New(strings.TrimSpace(errStr)) + } +} diff --git a/otel-patches/coreinternal/testdata/BUILD.bazel b/otel-patches/coreinternal/testdata/BUILD.bazel new file mode 100644 index 000000000000..e054785645e8 --- /dev/null +++ b/otel-patches/coreinternal/testdata/BUILD.bazel @@ -0,0 +1,28 @@ +load("@@rules_go+//go:def.bzl", "go_library") + +# DATADOG LOCAL PATCH: gazelle refuses to generate BUILD files for any directory named +# "testdata" (treated as opaque fixture data), but upstream uses this directory as a real, +# explicitly-imported Go package (not a `./...`-pattern-discovered one, which is all Go's own +# testdata convention actually skips). Hand-written to keep consumerretry's test target buildable; +# gazelle would otherwise delete this whole file. +# keep +go_library( + name = "testdata", + srcs = [ + "common.go", + "log.go", + "metric.go", + "profile.go", + "resource.go", + "trace.go", + ], + importpath = "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/testdata", # keep + visibility = ["//visibility:public"], + deps = [ + "@io_opentelemetry_go_collector_pdata//pcommon", + "@io_opentelemetry_go_collector_pdata//plog", + "@io_opentelemetry_go_collector_pdata//pmetric", + "@io_opentelemetry_go_collector_pdata//ptrace", + "@io_opentelemetry_go_collector_pdata_pprofile//:pprofile", + ], +) diff --git a/otel-patches/coreinternal/testdata/common.go b/otel-patches/coreinternal/testdata/common.go new file mode 100644 index 000000000000..c3345584f544 --- /dev/null +++ b/otel-patches/coreinternal/testdata/common.go @@ -0,0 +1,39 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package testdata + +import "go.opentelemetry.io/collector/pdata/pcommon" + +const ( + TestLabelKey1 = "label-1" + TestLabelValue1 = "label-value-1" + TestLabelKey2 = "label-2" + TestLabelValue2 = "label-value-2" + TestLabelKey3 = "label-3" + TestLabelValue3 = "label-value-3" + TestAttachmentKey = "exemplar-attachment" + TestAttachmentValue = "exemplar-attachment-value" +) + +func initMetricAttachment(dest pcommon.Map) { + dest.PutStr(TestAttachmentKey, TestAttachmentValue) +} + +func initMetricAttributes1(dest pcommon.Map) { + dest.PutStr(TestLabelKey1, TestLabelValue1) +} + +func initMetricAttributes12(dest pcommon.Map) { + dest.PutStr(TestLabelKey1, TestLabelValue1) + dest.PutStr(TestLabelKey2, TestLabelValue2) +} + +func initMetricAttributes13(dest pcommon.Map) { + dest.PutStr(TestLabelKey1, TestLabelValue1) + dest.PutStr(TestLabelKey3, TestLabelValue3) +} + +func initMetricAttributes2(dest pcommon.Map) { + dest.PutStr(TestLabelKey2, TestLabelValue2) +} diff --git a/otel-patches/coreinternal/testdata/log.go b/otel-patches/coreinternal/testdata/log.go new file mode 100644 index 000000000000..bc32ca0af855 --- /dev/null +++ b/otel-patches/coreinternal/testdata/log.go @@ -0,0 +1,105 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package testdata + +import ( + "time" + + "go.opentelemetry.io/collector/pdata/pcommon" + "go.opentelemetry.io/collector/pdata/plog" +) + +var ( + TestLogTime = time.Date(2020, 2, 11, 20, 26, 13, 789, time.UTC) + TestLogTimestamp = pcommon.NewTimestampFromTime(TestLogTime) +) + +func GenerateLogsOneEmptyResourceLogs() plog.Logs { + ld := plog.NewLogs() + ld.ResourceLogs().AppendEmpty() + return ld +} + +func GenerateLogsNoLogRecords() plog.Logs { + ld := GenerateLogsOneEmptyResourceLogs() + initResource1(ld.ResourceLogs().At(0).Resource()) + return ld +} + +func GenerateLogsOneEmptyLogRecord() plog.Logs { + ld := GenerateLogsNoLogRecords() + rs0 := ld.ResourceLogs().At(0) + rs0.ScopeLogs().AppendEmpty().LogRecords().AppendEmpty() + return ld +} + +func GenerateLogsOneLogRecordNoResource() plog.Logs { + ld := GenerateLogsOneEmptyResourceLogs() + rs0 := ld.ResourceLogs().At(0) + fillLogOne(rs0.ScopeLogs().AppendEmpty().LogRecords().AppendEmpty()) + return ld +} + +func GenerateLogsOneLogRecord() plog.Logs { + ld := GenerateLogsOneEmptyLogRecord() + fillLogOne(ld.ResourceLogs().At(0).ScopeLogs().At(0).LogRecords().At(0)) + return ld +} + +func GenerateLogsTwoLogRecordsSameResource() plog.Logs { + ld := GenerateLogsOneEmptyLogRecord() + logs := ld.ResourceLogs().At(0).ScopeLogs().At(0).LogRecords() + fillLogOne(logs.At(0)) + fillLogTwo(logs.AppendEmpty()) + return ld +} + +func fillLogOne(log plog.LogRecord) { + log.SetTimestamp(TestLogTimestamp) + log.SetDroppedAttributesCount(1) + log.SetSeverityNumber(plog.SeverityNumberInfo) + log.SetSeverityText("Info") + log.SetSpanID([8]byte{0x01, 0x02, 0x04, 0x08}) + log.SetTraceID([16]byte{0x08, 0x04, 0x02, 0x01}) + + attrs := log.Attributes() + attrs.PutStr("app", "server") + attrs.PutInt("instance_num", 1) + + log.Body().SetStr("This is a log message") +} + +func fillLogTwo(log plog.LogRecord) { + log.SetTimestamp(TestLogTimestamp) + log.SetDroppedAttributesCount(1) + log.SetSeverityNumber(plog.SeverityNumberInfo) + log.SetSeverityText("Info") + + attrs := log.Attributes() + attrs.PutStr("customer", "acme") + attrs.PutStr("env", "dev") + + log.Body().SetStr("something happened") +} + +func GenerateLogsManyLogRecordsSameResource(count int) plog.Logs { + ld := GenerateLogsOneEmptyLogRecord() + logs := ld.ResourceLogs().At(0).ScopeLogs().At(0).LogRecords() + logs.EnsureCapacity(count) + for i := 0; i < count; i++ { + var l plog.LogRecord + if i < logs.Len() { + l = logs.At(i) + } else { + l = logs.AppendEmpty() + } + + if i%2 == 0 { + fillLogOne(l) + } else { + fillLogTwo(l) + } + } + return ld +} diff --git a/otel-patches/coreinternal/testdata/metric.go b/otel-patches/coreinternal/testdata/metric.go new file mode 100644 index 000000000000..031720e3e577 --- /dev/null +++ b/otel-patches/coreinternal/testdata/metric.go @@ -0,0 +1,301 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package testdata + +import ( + "time" + + "go.opentelemetry.io/collector/pdata/pcommon" + "go.opentelemetry.io/collector/pdata/pmetric" +) + +var ( + TestMetricStartTime = time.Date(2020, 2, 11, 20, 26, 12, 321, time.UTC) + TestMetricStartTimestamp = pcommon.NewTimestampFromTime(TestMetricStartTime) + + TestMetricExemplarTime = time.Date(2020, 2, 11, 20, 26, 13, 123, time.UTC) + TestMetricExemplarTimestamp = pcommon.NewTimestampFromTime(TestMetricExemplarTime) + + TestMetricTime = time.Date(2020, 2, 11, 20, 26, 13, 789, time.UTC) + TestMetricTimestamp = pcommon.NewTimestampFromTime(TestMetricTime) +) + +const ( + TestGaugeDoubleMetricName = "gauge-double" + TestGaugeIntMetricName = "gauge-int" + TestSumDoubleMetricName = "counter-double" + TestSumIntMetricName = "counter-int" + TestDoubleHistogramMetricName = "double-histogram" + TestDoubleSummaryMetricName = "double-summary" + TestExponentialHistogramMetricName = "exponential-histogram" +) + +func GenerateMetricsOneEmptyResourceMetrics() pmetric.Metrics { + md := pmetric.NewMetrics() + md.ResourceMetrics().AppendEmpty() + return md +} + +func GenerateMetricsNoLibraries() pmetric.Metrics { + md := GenerateMetricsOneEmptyResourceMetrics() + ms0 := md.ResourceMetrics().At(0) + initResource1(ms0.Resource()) + return md +} + +func GenerateMetricsOneEmptyInstrumentationLibrary() pmetric.Metrics { + md := GenerateMetricsNoLibraries() + md.ResourceMetrics().At(0).ScopeMetrics().AppendEmpty() + return md +} + +func GenerateMetricsOneMetricNoResource() pmetric.Metrics { + md := GenerateMetricsOneEmptyResourceMetrics() + rm0 := md.ResourceMetrics().At(0) + rm0ils0 := rm0.ScopeMetrics().AppendEmpty() + initSumIntMetric(rm0ils0.Metrics().AppendEmpty()) + return md +} + +func GenerateMetricsOneMetric() pmetric.Metrics { + md := GenerateMetricsOneEmptyInstrumentationLibrary() + rm0ils0 := md.ResourceMetrics().At(0).ScopeMetrics().At(0) + initSumIntMetric(rm0ils0.Metrics().AppendEmpty()) + return md +} + +func GenerateMetricsTwoMetrics() pmetric.Metrics { + md := GenerateMetricsOneEmptyInstrumentationLibrary() + rm0ils0 := md.ResourceMetrics().At(0).ScopeMetrics().At(0) + initSumIntMetric(rm0ils0.Metrics().AppendEmpty()) + initSumIntMetric(rm0ils0.Metrics().AppendEmpty()) + return md +} + +func GenerateMetricsOneCounterOneSummaryMetrics() pmetric.Metrics { + md := GenerateMetricsOneEmptyInstrumentationLibrary() + rm0ils0 := md.ResourceMetrics().At(0).ScopeMetrics().At(0) + initSumIntMetric(rm0ils0.Metrics().AppendEmpty()) + initDoubleSummaryMetric(rm0ils0.Metrics().AppendEmpty()) + return md +} + +func GenerateMetricsOneMetricNoAttributes() pmetric.Metrics { + md := GenerateMetricsOneMetric() + dps := md.ResourceMetrics().At(0).ScopeMetrics().At(0).Metrics().At(0).Sum().DataPoints() + pcommon.NewMap().CopyTo(dps.At(0).Attributes()) + pcommon.NewMap().CopyTo(dps.At(1).Attributes()) + return md +} + +func GenerateMetricsAllTypesNoDataPoints() pmetric.Metrics { + md := GenerateMetricsOneEmptyInstrumentationLibrary() + ilm0 := md.ResourceMetrics().At(0).ScopeMetrics().At(0) + ms := ilm0.Metrics() + initMetric(ms.AppendEmpty(), TestGaugeDoubleMetricName, pmetric.MetricTypeGauge) + initMetric(ms.AppendEmpty(), TestGaugeIntMetricName, pmetric.MetricTypeGauge) + initMetric(ms.AppendEmpty(), TestSumDoubleMetricName, pmetric.MetricTypeSum) + initMetric(ms.AppendEmpty(), TestSumIntMetricName, pmetric.MetricTypeSum) + initMetric(ms.AppendEmpty(), TestDoubleHistogramMetricName, pmetric.MetricTypeHistogram) + initMetric(ms.AppendEmpty(), TestDoubleSummaryMetricName, pmetric.MetricTypeSummary) + return md +} + +func GenerateMetricsAllTypesEmptyDataPoint() pmetric.Metrics { + md := GenerateMetricsOneEmptyInstrumentationLibrary() + ilm0 := md.ResourceMetrics().At(0).ScopeMetrics().At(0) + ms := ilm0.Metrics() + + doubleGauge := ms.AppendEmpty() + initMetric(doubleGauge, TestGaugeDoubleMetricName, pmetric.MetricTypeGauge) + doubleGauge.Gauge().DataPoints().AppendEmpty() + intGauge := ms.AppendEmpty() + initMetric(intGauge, TestGaugeIntMetricName, pmetric.MetricTypeGauge) + intGauge.Gauge().DataPoints().AppendEmpty() + doubleSum := ms.AppendEmpty() + initMetric(doubleSum, TestSumDoubleMetricName, pmetric.MetricTypeSum) + doubleSum.Sum().DataPoints().AppendEmpty() + intSum := ms.AppendEmpty() + initMetric(intSum, TestSumIntMetricName, pmetric.MetricTypeSum) + intSum.Sum().DataPoints().AppendEmpty() + histogram := ms.AppendEmpty() + initMetric(histogram, TestDoubleHistogramMetricName, pmetric.MetricTypeHistogram) + histogram.Histogram().DataPoints().AppendEmpty() + summary := ms.AppendEmpty() + initMetric(summary, TestDoubleSummaryMetricName, pmetric.MetricTypeSummary) + summary.Summary().DataPoints().AppendEmpty() + exphist := ms.AppendEmpty() + initMetric(exphist, TestExponentialHistogramMetricName, pmetric.MetricTypeExponentialHistogram) + exphist.ExponentialHistogram().DataPoints().AppendEmpty() + return md +} + +func GenerateMetricsMetricTypeInvalid() pmetric.Metrics { + md := GenerateMetricsOneEmptyInstrumentationLibrary() + ilm0 := md.ResourceMetrics().At(0).ScopeMetrics().At(0) + initMetric(ilm0.Metrics().AppendEmpty(), TestSumIntMetricName, pmetric.MetricTypeEmpty) + return md +} + +func GeneratMetricsAllTypesWithSampleDatapoints() pmetric.Metrics { + md := GenerateMetricsOneEmptyInstrumentationLibrary() + + ilm := md.ResourceMetrics().At(0).ScopeMetrics().At(0) + ms := ilm.Metrics() + initGaugeIntMetric(ms.AppendEmpty()) + initGaugeDoubleMetric(ms.AppendEmpty()) + initSumIntMetric(ms.AppendEmpty()) + initSumDoubleMetric(ms.AppendEmpty()) + initDoubleHistogramMetric(ms.AppendEmpty()) + initDoubleSummaryMetric(ms.AppendEmpty()) + + return md +} + +func initGaugeIntMetric(im pmetric.Metric) { + initMetric(im, TestGaugeIntMetricName, pmetric.MetricTypeGauge) + + idps := im.Gauge().DataPoints() + idp0 := idps.AppendEmpty() + initMetricAttributes1(idp0.Attributes()) + idp0.SetStartTimestamp(TestMetricStartTimestamp) + idp0.SetTimestamp(TestMetricTimestamp) + idp0.SetIntValue(123) + idp1 := idps.AppendEmpty() + initMetricAttributes2(idp1.Attributes()) + idp1.SetStartTimestamp(TestMetricStartTimestamp) + idp1.SetTimestamp(TestMetricTimestamp) + idp1.SetIntValue(456) +} + +func initGaugeDoubleMetric(im pmetric.Metric) { + initMetric(im, TestGaugeDoubleMetricName, pmetric.MetricTypeGauge) + + idps := im.Gauge().DataPoints() + idp0 := idps.AppendEmpty() + initMetricAttributes12(idp0.Attributes()) + idp0.SetStartTimestamp(TestMetricStartTimestamp) + idp0.SetTimestamp(TestMetricTimestamp) + idp0.SetDoubleValue(1.23) + idp1 := idps.AppendEmpty() + initMetricAttributes13(idp1.Attributes()) + idp1.SetStartTimestamp(TestMetricStartTimestamp) + idp1.SetTimestamp(TestMetricTimestamp) + idp1.SetDoubleValue(4.56) +} + +func initSumIntMetric(im pmetric.Metric) { + initMetric(im, TestSumIntMetricName, pmetric.MetricTypeSum) + + idps := im.Sum().DataPoints() + idp0 := idps.AppendEmpty() + initMetricAttributes1(idp0.Attributes()) + idp0.SetStartTimestamp(TestMetricStartTimestamp) + idp0.SetTimestamp(TestMetricTimestamp) + idp0.SetIntValue(123) + idp1 := idps.AppendEmpty() + initMetricAttributes2(idp1.Attributes()) + idp1.SetStartTimestamp(TestMetricStartTimestamp) + idp1.SetTimestamp(TestMetricTimestamp) + idp1.SetIntValue(456) +} + +func initSumDoubleMetric(dm pmetric.Metric) { + initMetric(dm, TestSumDoubleMetricName, pmetric.MetricTypeSum) + + ddps := dm.Sum().DataPoints() + ddp0 := ddps.AppendEmpty() + initMetricAttributes12(ddp0.Attributes()) + ddp0.SetStartTimestamp(TestMetricStartTimestamp) + ddp0.SetTimestamp(TestMetricTimestamp) + ddp0.SetDoubleValue(1.23) + + ddp1 := ddps.AppendEmpty() + initMetricAttributes13(ddp1.Attributes()) + ddp1.SetStartTimestamp(TestMetricStartTimestamp) + ddp1.SetTimestamp(TestMetricTimestamp) + ddp1.SetDoubleValue(4.56) +} + +func initDoubleHistogramMetric(hm pmetric.Metric) { + initMetric(hm, TestDoubleHistogramMetricName, pmetric.MetricTypeHistogram) + + hdps := hm.Histogram().DataPoints() + hdp0 := hdps.AppendEmpty() + initMetricAttributes13(hdp0.Attributes()) + hdp0.SetStartTimestamp(TestMetricStartTimestamp) + hdp0.SetTimestamp(TestMetricTimestamp) + hdp0.SetCount(1) + hdp0.SetSum(15) + hdp1 := hdps.AppendEmpty() + initMetricAttributes2(hdp1.Attributes()) + hdp1.SetStartTimestamp(TestMetricStartTimestamp) + hdp1.SetTimestamp(TestMetricTimestamp) + hdp1.SetCount(1) + hdp1.SetSum(15) + hdp1.BucketCounts().FromRaw([]uint64{0, 1}) + exemplar := hdp1.Exemplars().AppendEmpty() + exemplar.SetTimestamp(TestMetricExemplarTimestamp) + exemplar.SetDoubleValue(15) + initMetricAttachment(exemplar.FilteredAttributes()) + hdp1.ExplicitBounds().FromRaw([]float64{1}) +} + +func initDoubleSummaryMetric(sm pmetric.Metric) { + initMetric(sm, TestDoubleSummaryMetricName, pmetric.MetricTypeSummary) + + sdps := sm.Summary().DataPoints() + sdp0 := sdps.AppendEmpty() + initMetricAttributes13(sdp0.Attributes()) + sdp0.SetStartTimestamp(TestMetricStartTimestamp) + sdp0.SetTimestamp(TestMetricTimestamp) + sdp0.SetCount(1) + sdp0.SetSum(15) + sdp1 := sdps.AppendEmpty() + initMetricAttributes2(sdp1.Attributes()) + sdp1.SetStartTimestamp(TestMetricStartTimestamp) + sdp1.SetTimestamp(TestMetricTimestamp) + sdp1.SetCount(1) + sdp1.SetSum(15) + + quantile := sdp1.QuantileValues().AppendEmpty() + quantile.SetQuantile(0.01) + quantile.SetValue(15) +} + +func initMetric(m pmetric.Metric, name string, ty pmetric.MetricType) { + m.SetName(name) + m.SetDescription("") + m.SetUnit("1") + //exhaustive:enforce + switch ty { + case pmetric.MetricTypeGauge: + m.SetEmptyGauge() + + case pmetric.MetricTypeSum: + sum := m.SetEmptySum() + sum.SetIsMonotonic(true) + sum.SetAggregationTemporality(pmetric.AggregationTemporalityCumulative) + + case pmetric.MetricTypeHistogram: + histo := m.SetEmptyHistogram() + histo.SetAggregationTemporality(pmetric.AggregationTemporalityCumulative) + + case pmetric.MetricTypeExponentialHistogram: + m.SetEmptyExponentialHistogram() + + case pmetric.MetricTypeSummary: + m.SetEmptySummary() + } +} + +func GenerateMetricsManyMetricsSameResource(metricsCount int) pmetric.Metrics { + md := GenerateMetricsOneEmptyInstrumentationLibrary() + rs0ilm0 := md.ResourceMetrics().At(0).ScopeMetrics().At(0) + rs0ilm0.Metrics().EnsureCapacity(metricsCount) + for i := 0; i < metricsCount; i++ { + initSumIntMetric(rs0ilm0.Metrics().AppendEmpty()) + } + return md +} diff --git a/otel-patches/coreinternal/testdata/profile.go b/otel-patches/coreinternal/testdata/profile.go new file mode 100644 index 000000000000..8731d011467a --- /dev/null +++ b/otel-patches/coreinternal/testdata/profile.go @@ -0,0 +1,81 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package testdata + +import ( + "time" + + "go.opentelemetry.io/collector/pdata/pcommon" + "go.opentelemetry.io/collector/pdata/pprofile" +) + +var ( + TestProfileStartTime = time.Date(2020, 2, 11, 20, 26, 13, 789, time.UTC) + TestProfileStartTimestamp = pcommon.NewTimestampFromTime(TestProfileStartTime) +) + +func GenerateProfilesOneEmptyResourceProfiles() pprofile.Profiles { + pd := pprofile.NewProfiles() + pd.ResourceProfiles().AppendEmpty() + return pd +} + +func GenerateProfilesNoProfiles() pprofile.Profiles { + pd := GenerateProfilesOneEmptyResourceProfiles() + initResource1(pd.ResourceProfiles().At(0).Resource()) + return pd +} + +func GenerateProfilesOneEmptyProfile() pprofile.Profiles { + pd := GenerateProfilesNoProfiles() + rs0 := pd.ResourceProfiles().At(0) + rs0.ScopeProfiles().AppendEmpty().Profiles().AppendEmpty() + return pd +} + +func GenerateProfilesOneProfile() pprofile.Profiles { + pd := GenerateProfilesOneEmptyProfile() + fillProfileOne(pd.Dictionary(), pd.ResourceProfiles().At(0).ScopeProfiles().At(0).Profiles().At(0)) + return pd +} + +func GenerateProfilesTwoProfilesSameResource() pprofile.Profiles { + pd := GenerateProfilesOneEmptyProfile() + profiles := pd.ResourceProfiles().At(0).ScopeProfiles().At(0).Profiles() + fillProfileOne(pd.Dictionary(), profiles.At(0)) + fillProfileTwo(pd.Dictionary(), profiles.AppendEmpty()) + return pd +} + +func fillProfileOne(dic pprofile.ProfilesDictionary, profile pprofile.Profile) { + profile.SetTime(TestProfileStartTimestamp) + profile.SetProfileID([16]byte{0x01, 0x02, 0x03, 0x04}) + + profile.AttributeIndices().Append(0) + a := dic.AttributeTable().AppendEmpty() + a.SetKeyStrindex(int32(dic.StringTable().Len())) + dic.StringTable().Append("app") + a.Value().SetStr("server") + profile.AttributeIndices().Append(0) + a = dic.AttributeTable().AppendEmpty() + a.SetKeyStrindex(int32(dic.StringTable().Len())) + dic.StringTable().Append("instance_num") + a.Value().SetInt(1) +} + +func fillProfileTwo(dic pprofile.ProfilesDictionary, profile pprofile.Profile) { + profile.SetTime(TestProfileStartTimestamp) + profile.SetProfileID([16]byte{0x05, 0x06, 0x07, 0x08}) + + profile.AttributeIndices().Append(0) + a := dic.AttributeTable().AppendEmpty() + a.SetKeyStrindex(int32(dic.StringTable().Len())) + dic.StringTable().Append("customer") + a.Value().SetStr("acme") + profile.AttributeIndices().Append(0) + a = dic.AttributeTable().AppendEmpty() + a.SetKeyStrindex(int32(dic.StringTable().Len())) + dic.StringTable().Append("env") + a.Value().SetStr("dev") +} diff --git a/otel-patches/coreinternal/testdata/resource.go b/otel-patches/coreinternal/testdata/resource.go new file mode 100644 index 000000000000..604e2ec980d1 --- /dev/null +++ b/otel-patches/coreinternal/testdata/resource.go @@ -0,0 +1,14 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package testdata + +import "go.opentelemetry.io/collector/pdata/pcommon" + +func initResource1(r pcommon.Resource) { + r.Attributes().PutStr("resource-attr", "resource-attr-val-1") +} + +func initResource2(r pcommon.Resource) { + r.Attributes().PutStr("resource-attr", "resource-attr-val-2") +} diff --git a/otel-patches/coreinternal/testdata/trace.go b/otel-patches/coreinternal/testdata/trace.go new file mode 100644 index 000000000000..f4c4626d7f2d --- /dev/null +++ b/otel-patches/coreinternal/testdata/trace.go @@ -0,0 +1,128 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package testdata + +import ( + "time" + + "go.opentelemetry.io/collector/pdata/pcommon" + "go.opentelemetry.io/collector/pdata/ptrace" +) + +var ( + TestSpanStartTime = time.Date(2020, 2, 11, 20, 26, 12, 321, time.UTC) + TestSpanStartTimestamp = pcommon.NewTimestampFromTime(TestSpanStartTime) + + TestSpanEventTime = time.Date(2020, 2, 11, 20, 26, 13, 123, time.UTC) + TestSpanEventTimestamp = pcommon.NewTimestampFromTime(TestSpanEventTime) + + TestSpanEndTime = time.Date(2020, 2, 11, 20, 26, 13, 789, time.UTC) + TestSpanEndTimestamp = pcommon.NewTimestampFromTime(TestSpanEndTime) +) + +func GenerateTracesOneEmptyResourceSpans() ptrace.Traces { + td := ptrace.NewTraces() + td.ResourceSpans().AppendEmpty() + return td +} + +func GenerateTracesNoLibraries() ptrace.Traces { + td := GenerateTracesOneEmptyResourceSpans() + rs0 := td.ResourceSpans().At(0) + initResource1(rs0.Resource()) + return td +} + +func GenerateTracesOneEmptyInstrumentationLibrary() ptrace.Traces { + td := GenerateTracesNoLibraries() + td.ResourceSpans().At(0).ScopeSpans().AppendEmpty() + return td +} + +func GenerateTracesOneSpanNoResource() ptrace.Traces { + td := GenerateTracesOneEmptyResourceSpans() + rs0 := td.ResourceSpans().At(0) + fillSpanOne(rs0.ScopeSpans().AppendEmpty().Spans().AppendEmpty()) + return td +} + +func GenerateTracesOneSpan() ptrace.Traces { + td := GenerateTracesOneEmptyInstrumentationLibrary() + rs0ils0 := td.ResourceSpans().At(0).ScopeSpans().At(0) + fillSpanOne(rs0ils0.Spans().AppendEmpty()) + return td +} + +func GenerateTracesTwoSpansSameResource() ptrace.Traces { + td := GenerateTracesOneEmptyInstrumentationLibrary() + rs0ils0 := td.ResourceSpans().At(0).ScopeSpans().At(0) + fillSpanOne(rs0ils0.Spans().AppendEmpty()) + fillSpanTwo(rs0ils0.Spans().AppendEmpty()) + return td +} + +func GenerateTracesTwoSpansSameResourceOneDifferent() ptrace.Traces { + td := ptrace.NewTraces() + rs0 := td.ResourceSpans().AppendEmpty() + initResource1(rs0.Resource()) + rs0ils0 := rs0.ScopeSpans().AppendEmpty() + fillSpanOne(rs0ils0.Spans().AppendEmpty()) + fillSpanTwo(rs0ils0.Spans().AppendEmpty()) + rs1 := td.ResourceSpans().AppendEmpty() + initResource2(rs1.Resource()) + rs1ils0 := rs1.ScopeSpans().AppendEmpty() + fillSpanThree(rs1ils0.Spans().AppendEmpty()) + return td +} + +func GenerateTracesManySpansSameResource(spanCount int) ptrace.Traces { + td := GenerateTracesOneEmptyInstrumentationLibrary() + rs0ils0 := td.ResourceSpans().At(0).ScopeSpans().At(0) + rs0ils0.Spans().EnsureCapacity(spanCount) + for i := 0; i < spanCount; i++ { + fillSpanOne(rs0ils0.Spans().AppendEmpty()) + } + return td +} + +func fillSpanOne(span ptrace.Span) { + span.SetName("operationA") + span.SetStartTimestamp(TestSpanStartTimestamp) + span.SetEndTimestamp(TestSpanEndTimestamp) + span.SetDroppedAttributesCount(1) + evs := span.Events() + ev0 := evs.AppendEmpty() + ev0.SetTimestamp(TestSpanEventTimestamp) + ev0.SetName("event-with-attr") + ev0.Attributes().PutStr("span-event-attr", "span-event-attr-val") + ev0.SetDroppedAttributesCount(2) + ev1 := evs.AppendEmpty() + ev1.SetTimestamp(TestSpanEventTimestamp) + ev1.SetName("event") + ev1.SetDroppedAttributesCount(2) + span.SetDroppedEventsCount(1) + status := span.Status() + status.SetCode(ptrace.StatusCodeError) + status.SetMessage("status-cancelled") +} + +func fillSpanTwo(span ptrace.Span) { + span.SetName("operationB") + span.SetStartTimestamp(TestSpanStartTimestamp) + span.SetEndTimestamp(TestSpanEndTimestamp) + link0 := span.Links().AppendEmpty() + link0.Attributes().PutStr("span-link-attr", "span-link-attr-val") + link0.SetDroppedAttributesCount(4) + link1 := span.Links().AppendEmpty() + link1.SetDroppedAttributesCount(4) + span.SetDroppedLinksCount(3) +} + +func fillSpanThree(span ptrace.Span) { + span.SetName("operationC") + span.SetStartTimestamp(TestSpanStartTimestamp) + span.SetEndTimestamp(TestSpanEndTimestamp) + span.Attributes().PutStr("span-attr", "span-attr-val") + span.SetDroppedAttributesCount(5) +} diff --git a/otel-patches/coreinternal/textutils/BUILD.bazel b/otel-patches/coreinternal/textutils/BUILD.bazel new file mode 100644 index 000000000000..3d9cbe800608 --- /dev/null +++ b/otel-patches/coreinternal/textutils/BUILD.bazel @@ -0,0 +1,37 @@ +load("@@rules_go+//go:def.bzl", "go_library", "go_test") + +go_library( + name = "textutils", + srcs = [ + "encoding.go", + "utf8raw.go", + ], + importpath = "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/textutils", # keep + visibility = ["//visibility:public"], + deps = [ + "@org_golang_x_text//encoding", + "@org_golang_x_text//encoding/ianaindex", + "@org_golang_x_text//encoding/unicode", + "@org_golang_x_text//transform", + ], +) + +go_test( + name = "textutils_test", + srcs = [ + "encoding_test.go", + "package_test.go", + ], + embed = [":textutils"], + gotags = ["test"], + deps = [ + "@com_github_stretchr_testify//assert", + "@org_golang_x_text//encoding", + "@org_golang_x_text//encoding/japanese", + "@org_golang_x_text//encoding/korean", + "@org_golang_x_text//encoding/simplifiedchinese", + "@org_golang_x_text//encoding/unicode", + "@org_golang_x_text//transform", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/otel-patches/coreinternal/textutils/encoding.go b/otel-patches/coreinternal/textutils/encoding.go new file mode 100644 index 000000000000..4c429c7dc812 --- /dev/null +++ b/otel-patches/coreinternal/textutils/encoding.go @@ -0,0 +1,65 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package textutils // import "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/textutils" + +import ( + "fmt" + "strings" + "unsafe" + + "golang.org/x/text/encoding" + "golang.org/x/text/encoding/ianaindex" + "golang.org/x/text/encoding/unicode" +) + +var encodingOverrides = map[string]encoding.Encoding{ + "utf-16": unicode.UTF16(unicode.LittleEndian, unicode.IgnoreBOM), + "utf16": unicode.UTF16(unicode.LittleEndian, unicode.IgnoreBOM), + "utf-8": unicode.UTF8, + "utf8": unicode.UTF8, + "utf-8-raw": UTF8Raw, + "utf8-raw": UTF8Raw, + "ascii": unicode.UTF8, + "us-ascii": unicode.UTF8, + "nop": encoding.Nop, + "": unicode.UTF8, +} + +func LookupEncoding(enc string) (encoding.Encoding, error) { + if e, ok := encodingOverrides[strings.ToLower(enc)]; ok { + return e, nil + } + e, err := ianaindex.IANA.Encoding(enc) + if err != nil { + return nil, fmt.Errorf("unsupported encoding '%s'", enc) + } + if e == nil { + return nil, fmt.Errorf("no charmap defined for encoding '%s'", enc) + } + return e, nil +} + +func IsNop(enc string) bool { + e, err := LookupEncoding(enc) + if err != nil { + return false + } + return e == encoding.Nop +} + +// DecodeAsString converts the given encoded bytes using the given decoder. It returns the converted +// bytes or nil, err if any error occurred. +func DecodeAsString(decoder *encoding.Decoder, buf []byte) (string, error) { + dstBuf, err := decoder.Bytes(buf) + if err != nil { + return "", err + } + return UnsafeBytesAsString(dstBuf), nil +} + +// UnsafeBytesAsString converts the byte array to string. +// This function must be called iff the input buffer is not going to be re-used after. +func UnsafeBytesAsString(buf []byte) string { + return unsafe.String(unsafe.SliceData(buf), len(buf)) +} diff --git a/otel-patches/coreinternal/textutils/encoding_test.go b/otel-patches/coreinternal/textutils/encoding_test.go new file mode 100644 index 000000000000..521a44675787 --- /dev/null +++ b/otel-patches/coreinternal/textutils/encoding_test.go @@ -0,0 +1,93 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package textutils // import "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/textutils" + +import ( + "testing" + + "github.com/stretchr/testify/assert" + "golang.org/x/text/encoding" + "golang.org/x/text/encoding/japanese" + "golang.org/x/text/encoding/korean" + "golang.org/x/text/encoding/simplifiedchinese" + "golang.org/x/text/encoding/unicode" + "golang.org/x/text/transform" +) + +func TestUTF8Encoding(t *testing.T) { + tests := []struct { + name string + encoding encoding.Encoding + encodingName string + }{ + { + name: "UTF8 encoding", + encoding: unicode.UTF8, + encodingName: "utf8", + }, + { + name: "UTF8-raw encoding", + encoding: UTF8Raw, + encodingName: "utf8-raw", + }, + { + name: "GBK encoding", + encoding: simplifiedchinese.GBK, + encodingName: "gbk", + }, + { + name: "SHIFT_JIS encoding", + encoding: japanese.ShiftJIS, + encodingName: "shift_jis", + }, + { + name: "EUC-KR encoding", + encoding: korean.EUCKR, + encodingName: "euc-kr", + }, + } + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + enc, err := LookupEncoding(test.encodingName) + assert.NoError(t, err) + assert.Equal(t, test.encoding, enc) + }) + } +} + +func TestDecodeAsString(t *testing.T) { + tests := []struct { + name string + decoder *encoding.Decoder + input []byte + expected string + }{ + { + name: "nil", + decoder: &encoding.Decoder{Transformer: transform.Nop}, + input: nil, + expected: "", + }, + { + name: "empty", + decoder: &encoding.Decoder{Transformer: transform.Nop}, + input: []byte{}, + expected: "", + }, + { + name: "empty", + decoder: &encoding.Decoder{Transformer: transform.Nop}, + input: []byte("test"), + expected: "test", + }, + } + + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + enc, err := DecodeAsString(test.decoder, test.input) + assert.NoError(t, err) + assert.Equal(t, test.expected, enc) + }) + } +} diff --git a/otel-patches/coreinternal/textutils/package_test.go b/otel-patches/coreinternal/textutils/package_test.go new file mode 100644 index 000000000000..b2ff83cda2b7 --- /dev/null +++ b/otel-patches/coreinternal/textutils/package_test.go @@ -0,0 +1,14 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package textutils + +import ( + "testing" + + "go.uber.org/goleak" +) + +func TestMain(m *testing.M) { + goleak.VerifyTestMain(m) +} diff --git a/otel-patches/coreinternal/textutils/utf8raw.go b/otel-patches/coreinternal/textutils/utf8raw.go new file mode 100644 index 000000000000..30c02cad4c86 --- /dev/null +++ b/otel-patches/coreinternal/textutils/utf8raw.go @@ -0,0 +1,23 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package textutils // import "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/textutils" + +import ( + "golang.org/x/text/encoding" + "golang.org/x/text/transform" +) + +// UTF8Raw is a variant of the UTF-8 encoding without replacing invalid UTF-8 sequences. +// It behaves in the same way as [encoding.Nop], but is differentiated from nop encoding, which we treat in a special way. +var UTF8Raw encoding.Encoding = utf8raw{} + +type utf8raw struct{} + +func (utf8raw) NewDecoder() *encoding.Decoder { + return &encoding.Decoder{Transformer: transform.Nop} +} + +func (utf8raw) NewEncoder() *encoding.Encoder { + return &encoding.Encoder{Transformer: transform.Nop} +} diff --git a/otel-patches/coreinternal/timeutils/BUILD.bazel b/otel-patches/coreinternal/timeutils/BUILD.bazel new file mode 100644 index 000000000000..1d631edaaa45 --- /dev/null +++ b/otel-patches/coreinternal/timeutils/BUILD.bazel @@ -0,0 +1,37 @@ +load("@@rules_go+//go:def.bzl", "go_library", "go_test") + +go_library( + name = "timeutils", + srcs = [ + "doc.go", + "parser.go", + "ticker_helper.go", + ], + cgo = True, + importpath = "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/timeutils", # keep + visibility = ["//visibility:public"], + deps = [ + "@@gazelle++go_deps+com_github_open_telemetry_opentelemetry_collector_contrib_internal_coreinternal//timeutils/internal/ctimefmt", + "@com_github_elastic_lunes//:lunes", + ], # keep +) + +go_test( + name = "timeutils_test", + # strptime_cgo_test.go deliberately omitted: it exercises CStrptime, which only exists in + # strptime_cgo_testlib.go - disabled via an always-false build tag to fix the tm_gmtoff + # compile error (see otel-patches/coreinternal/timeutils/strptime_cgo_testlib.go). + srcs = [ + "package_test.go", + "parser_test.go", + "strptime_test.go", + "ticker_test.go", + ], # keep + embed = [":timeutils"], + gotags = ["test"], + deps = [ + "@com_github_stretchr_testify//assert", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/otel-patches/coreinternal/timeutils/doc.go b/otel-patches/coreinternal/timeutils/doc.go new file mode 100644 index 000000000000..5d0549775a38 --- /dev/null +++ b/otel-patches/coreinternal/timeutils/doc.go @@ -0,0 +1,8 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +// Package timeutils provides a set of helper functions to convert ids. +// +// Functions in big_endian_converter.go help converting uint64 ids to TraceID +// and SpanID using big endian, and vice versa. +package timeutils // import "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/timeutils" diff --git a/otel-patches/coreinternal/timeutils/internal/ctimefmt/BUILD.bazel b/otel-patches/coreinternal/timeutils/internal/ctimefmt/BUILD.bazel new file mode 100644 index 000000000000..76f359e61e47 --- /dev/null +++ b/otel-patches/coreinternal/timeutils/internal/ctimefmt/BUILD.bazel @@ -0,0 +1,24 @@ +load("@@rules_go+//go:def.bzl", "go_library", "go_test") + +go_library( + name = "ctimefmt", + srcs = ["ctimefmt.go"], + importpath = "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/timeutils/internal/ctimefmt", # keep + visibility = ["//visibility:public"], + deps = ["@com_github_elastic_lunes//:lunes"], +) + +go_test( + name = "ctimefmt_test", + srcs = [ + "ctimefmt_test.go", + "package_test.go", + ], + embed = [":ctimefmt"], + gotags = ["test"], + deps = [ + "@com_github_stretchr_testify//assert", + "@com_github_stretchr_testify//require", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/otel-patches/coreinternal/timeutils/internal/ctimefmt/LICENSE b/otel-patches/coreinternal/timeutils/internal/ctimefmt/LICENSE new file mode 100644 index 000000000000..c26e7a3c4ffa --- /dev/null +++ b/otel-patches/coreinternal/timeutils/internal/ctimefmt/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2019 Dmitry A. Mottl + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/otel-patches/coreinternal/timeutils/internal/ctimefmt/ctimefmt.go b/otel-patches/coreinternal/timeutils/internal/ctimefmt/ctimefmt.go new file mode 100644 index 000000000000..f28e6186d9a5 --- /dev/null +++ b/otel-patches/coreinternal/timeutils/internal/ctimefmt/ctimefmt.go @@ -0,0 +1,287 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +// Keep the original license. + +// Copyright 2019 Dmitry A. Mottl. All rights reserved. +// Use of this source code is governed by MIT license +// that can be found in the LICENSE file. + +package ctimefmt // import "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/timeutils/internal/ctimefmt" + +import ( + "errors" + "fmt" + "regexp" + "slices" + "strings" + "time" + + "github.com/elastic/lunes" +) + +var ( + ctimeRegexp = regexp.MustCompile(`%.`) + invalidFractionalSecondsStrptime = regexp.MustCompile(`[^.,]%[Lfs]`) + decimalsRegexp = regexp.MustCompile(`\d`) + leadingSpaceRegexp = regexp.MustCompile(`^\s+`) +) + +var ctimeSubstitutes = map[string]string{ + "%Y": "2006", + "%y": "06", + "%m": "01", + "%o": "_1", + "%q": "1", + "%b": "Jan", + "%h": "Jan", + "%B": "January", + "%d": "02", + "%e": "_2", + "%g": "2", + "%a": "Mon", + "%A": "Monday", + "%H": "15", + "%l": "3", + "%I": "03", + "%p": "PM", + "%P": "pm", + "%M": "04", + "%S": "05", + "%L": "999", + "%f": "999999", + "%s": "999999999", + "%Z": "MST", + "%z": "Z0700", + "%w": "-070000", + "%i": "-07", + "%j": "-07:00", + "%k": "-07:00:00", + "%D": "01/02/2006", + "%x": "01/02/2006", + "%F": "2006-01-02", + "%T": "15:04:05", + "%X": "15:04:05", + "%r": "03:04:05 pm", + "%R": "15:04", + "%n": "\n", + "%t": "\t", + "%%": "%", + "%c": "Mon Jan 02 15:04:05 2006", +} + +// Format returns a textual representation of the time value formatted +// according to ctime-like format string. Possible directives are: +// +// %Y - Year, zero-padded (0001, 0002, ..., 2019, 2020, ..., 9999) +// %y - Year, last two digits, zero-padded (01, ..., 99) +// %m - Month as a decimal number (01, 02, ..., 12) +// %o - Month as a space-padded number ( 1, 2, ..., 12) +// %q - Month as a unpadded number (1,2,...,12) +// %b, %h - Abbreviated month name (Jan, Feb, ...) +// %B - Full month name (January, February, ...) +// %d - Day of the month, zero-padded (01, 02, ..., 31) +// %e - Day of the month, space-padded ( 1, 2, ..., 31) +// %g - Day of the month, unpadded (1,2,...,31) +// %a - Abbreviated weekday name (Sun, Mon, ...) +// %A - Full weekday name (Sunday, Monday, ...) +// %H - Hour (24-hour clock) as a zero-padded decimal number (00, ..., 24) +// %I - Hour (12-hour clock) as a zero-padded decimal number (00, ..., 12) +// %l - Hour (12-hour clock: 0, ..., 12) +// %p - Locale’s equivalent of either AM or PM +// %P - Locale’s equivalent of either am or pm +// %M - Minute, zero-padded (00, 01, ..., 59) +// %S - Second as a zero-padded decimal number (00, 01, ..., 59) +// %L - Millisecond as a decimal number, zero-padded on the left (000, 001, ..., 999) +// %f - Microsecond as a decimal number, zero-padded on the left (000000, ..., 999999) +// %s - Nanosecond as a decimal number, zero-padded on the left (000000000, ..., 999999999) +// %z - UTC offset in the form ±HHMM[SS[.ffffff]] or empty(+0000, -0400) +// %Z - Timezone name or abbreviation or empty (UTC, EST, CST) +// %D, %x - Short MM/DD/YYYY date, equivalent to %m/%d/%y +// %F - Short YYYY-MM-DD date, equivalent to %Y-%m-%d +// %T, %X - ISO 8601 time format (HH:MM:SS), equivalent to %H:%M:%S +// %r - 12-hour clock time (02:55:02 pm) +// %R - 24-hour HH:MM time, equivalent to %H:%M +// %n - New-line character ('\n') +// %t - Horizontal-tab character ('\t') +// %% - A % sign +// %c - Date and time representation (Mon Jan 02 15:04:05 2006) +func Format(format string, t time.Time) (string, error) { + native, err := toNative(format) + if err != nil { + return "", err + } + return t.Format(native), nil +} + +type ParseFunc func(layout string) (time.Time, error) + +// Parse parses a ctime-like formatted string (e.g. "%Y-%m-%d ...") +// and returns the time value it represents and the Go layout string +// that successfully parsed the input. +// +// It differs from Format in that it will attempt to parse the string +// multiple times in order to handle format specifiers that can have +// multiple valid formats such as %z. Notable differences include: +// +// - Leading whitespace before a digit is ignored +// - Numbers may or may not have leading zero digits +// - Multiple time zone formats are supported +// +// Refer to strptime(3) and Format() function documentation for possible directives. +// +// Note: The returned ParseError will indicate the ctime directive that failed to parse. +func Parse(format string, parse ParseFunc) (time.Time, string, error) { + indexes := ctimeRegexp.FindAllStringIndex(format, -1) + t, layout, err := iterativeParse("", format, 0, indexes, parse) + var timeErr *time.ParseError + if errors.As(err, &timeErr) { + timeErr.Layout = format + } + return t, layout, err +} + +// Alternative formats that allow more flexible ctime-compatible parsing. +// The values are split into discrete time.Parse elements so they can be identified in ParseError.LayoutElem. +var ctimeParseSubstitutes = map[string][][]string{ + "%m": {{"1"}}, + "%o": {{"1"}}, + "%q": {{"1"}}, + "%d": {{"2"}}, + "%e": {{"2"}}, + "%g": {{"2"}}, + "%I": {{"3"}}, + "%M": {{"4"}}, + "%S": {{"5"}}, + "%D": { + // N.B. The docs above say that %D is equivalent to %m/%d/%y, but the implementation of Format uses %m/%d/%Y. We try to parse as both. + {"1", "/", "2", "/", "2006"}, + {"1", "/", "2", "/", "06"}, + }, + "%x": { + {"1", "/", "2", "/", "2006"}, + {"1", "/", "2", "/", "06"}, + }, + "%F": {{"2006", "-", "1", "-", "2"}}, + "%T": {{"15", ":", "4", ":", "5"}}, + "%X": {{"15", ":", "4", ":", "5"}}, + "%r": {{"3", ":", "4", ":", "5", " ", "pm"}}, + "%R": {{"15", ":", "4"}}, + "%c": {{"Mon", " ", "Jan", " ", "2", " ", "15", ":", "4", ":", "5", " ", "2006"}}, +} + +func iterativeParse(partialLayout, format string, startIndex int, indexes [][]int, parse ParseFunc) (out time.Time, layout string, err error) { + if len(indexes) == 0 { + layout = partialLayout + format[startIndex:] + out, err = parse(layout) + return out, layout, err + } + partialLayout += format[startIndex:indexes[0][0]] + directive := format[indexes[0][0]:indexes[0][1]] + // tryElements will attempt to match the time with elements. + // It returns the index of the failing element and the remaining unparsed input, or -1 if none of the elements were responsible for a failure. + tryElements := func(elements ...string) (int, string) { + out, layout, err = iterativeParse(partialLayout+strings.Join(elements, ""), format, indexes[0][1], indexes[1:], parse) + var timeErr *time.ParseError + if errors.As(err, &timeErr) { + if i := slices.Index(elements, timeErr.LayoutElem); i >= 0 { + timeErr.LayoutElem = directive + return i, timeErr.ValueElem + } + } + var lunesErr *lunes.ErrLayoutMismatch + if errors.As(err, &lunesErr) { + if i := slices.Index(elements, lunesErr.LayoutElem); i >= 0 { + lunesErr.LayoutElem = directive + return i, "unknown" + } + } + return -1, "" + } + // try will attempt to match the time with elements and optional leading spaces + try := func(elements ...string) (int, string) { + for { + i, remainder := tryElements(elements...) + if i >= 0 { + switch elements[i][0] { + case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'Z': + space := leadingSpaceRegexp.FindString(remainder) + if space != "" { + elements = slices.Insert(append([]string{}, elements...), i, space) + continue + } + } + } + return i, remainder + } + } + if directive == "%z" { + if i, _ := try("Z0700"); i < 0 { + return out, layout, err + } + if i, _ := try("Z07:00"); i < 0 { + return out, layout, err + } + if i, _ := try("Z07"); i < 0 { + return out, layout, err + } + return out, layout, err + } + if substs, ok := ctimeParseSubstitutes[directive]; ok { + for _, subst := range substs { + if i, _ := try(subst...); i < 0 { + break + } + } + // Don't fall back to the original substitutes, or we will generate incorrect error messages. + return out, layout, err + } + if subst, ok := ctimeSubstitutes[directive]; ok { + try("", subst) + return out, layout, err + } + return time.Time{}, "", fmt.Errorf("unsupported ctimefmt.FlexibleParse() directive: %s", directive) +} + +// toNative converts ctime-like format string to Go native layout +// (which is used by time.Time.Format() and time.Parse() functions). +func toNative(format string) (string, error) { + var errs []error + replaceFunc := func(directive string) string { + if subst, ok := ctimeSubstitutes[directive]; ok { + return subst + } + errs = append(errs, errors.New("unsupported ctimefmt.toNative() directive: "+directive)) + return "" + } + + replaced := ctimeRegexp.ReplaceAllStringFunc(format, replaceFunc) + if len(errs) != 0 { + return "", fmt.Errorf("convert to go time format: %v", errs) + } + + return replaced, nil +} + +func Validate(format string) error { + if match := decimalsRegexp.FindString(format); match != "" { + return errors.New("format string should not contain decimals") + } + + if match := invalidFractionalSecondsStrptime.FindString(format); match != "" { + return fmt.Errorf("invalid fractional seconds directive: '%s'. must be preceded with '.' or ','", match) + } + + directives := ctimeRegexp.FindAllString(format, -1) + + var errs []error + for _, directive := range directives { + if _, ok := ctimeSubstitutes[directive]; !ok { + errs = append(errs, errors.New("unsupported ctimefmt.toNative() directive: "+directive)) + } + } + if len(errs) != 0 { + return fmt.Errorf("invalid strptime format: %v", errs) + } + return nil +} diff --git a/otel-patches/coreinternal/timeutils/internal/ctimefmt/ctimefmt_test.go b/otel-patches/coreinternal/timeutils/internal/ctimefmt/ctimefmt_test.go new file mode 100644 index 000000000000..4f6b3cf0ba01 --- /dev/null +++ b/otel-patches/coreinternal/timeutils/internal/ctimefmt/ctimefmt_test.go @@ -0,0 +1,160 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +// Keep the original license. + +// Copyright 2019 Dmitry A. Mottl. All rights reserved. +// Use of this source code is governed by MIT license +// that can be found in the LICENSE file. + +package ctimefmt + +import ( + "testing" + "time" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +var ( + format1 = "%Y-%m-%d %H:%M:%S.%f" + format2 = "%Y-%m-%d %l:%M:%S.%L %P, %a" + format3 = "%Y-%m-%d %T.%s +0000" + value1 = "2019-01-02 15:04:05.666666" + value2 = "2019-01-02 3:04:05.666 pm, Wed" + value3 = "2025-07-07 01:07:27.123456789 +0000" + dt1 = time.Date(2019, 1, 2, 15, 4, 5, 666666000, time.UTC) + dt2 = time.Date(2019, 1, 2, 15, 4, 5, 666000000, time.UTC) + dt3 = time.Date(2025, 7, 7, 1, 7, 27, 123456789, time.UTC) + layout1 = "2006-1-2 15:4:5.999999" + layout2 = "2006-1-2 3:4:5.999 pm, Mon" +) + +func TestFormat(t *testing.T) { + s, err := Format(format1, dt1) + require.NoError(t, err) + assert.Equal(t, s, value1, "Given: %v, expected: %v", s, value1) + + s, err = Format(format2, dt1) + require.NoError(t, err) + assert.Equal(t, s, value2, "Given: %v, expected: %v", s, value2) + + s, err = Format(format3, dt3) + require.NoError(t, err) + assert.Equal(t, s, value3, "Given: %v, expected: %v", s, value2) +} + +func TestParse(t *testing.T) { + dt, layout, err := Parse(format1, func(native string) (time.Time, error) { return time.Parse(native, value1) }) + require.NoError(t, err) + assert.Equal(t, dt1, dt, "Given: %v, expected: %v", dt, dt1) + assert.Equal(t, layout1, layout) + + dt, layout, err = Parse(format2, func(native string) (time.Time, error) { return time.Parse(native, value2) }) + require.NoError(t, err) + assert.Equal(t, dt2, dt, "Given: %v, expected: %v", dt, dt2) + assert.Equal(t, layout2, layout) +} + +func TestFlexibleParse(t *testing.T) { + // These test cases cover only the format specifiers that are unique to OTel or have conflicting behavior vs strptime. + // See ../../strptime_test.go for test cases that verify OTel's behavior matches strptime. + want := time.Date(2019, 1, 2, 15, 4, 5, 0, time.UTC) + for _, tc := range []struct { + name, format, input string + }{ + {"baseline", "%Y-%m-%dT%H:%M:%S%z", "2019-1-2T15:4:5Z"}, + // Bespoke to OTel + {"o", "%Y-%o-%dT%H:%M:%S%z", "2019-1-2T15:4:5Z"}, + {"q", "%Y-%q-%dT%H:%M:%S%z", "2019-1-2T15:4:5Z"}, + // Conflicting with normal strptime behavior + {"X", "%Y-%m-%dT%X%z", "2019-1-2T15:4:5Z"}, + {"g", "%Y-%m-%gT%H:%M:%S%z", "2019-1-2T15:4:5Z"}, + {"r", "%Y-%m-%d %r", "2019-1-2 3:4:5 pm"}, + } { + t.Run(tc.name, func(t *testing.T) { + got, _, err := Parse(tc.format, func(native string) (time.Time, error) { return time.Parse(native, tc.input) }) + require.NoError(t, err) + assert.Equal(t, want, got) + }) + } +} + +func TestZulu(t *testing.T) { + format := "%Y-%m-%dT%H:%M:%S.%L%z" + // These time should all parse as UTC. + for _, input := range []string{ + "2019-01-02T15:04:05.666666Z", + "2019-01-02T15:04:05.666666-0000", + "2019-01-02T15:04:05.666666+0000", + "2019-01-02T15:04:05.666666+00:00", + "2019-01-02T15:04:05.666666+00", + "2019-01-02T15:04:05.666666 Z", + "2019-01-02T15:04:05.666666 -0000", + "2019-01-02T15:04:05.666666 +0000", + "2019-01-02T15:04:05.666666 +00:00", + "2019-01-02T15:04:05.666666 +00", + } { + t.Run(input, func(t *testing.T) { + dt, layout, err := Parse(format, func(native string) (time.Time, error) { return time.Parse(native, input) }) + require.NoError(t, err) + assert.NotEmpty(t, layout) + // We compare the unix nanoseconds because Go has a subtle parsing difference between "Z" and "+0000". + // The former returns a Time with the UTC timezone, the latter returns a Time with a 0000 time zone offset. + // (See Go's documentation for `time.Parse`.) + assert.Equal(t, dt.UnixNano(), dt1.UnixNano(), "Given: %v, expected: %v", dt, dt1) + }) + } +} + +func TestValidate(t *testing.T) { + type args struct { + layout string + } + tests := []struct { + name string + args args + wantErr string + }{ + { + name: "valid format", + args: args{ + layout: "%Y-%m-%d %H:%M:%S.%f", + }, + wantErr: "", + }, + { + name: "invalid fractional second", + args: args{ + layout: "%Y-%m-%d-%H-%M-%S:%L", + }, + wantErr: "invalid fractional seconds directive: ':%L'. must be preceded with '.' or ','", + }, + { + name: "format including decimal", + args: args{ + layout: "2006-%m-%d-%H-%M-%S:%L", + }, + wantErr: "format string should not contain decimals", + }, + { + name: "unsupported directive", + args: args{ + layout: "%C-%m-%d-%H-%M-%S.%L", + }, + wantErr: "invalid strptime format: [unsupported ctimefmt.toNative() directive: %C]", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + err := Validate(tt.args.layout) + + if tt.wantErr != "" { + require.ErrorContains(t, err, tt.wantErr) + } else { + require.NoError(t, err) + } + }) + } +} diff --git a/otel-patches/coreinternal/timeutils/internal/ctimefmt/package_test.go b/otel-patches/coreinternal/timeutils/internal/ctimefmt/package_test.go new file mode 100644 index 000000000000..9b2488524792 --- /dev/null +++ b/otel-patches/coreinternal/timeutils/internal/ctimefmt/package_test.go @@ -0,0 +1,14 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package ctimefmt + +import ( + "testing" + + "go.uber.org/goleak" +) + +func TestMain(m *testing.M) { + goleak.VerifyTestMain(m) +} diff --git a/otel-patches/coreinternal/timeutils/package_test.go b/otel-patches/coreinternal/timeutils/package_test.go new file mode 100644 index 000000000000..c360a00c086e --- /dev/null +++ b/otel-patches/coreinternal/timeutils/package_test.go @@ -0,0 +1,14 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package timeutils + +import ( + "testing" + + "go.uber.org/goleak" +) + +func TestMain(m *testing.M) { + goleak.VerifyTestMain(m) +} diff --git a/otel-patches/coreinternal/timeutils/parser.go b/otel-patches/coreinternal/timeutils/parser.go new file mode 100644 index 000000000000..482554faa68a --- /dev/null +++ b/otel-patches/coreinternal/timeutils/parser.go @@ -0,0 +1,212 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package timeutils // import "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/timeutils" + +import ( + "errors" + "fmt" + "regexp" + "strings" + "sync/atomic" + "time" + + "github.com/elastic/lunes" + + strptime "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/timeutils/internal/ctimefmt" +) + +var invalidFractionalSecondsGoTime = regexp.MustCompile(`[^.,9]9+`) + +func FormatStrptime(format string, t time.Time) (string, error) { + return strptime.Format(format, t) +} + +type StrptimeParser struct { + format string + lastLayout atomic.Pointer[string] +} + +func NewStrptimeParser(format string) (*StrptimeParser, error) { + if err := ValidateStrptime(format); err != nil { + return nil, err + } + return &StrptimeParser{ + format: format, + }, nil +} + +func (f *StrptimeParser) parse(parseFunc strptime.ParseFunc) (time.Time, error) { + lastLayout := f.lastLayout.Load() + if lastLayout != nil { + if t, err := parseFunc(*lastLayout); err == nil { + return t, nil + } + } + t, layout, err := strptime.Parse(f.format, parseFunc) + if err == nil { + f.lastLayout.Store(&layout) + } + return t, err +} + +func (f *StrptimeParser) Parse(value any, location *time.Location) (time.Time, error) { + return f.parse(func(format string) (time.Time, error) { + return ParseGotime(format, value, location) + }) +} + +func (f *StrptimeParser) ParseLocalized(value any, location *time.Location, language string) (time.Time, error) { + return f.parse(func(format string) (time.Time, error) { + return ParseLocalizedGotime(format, value, location, language) + }) +} + +func GetLocation(location, layout *string) (*time.Location, error) { + if location != nil && *location != "" { + // If location is specified, it must be in the local timezone database + loc, err := time.LoadLocation(*location) + if err != nil { + return nil, fmt.Errorf("failed to load location %s: %w", *location, err) + } + return loc, nil + } + + if layout != nil && strings.HasSuffix(*layout, "Z") { + // If a timestamp ends with 'Z', it should be interpreted at Zulu (UTC) time + return time.UTC, nil + } + + return time.Local, nil +} + +// ParseLocalizedGotime is like ParseGotime, but instead of parsing a formatted time in +// English, it parses a value in foreign language, and returns the [time.Time] it represents. +// The language argument must be a well-formed BCP 47 language tag (e.g.: "en", "en-US"), and +// a known CLDR locale. +func ParseLocalizedGotime(layout string, value any, location *time.Location, language string) (time.Time, error) { + stringValue, err := convertParsingValue(value) + if err != nil { + return time.Time{}, err + } + + translatedVal, err := lunes.Translate(layout, stringValue, language) + if err != nil { + return time.Time{}, err + } + + return ParseGotime(layout, translatedVal, location) +} + +func ParseGotime(layout string, value any, location *time.Location) (time.Time, error) { + timeValue, err := parseGotime(layout, value, location) + if err != nil { + return time.Time{}, err + } + return SetTimestampYear(timeValue), nil +} + +func parseGotime(layout string, value any, location *time.Location) (time.Time, error) { + str, err := convertParsingValue(value) + if err != nil { + return time.Time{}, err + } + + result, err := time.ParseInLocation(layout, str, location) + + // Depending on the timezone database, we may get a pseudo-matching timezone + // This is apparent when the zone is not "UTC", but the offset is still 0. + // We skip the correction if the zone matches the caller's default location, + // because in that case the zone name came from the default (e.g. "WET" for + // time.Local on a Western European system), not from an abbreviation in the + // input string. + zone, offset := result.Zone() + var locZone string + if location != nil { + locZone, _ = result.In(location).Zone() + } + if offset != 0 || zone == "UTC" || zone == locZone { + return result, err + } + + // Manually look up the location based on the zone + loc, locErr := time.LoadLocation(zone) + if locErr != nil { + // can't correct offset, just return what we have + return result, fmt.Errorf("failed to load location %s: %w", zone, locErr) + } + + // Reparse the timestamp, with the location + resultLoc, locErr := time.ParseInLocation(layout, str, loc) + if locErr != nil { + // can't correct offset, just return original result + return result, err + } + + return resultLoc, locErr +} + +func convertParsingValue(value any) (string, error) { + var str string + switch v := value.(type) { + case string: + str = v + case []byte: + str = string(v) + default: + return "", fmt.Errorf("type %T cannot be parsed as a time", value) + } + + return str, nil +} + +// SetTimestampYear sets the year of a timestamp to the current year. +// This is needed because year is missing from some time formats, such as rfc3164. +func SetTimestampYear(t time.Time) time.Time { + if t.Year() > 0 { + return t + } + n := Now() + d := time.Date(n.Year(), t.Month(), t.Day(), t.Hour(), t.Minute(), t.Second(), t.Nanosecond(), t.Location()) + // Assume the timestamp is from last year if its month and day are + // more than 7 days past the current date. + // i.e. If today is January 1, but the timestamp is February 1, it's safe + // to assume the timestamp is from last year. + if d.After(n.AddDate(0, 0, 7)) { + d = d.AddDate(-1, 0, 0) + } + return d +} + +// ValidateStrptime checks the given strptime layout and returns an error if it detects any known issues +// that prevent it from being parsed. +func ValidateStrptime(layout string) error { + return strptime.Validate(layout) +} + +func ValidateGotime(layout string) error { + if match := invalidFractionalSecondsGoTime.FindString(layout); match != "" { + return fmt.Errorf("invalid fractional seconds directive: '%s'. must be preceded with '.' or ','", match) + } + + return nil +} + +// ValidateLocale checks the given locale and returns an error if the language tag +// is not supported by the localized parser functions. +func ValidateLocale(locale string) error { + _, err := lunes.NewDefaultLocale(locale) + if err == nil { + return nil + } + + var e *lunes.ErrUnsupportedLocale + if errors.As(err, &e) { + return fmt.Errorf("unsupported locale '%s', value must be a supported BCP 47 language tag", locale) + } + + return fmt.Errorf("invalid locale '%s': %w", locale, err) +} + +// Allows tests to override with deterministic value +var Now = time.Now diff --git a/otel-patches/coreinternal/timeutils/parser_test.go b/otel-patches/coreinternal/timeutils/parser_test.go new file mode 100644 index 000000000000..d0df627364ee --- /dev/null +++ b/otel-patches/coreinternal/timeutils/parser_test.go @@ -0,0 +1,260 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package timeutils + +import ( + "testing" + "time" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func TestParseGoTimeBadLocation(t *testing.T) { + _, err := ParseGotime(time.RFC822, "02 Jan 06 15:04 BST", time.UTC) + require.ErrorContains(t, err, "failed to load location BST") +} + +// TestParseGotimeLocalPreserved verifies that when no timezone abbreviation is +// present in the layout, the returned time.Time keeps time.Local as its location +// regardless of what the system timezone name happens to be (e.g. "WET", "CET"). +func TestParseGotimeLocalPreserved(t *testing.T) { + result, err := ParseGotime("2006-01-02", "2023-02-15", time.Local) + require.NoError(t, err) + require.Equal(t, time.Local, result.Location(), + "location should be time.Local, not the system zone name") +} + +// TestParseGotimeExplicitUTCAbbreviationPreserved verifies that when a timezone +// abbreviation is present in the layout and the input contains "UTC", the +// returned time.Time keeps time.UTC as its location, not time.Local. +func TestParseGotimeExplicitUTCAbbreviationPreserved(t *testing.T) { + result, err := ParseGotime("Mon Jan 2 15:04:05 MST 2006", "Mon Jan 2 15:04:05 UTC 2006", time.Local) + require.NoError(t, err) + require.Equal(t, time.UTC, result.Location(), + "location should be time.UTC when input contains an explicit UTC abbreviation") +} + +func Test_setTimestampYear(t *testing.T) { + t.Run("Normal", func(t *testing.T) { + Now = func() time.Time { + return time.Date(2020, 0o6, 16, 3, 31, 34, 525, time.UTC) + } + + noYear := time.Date(0, 0o6, 16, 3, 31, 34, 525, time.UTC) + yearAdded := SetTimestampYear(noYear) + expected := time.Date(2020, 0o6, 16, 3, 31, 34, 525, time.UTC) + require.Equal(t, expected, yearAdded) + }) + + t.Run("FutureOneDay", func(t *testing.T) { + Now = func() time.Time { + return time.Date(2020, 0o1, 16, 3, 31, 34, 525, time.UTC) + } + + noYear := time.Date(0, 0o1, 17, 3, 31, 34, 525, time.UTC) + yearAdded := SetTimestampYear(noYear) + expected := time.Date(2020, 0o1, 17, 3, 31, 34, 525, time.UTC) + require.Equal(t, expected, yearAdded) + }) + + t.Run("FutureEightDays", func(t *testing.T) { + Now = func() time.Time { + return time.Date(2020, 0o1, 16, 3, 31, 34, 525, time.UTC) + } + + noYear := time.Date(0, 0o1, 24, 3, 31, 34, 525, time.UTC) + yearAdded := SetTimestampYear(noYear) + expected := time.Date(2019, 0o1, 24, 3, 31, 34, 525, time.UTC) + require.Equal(t, expected, yearAdded) + }) + + t.Run("RolloverYear", func(t *testing.T) { + Now = func() time.Time { + return time.Date(2020, 0o1, 0o1, 3, 31, 34, 525, time.UTC) + } + + noYear := time.Date(0, 12, 31, 3, 31, 34, 525, time.UTC) + yearAdded := SetTimestampYear(noYear) + expected := time.Date(2019, 12, 31, 3, 31, 34, 525, time.UTC) + require.Equal(t, expected, yearAdded) + }) +} + +func TestValidateGotime(t *testing.T) { + type args struct { + layout string + } + tests := []struct { + name string + args args + wantErr string + }{ + { + name: "valid format", + args: args{ + layout: "2006-01-02 15:04:05.999999", + }, + wantErr: "", + }, + { + name: "valid format 2", + args: args{ + layout: "2006-01-02 15:04:05,999999", + }, + wantErr: "", + }, + { + name: "invalid fractional second", + args: args{ + layout: "2006-01-02 15:04:05:999999", + }, + wantErr: "invalid fractional seconds directive: ':999999'. must be preceded with '.' or ','", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + err := ValidateGotime(tt.args.layout) + + if tt.wantErr != "" { + require.ErrorContains(t, err, tt.wantErr) + } else { + require.NoError(t, err) + } + }) + } +} + +func TestParseLocalizedStrptime(t *testing.T) { + tests := []struct { + name string + format string + value any + language string + expected time.Time + location *time.Location + }{ + { + name: "Foreign language", + format: "%B %d %A, %Y, %r", + value: "Febrero 25 jueves, 1993, 02:03:04 p.m.", + expected: time.Date(1993, 2, 25, 14, 3, 4, 0, time.Local), + location: time.Local, + language: "es-ES", + }, + { + name: "Foreign language with location", + format: "%A %h %e %Y", + value: "mercoledì set 4 2024", + expected: time.Date(2024, 9, 4, 0, 0, 0, 0, time.UTC), + location: time.UTC, + language: "it-IT", + }, + { + name: "String value", + format: "%B %d %A, %Y, %I:%M:%S %p", + value: "March 12 Friday, 2004, 02:03:04 AM", + expected: time.Date(2004, 3, 12, 2, 3, 4, 0, time.Local), + location: time.Local, + language: "en", + }, + { + name: "Bytes value", + format: "%h %d %a, %y, %I:%M:%S %p", + value: []byte("Jun 10 Fri, 04, 02:03:04 AM"), + expected: time.Date(2004, 6, 10, 2, 3, 4, 0, time.Local), + location: time.Local, + language: "en-US", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + parser, err := NewStrptimeParser(tt.format) + require.NoError(t, err) + result, err := parser.ParseLocalized(tt.value, tt.location, tt.language) + require.NoError(t, err) + assert.Equal(t, tt.expected.UnixNano(), result.UnixNano()) + }) + } +} + +func TestParseLocalizedStrptimeInvalidType(t *testing.T) { + value := time.Now().UnixNano() + parser, err := NewStrptimeParser("%c") + require.NoError(t, err) + _, err = parser.ParseLocalized(value, time.Local, "en") + require.Error(t, err) + require.ErrorContains(t, err, "cannot be parsed as a time") +} + +func TestParseLocalizedGotime(t *testing.T) { + tests := []struct { + name string + format string + value any + language string + expected time.Time + location *time.Location + }{ + { + name: "Foreign language", + format: "January 02 Monday, 2006, 03:04:05 pm", + value: "Febrero 25 jueves, 1993, 02:03:04 p.m.", + expected: time.Date(1993, 2, 25, 14, 3, 4, 0, time.Local), + location: time.Local, + language: "es-ES", + }, + { + name: "Foreign language with location", + format: "Monday Jan _2 2006", + value: "mercoledì set 4 2024", + expected: time.Date(2024, 9, 4, 0, 0, 0, 0, time.UTC), + location: time.UTC, + language: "it-IT", + }, + { + name: "String value", + format: "January 02 Monday, 2006, 03:04:05 PM", + value: "March 12 Friday, 2004, 02:03:04 AM", + expected: time.Date(2004, 3, 12, 2, 3, 4, 0, time.Local), + location: time.Local, + language: "en", + }, + { + name: "Bytes value", + format: "Jan 02 Mon, 06, 03:04:05 PM", + value: []byte("Jun 10 Fri, 04, 02:03:04 AM"), + expected: time.Date(2004, 6, 10, 2, 3, 4, 0, time.Local), + location: time.Local, + language: "en-US", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + result, err := ParseLocalizedGotime(tt.format, tt.value, tt.location, tt.language) + require.NoError(t, err) + assert.Equal(t, tt.expected.UnixNano(), result.UnixNano()) + }) + } +} + +func TestParseLocalizedGotimeInvalidType(t *testing.T) { + value := time.Now().UnixNano() + _, err := ParseLocalizedGotime("Mon", value, time.Local, "en") + require.Error(t, err) + require.ErrorContains(t, err, "cannot be parsed as a time") +} + +func TestValidateLocale(t *testing.T) { + require.NoError(t, ValidateLocale("es")) + require.NoError(t, ValidateLocale("en-US")) + require.NoError(t, ValidateLocale("ca-ES-valencia")) +} + +func TestValidateLocaleUnsupported(t *testing.T) { + err := ValidateLocale("foo-bar") + require.ErrorContains(t, err, "unsupported locale 'foo-bar'") +} diff --git a/otel-patches/coreinternal/timeutils/strptime_cgo_test.go b/otel-patches/coreinternal/timeutils/strptime_cgo_test.go new file mode 100644 index 000000000000..725ddedf1861 --- /dev/null +++ b/otel-patches/coreinternal/timeutils/strptime_cgo_test.go @@ -0,0 +1,30 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +//go:build cgo && unix && !aix + +package timeutils + +import ( + "testing" + + "github.com/stretchr/testify/require" +) + +// TestParseStrptimeCgo verifies that the input/output pairs in strptime_test.go accurately reflect the behavior of strptime(3). +func TestParseStrptimeCgo(t *testing.T) { + // Verify that libc's strptime parses these in the same way. + + for _, tt := range strptimeTests { + t.Run(tt.name, func(t *testing.T) { + for _, s := range tt.samples { + t.Run(s, func(t *testing.T) { + got, err := CStrptime(s, tt.format) + require.NoError(t, err) + // Use WithinDuration instead of Equal so the timezone name is ignored. + require.WithinDuration(t, tt.expected, got, 0) + }) + } + }) + } +} diff --git a/otel-patches/coreinternal/timeutils/strptime_cgo_testlib.go b/otel-patches/coreinternal/timeutils/strptime_cgo_testlib.go new file mode 100644 index 000000000000..dc9661aee295 --- /dev/null +++ b/otel-patches/coreinternal/timeutils/strptime_cgo_testlib.go @@ -0,0 +1,69 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +//go:build cgo && unix && !aix && datadog_local_patch_disabled + +// This file is ONLY used as part of TestTimeParserStrptimeCgo to verify that TestParseStrptime is correct. +// +// DATADOG LOCAL PATCH: this file lacks a proper test-only build constraint upstream (it's not +// named _test.go, so it compiles into any production build that imports this package with cgo +// enabled on unix — not just `go test`). It fails to compile on this repo's x64 Linux CI build +// image (tm_gmtoff undefined in struct tm), which doesn't affect arm64. Since this file only +// supports a unit test that datadog-agent never runs, it's disabled here via an always-false +// build tag rather than deleted, to keep the diff against upstream minimal and revertable. +// See CI job datadog-agent-7-x64 for the original failure. + +package timeutils // import "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/timeutils" + +// #define _XOPEN_SOURCE +// #define _DEFAULT_SOURCE +// #include +// #include +import ( + "C" //nolint: gocritic // Buggy: https://github.com/go-critic/go-critic/issues/845 +) + +import ( + "errors" + "fmt" + "time" + "unsafe" //nolint: gocritic +) + +func tm2Time(tm C.struct_tm) time.Time { + return time.Date( + int(tm.tm_year+1900), + time.Month(tm.tm_mon+1), + int(tm.tm_mday), + int(tm.tm_hour), + int(tm.tm_min), + int(tm.tm_sec), + 0, + time.FixedZone((time.Duration(tm.tm_gmtoff)*time.Second).String(), int(tm.tm_gmtoff)), + ) +} + +// Wrap libc's strptime for use in TestTimeParserStrptimeCgo +func CStrptime(s, format string) (time.Time, error) { + cformat := C.CString(format) + defer C.free(unsafe.Pointer(cformat)) + + cs := C.CString(s) + defer C.free(unsafe.Pointer(cs)) + + tm := C.struct_tm{ + // Default time zone must match the TestParseStrptime + tm_gmtoff: -7 * 3600, + } + + out := C.strptime(cs, cformat, &tm) //nolint: gocritic // Buggy: https://github.com/go-critic/go-critic/issues/897 + + t := tm2Time(tm) + + if out == nil { + return t, errors.New("strptime failed to parse the whole string") + } else if unsafe.Pointer(out) != unsafe.Add(unsafe.Pointer(cs), len(s)) { + return t, fmt.Errorf("strptime failed to parse: remainder %q", C.GoString(out)) + } + return t, nil +} diff --git a/otel-patches/coreinternal/timeutils/strptime_test.go b/otel-patches/coreinternal/timeutils/strptime_test.go new file mode 100644 index 000000000000..8ade394f7c0a --- /dev/null +++ b/otel-patches/coreinternal/timeutils/strptime_test.go @@ -0,0 +1,195 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package timeutils + +import ( + "testing" + "time" + + "github.com/stretchr/testify/require" +) + +func mustLoadLocation(name string) *time.Location { + l, err := time.LoadLocation(name) + if err != nil { + panic(err) + } + return l +} + +var ( + // Hawaii Standard Time + hst = mustLoadLocation("HST") + // Mountain Standard Time + mst = mustLoadLocation("MST") +) + +// These test cases are in a variable so they can be called from TestTimeParserStrptimeCgo in strptime_cgo_test.go +var strptimeTests = []struct { + name string + expected time.Time + format string + // samples is a list of strings that are all expected to parse to the same time + samples []string +}{ + { + name: "unix-utc", + expected: time.Date(2006, time.January, 2, 15, 4, 5, 0, time.UTC), + format: "%a %b %e %H:%M:%S %z %Y", + samples: []string{ + "Mon Jan 2 15:04:05 Z 2006", + "Mon Jan 2 15:4:5 Z 2006", + }, + }, + { + // https://github.com/bminor/glibc/blob/04e750e75b73957cf1c791535a3f4319534a52fc/time/strptime_l.c#L778-L816 + name: "iso-8601-hst", + expected: time.Date(2007, time.April, 5, 6, 7, 8, 0, hst), + format: "%Y-%m-%dT%H:%M:%S%z", + samples: []string{ + "2007-04-05T06:07:08-10:00", + "2007-04-05T06:07:08-1000", + "2007-04-05T06:07:08-10", + "2007-04-05T06:07:08 -10:00", + "2007-04-05T06:07:08 -1000", + "2007-4-5T6:7:8 -10", + "2007-4-5T6:7:8-10:00", + "2007-4-5T6:7:8-1000", + "2007-4-5T6:7:8-10", + "2007-4-5T6:7:8 -10:00", + "2007-4-5T6:7:8 -1000", + "2007-4-5T6:7:8 -10", + }, + }, + { + name: "short-year-hst", + expected: time.Date(2007, time.April, 5, 6, 7, 8, 0, hst), + format: "%y-%m-%dT%H:%M:%S%z", + samples: []string{ + "07-04-05T06:07:08-10:00", + }, + }, + { + name: "iso-8601-utc", + expected: time.Date(2007, time.April, 5, 12, 30, 46, 0, time.UTC), + format: "%Y-%m-%dT%H:%M:%S%z", + samples: []string{ + "2007-4-5T12:30:46+0000", + "2007-04-05T12:30:46+00:00", + "2007-04-05T12:30:46+0000", + "2007-04-05T12:30:46+00", + "2007-04-05T12:30:46Z", + "2007-04-05T12:30:46 +00:00", + "2007-04-05T12:30:46 +0000", + "2007-04-05T12:30:46 +00", + "2007-04-05T12:30:46 Z", + }, + }, + { + name: "no-separators", + expected: time.Date(2023, time.February, 3, 5, 6, 7, 0, mst), + format: "%Y%m%d%H%M%S", + samples: []string{ + "20230203050607", + "2023 02 03 05 06 07", + }, + }, + { + name: "iso-8601-utc", + expected: time.Date(2007, time.April, 5, 12, 30, 46, 0, time.UTC), + format: "%Y-%m-%dT%H:%M:%S%z", + samples: []string{ + "2007-4-5T12:30:46+0000", + "2007-04-05T12:30:46+00:00", + "2007-04-05T12:30:46+0000", + "2007-04-05T12:30:46+00", + "2007-04-05T12:30:46Z", + "2007-04-05T12:30:46 +00:00", + "2007-04-05T12:30:46 +0000", + "2007-04-05T12:30:46 +00", + "2007-04-05T12:30:46 Z", + }, + }, + { + name: "12h-time", + expected: time.Date(2023, time.February, 3, 15, 6, 7, 0, mst), + format: "%Y-%m-%d %I:%M:%S %p", + samples: []string{ + "2023-02-03 03:06:07 PM", + "2023-02-03 3:6:7 PM", + }, + }, + { + name: "macros-F-T", + expected: time.Date(2007, time.April, 5, 12, 30, 46, 0, time.UTC), + format: "%FT%T%z", + samples: []string{ + "2007-4-5T12:30:46+0000", + "2007-04-05T12:30:46+00:00", + "2007-04-05T12:30:46+0000", + "2007-04-05T12:30:46+00", + "2007-04-05T12:30:46Z", + "2007-04-05T12:30:46 +00:00", + "2007-04-05T12:30:46 +0000", + "2007-04-05T12:30:46 +00", + "2007-04-05T12:30:46 Z", + }, + }, + { + name: "macro-R", + expected: time.Date(2007, time.April, 5, 13, 30, 0, 0, mst), + format: "%R %Y-%m-%d", + samples: []string{ + "13:30 2007-4-5", + "13:30 2007-04-05", + }, + }, + { + name: "macros-D-T", + expected: time.Date(2007, time.April, 5, 12, 30, 46, 0, mst), + format: "%DT%T", + samples: []string{ + "4/5/07T12:30:46", + "04/05/07T12:30:46", + }, + }, + { + name: "macros-x-T", + expected: time.Date(2007, time.April, 5, 12, 30, 46, 0, mst), + format: "%xT%T", + samples: []string{ + "4/5/07T12:30:46", + "04/05/07T12:30:46", + }, + }, + { + name: "macro-c", + expected: time.Date(2007, time.April, 5, 13, 30, 46, 0, mst), + format: "%c", + samples: []string{ + "Thu Apr 05 13:30:46 2007", + "Thu Apr 5 13:30:46 2007", + }, + }, +} + +func TestParseStrptime(t *testing.T) { + for _, tt := range strptimeTests { + t.Run(tt.name, func(t *testing.T) { + for _, s := range tt.samples { + t.Run(s, func(t *testing.T) { + parser, err := NewStrptimeParser(tt.format) + require.NoError(t, err) + got, err := parser.Parse(s, mst) + if err != nil { + t.Logf("ParseError: %#v", err) + } + require.NoError(t, err) + // Use WithinDuration instead of Equal so the timezone name is ignored. + require.WithinDuration(t, tt.expected, got, 0) + }) + } + }) + } +} diff --git a/otel-patches/coreinternal/timeutils/ticker_helper.go b/otel-patches/coreinternal/timeutils/ticker_helper.go new file mode 100644 index 000000000000..07987cbdbe23 --- /dev/null +++ b/otel-patches/coreinternal/timeutils/ticker_helper.go @@ -0,0 +1,54 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package timeutils // import "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/timeutils" + +import "time" + +// TTicker interface allows easier testing of Ticker related functionality +type TTicker interface { + // start sets the frequency of the Ticker and starts the periodic calls to OnTick. + Start(d time.Duration) + // OnTick is called when the Ticker fires. + OnTick() + // Stop firing the Ticker. + Stop() +} + +// Implements TTicker and abstracts underlying time ticker's functionality to make usage +// simpler. +type PolicyTicker struct { + Ticker *time.Ticker + OnTickFunc func() + StopCh chan struct{} +} + +// Ensure PolicyTicker implements TTicker interface +var _ TTicker = (*PolicyTicker)(nil) + +func (pt *PolicyTicker) Start(d time.Duration) { + pt.Ticker = time.NewTicker(d) + pt.StopCh = make(chan struct{}) + go func() { + for { + select { + case <-pt.Ticker.C: + pt.OnTick() + case <-pt.StopCh: + return + } + } + }() +} + +func (pt *PolicyTicker) OnTick() { + pt.OnTickFunc() +} + +func (pt *PolicyTicker) Stop() { + if pt.StopCh == nil { + return + } + close(pt.StopCh) + pt.Ticker.Stop() +} diff --git a/otel-patches/coreinternal/timeutils/ticker_test.go b/otel-patches/coreinternal/timeutils/ticker_test.go new file mode 100644 index 000000000000..3f2c651b07c8 --- /dev/null +++ b/otel-patches/coreinternal/timeutils/ticker_test.go @@ -0,0 +1,77 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package timeutils + +import ( + "sync" + "testing" + "time" + + "github.com/stretchr/testify/assert" +) + +type testObj struct { + mu sync.Mutex + foo int +} + +func (to *testObj) IncrementFoo() { + to.mu.Lock() + defer to.mu.Unlock() + to.foo++ +} + +func checkFooValue(to *testObj, expectedValue int) bool { + to.mu.Lock() + defer to.mu.Unlock() + return to.foo == expectedValue +} + +func TestPolicyTickerFails(t *testing.T) { + to := &testObj{foo: 0} + pTicker := &PolicyTicker{OnTickFunc: to.IncrementFoo} + + // Tickers with a duration <= 0 should panic + assert.Panics(t, func() { pTicker.Start(time.Duration(0)) }) + assert.Panics(t, func() { pTicker.Start(time.Duration(-1)) }) +} + +func TestPolicyTickerStart(t *testing.T) { + to := &testObj{foo: 0} + pTicker := &PolicyTicker{OnTickFunc: to.IncrementFoo} + + // Make sure no ticks occur when we immediately stop the ticker + time.Sleep(100 * time.Millisecond) + assert.True(t, checkFooValue(to, 0), "Expected value: %d, actual: %d", 0, to.foo) + pTicker.Start(1 * time.Second) + pTicker.Stop() + assert.True(t, checkFooValue(to, 0), "Expected value: %d, actual: %d", 0, to.foo) +} + +func TestPolicyTickerSucceeds(t *testing.T) { + // Start the ticker, make sure variable is incremented properly, + // also make sure stop works as expected. + to := &testObj{foo: 0} + pTicker := &PolicyTicker{OnTickFunc: to.IncrementFoo} + + expectedTicks := 4 + defaultDuration := 500 * time.Millisecond + // Extra padding reduces the chance of a race happening here + padDuration := 200 * time.Millisecond + testSleepDuration := time.Duration(expectedTicks)*defaultDuration + padDuration + + pTicker.Start(defaultDuration) + time.Sleep(testSleepDuration) + assert.True(t, checkFooValue(to, expectedTicks), "Expected value: %d, actual: %d", expectedTicks, to.foo) + + pTicker.Stop() + // Since these tests are time sensitive they can be flaky. By getting the count + // after stopping, we can still test to make sure it's no longer being incremented, + // without requiring there by no OnTick calls between the sleep call and stopping. + time.Sleep(defaultDuration) + expectedTicks = to.foo + + time.Sleep(testSleepDuration) + assert.True(t, checkFooValue(to, expectedTicks), "Expected value: %d, actual: %d", expectedTicks, to.foo) +} diff --git a/otel-patches/coreinternal/tracetranslator/BUILD.bazel b/otel-patches/coreinternal/tracetranslator/BUILD.bazel new file mode 100644 index 000000000000..c6cb812bd54b --- /dev/null +++ b/otel-patches/coreinternal/tracetranslator/BUILD.bazel @@ -0,0 +1,9 @@ +load("@@rules_go+//go:def.bzl", "go_library") + +go_library( + name = "tracetranslator", + srcs = ["protospan_translation.go"], + importpath = "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/tracetranslator", # keep + visibility = ["//visibility:public"], + deps = ["@io_opentelemetry_go_collector_pdata//ptrace"], +) diff --git a/otel-patches/coreinternal/tracetranslator/protospan_translation.go b/otel-patches/coreinternal/tracetranslator/protospan_translation.go new file mode 100644 index 000000000000..dec46f40259b --- /dev/null +++ b/otel-patches/coreinternal/tracetranslator/protospan_translation.go @@ -0,0 +1,48 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package tracetranslator // import "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/tracetranslator" + +import ( + "go.opentelemetry.io/collector/pdata/ptrace" +) + +// Some of the keys used to represent OTLP constructs as tags or annotations in other formats. +const ( + TagSpanKind = "span.kind" + + TagError = "error" + TagHTTPStatusMsg = "http.status_message" + + TagW3CTraceState = "w3c.tracestate" +) + +// Constants used for signifying batch-level attribute values where not supplied by OTLP data but required +// by other protocols. +const ( + ResourceNoServiceName = "OTLPResourceNoServiceName" +) + +// OpenTracingSpanKind are possible values for TagSpanKind and match the OpenTracing +// conventions: https://github.com/opentracing/specification/blob/main/semantic_conventions.md +// These values are used for representing span kinds that have no +// equivalents in OpenCensus format. They are stored as values of TagSpanKind +type OpenTracingSpanKind string + +const ( + OpenTracingSpanKindUnspecified OpenTracingSpanKind = "" + OpenTracingSpanKindClient OpenTracingSpanKind = "client" + OpenTracingSpanKindServer OpenTracingSpanKind = "server" + OpenTracingSpanKindConsumer OpenTracingSpanKind = "consumer" + OpenTracingSpanKindProducer OpenTracingSpanKind = "producer" + OpenTracingSpanKindInternal OpenTracingSpanKind = "internal" +) + +// StatusCodeFromHTTP takes an HTTP status code and return the appropriate OpenTelemetry status code +// See: https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/trace/semantic_conventions/http.md#status +func StatusCodeFromHTTP(httpStatusCode int64) ptrace.StatusCode { + if httpStatusCode >= 100 && httpStatusCode < 399 { + return ptrace.StatusCodeUnset + } + return ptrace.StatusCodeError +} diff --git a/otel-patches/coreinternal/traceutil/BUILD.bazel b/otel-patches/coreinternal/traceutil/BUILD.bazel new file mode 100644 index 000000000000..5ad5199421eb --- /dev/null +++ b/otel-patches/coreinternal/traceutil/BUILD.bazel @@ -0,0 +1,27 @@ +load("@@rules_go+//go:def.bzl", "go_library", "go_test") + +go_library( + name = "traceutil", + srcs = ["traceutil.go"], + importpath = "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/traceutil", # keep + visibility = ["//visibility:public"], + deps = [ + "@io_opentelemetry_go_collector_pdata//pcommon", + "@io_opentelemetry_go_collector_pdata//ptrace", + ], +) + +go_test( + name = "traceutil_test", + srcs = [ + "package_test.go", + "traceutil_test.go", + ], + embed = [":traceutil"], + gotags = ["test"], + deps = [ + "@com_github_stretchr_testify//assert", + "@io_opentelemetry_go_collector_pdata//ptrace", + "@org_uber_go_goleak//:goleak", + ], +) diff --git a/otel-patches/coreinternal/traceutil/package_test.go b/otel-patches/coreinternal/traceutil/package_test.go new file mode 100644 index 000000000000..e58dc5f607f5 --- /dev/null +++ b/otel-patches/coreinternal/traceutil/package_test.go @@ -0,0 +1,14 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package traceutil + +import ( + "testing" + + "go.uber.org/goleak" +) + +func TestMain(m *testing.M) { + goleak.VerifyTestMain(m) +} diff --git a/otel-patches/coreinternal/traceutil/traceutil.go b/otel-patches/coreinternal/traceutil/traceutil.go new file mode 100644 index 000000000000..7300f85cb88b --- /dev/null +++ b/otel-patches/coreinternal/traceutil/traceutil.go @@ -0,0 +1,65 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package traceutil // import "github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/traceutil" + +import ( + "encoding/hex" + + "go.opentelemetry.io/collector/pdata/pcommon" + "go.opentelemetry.io/collector/pdata/ptrace" +) + +// SpanKindStr returns a string representation of the SpanKind as it's defined in the proto. +// The function provides old behavior of ptrace.SpanKind.String() to support graceful adoption of +// https://github.com/open-telemetry/opentelemetry-collector/pull/6250. +func SpanKindStr(sk ptrace.SpanKind) string { + switch sk { + case ptrace.SpanKindUnspecified: + return "SPAN_KIND_UNSPECIFIED" + case ptrace.SpanKindInternal: + return "SPAN_KIND_INTERNAL" + case ptrace.SpanKindServer: + return "SPAN_KIND_SERVER" + case ptrace.SpanKindClient: + return "SPAN_KIND_CLIENT" + case ptrace.SpanKindProducer: + return "SPAN_KIND_PRODUCER" + case ptrace.SpanKindConsumer: + return "SPAN_KIND_CONSUMER" + } + return "" +} + +// StatusCodeStr returns a string representation of the StatusCode as it's defined in the proto. +// The function provides old behavior of ptrace.StatusCode.String() to support graceful adoption of +// https://github.com/open-telemetry/opentelemetry-collector/pull/6250. +func StatusCodeStr(sk ptrace.StatusCode) string { + switch sk { + case ptrace.StatusCodeUnset: + return "STATUS_CODE_UNSET" + case ptrace.StatusCodeOk: + return "STATUS_CODE_OK" + case ptrace.StatusCodeError: + return "STATUS_CODE_ERROR" + } + return "" +} + +// SpanIDToHexOrEmptyString returns a hex string from SpanID. +// An empty string is returned, if SpanID is empty. +func SpanIDToHexOrEmptyString(id pcommon.SpanID) string { + if id.IsEmpty() { + return "" + } + return hex.EncodeToString(id[:]) +} + +// TraceIDToHexOrEmptyString returns a hex string from TraceID. +// An empty string is returned, if TraceID is empty. +func TraceIDToHexOrEmptyString(id pcommon.TraceID) string { + if id.IsEmpty() { + return "" + } + return hex.EncodeToString(id[:]) +} diff --git a/otel-patches/coreinternal/traceutil/traceutil_test.go b/otel-patches/coreinternal/traceutil/traceutil_test.go new file mode 100644 index 000000000000..a900b53ac61e --- /dev/null +++ b/otel-patches/coreinternal/traceutil/traceutil_test.go @@ -0,0 +1,28 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package traceutil + +import ( + "testing" + + "github.com/stretchr/testify/assert" + "go.opentelemetry.io/collector/pdata/ptrace" +) + +func TestSpanKindStr(t *testing.T) { + assert.Equal(t, "SPAN_KIND_UNSPECIFIED", SpanKindStr(ptrace.SpanKindUnspecified)) + assert.Equal(t, "SPAN_KIND_INTERNAL", SpanKindStr(ptrace.SpanKindInternal)) + assert.Equal(t, "SPAN_KIND_SERVER", SpanKindStr(ptrace.SpanKindServer)) + assert.Equal(t, "SPAN_KIND_CLIENT", SpanKindStr(ptrace.SpanKindClient)) + assert.Equal(t, "SPAN_KIND_PRODUCER", SpanKindStr(ptrace.SpanKindProducer)) + assert.Equal(t, "SPAN_KIND_CONSUMER", SpanKindStr(ptrace.SpanKindConsumer)) + assert.Empty(t, SpanKindStr(ptrace.SpanKind(100))) +} + +func TestStatusCodeStr(t *testing.T) { + assert.Equal(t, "STATUS_CODE_UNSET", StatusCodeStr(ptrace.StatusCodeUnset)) + assert.Equal(t, "STATUS_CODE_OK", StatusCodeStr(ptrace.StatusCodeOk)) + assert.Equal(t, "STATUS_CODE_ERROR", StatusCodeStr(ptrace.StatusCodeError)) + assert.Empty(t, StatusCodeStr(ptrace.StatusCode(100))) +} diff --git a/pkg/logs/vrl/BUILD.bazel b/pkg/logs/vrl/BUILD.bazel new file mode 100644 index 000000000000..ac58af24a9ce --- /dev/null +++ b/pkg/logs/vrl/BUILD.bazel @@ -0,0 +1,52 @@ +load("@rules_go//go:def.bzl", "go_library", "go_test") +load("//bazel/rules/go:dd_agent_go_test.bzl", "dd_agent_go_test") + +# cdeps (a cc_library/cc_import wiring the header + static lib) is the +# authoritative link mechanism here — Gazelle can't resolve vrl.go's cgo +# native link deps itself and would otherwise derive broken copts/clinkopts +# from vrl.go's #cgo pragma (a doubled, Bazel-sandbox-incompatible path). +# The `# keep` markers below pin srcs/copts/clinkopts so a +# `bazel run //:gazelle` regen doesn't reintroduce that breakage. +go_library( + name = "vrl", + srcs = [ + "vrl.go", # keep + "vrl_stub.go", + ], + cdeps = ["//pkg/logs/vrl/rust:vrl_filter_cc"], + cgo = True, + clinkopts = [], # keep: cdeps supplies the real link flags; do not derive from vrl.go's #cgo pragma + copts = [], # keep: cdeps supplies the real include flags; do not derive from vrl.go's #cgo pragma + importpath = "github.com/DataDog/datadog-agent/pkg/logs/vrl", + visibility = ["//visibility:public"], +) + +# Exercises the real cgo-backed implementation (vrl.go) through Bazel, unlike +# vrl_test above which only ever builds the !vrl stub. Requires the "vrl" tag +# so cdeps' cc_import(libvrl_filter) actually gets linked in. +go_test( + name = "vrl_real_cgo_test", + srcs = ["vrl_test.go"], + embed = [":vrl"], + gotags = [ + "test", + "vrl", + ], + deps = [ + "@com_github_stretchr_testify//assert", + "@com_github_stretchr_testify//require", + ], +) + +dd_agent_go_test( + name = "vrl_test", + srcs = [ + "vrl_stub_test.go", + "vrl_test.go", + ], + embed = [":vrl"], + deps = [ + "@com_github_stretchr_testify//assert", + "@com_github_stretchr_testify//require", + ], +) diff --git a/pkg/logs/vrl/go.mod b/pkg/logs/vrl/go.mod new file mode 100644 index 000000000000..9071116cf799 --- /dev/null +++ b/pkg/logs/vrl/go.mod @@ -0,0 +1,199 @@ +module github.com/DataDog/datadog-agent/pkg/logs/vrl + +go 1.25.0 + +require github.com/stretchr/testify v1.11.1 + +require ( + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect + github.com/kr/pretty v0.3.1 // indirect + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect + github.com/rogpeppe/go-internal v1.14.1 // indirect + gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect +) + +// This section was automatically added by 'dda inv modules.add-all-replace' command, do not edit manually + +replace ( + github.com/DataDog/datadog-agent/comp/anomalydetection/observer/def => ../../../comp/anomalydetection/observer/def + github.com/DataDog/datadog-agent/comp/anomalydetection/recorder/def => ../../../comp/anomalydetection/recorder/def + github.com/DataDog/datadog-agent/comp/anomalydetection/severityevents/def => ../../../comp/anomalydetection/severityevents/def + github.com/DataDog/datadog-agent/comp/api/api/def => ../../../comp/api/api/def + github.com/DataDog/datadog-agent/comp/core/agenttelemetry/def => ../../../comp/core/agenttelemetry/def + github.com/DataDog/datadog-agent/comp/core/agenttelemetry/fx => ../../../comp/core/agenttelemetry/fx + github.com/DataDog/datadog-agent/comp/core/agenttelemetry/impl => ../../../comp/core/agenttelemetry/impl + github.com/DataDog/datadog-agent/comp/core/config => ../../../comp/core/config + github.com/DataDog/datadog-agent/comp/core/configstreamconsumer/def => ../../../comp/core/configstreamconsumer/def + github.com/DataDog/datadog-agent/comp/core/configsync => ../../../comp/core/configsync + github.com/DataDog/datadog-agent/comp/core/delegatedauth => ../../../comp/core/delegatedauth + github.com/DataDog/datadog-agent/comp/core/delegatedauth/api/cloudauth/aws => ../../../comp/core/delegatedauth/api/cloudauth/aws + github.com/DataDog/datadog-agent/comp/core/flare/builder => ../../../comp/core/flare/builder + github.com/DataDog/datadog-agent/comp/core/flare/types => ../../../comp/core/flare/types + github.com/DataDog/datadog-agent/comp/core/hostname/hostnameinterface => ../../../comp/core/hostname/hostnameinterface + github.com/DataDog/datadog-agent/comp/core/hostname/hostnameinterface/def => ../../../comp/core/hostname/hostnameinterface/def + github.com/DataDog/datadog-agent/comp/core/hostname/hostnameinterface/mock => ../../../comp/core/hostname/hostnameinterface/mock + github.com/DataDog/datadog-agent/comp/core/ipc/def => ../../../comp/core/ipc/def + github.com/DataDog/datadog-agent/comp/core/ipc/httphelpers => ../../../comp/core/ipc/httphelpers + github.com/DataDog/datadog-agent/comp/core/ipc/impl => ../../../comp/core/ipc/impl + github.com/DataDog/datadog-agent/comp/core/ipc/mock => ../../../comp/core/ipc/mock + github.com/DataDog/datadog-agent/comp/core/log/def => ../../../comp/core/log/def + github.com/DataDog/datadog-agent/comp/core/log/fx => ../../../comp/core/log/fx + github.com/DataDog/datadog-agent/comp/core/log/impl => ../../../comp/core/log/impl + github.com/DataDog/datadog-agent/comp/core/log/impl-trace => ../../../comp/core/log/impl-trace + github.com/DataDog/datadog-agent/comp/core/log/mock => ../../../comp/core/log/mock + github.com/DataDog/datadog-agent/comp/core/secrets/def => ../../../comp/core/secrets/def + github.com/DataDog/datadog-agent/comp/core/secrets/fx => ../../../comp/core/secrets/fx + github.com/DataDog/datadog-agent/comp/core/secrets/impl => ../../../comp/core/secrets/impl + github.com/DataDog/datadog-agent/comp/core/secrets/mock => ../../../comp/core/secrets/mock + github.com/DataDog/datadog-agent/comp/core/secrets/noop-impl => ../../../comp/core/secrets/noop-impl + github.com/DataDog/datadog-agent/comp/core/secrets/utils => ../../../comp/core/secrets/utils + github.com/DataDog/datadog-agent/comp/core/status => ../../../comp/core/status + github.com/DataDog/datadog-agent/comp/core/status/statusimpl => ../../../comp/core/status/statusimpl + github.com/DataDog/datadog-agent/comp/core/tagger/def => ../../../comp/core/tagger/def + github.com/DataDog/datadog-agent/comp/core/tagger/fx-remote => ../../../comp/core/tagger/fx-remote + github.com/DataDog/datadog-agent/comp/core/tagger/generic_store => ../../../comp/core/tagger/generic_store + github.com/DataDog/datadog-agent/comp/core/tagger/impl-remote => ../../../comp/core/tagger/impl-remote + github.com/DataDog/datadog-agent/comp/core/tagger/origindetection => ../../../comp/core/tagger/origindetection + github.com/DataDog/datadog-agent/comp/core/tagger/subscriber => ../../../comp/core/tagger/subscriber + github.com/DataDog/datadog-agent/comp/core/tagger/tags => ../../../comp/core/tagger/tags + github.com/DataDog/datadog-agent/comp/core/tagger/telemetry => ../../../comp/core/tagger/telemetry + github.com/DataDog/datadog-agent/comp/core/tagger/types => ../../../comp/core/tagger/types + github.com/DataDog/datadog-agent/comp/core/tagger/utils => ../../../comp/core/tagger/utils + github.com/DataDog/datadog-agent/comp/core/telemetry => ../../../comp/core/telemetry + github.com/DataDog/datadog-agent/comp/def => ../../../comp/def + github.com/DataDog/datadog-agent/comp/forwarder/defaultforwarder => ../../../comp/forwarder/defaultforwarder + github.com/DataDog/datadog-agent/comp/forwarder/orchestrator/orchestratorinterface => ../../../comp/forwarder/orchestrator/orchestratorinterface + github.com/DataDog/datadog-agent/comp/logs-library => ../../../comp/logs-library + github.com/DataDog/datadog-agent/comp/logs/agent/config => ../../../comp/logs/agent/config + github.com/DataDog/datadog-agent/comp/netflow/payload => ../../../comp/netflow/payload + github.com/DataDog/datadog-agent/comp/otelcol/collector-contrib/def => ../../../comp/otelcol/collector-contrib/def + github.com/DataDog/datadog-agent/comp/otelcol/collector-contrib/impl => ../../../comp/otelcol/collector-contrib/impl + github.com/DataDog/datadog-agent/comp/otelcol/converter/def => ../../../comp/otelcol/converter/def + github.com/DataDog/datadog-agent/comp/otelcol/converter/impl => ../../../comp/otelcol/converter/impl + github.com/DataDog/datadog-agent/comp/otelcol/ddflareextension/def => ../../../comp/otelcol/ddflareextension/def + github.com/DataDog/datadog-agent/comp/otelcol/ddflareextension/impl => ../../../comp/otelcol/ddflareextension/impl + github.com/DataDog/datadog-agent/comp/otelcol/ddflareextension/types => ../../../comp/otelcol/ddflareextension/types + github.com/DataDog/datadog-agent/comp/otelcol/ddprofilingextension/def => ../../../comp/otelcol/ddprofilingextension/def + github.com/DataDog/datadog-agent/comp/otelcol/ddprofilingextension/impl => ../../../comp/otelcol/ddprofilingextension/impl + github.com/DataDog/datadog-agent/comp/otelcol/logsagentpipeline => ../../../comp/otelcol/logsagentpipeline + github.com/DataDog/datadog-agent/comp/otelcol/logsagentpipeline/logsagentpipelineimpl => ../../../comp/otelcol/logsagentpipeline/logsagentpipelineimpl + github.com/DataDog/datadog-agent/comp/otelcol/otlp/components/connector/datadogconnector => ../../../comp/otelcol/otlp/components/connector/datadogconnector + github.com/DataDog/datadog-agent/comp/otelcol/otlp/components/exporter/datadogexporter => ../../../comp/otelcol/otlp/components/exporter/datadogexporter + github.com/DataDog/datadog-agent/comp/otelcol/otlp/components/exporter/logsagentexporter => ../../../comp/otelcol/otlp/components/exporter/logsagentexporter + github.com/DataDog/datadog-agent/comp/otelcol/otlp/components/exporter/serializerexporter => ../../../comp/otelcol/otlp/components/exporter/serializerexporter + github.com/DataDog/datadog-agent/comp/otelcol/otlp/components/metricsclient => ../../../comp/otelcol/otlp/components/metricsclient + github.com/DataDog/datadog-agent/comp/otelcol/otlp/components/processor/infraattributesprocessor => ../../../comp/otelcol/otlp/components/processor/infraattributesprocessor + github.com/DataDog/datadog-agent/comp/otelcol/otlp/testutil => ../../../comp/otelcol/otlp/testutil + github.com/DataDog/datadog-agent/comp/otelcol/status/def => ../../../comp/otelcol/status/def + github.com/DataDog/datadog-agent/comp/otelcol/status/impl => ../../../comp/otelcol/status/impl + github.com/DataDog/datadog-agent/comp/serializer/logscompression => ../../../comp/serializer/logscompression + github.com/DataDog/datadog-agent/comp/serializer/metricscompression => ../../../comp/serializer/metricscompression + github.com/DataDog/datadog-agent/comp/trace/agent/def => ../../../comp/trace/agent/def + github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def + github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip + github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal + github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey + github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api + github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults + github.com/DataDog/datadog-agent/pkg/config/basic => ../../../pkg/config/basic + github.com/DataDog/datadog-agent/pkg/config/buildschema => ../../../pkg/config/buildschema + github.com/DataDog/datadog-agent/pkg/config/create => ../../../pkg/config/create + github.com/DataDog/datadog-agent/pkg/config/env => ../../../pkg/config/env + github.com/DataDog/datadog-agent/pkg/config/helper => ../../../pkg/config/helper + github.com/DataDog/datadog-agent/pkg/config/mock => ../../../pkg/config/mock + github.com/DataDog/datadog-agent/pkg/config/model => ../../../pkg/config/model + github.com/DataDog/datadog-agent/pkg/config/nodetreemodel => ../../../pkg/config/nodetreemodel + github.com/DataDog/datadog-agent/pkg/config/remote => ../../../pkg/config/remote + github.com/DataDog/datadog-agent/pkg/config/render_config => ../../../pkg/config/render_config + github.com/DataDog/datadog-agent/pkg/config/schema => ../../../pkg/config/schema + github.com/DataDog/datadog-agent/pkg/config/setup => ../../../pkg/config/setup + github.com/DataDog/datadog-agent/pkg/config/structure => ../../../pkg/config/structure + github.com/DataDog/datadog-agent/pkg/config/utils => ../../../pkg/config/utils + github.com/DataDog/datadog-agent/pkg/discovery/tracermetadata/model => ../../../pkg/discovery/tracermetadata/model + github.com/DataDog/datadog-agent/pkg/errors => ../../../pkg/errors + github.com/DataDog/datadog-agent/pkg/fips => ../../../pkg/fips + github.com/DataDog/datadog-agent/pkg/fleet/installer => ../../../pkg/fleet/installer + github.com/DataDog/datadog-agent/pkg/gohai => ../../../pkg/gohai + github.com/DataDog/datadog-agent/pkg/logs/message => ../../../pkg/logs/message + github.com/DataDog/datadog-agent/pkg/logs/sources => ../../../pkg/logs/sources + github.com/DataDog/datadog-agent/pkg/logs/status/statusinterface => ../../../pkg/logs/status/statusinterface + github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils + github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types + github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics + github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver + github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload + github.com/DataDog/datadog-agent/pkg/networkdevice/profile => ../../../pkg/networkdevice/profile + github.com/DataDog/datadog-agent/pkg/networkpath/payload => ../../../pkg/networkpath/payload + github.com/DataDog/datadog-agent/pkg/obfuscate => ../../../pkg/obfuscate + github.com/DataDog/datadog-agent/pkg/opentelemetry-mapping-go/inframetadata => ../../../pkg/opentelemetry-mapping-go/inframetadata + github.com/DataDog/datadog-agent/pkg/opentelemetry-mapping-go/inframetadata/gohai/internal/gohaitest => ../../../pkg/opentelemetry-mapping-go/inframetadata/gohai/internal/gohaitest + github.com/DataDog/datadog-agent/pkg/opentelemetry-mapping-go/otlp/attributes => ../../../pkg/opentelemetry-mapping-go/otlp/attributes + github.com/DataDog/datadog-agent/pkg/opentelemetry-mapping-go/otlp/logs => ../../../pkg/opentelemetry-mapping-go/otlp/logs + github.com/DataDog/datadog-agent/pkg/opentelemetry-mapping-go/otlp/metrics => ../../../pkg/opentelemetry-mapping-go/otlp/metrics + github.com/DataDog/datadog-agent/pkg/opentelemetry-mapping-go/otlp/rum => ../../../pkg/opentelemetry-mapping-go/otlp/rum + github.com/DataDog/datadog-agent/pkg/orchestrator/model => ../../../pkg/orchestrator/model + github.com/DataDog/datadog-agent/pkg/orchestrator/util => ../../../pkg/orchestrator/util + github.com/DataDog/datadog-agent/pkg/process/util/api => ../../../pkg/process/util/api + github.com/DataDog/datadog-agent/pkg/proto => ../../../pkg/proto + github.com/DataDog/datadog-agent/pkg/remoteconfig/state => ../../../pkg/remoteconfig/state + github.com/DataDog/datadog-agent/pkg/security/secl => ../../../pkg/security/secl + github.com/DataDog/datadog-agent/pkg/security/seclwin => ../../../pkg/security/seclwin + github.com/DataDog/datadog-agent/pkg/serializer => ../../../pkg/serializer + github.com/DataDog/datadog-agent/pkg/ssi/testutils => ../../../pkg/ssi/testutils + github.com/DataDog/datadog-agent/pkg/status/health => ../../../pkg/status/health + github.com/DataDog/datadog-agent/pkg/tagger/types => ../../../pkg/tagger/types + github.com/DataDog/datadog-agent/pkg/tagset => ../../../pkg/tagset + github.com/DataDog/datadog-agent/pkg/template => ../../../pkg/template + github.com/DataDog/datadog-agent/pkg/trace => ../../../pkg/trace + github.com/DataDog/datadog-agent/pkg/trace/log => ../../../pkg/trace/log + github.com/DataDog/datadog-agent/pkg/trace/otel => ../../../pkg/trace/otel + github.com/DataDog/datadog-agent/pkg/trace/stats => ../../../pkg/trace/stats + github.com/DataDog/datadog-agent/pkg/trace/traceutil => ../../../pkg/trace/traceutil + github.com/DataDog/datadog-agent/pkg/util/aws/creds => ../../../pkg/util/aws/creds + github.com/DataDog/datadog-agent/pkg/util/backoff => ../../../pkg/util/backoff + github.com/DataDog/datadog-agent/pkg/util/buf => ../../../pkg/util/buf + github.com/DataDog/datadog-agent/pkg/util/cache => ../../../pkg/util/cache + github.com/DataDog/datadog-agent/pkg/util/cgroups => ../../../pkg/util/cgroups + github.com/DataDog/datadog-agent/pkg/util/common => ../../../pkg/util/common + github.com/DataDog/datadog-agent/pkg/util/compression => ../../../pkg/util/compression + github.com/DataDog/datadog-agent/pkg/util/confmaputils => ../../../pkg/util/confmaputils + github.com/DataDog/datadog-agent/pkg/util/containers/image => ../../../pkg/util/containers/image + github.com/DataDog/datadog-agent/pkg/util/defaultpaths => ../../../pkg/util/defaultpaths + github.com/DataDog/datadog-agent/pkg/util/executable => ../../../pkg/util/executable + github.com/DataDog/datadog-agent/pkg/util/filesystem => ../../../pkg/util/filesystem + github.com/DataDog/datadog-agent/pkg/util/flavor => ../../../pkg/util/flavor + github.com/DataDog/datadog-agent/pkg/util/fxutil => ../../../pkg/util/fxutil + github.com/DataDog/datadog-agent/pkg/util/grpc => ../../../pkg/util/grpc + github.com/DataDog/datadog-agent/pkg/util/hostinfo => ../../../pkg/util/hostinfo + github.com/DataDog/datadog-agent/pkg/util/hostname/validate => ../../../pkg/util/hostname/validate + github.com/DataDog/datadog-agent/pkg/util/hostport => ../../../pkg/util/hostport + github.com/DataDog/datadog-agent/pkg/util/http => ../../../pkg/util/http + github.com/DataDog/datadog-agent/pkg/util/json => ../../../pkg/util/json + github.com/DataDog/datadog-agent/pkg/util/jsonquery => ../../../pkg/util/jsonquery + github.com/DataDog/datadog-agent/pkg/util/kubernetes/apiserver/common/namespace => ../../../pkg/util/kubernetes/apiserver/common/namespace + github.com/DataDog/datadog-agent/pkg/util/log => ../../../pkg/util/log + github.com/DataDog/datadog-agent/pkg/util/log/setup => ../../../pkg/util/log/setup + github.com/DataDog/datadog-agent/pkg/util/option => ../../../pkg/util/option + github.com/DataDog/datadog-agent/pkg/util/otel => ../../../pkg/util/otel + github.com/DataDog/datadog-agent/pkg/util/pointer => ../../../pkg/util/pointer + github.com/DataDog/datadog-agent/pkg/util/prometheus => ../../../pkg/util/prometheus + github.com/DataDog/datadog-agent/pkg/util/quantile => ../../../pkg/util/quantile + github.com/DataDog/datadog-agent/pkg/util/quantile/sketchtest => ../../../pkg/util/quantile/sketchtest + github.com/DataDog/datadog-agent/pkg/util/scrubber => ../../../pkg/util/scrubber + github.com/DataDog/datadog-agent/pkg/util/sort => ../../../pkg/util/sort + github.com/DataDog/datadog-agent/pkg/util/startstop => ../../../pkg/util/startstop + github.com/DataDog/datadog-agent/pkg/util/statstracker => ../../../pkg/util/statstracker + github.com/DataDog/datadog-agent/pkg/util/system => ../../../pkg/util/system + github.com/DataDog/datadog-agent/pkg/util/testutil => ../../../pkg/util/testutil + github.com/DataDog/datadog-agent/pkg/util/utilizationtracker => ../../../pkg/util/utilizationtracker + github.com/DataDog/datadog-agent/pkg/util/uuid => ../../../pkg/util/uuid + github.com/DataDog/datadog-agent/pkg/util/winutil => ../../../pkg/util/winutil + github.com/DataDog/datadog-agent/pkg/version => ../../../pkg/version + github.com/DataDog/datadog-agent/test/e2e-framework => ../../../test/e2e-framework + github.com/DataDog/datadog-agent/test/fakeintake => ../../../test/fakeintake + github.com/DataDog/datadog-agent/test/new-e2e => ../../../test/new-e2e + github.com/DataDog/datadog-agent/test/otel => ../../../test/otel +) diff --git a/pkg/logs/vrl/go.sum b/pkg/logs/vrl/go.sum new file mode 100644 index 000000000000..5a10c3915835 --- /dev/null +++ b/pkg/logs/vrl/go.sum @@ -0,0 +1,23 @@ +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= +github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= +github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/pkg/logs/vrl/rust/.gitignore b/pkg/logs/vrl/rust/.gitignore new file mode 100644 index 000000000000..e90db8134220 --- /dev/null +++ b/pkg/logs/vrl/rust/.gitignore @@ -0,0 +1,2 @@ +target +*.a diff --git a/pkg/logs/vrl/rust/BUILD.bazel b/pkg/logs/vrl/rust/BUILD.bazel new file mode 100644 index 000000000000..cb03fcb87681 --- /dev/null +++ b/pkg/logs/vrl/rust/BUILD.bazel @@ -0,0 +1,87 @@ +load("@rules_cc//cc:defs.bzl", "cc_import", "cc_library") +load("@rules_pkg//pkg:install.bzl", "pkg_install") +load("@rules_pkg//pkg:mappings.bzl", "pkg_attributes", "pkg_files") +load("@rules_rust//rust:defs.bzl", "rust_library", "rust_static_library", "rust_test") + +_DEPS = [ + "@crates//:base16", + "@crates//:base64", + "@crates//:digest", + "@crates//:regex", + "@crates//:serde_json", + "@crates//:sha2", + "@crates//:sha3", + "@crates//:vrl", +] + +# Rust library (rlib), used by rust_test. +rust_library( + name = "vrl_filter", + srcs = glob(["src/**/*.rs"]), + crate_name = "vrl_filter", + edition = "2024", + visibility = ["//visibility:public"], + deps = _DEPS, +) + +# Static library (staticlib) for cgo FFI integration. +rust_static_library( + name = "libvrl_filter", + srcs = glob(["src/**/*.rs"]), + crate_name = "vrl_filter", + crate_root = "src/lib.rs", + edition = "2024", + visibility = ["//visibility:public"], + deps = _DEPS, +) + +filegroup( + name = "vrl_filter_headers", + srcs = ["include/vrl.h"], + visibility = ["//visibility:public"], +) + +cc_library( + name = "vrl_filter_hdrs", + hdrs = [":vrl_filter_headers"], + includes = ["include"], + visibility = ["//visibility:public"], +) + +cc_import( + name = "vrl_filter_static_import", + static_library = ":libvrl_filter", +) + +# Headers + static lib bundled for consumption via a go_library's `cdeps`. +# This wires the header/lib as real Bazel-sandboxed compile/link inputs, +# instead of hand-rolled -I/-L paths (which the sandbox doesn't expose +# undeclared files to). +cc_library( + name = "vrl_filter_cc", + visibility = ["//visibility:public"], + deps = [ + ":vrl_filter_hdrs", + ":vrl_filter_static_import", + ], +) + +# Install target for the libvrl_filter static library. Invoked with +# `--destdir=pkg/logs/vrl/rust` so the .a file lands next to this BUILD.bazel, +# where the Go cgo bridge's `#cgo LDFLAGS: -L${SRCDIR}/rust` will find it. +pkg_files( + name = "libvrl_filter_files", + srcs = [":libvrl_filter"], + attributes = pkg_attributes(mode = "0644"), +) + +pkg_install( + name = "install_libs", + srcs = [":libvrl_filter_files"], +) + +rust_test( + name = "vrl_filter_test", + crate = ":vrl_filter", + edition = "2024", +) diff --git a/pkg/logs/vrl/rust/Cargo.toml b/pkg/logs/vrl/rust/Cargo.toml new file mode 100644 index 000000000000..66e36328cf4e --- /dev/null +++ b/pkg/logs/vrl/rust/Cargo.toml @@ -0,0 +1,20 @@ +[package] +name = "vrl_filter" +version = "0.1.0" +edition.workspace = true +license.workspace = true +rust-version.workspace = true + +[lib] +name = "vrl_filter" +crate-type = ["rlib", "staticlib"] + +[dependencies] +vrl.workspace = true +serde_json.workspace = true +sha2.workspace = true +sha3.workspace = true +digest.workspace = true +regex.workspace = true +base64.workspace = true +base16.workspace = true diff --git a/pkg/logs/vrl/rust/LICENSE-vrl b/pkg/logs/vrl/rust/LICENSE-vrl new file mode 100644 index 000000000000..e87a115e462e --- /dev/null +++ b/pkg/logs/vrl/rust/LICENSE-vrl @@ -0,0 +1,363 @@ +Mozilla Public License, version 2.0 + +1. Definitions + +1.1. "Contributor" + + means each individual or legal entity that creates, contributes to the + creation of, or owns Covered Software. + +1.2. "Contributor Version" + + means the combination of the Contributions of others (if any) used by a + Contributor and that particular Contributor's Contribution. + +1.3. "Contribution" + + means Covered Software of a particular Contributor. + +1.4. "Covered Software" + + means Source Code Form to which the initial Contributor has attached the + notice in Exhibit A, the Executable Form of such Source Code Form, and + Modifications of such Source Code Form, in each case including portions + thereof. + +1.5. "Incompatible With Secondary Licenses" + means + + a. that the initial Contributor has attached the notice described in + Exhibit B to the Covered Software; or + + b. that the Covered Software was made available under the terms of + version 1.1 or earlier of the License, but not also under the terms of + a Secondary License. + +1.6. "Executable Form" + + means any form of the work other than Source Code Form. + +1.7. "Larger Work" + + means a work that combines Covered Software with other material, in a + separate file or files, that is not Covered Software. + +1.8. "License" + + means this document. + +1.9. "Licensable" + + means having the right to grant, to the maximum extent possible, whether + at the time of the initial grant or subsequently, any and all of the + rights conveyed by this License. + +1.10. "Modifications" + + means any of the following: + + a. any file in Source Code Form that results from an addition to, + deletion from, or modification of the contents of Covered Software; or + + b. any new file in Source Code Form that contains any Covered Software. + +1.11. "Patent Claims" of a Contributor + + means any patent claim(s), including without limitation, method, + process, and apparatus claims, in any patent Licensable by such + Contributor that would be infringed, but for the grant of the License, + by the making, using, selling, offering for sale, having made, import, + or transfer of either its Contributions or its Contributor Version. + +1.12. "Secondary License" + + means either the GNU General Public License, Version 2.0, the GNU Lesser + General Public License, Version 2.1, the GNU Affero General Public + License, Version 3.0, or any later versions of those licenses. + +1.13. "Source Code Form" + + means the form of the work preferred for making modifications. + +1.14. "You" (or "Your") + + means an individual or a legal entity exercising rights under this + License. For legal entities, "You" includes any entity that controls, is + controlled by, or is under common control with You. For purposes of this + definition, "control" means (a) the power, direct or indirect, to cause + the direction or management of such entity, whether by contract or + otherwise, or (b) ownership of more than fifty percent (50%) of the + outstanding shares or beneficial ownership of such entity. + + +2. License Grants and Conditions + +2.1. Grants + + Each Contributor hereby grants You a world-wide, royalty-free, + non-exclusive license: + + a. under intellectual property rights (other than patent or trademark) + Licensable by such Contributor to use, reproduce, make available, + modify, display, perform, distribute, and otherwise exploit its + Contributions, either on an unmodified basis, with Modifications, or + as part of a Larger Work; and + + b. under Patent Claims of such Contributor to make, use, sell, offer for + sale, have made, import, and otherwise transfer either its + Contributions or its Contributor Version. + +2.2. Effective Date + + The licenses granted in Section 2.1 with respect to any Contribution + become effective for each Contribution on the date the Contributor first + distributes such Contribution. + +2.3. Limitations on Grant Scope + + The licenses granted in this Section 2 are the only rights granted under + this License. No additional rights or licenses will be implied from the + distribution or licensing of Covered Software under this License. + Notwithstanding Section 2.1(b) above, no patent license is granted by a + Contributor: + + a. for any code that a Contributor has removed from Covered Software; or + + b. for infringements caused by: (i) Your and any other third party's + modifications of Covered Software, or (ii) the combination of its + Contributions with other software (except as part of its Contributor + Version); or + + c. under Patent Claims infringed by Covered Software in the absence of + its Contributions. + + This License does not grant any rights in the trademarks, service marks, + or logos of any Contributor (except as may be necessary to comply with + the notice requirements in Section 3.4). + +2.4. Subsequent Licenses + + No Contributor makes additional grants as a result of Your choice to + distribute the Covered Software under a subsequent version of this + License (see Section 10.2) or under the terms of a Secondary License (if + permitted under the terms of Section 3.3). + +2.5. Representation + + Each Contributor represents that the Contributor believes its + Contributions are its original creation(s) or it has sufficient rights to + grant the rights to its Contributions conveyed by this License. + +2.6. Fair Use + + This License is not intended to limit any rights You have under + applicable copyright doctrines of fair use, fair dealing, or other + equivalents. + +2.7. Conditions + + Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in + Section 2.1. + + +3. Responsibilities + +3.1. Distribution of Source Form + + All distribution of Covered Software in Source Code Form, including any + Modifications that You create or to which You contribute, must be under + the terms of this License. You must inform recipients that the Source + Code Form of the Covered Software is governed by the terms of this + License, and how they can obtain a copy of this License. You may not + attempt to alter or restrict the recipients' rights in the Source Code + Form. + +3.2. Distribution of Executable Form + + If You distribute Covered Software in Executable Form then: + + a. such Covered Software must also be made available in Source Code Form, + as described in Section 3.1, and You must inform recipients of the + Executable Form how they can obtain a copy of such Source Code Form by + reasonable means in a timely manner, at a charge no more than the cost + of distribution to the recipient; and + + b. You may distribute such Executable Form under the terms of this + License, or sublicense it under different terms, provided that the + license for the Executable Form does not attempt to limit or alter the + recipients' rights in the Source Code Form under this License. + +3.3. Distribution of a Larger Work + + You may create and distribute a Larger Work under terms of Your choice, + provided that You also comply with the requirements of this License for + the Covered Software. If the Larger Work is a combination of Covered + Software with a work governed by one or more Secondary Licenses, and the + Covered Software is not Incompatible With Secondary Licenses, this + License permits You to additionally distribute such Covered Software + under the terms of such Secondary License(s), so that the recipient of + the Larger Work may, at their option, further distribute the Covered + Software under the terms of either this License or such Secondary + License(s). + +3.4. Notices + + You may not remove or alter the substance of any license notices + (including copyright notices, patent notices, disclaimers of warranty, or + limitations of liability) contained within the Source Code Form of the + Covered Software, except that You may alter any license notices to the + extent required to remedy known factual inaccuracies. + +3.5. Application of Additional Terms + + You may choose to offer, and to charge a fee for, warranty, support, + indemnity or liability obligations to one or more recipients of Covered + Software. However, You may do so only on Your own behalf, and not on + behalf of any Contributor. You must make it absolutely clear that any + such warranty, support, indemnity, or liability obligation is offered by + You alone, and You hereby agree to indemnify every Contributor for any + liability incurred by such Contributor as a result of warranty, support, + indemnity or liability terms You offer. You may include additional + disclaimers of warranty and limitations of liability specific to any + jurisdiction. + +4. Inability to Comply Due to Statute or Regulation + + If it is impossible for You to comply with any of the terms of this License + with respect to some or all of the Covered Software due to statute, + judicial order, or regulation then You must: (a) comply with the terms of + this License to the maximum extent possible; and (b) describe the + limitations and the code they affect. Such description must be placed in a + text file included with all distributions of the Covered Software under + this License. Except to the extent prohibited by statute or regulation, + such description must be sufficiently detailed for a recipient of ordinary + skill to be able to understand it. + +5. Termination + +5.1. The rights granted under this License will terminate automatically if You + fail to comply with any of its terms. However, if You become compliant, + then the rights granted under this License from a particular Contributor + are reinstated (a) provisionally, unless and until such Contributor + explicitly and finally terminates Your grants, and (b) on an ongoing + basis, if such Contributor fails to notify You of the non-compliance by + some reasonable means prior to 60 days after You have come back into + compliance. Moreover, Your grants from a particular Contributor are + reinstated on an ongoing basis if such Contributor notifies You of the + non-compliance by some reasonable means, this is the first time You have + received notice of non-compliance with this License from such + Contributor, and You become compliant prior to 30 days after Your receipt + of the notice. + +5.2. If You initiate litigation against any entity by asserting a patent + infringement claim (excluding declaratory judgment actions, + counter-claims, and cross-claims) alleging that a Contributor Version + directly or indirectly infringes any patent, then the rights granted to + You by any and all Contributors for the Covered Software under Section + 2.1 of this License shall terminate. + +5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user + license agreements (excluding distributors and resellers) which have been + validly granted by You or Your distributors under this License prior to + termination shall survive termination. + +6. Disclaimer of Warranty + + Covered Software is provided under this License on an "as is" basis, + without warranty of any kind, either expressed, implied, or statutory, + including, without limitation, warranties that the Covered Software is free + of defects, merchantable, fit for a particular purpose or non-infringing. + The entire risk as to the quality and performance of the Covered Software + is with You. Should any Covered Software prove defective in any respect, + You (not any Contributor) assume the cost of any necessary servicing, + repair, or correction. This disclaimer of warranty constitutes an essential + part of this License. No use of any Covered Software is authorized under + this License except under this disclaimer. + +7. Limitation of Liability + + Under no circumstances and under no legal theory, whether tort (including + negligence), contract, or otherwise, shall any Contributor, or anyone who + distributes Covered Software as permitted above, be liable to You for any + direct, indirect, special, incidental, or consequential damages of any + character including, without limitation, damages for lost profits, loss of + goodwill, work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses, even if such party shall have been + informed of the possibility of such damages. This limitation of liability + shall not apply to liability for death or personal injury resulting from + such party's negligence to the extent applicable law prohibits such + limitation. Some jurisdictions do not allow the exclusion or limitation of + incidental or consequential damages, so this exclusion and limitation may + not apply to You. + +8. Litigation + + Any litigation relating to this License may be brought only in the courts + of a jurisdiction where the defendant maintains its principal place of + business and such litigation shall be governed by laws of that + jurisdiction, without reference to its conflict-of-law provisions. Nothing + in this Section shall prevent a party's ability to bring cross-claims or + counter-claims. + +9. Miscellaneous + + This License represents the complete agreement concerning the subject + matter hereof. If any provision of this License is held to be + unenforceable, such provision shall be reformed only to the extent + necessary to make it enforceable. Any law or regulation which provides that + the language of a contract shall be construed against the drafter shall not + be used to construe this License against a Contributor. + + +10. Versions of the License + +10.1. New Versions + + Mozilla Foundation is the license steward. Except as provided in Section + 10.3, no one other than the license steward has the right to modify or + publish new versions of this License. Each version will be given a + distinguishing version number. + +10.2. Effect of New Versions + + You may distribute the Covered Software under the terms of the version + of the License under which You originally received the Covered Software, + or under the terms of any subsequent version published by the license + steward. + +10.3. Modified Versions + + If you create software not governed by this License, and you want to + create a new license for such software, you may create and use a + modified version of this License if you rename the license and remove + any references to the name of the license steward (except to note that + such modified license differs from this License). + +10.4. Distributing Source Code Form that is Incompatible With Secondary + Licenses If You choose to distribute Source Code Form that is + Incompatible With Secondary Licenses under the terms of this version of + the License, the notice described in Exhibit B of this License must be + attached. + +Exhibit A - Source Code Form License Notice + + This Source Code Form is subject to the + terms of the Mozilla Public License, v. + 2.0. If a copy of the MPL was not + distributed with this file, You can + obtain one at + http://mozilla.org/MPL/2.0/. + +If it is not possible or desirable to put the notice in a particular file, +then You may include the notice in a location (such as a LICENSE file in a +relevant directory) where a recipient would be likely to look for such a +notice. + +You may add additional accurate notices of copyright ownership. + +Exhibit B - "Incompatible With Secondary Licenses" Notice + + This Source Code Form is "Incompatible + With Secondary Licenses", as defined by + the Mozilla Public License, v. 2.0. + diff --git a/pkg/logs/vrl/rust/include/vrl.h b/pkg/logs/vrl/rust/include/vrl.h new file mode 100644 index 000000000000..64d3f7d09be3 --- /dev/null +++ b/pkg/logs/vrl/rust/include/vrl.h @@ -0,0 +1,65 @@ +/* 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 2016-present Datadog, Inc. */ + +#ifndef VRL_FILTER_H +#define VRL_FILTER_H + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Opaque handle to a compiled VRL program. */ +typedef struct vrl_program vrl_program_t; + +/* Length-delimited byte buffer, heap-allocated by this library. Not + * NUL-terminated. `data` is NULL with `len == 0` on failure. */ +struct vrl_bytes { + uint8_t *data; + size_t len; +}; + +/* Compiles a VRL boolean expression or transform against this crate's + * curated function list. Returns a heap-allocated program on success, or + * NULL on failure. On failure, if err_out is non-NULL, *err_out is set to a + * malloc'd error string (caller must free with vrl_free_string). */ +vrl_program_t *vrl_compile(const char *source, char **err_out); + +/* Evaluates prog as a boolean predicate against message (exposed as + * `.message`). + * + * Returns: + * 1 - the program resolved to true (match) + * 0 - the program resolved to anything else, or called `abort` (no match) + * -1 - a runtime error occurred; if err_out is non-NULL, *err_out is set + * to a malloc'd error string (caller must free with vrl_free_string) */ +int32_t vrl_eval_filter(const vrl_program_t *prog, const char *message, size_t message_len, char **err_out); + +/* Runs prog as a transform against message (exposed as `.message`) and + * returns the resulting `.message` value, serialized to bytes. On failure, + * returns a zeroed vrl_bytes and, if err_out is non-NULL, sets *err_out + * (caller must free with vrl_free_string). On success, the caller must free + * the returned buffer with vrl_free_bytes. */ +struct vrl_bytes vrl_eval_transform(const vrl_program_t *prog, const char *message, size_t message_len, + char **err_out); + +/* Frees a program returned by vrl_compile. Passing NULL is a no-op. */ +void vrl_free_program(vrl_program_t *prog); + +/* Frees a string returned by this library via an err_out parameter. Passing + * NULL is a no-op. */ +void vrl_free_string(char *s); + +/* Frees a byte buffer returned by vrl_eval_transform. Passing a zeroed + * buffer is a no-op. */ +void vrl_free_bytes(struct vrl_bytes bytes); + +#ifdef __cplusplus +} +#endif + +#endif /* VRL_FILTER_H */ diff --git a/pkg/logs/vrl/rust/src/functions/json_utils.rs b/pkg/logs/vrl/rust/src/functions/json_utils.rs new file mode 100644 index 000000000000..e58aa3ab4814 --- /dev/null +++ b/pkg/logs/vrl/rust/src/functions/json_utils.rs @@ -0,0 +1,78 @@ +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at http://mozilla.org/MPL/2.0/. +// +// Ported with minimal changes from the `vrl` crate (vectordotdev/vrl, +// crates.io "vrl" v0.33.1, src/stdlib/json_utils/{bom,json_type_def}.rs), +// which is MPL-2.0 licensed. See ../../LICENSE-vrl for the full text. + +use vrl::prelude::{Collection, TypeDef}; +use vrl::value::Kind; + +/// Helper trait to strip BOM from UTF-8. +pub trait StripBomFromUTF8 { + #[must_use] + fn strip_bom(self) -> Self; +} + +// \u{feff} and [0xef, 0xbb, 0xbf] are the same +static BOM_MARKER_BYTES: &[u8] = &[0xef, 0xbb, 0xbf]; +static BOM_MARKER: char = '\u{feff}'; + +impl StripBomFromUTF8 for &str { + fn strip_bom(self) -> Self { + self.trim_start_matches(BOM_MARKER) + } +} + +impl StripBomFromUTF8 for &[u8] { + fn strip_bom(self) -> Self { + self.strip_prefix(BOM_MARKER_BYTES).unwrap_or(self) + } +} + +pub(crate) fn json_inner_kind() -> Kind { + Kind::null() + | Kind::bytes() + | Kind::integer() + | Kind::float() + | Kind::boolean() + | Kind::array(Collection::any()) + | Kind::object(Collection::any()) +} + +pub(crate) fn json_type_def() -> TypeDef { + TypeDef::bytes() + .fallible() + .or_boolean() + .or_integer() + .or_float() + .add_null() + .or_null() + .or_array(Collection::from_unknown(json_inner_kind())) + .or_object(Collection::from_unknown(json_inner_kind())) +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn strips_bom_from_str() { + let raw = &[BOM_MARKER_BYTES, &[0x7b, 0x7d]].concat(); + let raw: &str = std::str::from_utf8(raw).unwrap(); + assert_eq!(raw.strip_bom(), "{}"); + } + + #[test] + fn strips_bom_from_bytes() { + let raw = &[BOM_MARKER_BYTES, &[0x7b, 0x7d]].concat(); + assert_eq!(raw.as_slice().strip_bom(), &[0x7b, 0x7d]); + } + + #[test] + fn leaves_input_without_bom_unchanged() { + assert_eq!("{}".strip_bom(), "{}"); + assert_eq!(b"{}".as_slice().strip_bom(), b"{}".as_slice()); + } +} diff --git a/pkg/logs/vrl/rust/src/functions/mod.rs b/pkg/logs/vrl/rust/src/functions/mod.rs new file mode 100644 index 000000000000..83ed9fc36ba7 --- /dev/null +++ b/pkg/logs/vrl/rust/src/functions/mod.rs @@ -0,0 +1,19 @@ +// 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 2016-present Datadog, Inc. + +mod json_utils; +mod parse_json; +mod redact; + +pub use parse_json::ParseJson; +pub use redact::Redact; + +/// The curated set of VRL functions available to log processing rules. This +/// intentionally does not depend on vrl's `stdlib` feature (see the crate +/// root docs) — it's just enough for JSON-field-aware filtering and PII +/// masking, kept lean by design. +pub fn function_list() -> Vec> { + vec![Box::new(ParseJson), Box::new(Redact)] +} diff --git a/pkg/logs/vrl/rust/src/functions/parse_json.rs b/pkg/logs/vrl/rust/src/functions/parse_json.rs new file mode 100644 index 000000000000..b09c472c0ecf --- /dev/null +++ b/pkg/logs/vrl/rust/src/functions/parse_json.rs @@ -0,0 +1,163 @@ +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at http://mozilla.org/MPL/2.0/. +// +// Adapted from the `vrl` crate (vectordotdev/vrl, crates.io "vrl" v0.33.1, +// src/stdlib/parse_json.rs), which is MPL-2.0 licensed. See +// ../../LICENSE-vrl for the full text. The `max_depth` parameter present +// upstream is intentionally dropped here to keep this v1 minimal; it can be +// ported back verbatim if a concrete need arises. + +use vrl::prelude::*; + +use crate::functions::json_utils::{StripBomFromUTF8, json_type_def}; + +static DEFAULT_LOSSY: Value = Value::Boolean(true); + +const PARAMETERS: &[Parameter] = &[ + Parameter::required( + "value", + kind::BYTES, + "The string representation of the JSON to parse.", + ), + Parameter::optional( + "lossy", + kind::BOOLEAN, + "Whether to parse the JSON in a lossy manner. Replaces invalid UTF-8 characters +with the Unicode character \u{fffd} (U+FFFD) if set to true, otherwise returns an error +if there are any invalid UTF-8 characters present.", + ) + .default(&DEFAULT_LOSSY), +]; + +fn parse_json(value: Value, lossy: Value) -> Resolved { + let lossy = lossy.try_boolean()?; + Ok(if lossy { + serde_json::from_str(value.try_bytes_utf8_lossy()?.strip_bom()) + } else { + serde_json::from_slice(value.try_bytes()?.strip_bom()) + } + .map_err(|e| format!("unable to parse json: {e}"))?) +} + +#[derive(Clone, Copy, Debug)] +pub struct ParseJson; + +impl Function for ParseJson { + fn identifier(&self) -> &'static str { + "parse_json" + } + + fn summary(&self) -> &'static str { + "parse a string to a JSON type" + } + + fn usage(&self) -> &'static str { + indoc! {" + Parses the provided `value` as JSON. + + Only JSON types are returned. + "} + } + + fn category(&self) -> &'static str { + "parse" + } + + fn internal_failure_reasons(&self) -> &'static [&'static str] { + &["`value` is not a valid JSON-formatted payload."] + } + + fn return_kind(&self) -> u16 { + kind::BOOLEAN + | kind::INTEGER + | kind::FLOAT + | kind::BYTES + | kind::OBJECT + | kind::ARRAY + | kind::NULL + } + + fn parameters(&self) -> &'static [Parameter] { + PARAMETERS + } + + fn examples(&self) -> &'static [Example] { + &[] + } + + fn compile( + &self, + _state: &state::TypeState, + _ctx: &mut FunctionCompileContext, + arguments: ArgumentList, + ) -> Compiled { + let value = arguments.required("value"); + let lossy = arguments.optional("lossy"); + + Ok(ParseJsonFn { value, lossy }.as_expr()) + } +} + +#[derive(Debug, Clone)] +struct ParseJsonFn { + value: Box, + lossy: Option>, +} + +impl FunctionExpression for ParseJsonFn { + fn resolve(&self, ctx: &mut Context) -> Resolved { + let value = self.value.resolve(ctx)?; + let lossy = self + .lossy + .map_resolve_with_default(ctx, || DEFAULT_LOSSY.clone())?; + parse_json(value, lossy) + } + + fn type_def(&self, _: &state::TypeState) -> TypeDef { + json_type_def() + } +} + +#[cfg(test)] +mod tests { + use super::*; + use vrl::compiler::runtime::Runtime; + use vrl::compiler::{TargetValue, TimeZone}; + use vrl::value::Secrets; + + fn resolve(source: &str) -> Result { + let functions: Vec> = vec![Box::new(ParseJson)]; + let compiled = vrl::compiler::compile(source, &functions).map_err(|e| format!("{e:?}"))?; + + let mut target = TargetValue { + value: Value::Object(ObjectMap::new()), + metadata: Value::Object(ObjectMap::new()), + secrets: Secrets::default(), + }; + let mut runtime = Runtime::default(); + runtime + .resolve(&mut target, &compiled.program, &TimeZone::default()) + .map_err(|e| format!("{e:?}")) + } + + #[test] + fn parses_an_object() { + let result = resolve(r#"parse_json!("{\"field\": \"value\"}")"#).unwrap(); + assert_eq!( + result + .as_object() + .unwrap() + .get("field") + .unwrap() + .as_bytes() + .unwrap(), + "value" + ); + } + + #[test] + fn errors_on_invalid_json() { + assert!(resolve(r#"parse_json!("{ invalid")"#).is_err()); + } +} diff --git a/pkg/logs/vrl/rust/src/functions/redact.rs b/pkg/logs/vrl/rust/src/functions/redact.rs new file mode 100644 index 000000000000..064be6394e46 --- /dev/null +++ b/pkg/logs/vrl/rust/src/functions/redact.rs @@ -0,0 +1,535 @@ +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at http://mozilla.org/MPL/2.0/. +// +// Adapted from the `vrl` crate (vectordotdev/vrl, crates.io "vrl" v0.33.1, +// src/stdlib/redact.rs), which is MPL-2.0 licensed. See ../../LICENSE-vrl +// for the full text. Upstream gates the hash redactor behind vrl's +// `enable_crypto_functions` feature (one of the all-or-nothing bundles that +// pulls in the `datadog`/`onig` feature chain we're avoiding); here the hash +// redactor is always compiled, using this crate's own sha2/sha3/base64/base16 +// dependencies instead of vrl's internally re-exported/renamed crates. + +use std::{ + borrow::Cow, + convert::{TryFrom, TryInto}, + sync::LazyLock, +}; + +use vrl::prelude::*; + +// https://www.oreilly.com/library/view/regular-expressions-cookbook/9781449327453/ch04s12.html +// (converted to non-lookaround version given `regex` does not support lookarounds) +// See also: https://www.ssa.gov/history/ssn/geocard.html +static US_SOCIAL_SECURITY_NUMBER: LazyLock = LazyLock::new(|| { + regex::Regex::new( + "(?x) # Ignore whitespace and comments in the regex expression. + (?:00[1-9]|0[1-9][0-9]|[1-578][0-9]{2}|6[0-57-9][0-9]|66[0-57-9])- # Area number: 001-899 except 666 + (?:0[1-9]|[1-9]0|[1-9][1-9])- # Group number: 01-99 + (?:000[1-9]|00[1-9]0|0[1-9]00|[1-9]000|[1-9]{4}) # Serial number: 0001-9999 + ").unwrap() +}); + +#[derive(Clone, Copy, Debug)] +pub struct Redact; + +impl Function for Redact { + fn identifier(&self) -> &'static str { + "redact" + } + + fn usage(&self) -> &'static str { + indoc! {" + Redact sensitive data in `value` such as: + + - US social security numbers + - Other forms of personally identifiable information with custom patterns + + This can help achieve compliance by ensuring sensitive data does not leave your network. + "} + } + + fn category(&self) -> &'static str { + "string" + } + + fn return_kind(&self) -> u16 { + kind::BYTES | kind::OBJECT | kind::ARRAY + } + + fn parameters(&self) -> &'static [Parameter] { + const PARAMETERS: &[Parameter] = &[ + Parameter::required( + "value", + kind::BYTES | kind::OBJECT | kind::ARRAY, + "The value to redact sensitive data from.", + ), + Parameter::required( + "filters", + kind::ARRAY, + "List of filters applied to `value`. Each filter is either a regular \ +expression, the named filter `us_social_security_number`, or an object with a `type` \ +key of `pattern` and a `patterns` array of regular expressions.", + ), + Parameter::optional( + "redactor", + kind::OBJECT | kind::BYTES, + "What to replace redacted text with: `full` (default, \"[REDACTED]\"), \ +`text` (a custom replacement string via the `replacement` key), `sha2`, or `sha3` \ +(hash the redacted text; both accept optional `variant`/`encoding` keys).", + ), + ]; + PARAMETERS + } + + fn examples(&self) -> &'static [Example] { + &[] + } + + fn compile( + &self, + state: &state::TypeState, + _ctx: &mut FunctionCompileContext, + arguments: ArgumentList, + ) -> Compiled { + let value = arguments.required("value"); + + let filters = arguments + .required_array("filters")? + .into_iter() + .map(|expr| { + expr.resolve_constant(state) + .ok_or(function::Error::ExpectedStaticExpression { + keyword: "filters", + expr, + }) + }) + .map(|value| { + value.and_then(|value| { + value + .clone() + .try_into() + .map_err(|error| function::Error::InvalidArgument { + keyword: "filters", + value, + error, + }) + }) + }) + .collect::, _>>()?; + + let redactor = arguments + .optional_literal("redactor", state)? + .map(|value| { + value + .clone() + .try_into() + .map_err(|error| function::Error::InvalidArgument { + keyword: "redactor", + value, + error, + }) + }) + .transpose()? + .unwrap_or(Redactor::Full); + + Ok(RedactFn { + value, + filters, + redactor, + } + .as_expr()) + } +} + +//----------------------------------------------------------------------------- + +#[derive(Clone, Debug)] +struct RedactFn { + value: Box, + filters: Vec, + redactor: Redactor, +} + +fn redact(value: Value, filters: &[Filter], redactor: &Redactor) -> Value { + match value { + Value::Bytes(bytes) => { + let input = String::from_utf8_lossy(&bytes); + let output = filters.iter().fold(input, |input, filter| { + filter.redact(&input, redactor).into_owned().into() + }); + Value::Bytes(output.into_owned().into()) + } + Value::Array(values) => { + let values = values + .into_iter() + .map(|value| redact(value, filters, redactor)) + .collect(); + Value::Array(values) + } + Value::Object(map) => { + let map = map + .into_iter() + .map(|(key, value)| (key, redact(value, filters, redactor))) + .collect(); + Value::Object(map) + } + _ => value, + } +} + +impl FunctionExpression for RedactFn { + fn resolve(&self, ctx: &mut Context) -> Resolved { + let value = self.value.resolve(ctx)?; + let filters = &self.filters; + let redactor = &self.redactor; + + Ok(redact(value, filters, redactor)) + } + + fn type_def(&self, state: &state::TypeState) -> TypeDef { + self.value.type_def(state).infallible() + } +} + +//----------------------------------------------------------------------------- + +/// The redaction filter to apply to the given value. +#[derive(Debug, Clone)] +enum Filter { + Pattern(Vec), + UsSocialSecurityNumber, +} + +#[derive(Debug, Clone)] +enum Pattern { + Regex(regex::Regex), + String(String), +} + +impl TryFrom for Filter { + type Error = &'static str; + + fn try_from(value: Value) -> std::result::Result { + match value { + Value::Object(object) => { + let r#type = match object + .get("type") + .ok_or("filters specified as objects must have type parameter")? + { + Value::Bytes(bytes) => Ok(bytes.clone()), + _ => Err("type key in filters must be a string"), + }?; + + match r#type.as_ref() { + b"us_social_security_number" => Ok(Filter::UsSocialSecurityNumber), + b"pattern" => { + let patterns = match object + .get("patterns") + .ok_or("pattern filter must have `patterns` specified")? + { + Value::Array(array) => Ok(array + .iter() + .map(|value| match value { + Value::Regex(regex) => Ok(Pattern::Regex((**regex).clone())), + Value::Bytes(bytes) => Ok(Pattern::String( + String::from_utf8_lossy(bytes).into_owned(), + )), + _ => Err("`patterns` must be regular expressions"), + }) + .collect::, _>>()?), + _ => Err("`patterns` must be array of regular expression literals"), + }?; + Ok(Filter::Pattern(patterns)) + } + _ => Err("unknown filter name"), + } + } + Value::Bytes(bytes) => match bytes.as_ref() { + b"pattern" => Err("pattern cannot be used without arguments"), + b"us_social_security_number" => Ok(Filter::UsSocialSecurityNumber), + _ => Err("unknown filter name"), + }, + Value::Regex(regex) => Ok(Filter::Pattern(vec![Pattern::Regex((*regex).clone())])), + _ => Err("unknown literal for filter, must be a regex, filter name, or object"), + } + } +} + +impl Filter { + fn redact<'t>(&self, input: &'t str, redactor: &Redactor) -> Cow<'t, str> { + match &self { + Filter::Pattern(patterns) => { + patterns + .iter() + .fold(Cow::Borrowed(input), |input, pattern| match pattern { + Pattern::Regex(regex) => { + regex.replace_all(&input, redactor).into_owned().into() + } + Pattern::String(pattern) => str_replace(&input, pattern, redactor).into(), + }) + } + Filter::UsSocialSecurityNumber => { + US_SOCIAL_SECURITY_NUMBER.replace_all(input, redactor) + } + } + } +} + +fn str_replace(haystack: &str, pattern: &str, redactor: &Redactor) -> String { + let mut result = String::new(); + let mut last_end = 0; + for (start, original) in haystack.match_indices(pattern) { + result.push_str(&haystack[last_end..start]); + redactor.replace_str(original, &mut result); + last_end = start + original.len(); + } + result.push_str(&haystack[last_end..]); + result +} + +#[allow(unpredictable_function_pointer_comparisons)] +/// The recipe for redacting the matched filters. +#[derive(Debug, Default, Clone, PartialEq, Eq)] +enum Redactor { + #[default] + Full, + /// Replace with a fixed string. + Text(String), + /// Replace with a hash of the redacted content. + Hash { + encoder: Encoder, + hasher: fn(Encoder, &[u8]) -> String, + }, +} + +const REDACTED: &str = "[REDACTED]"; + +impl Redactor { + fn replace_str(&self, original: &str, dst: &mut String) { + match self { + Redactor::Full => { + dst.push_str(REDACTED); + } + Redactor::Text(s) => { + dst.push_str(s); + } + Redactor::Hash { encoder, hasher } => { + dst.push_str(&hasher(*encoder, original.as_bytes())); + } + } + } + + fn from_object(obj: &ObjectMap) -> std::result::Result { + let r#type = match obj + .get("type") + .ok_or("redactor specified as objects must have type parameter")? + { + Value::Bytes(bytes) => Ok(bytes.clone()), + _ => Err("type key in redactor must be a string"), + }?; + + match r#type.as_ref() { + b"full" => Ok(Redactor::Full), + b"text" => match obj + .get("replacement") + .ok_or("text redactor must have `replacement` specified")? + { + Value::Bytes(bytes) => { + Ok(Redactor::Text(String::from_utf8_lossy(bytes).into_owned())) + } + _ => Err("`replacement` must be a string"), + }, + b"sha2" => { + let hasher = if let Some(variant) = obj.get("variant") { + match variant + .as_bytes() + .ok_or("`variant` must be a string")? + .as_ref() + { + b"SHA-224" => encoded_hash::, + b"SHA-256" => encoded_hash::, + b"SHA-384" => encoded_hash::, + b"SHA-512" => encoded_hash::, + b"SHA-512/224" => encoded_hash::, + b"SHA-512/256" => encoded_hash::, + _ => return Err("invalid sha2 variant"), + } + } else { + encoded_hash:: + }; + let encoder = obj + .get("encoding") + .map(Encoder::try_from) + .transpose()? + .unwrap_or(Encoder::Base64); + Ok(Redactor::Hash { hasher, encoder }) + } + b"sha3" => { + let hasher = if let Some(variant) = obj.get("variant") { + match variant + .as_bytes() + .ok_or("`variant` must be a string")? + .as_ref() + { + b"SHA3-224" => encoded_hash::, + b"SHA3-256" => encoded_hash::, + b"SHA3-384" => encoded_hash::, + b"SHA3-512" => encoded_hash::, + _ => return Err("invalid sha3 variant"), + } + } else { + encoded_hash:: + }; + let encoder = obj + .get("encoding") + .map(Encoder::try_from) + .transpose()? + .unwrap_or(Encoder::Base64); + Ok(Redactor::Hash { hasher, encoder }) + } + _ => Err("unknown `type` for `redactor`"), + } + } +} + +impl regex::Replacer for &Redactor { + fn replace_append(&mut self, caps: ®ex::Captures, dst: &mut String) { + self.replace_str(&caps[0], dst); + } + + fn no_expansion(&mut self) -> Option> { + match self { + Redactor::Full => Some(REDACTED.into()), + Redactor::Text(s) => Some(s.into()), + Redactor::Hash { .. } => None, + } + } +} + +impl TryFrom for Redactor { + type Error = &'static str; + + fn try_from(value: Value) -> std::result::Result { + match value { + Value::Object(object) => Redactor::from_object(&object), + Value::Bytes(bytes) => match bytes.as_ref() { + b"full" => Ok(Redactor::Full), + b"sha2" => Ok(Redactor::Hash { + hasher: encoded_hash::, + encoder: Encoder::Base64, + }), + b"sha3" => Ok(Redactor::Hash { + hasher: encoded_hash::, + encoder: Encoder::Base64, + }), + _ => Err("unknown name of redactor"), + }, + _ => Err("unknown literal for redactor, must be redactor name or object"), + } + } +} + +#[derive(Debug, Copy, Clone, PartialEq, Eq)] +enum Encoder { + Base64, + Base16, +} + +impl TryFrom<&Value> for Encoder { + type Error = &'static str; + + fn try_from(value: &Value) -> std::result::Result { + match value.as_bytes().ok_or("encoding must be string")?.as_ref() { + b"base64" => Ok(Self::Base64), + b"base16" | b"hex" => Ok(Self::Base16), + _ => Err("unexpected encoding"), + } + } +} + +impl Encoder { + fn encode(self, data: &[u8]) -> String { + use base64::Engine; + match self { + Encoder::Base64 => base64::engine::general_purpose::STANDARD.encode(data), + Encoder::Base16 => base16::encode_lower(data), + } + } +} + +/// Compute the hash of `data` using `T` as the digest, then encode it using `encoder` +/// to get a String. +fn encoded_hash(encoder: Encoder, data: &[u8]) -> String { + encoder.encode(&T::digest(data)) +} + +#[cfg(test)] +mod tests { + use super::*; + use vrl::compiler::runtime::Runtime; + use vrl::compiler::{TargetValue, TimeZone}; + use vrl::value::Secrets; + + fn resolve(source: &str) -> Result { + let functions: Vec> = vec![Box::new(Redact)]; + let compiled = vrl::compiler::compile(source, &functions).map_err(|e| format!("{e:?}"))?; + + let mut target = TargetValue { + value: Value::Object(ObjectMap::new()), + metadata: Value::Object(ObjectMap::new()), + secrets: Secrets::default(), + }; + let mut runtime = Runtime::default(); + runtime + .resolve(&mut target, &compiled.program, &TimeZone::default()) + .map_err(|e| format!("{e:?}")) + } + + #[test] + fn redacts_a_regex_match() { + let result = resolve(r#"redact("hello 123456 world", [r'\d+'])"#).unwrap(); + assert_eq!(result.as_bytes().unwrap(), "hello [REDACTED] world"); + } + + #[test] + fn redacts_us_social_security_numbers() { + let result = + resolve(r#"redact("ssn is 123-12-1234", ["us_social_security_number"])"#).unwrap(); + assert_eq!(result.as_bytes().unwrap(), "ssn is [REDACTED]"); + } + + #[test] + fn redacts_with_custom_text() { + let result = + resolve(r#"redact("id 123456", [r'\d+'], {"type": "text", "replacement": "***"})"#) + .unwrap(); + assert_eq!(result.as_bytes().unwrap(), "id ***"); + } + + #[test] + fn redacts_with_sha2_hash() { + let result = resolve(r#"redact("my id is 123456", [r'\d+'], "sha2")"#).unwrap(); + assert_eq!( + result.as_bytes().unwrap(), + "my id is GEtTedW1p6tC094dDKH+3B8P+xSnZz69AmpjaXRd63I=" + ); + } + + #[test] + fn redacts_with_sha256_hex_encoding() { + let result = resolve( + r#"redact("my id is 123456", [r'\d+'], {"type": "sha2", "variant": "SHA-256", "encoding": "base16"})"#, + ) + .unwrap(); + assert_eq!( + result.as_bytes().unwrap(), + "my id is 8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92" + ); + } + + #[test] + fn rejects_unknown_filter() { + assert!(resolve(r#"redact("hello", ["not a filter"])"#).is_err()); + } +} diff --git a/pkg/logs/vrl/rust/src/lib.rs b/pkg/logs/vrl/rust/src/lib.rs new file mode 100644 index 000000000000..0d356247ffe5 --- /dev/null +++ b/pkg/logs/vrl/rust/src/lib.rs @@ -0,0 +1,403 @@ +// 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 2016-present Datadog, Inc. + +//! C ABI interface for compiling and evaluating VRL programs against log +//! messages, consumed by `pkg/logs/vrl`'s cgo bridge on the Go side. +//! +//! Exports: +//! - `vrl_compile` — compiles a VRL source string against this crate's +//! curated [`functions`] library. +//! - `vrl_eval_filter` — evaluates a compiled program as a boolean predicate +//! over `.message` (for `exclude_at_vrl_match`/`include_at_vrl_match`). +//! - `vrl_eval_transform` — runs a compiled program that mutates `.message` +//! and returns the resulting bytes (for `mask_vrl`). +//! - `vrl_free_program` / `vrl_free_string` / `vrl_free_bytes` — release +//! values returned by the functions above. +//! +//! All strings/byte buffers returned to the caller are length-delimited, not +//! NUL-terminated, since log content can contain embedded NULs. + +#![allow(non_camel_case_types)] // C ABI types use C naming conventions + +pub mod functions; + +use std::ffi::{CStr, CString, c_char}; +use std::panic::{self, AssertUnwindSafe}; +use std::ptr; + +use vrl::compiler::runtime::{Runtime, Terminate}; +use vrl::compiler::{Program, TargetValue, TimeZone}; +use vrl::value::{KeyString, ObjectMap, Secrets, Value}; + +// --------------------------------------------------------------------------- +// #[repr(C)] types +// --------------------------------------------------------------------------- + +/// Opaque handle to a compiled VRL program. +pub struct vrl_program { + program: Program, +} + +/// Length-delimited byte buffer, heap-allocated by this library. Not +/// NUL-terminated. `data` is NULL with `len == 0` on failure. +#[repr(C)] +pub struct vrl_bytes { + pub data: *mut u8, + pub len: usize, +} + +const EMPTY_BYTES: vrl_bytes = vrl_bytes { + data: ptr::null_mut(), + len: 0, +}; + +// --------------------------------------------------------------------------- +// helpers +// --------------------------------------------------------------------------- + +fn set_error(err_out: *mut *mut c_char, message: impl Into) { + if err_out.is_null() { + return; + } + if let Ok(s) = CString::new(message.into()) { + // SAFETY: caller guarantees err_out points to a valid, writable *mut c_char. + unsafe { *err_out = s.into_raw() }; + } +} + +fn bytes_to_out(bytes: &[u8]) -> vrl_bytes { + let boxed: Box<[u8]> = bytes.into(); + let len = boxed.len(); + let data = Box::into_raw(boxed) as *mut u8; + vrl_bytes { data, len } +} + +fn target_from_message(message: &str) -> TargetValue { + let mut map = ObjectMap::new(); + map.insert(KeyString::from("message"), Value::from(message)); + TargetValue { + value: Value::Object(map), + metadata: Value::Object(ObjectMap::new()), + secrets: Secrets::default(), + } +} + +// SAFETY: caller guarantees `ptr` points to `len` valid, initialized bytes, +// or is null with `len == 0` (representing an empty message). +unsafe fn message_str<'a>(ptr: *const c_char, len: usize) -> Result<&'a str, &'static str> { + if ptr.is_null() { + if len != 0 { + return Err("message pointer is null"); + } + return Ok(""); + } + let bytes = unsafe { std::slice::from_raw_parts(ptr as *const u8, len) }; + std::str::from_utf8(bytes).map_err(|_| "message is not valid UTF-8") +} + +// --------------------------------------------------------------------------- +// exported functions +// --------------------------------------------------------------------------- + +/// Compiles a VRL boolean expression or transform against this crate's +/// curated function list (see [`functions::function_list`]). +/// +/// Returns a heap-allocated program on success, or NULL on failure. On +/// failure, if `err_out` is non-NULL, `*err_out` is set to a malloc'd error +/// string (caller must free with `vrl_free_string`). +/// +/// # Safety +/// - `source` must be a valid, NUL-terminated C string. +/// - `err_out` may be NULL; if non-NULL it must point to a valid, writable +/// `*mut c_char`. +#[unsafe(no_mangle)] +pub unsafe extern "C" fn vrl_compile( + source: *const c_char, + err_out: *mut *mut c_char, +) -> *mut vrl_program { + match panic::catch_unwind(AssertUnwindSafe(|| { + if source.is_null() { + return Err("source is null".to_string()); + } + // SAFETY: caller guarantees source is a valid NUL-terminated C string. + let source = match unsafe { CStr::from_ptr(source) }.to_str() { + Ok(s) => s, + Err(_) => return Err("source is not valid UTF-8".to_string()), + }; + + vrl::compiler::compile(source, &functions::function_list()) + .map(|result| { + Box::into_raw(Box::new(vrl_program { + program: result.program, + })) + }) + .map_err(|diagnostics| format!("{diagnostics:?}")) + })) { + Ok(Ok(ptr)) => ptr, + Ok(Err(message)) => { + set_error(err_out, message); + ptr::null_mut() + } + Err(_) => { + set_error(err_out, "internal panic while compiling VRL program"); + ptr::null_mut() + } + } +} + +/// Evaluates `prog` as a boolean predicate against `message` (exposed to the +/// VRL program as `.message`). +/// +/// Returns: +/// 1 — the program resolved to `true` (match) +/// 0 — the program resolved to anything else, or called `abort` (no match) +/// -1 — a runtime error occurred; if `err_out` is non-NULL, `*err_out` is +/// set to a malloc'd error string (caller must free with `vrl_free_string`) +/// +/// # Safety +/// - `prog` must be a valid pointer returned by `vrl_compile`, not yet freed. +/// - `message` must point to `message_len` valid, initialized bytes. +/// - `err_out` may be NULL; if non-NULL it must point to a valid, writable `*mut c_char`. +#[unsafe(no_mangle)] +pub unsafe extern "C" fn vrl_eval_filter( + prog: *const vrl_program, + message: *const c_char, + message_len: usize, + err_out: *mut *mut c_char, +) -> i32 { + match panic::catch_unwind(AssertUnwindSafe(|| { + if prog.is_null() { + return Err("program is null".to_string()); + } + // SAFETY: caller guarantees prog is a valid, non-null pointer from vrl_compile. + let prog = unsafe { &*prog }; + + // SAFETY: caller guarantees message points to message_len valid bytes. + let message = unsafe { message_str(message, message_len) }?; + + let mut target = target_from_message(message); + let mut runtime = Runtime::default(); + + match runtime.resolve(&mut target, &prog.program, &TimeZone::default()) { + Ok(Value::Boolean(true)) => Ok(1), + Ok(_) => Ok(0), + Err(Terminate::Abort(_)) => Ok(0), + Err(Terminate::Error(e)) => Err(e.to_string()), + } + })) { + Ok(Ok(result)) => result, + Ok(Err(message)) => { + set_error(err_out, message); + -1 + } + Err(_) => { + set_error(err_out, "internal panic while evaluating VRL program"); + -1 + } + } +} + +/// Runs `prog` as a transform against `message` (exposed as `.message`) and +/// returns the resulting `.message` value, serialized to bytes. +/// +/// On success, returns a non-empty `vrl_bytes` (caller must free with +/// `vrl_free_bytes`). On failure — a runtime error, an `abort`, or a program +/// that doesn't leave a `message` field on the target — returns an empty +/// `vrl_bytes` and, if `err_out` is non-NULL, sets `*err_out` to a malloc'd +/// error string (caller must free with `vrl_free_string`). Callers should +/// treat any failure the same way (this crate does not distinguish "aborted" +/// from "errored" for transforms, since both mean the transform cannot be +/// trusted to have run to completion). +/// +/// # Safety +/// - `prog` must be a valid pointer returned by `vrl_compile`, not yet freed. +/// - `message` must point to `message_len` valid, initialized bytes. +/// - `err_out` may be NULL; if non-NULL it must point to a valid, writable `*mut c_char`. +#[unsafe(no_mangle)] +pub unsafe extern "C" fn vrl_eval_transform( + prog: *const vrl_program, + message: *const c_char, + message_len: usize, + err_out: *mut *mut c_char, +) -> vrl_bytes { + match panic::catch_unwind(AssertUnwindSafe(|| { + if prog.is_null() { + return Err("program is null".to_string()); + } + // SAFETY: caller guarantees prog is a valid, non-null pointer from vrl_compile. + let prog = unsafe { &*prog }; + + // SAFETY: caller guarantees message points to message_len valid bytes. + let message = unsafe { message_str(message, message_len) }?; + + let mut target = target_from_message(message); + let mut runtime = Runtime::default(); + + match runtime.resolve(&mut target, &prog.program, &TimeZone::default()) { + Ok(_) => match target.value { + Value::Object(ref map) => match map.get("message") { + Some(value) => Ok(value.coerce_to_bytes().to_vec()), + None => Err("transform removed the \"message\" field".to_string()), + }, + _ => Err("transform replaced the root value with a non-object".to_string()), + }, + Err(Terminate::Abort(_)) => Err("vrl program aborted".to_string()), + Err(Terminate::Error(e)) => Err(e.to_string()), + } + })) { + Ok(Ok(bytes)) => bytes_to_out(&bytes), + Ok(Err(message)) => { + set_error(err_out, message); + EMPTY_BYTES + } + Err(_) => { + set_error(err_out, "internal panic while evaluating VRL program"); + EMPTY_BYTES + } + } +} + +/// Frees a program returned by `vrl_compile`. +/// +/// # Safety +/// `prog` must be a pointer returned by `vrl_compile` and must not have been +/// freed before. Passing NULL is a no-op. +#[unsafe(no_mangle)] +pub unsafe extern "C" fn vrl_free_program(prog: *mut vrl_program) { + if prog.is_null() { + return; + } + let _ = panic::catch_unwind(AssertUnwindSafe(|| { + // SAFETY: caller guarantees prog was created by Box::into_raw in vrl_compile + // and has not been freed before. + drop(unsafe { Box::from_raw(prog) }); + })); +} + +/// Frees a string returned by this library (`err_out` values). +/// +/// # Safety +/// `s` must be a pointer previously set via this library's `err_out` +/// parameter and must not have been freed before. Passing NULL is a no-op. +#[unsafe(no_mangle)] +pub unsafe extern "C" fn vrl_free_string(s: *mut c_char) { + if s.is_null() { + return; + } + let _ = panic::catch_unwind(AssertUnwindSafe(|| { + // SAFETY: caller guarantees s was created by CString::into_raw in this + // library and has not been freed before. + drop(unsafe { CString::from_raw(s) }); + })); +} + +/// Frees a byte buffer returned by `vrl_eval_transform`. +/// +/// # Safety +/// `bytes` must have been returned by `vrl_eval_transform` and must not have +/// been freed before. Passing an empty/NULL buffer is a no-op. +#[unsafe(no_mangle)] +pub unsafe extern "C" fn vrl_free_bytes(bytes: vrl_bytes) { + if bytes.data.is_null() { + return; + } + let _ = panic::catch_unwind(AssertUnwindSafe(|| { + // SAFETY: caller guarantees bytes.data/len came from Box::into_raw of a + // Box<[u8]> of this exact length, created in bytes_to_out, and has not + // been freed before. + drop(unsafe { Box::from_raw(std::ptr::slice_from_raw_parts_mut(bytes.data, bytes.len)) }); + })); +} + +#[cfg(test)] +mod tests { + use super::*; + + fn compile(source: &str) -> *mut vrl_program { + let c_source = CString::new(source).unwrap(); + let mut err: *mut c_char = ptr::null_mut(); + let prog = unsafe { vrl_compile(c_source.as_ptr(), &mut err) }; + if prog.is_null() && !err.is_null() { + let msg = unsafe { CStr::from_ptr(err) } + .to_string_lossy() + .into_owned(); + unsafe { vrl_free_string(err) }; + panic!("compile failed: {msg}"); + } + prog + } + + #[test] + fn filter_matches() { + let prog = compile(r#"parse_json!(.message).level == "error""#); + let msg = br#"{"level":"error"}"#; + let mut err: *mut c_char = ptr::null_mut(); + let result = + unsafe { vrl_eval_filter(prog, msg.as_ptr() as *const c_char, msg.len(), &mut err) }; + assert_eq!(result, 1); + unsafe { vrl_free_program(prog) }; + } + + #[test] + fn filter_no_match() { + let prog = compile(r#"parse_json!(.message).level == "error""#); + let msg = br#"{"level":"debug"}"#; + let mut err: *mut c_char = ptr::null_mut(); + let result = + unsafe { vrl_eval_filter(prog, msg.as_ptr() as *const c_char, msg.len(), &mut err) }; + assert_eq!(result, 0); + unsafe { vrl_free_program(prog) }; + } + + #[test] + fn filter_runtime_error_reports_negative_one() { + let prog = compile(r#"parse_json!(.message).level == "error""#); + let msg = b"not json"; + let mut err: *mut c_char = ptr::null_mut(); + let result = + unsafe { vrl_eval_filter(prog, msg.as_ptr() as *const c_char, msg.len(), &mut err) }; + assert_eq!(result, -1); + assert!(!err.is_null()); + unsafe { vrl_free_string(err) }; + unsafe { vrl_free_program(prog) }; + } + + #[test] + fn transform_redacts_the_message() { + let prog = compile(r#".message = redact!(.message, [r'\d+'])"#); + let msg = b"my id is 123456"; + let mut err: *mut c_char = ptr::null_mut(); + let out = + unsafe { vrl_eval_transform(prog, msg.as_ptr() as *const c_char, msg.len(), &mut err) }; + assert!(!out.data.is_null()); + let got = unsafe { std::slice::from_raw_parts(out.data, out.len) }; + assert_eq!(got, b"my id is [REDACTED]"); + unsafe { vrl_free_bytes(out) }; + unsafe { vrl_free_program(prog) }; + } + + #[test] + fn transform_error_when_message_field_is_removed() { + let prog = compile(r#". = {"other": "field"}"#); + let msg = b"hello"; + let mut err: *mut c_char = ptr::null_mut(); + let out = + unsafe { vrl_eval_transform(prog, msg.as_ptr() as *const c_char, msg.len(), &mut err) }; + assert!(out.data.is_null()); + assert!(!err.is_null()); + unsafe { vrl_free_string(err) }; + unsafe { vrl_free_program(prog) }; + } + + #[test] + fn compile_error_is_reported() { + let c_source = CString::new(".message ==").unwrap(); + let mut err: *mut c_char = ptr::null_mut(); + let prog = unsafe { vrl_compile(c_source.as_ptr(), &mut err) }; + assert!(prog.is_null()); + assert!(!err.is_null()); + unsafe { vrl_free_string(err) }; + } +} diff --git a/pkg/logs/vrl/vrl.go b/pkg/logs/vrl/vrl.go new file mode 100644 index 000000000000..280873966ed1 --- /dev/null +++ b/pkg/logs/vrl/vrl.go @@ -0,0 +1,130 @@ +// 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 2016-present Datadog, Inc. + +//go:build vrl + +// Package vrl provides a cgo bridge to a Rust static library (built from +// pkg/logs/vrl/rust) for compiling and evaluating VRL (Vector Remap +// Language) expressions against log messages. +// +// The static library must be built and installed next to this file before +// building with the `vrl` tag, e.g.: +// +// bazel run //pkg/logs/vrl/rust:install_libs --destdir=pkg/logs/vrl/rust +package vrl + +/* +#cgo CFLAGS: -I${SRCDIR}/rust/include +#cgo LDFLAGS: -L${SRCDIR}/rust -lvrl_filter -ldl -lpthread -lm +#include "vrl.h" +#include +*/ +import "C" + +import ( + "errors" + "fmt" + "unsafe" +) + +// Program is a compiled VRL program, usable both as a boolean filter +// predicate and as a transform. +type Program struct { + ptr *C.vrl_program_t +} + +// Compile compiles a VRL expression against this package's curated function +// list. The returned Program must be closed with Close when no longer needed. +func Compile(source string) (*Program, error) { + cs := C.CString(source) + defer C.free(unsafe.Pointer(cs)) + + var errPtr *C.char + ptr := C.vrl_compile(cs, &errPtr) + if ptr == nil { + if errPtr != nil { + msg := C.GoString(errPtr) + C.vrl_free_string(errPtr) + return nil, fmt.Errorf("vrl compile error: %s", msg) + } + return nil, errors.New("vrl compile failed (unknown error)") + } + return &Program{ptr: ptr}, nil +} + +// Filter evaluates the program as a boolean predicate against message. +// Returns (true, nil) on match, (false, nil) on no match or abort, and +// (false, err) on a runtime error (caller should treat as no match). +func (p *Program) Filter(message []byte) (bool, error) { + if p == nil || p.ptr == nil { + return false, errors.New("vrl: nil program") + } + + var errPtr *C.char + ret := C.vrl_eval_filter( + p.ptr, + messagePtr(message), + C.size_t(len(message)), + &errPtr, + ) + + switch ret { + case 1: + return true, nil + case 0: + return false, nil + default: + return false, evalError(errPtr) + } +} + +// Transform runs the program against message and returns the resulting +// message content. On error (a runtime failure, an abort, or a program that +// doesn't leave the message field intact), returns the original input +// unchanged alongside a non-nil error — callers should not assume the +// returned bytes reflect any partial mutation. +func (p *Program) Transform(message []byte) ([]byte, error) { + if p == nil || p.ptr == nil { + return message, errors.New("vrl: nil program") + } + + var errPtr *C.char + out := C.vrl_eval_transform( + p.ptr, + messagePtr(message), + C.size_t(len(message)), + &errPtr, + ) + + if out.data == nil { + return message, evalError(errPtr) + } + defer C.vrl_free_bytes(out) + return C.GoBytes(unsafe.Pointer(out.data), C.int(out.len)), nil +} + +// Close releases the compiled program. +func (p *Program) Close() { + if p != nil && p.ptr != nil { + C.vrl_free_program(p.ptr) + p.ptr = nil + } +} + +func messagePtr(message []byte) *C.char { + if len(message) == 0 { + return nil + } + return (*C.char)(unsafe.Pointer(&message[0])) +} + +func evalError(errPtr *C.char) error { + if errPtr == nil { + return errors.New("vrl eval failed (unknown error)") + } + msg := C.GoString(errPtr) + C.vrl_free_string(errPtr) + return fmt.Errorf("vrl eval error: %s", msg) +} diff --git a/pkg/logs/vrl/vrl_stub.go b/pkg/logs/vrl/vrl_stub.go new file mode 100644 index 000000000000..557d698502a4 --- /dev/null +++ b/pkg/logs/vrl/vrl_stub.go @@ -0,0 +1,43 @@ +// 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 2016-present Datadog, Inc. + +//go:build !vrl + +// Package vrl provides a bridge to VRL (Vector Remap Language) for +// evaluating filter/transform expressions against log messages. +// +// This file is the no-op stub used when the agent is built without the +// `vrl` build tag. It lets any package compile without linking the +// cgo-backed Rust implementation, and fails clearly at runtime if a VRL +// processing rule is actually configured. +package vrl + +import "errors" + +// errVRLUnavailable is returned by Compile when the agent wasn't built with +// the `vrl` build tag, so no VRL processing rule can be compiled or run. +var errVRLUnavailable = errors.New("vrl processing rules require the agent to be built with the 'vrl' build tag") + +// Program is a stub VRL program handle. It is unusable without the vrl +// build tag; Compile never returns a non-nil *Program in this build. +type Program struct{} + +// Compile always fails in a build without the vrl tag. +func Compile(_ string) (*Program, error) { + return nil, errVRLUnavailable +} + +// Filter always returns an error, since Compile never succeeds in this build. +func (p *Program) Filter(_ []byte) (bool, error) { + return false, errVRLUnavailable +} + +// Transform always returns an error, since Compile never succeeds in this build. +func (p *Program) Transform(input []byte) ([]byte, error) { + return input, errVRLUnavailable +} + +// Close is a no-op. +func (p *Program) Close() {} diff --git a/pkg/logs/vrl/vrl_stub_test.go b/pkg/logs/vrl/vrl_stub_test.go new file mode 100644 index 000000000000..03ea88da76f0 --- /dev/null +++ b/pkg/logs/vrl/vrl_stub_test.go @@ -0,0 +1,34 @@ +// 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 2016-present Datadog, Inc. + +//go:build !vrl + +package vrl + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestStubCompileFailsClearly(t *testing.T) { + prog, err := Compile(`.status == "debug"`) + assert.Nil(t, prog) + assert.ErrorContains(t, err, "vrl' build tag") +} + +func TestStubProgramMethodsDoNotPanic(t *testing.T) { + var prog *Program + + matched, err := prog.Filter([]byte("hello")) + assert.False(t, matched) + assert.Error(t, err) + + out, err := prog.Transform([]byte("hello")) + assert.Equal(t, []byte("hello"), out) + assert.Error(t, err) + + assert.NotPanics(t, func() { prog.Close() }) +} diff --git a/pkg/logs/vrl/vrl_test.go b/pkg/logs/vrl/vrl_test.go new file mode 100644 index 000000000000..b8b23988e84b --- /dev/null +++ b/pkg/logs/vrl/vrl_test.go @@ -0,0 +1,87 @@ +// 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 2016-present Datadog, Inc. + +//go:build vrl + +package vrl + +import ( + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func TestCompileInvalidSyntax(t *testing.T) { + _, err := Compile(".message ==") + assert.Error(t, err) +} + +func TestFilterMatch(t *testing.T) { + prog, err := Compile(`parse_json!(.message).level == "error"`) + require.NoError(t, err) + defer prog.Close() + + matched, err := prog.Filter([]byte(`{"level":"error"}`)) + require.NoError(t, err) + assert.True(t, matched) + + matched, err = prog.Filter([]byte(`{"level":"debug"}`)) + require.NoError(t, err) + assert.False(t, matched) +} + +func TestFilterRuntimeError(t *testing.T) { + prog, err := Compile(`parse_json!(.message).level == "error"`) + require.NoError(t, err) + defer prog.Close() + + matched, err := prog.Filter([]byte("not json")) + assert.False(t, matched) + assert.Error(t, err) +} + +func TestFilterEmptyMessage(t *testing.T) { + prog, err := Compile(`.message == ""`) + require.NoError(t, err) + defer prog.Close() + + matched, err := prog.Filter(nil) + require.NoError(t, err) + assert.True(t, matched) +} + +func TestTransformRedactsMessage(t *testing.T) { + prog, err := Compile(`.message = redact!(.message, [r'\d+'])`) + require.NoError(t, err) + defer prog.Close() + + out, err := prog.Transform([]byte("my id is 123456")) + require.NoError(t, err) + assert.Equal(t, []byte("my id is [REDACTED]"), out) +} + +func TestTransformErrorReturnsOriginalMessage(t *testing.T) { + prog, err := Compile(`. = {"other": "field"}`) + require.NoError(t, err) + defer prog.Close() + + input := []byte("hello") + out, err := prog.Transform(input) + assert.Error(t, err) + assert.Equal(t, input, out) +} + +func TestNilProgram(t *testing.T) { + var prog *Program + + _, err := prog.Filter([]byte("hello")) + assert.Error(t, err) + + _, err = prog.Transform([]byte("hello")) + assert.Error(t, err) + + assert.NotPanics(t, func() { prog.Close() }) +} diff --git a/rust/LICENSE-3rdparty.csv b/rust/LICENSE-3rdparty.csv index b3b059e4f43f..0b6ac77fbeaa 100644 --- a/rust/LICENSE-3rdparty.csv +++ b/rust/LICENSE-3rdparty.csv @@ -1,6 +1,8 @@ Component,Origin,License,Copyright adler2,https://github.com/oyvindln/adler2,0BSD OR MIT OR Apache-2.0,"Jonas Schievink , oyvindln " +ahash,https://github.com/tkaitchuck/ahash,MIT OR Apache-2.0,Tom Kaitchuck aho-corasick,https://github.com/BurntSushi/aho-corasick,Unlicense OR MIT,Andrew Gallant +allocator-api2,https://github.com/zakarumych/allocator-api2,MIT OR Apache-2.0,Zakarum ambient-authority,https://github.com/sunfishcode/ambient-authority,Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT,Dan Gohman android_system_properties,https://github.com/nical/android_system_properties,MIT OR Apache-2.0,Nicolas Silva anstream,https://github.com/rust-cli/anstyle,MIT OR Apache-2.0,The anstream Authors @@ -10,27 +12,37 @@ anstyle-query,https://github.com/rust-cli/anstyle,MIT OR Apache-2.0,The anstyle- anstyle-wincon,https://github.com/rust-cli/anstyle,MIT OR Apache-2.0,The anstyle-wincon Authors anyhow,https://github.com/dtolnay/anyhow,MIT OR Apache-2.0,David Tolnay arraydeque,https://github.com/andylokandy/arraydeque,MIT OR Apache-2.0,andylokandy +ascii-canvas,https://github.com/lalrpop/ascii-canvas,Apache-2.0 OR MIT,Niko Matsakis async-trait,https://github.com/dtolnay/async-trait,MIT OR Apache-2.0,David Tolnay atomic-waker,https://github.com/smol-rs/atomic-waker,Apache-2.0 OR MIT,"Stjepan Glavina , Contributors to futures-rs" axum,https://github.com/tokio-rs/axum,MIT,The axum Authors axum-core,https://github.com/tokio-rs/axum,MIT,The axum-core Authors +base16,https://github.com/thomcc/rust-base16,CC0-1.0,Thom Chiovoloni base64,https://github.com/marshallpierce/rust-base64,MIT OR Apache-2.0,Marshall Pierce +bit-set,https://github.com/contain-rs/bit-set,Apache-2.0 OR MIT,Alexis Beingessner +bit-vec,https://github.com/contain-rs/bit-vec,Apache-2.0 OR MIT,Alexis Beingessner bitflags,https://github.com/bitflags/bitflags,MIT OR Apache-2.0,The Rust Project Developers +block-buffer,https://github.com/RustCrypto/utils,MIT OR Apache-2.0,RustCrypto Developers +borrow-or-share,https://github.com/yescallop/borrow-or-share,MIT-0,Scallop Ye bumpalo,https://github.com/fitzgen/bumpalo,MIT OR Apache-2.0,Nick Fitzgerald +bytecount,https://github.com/llogiq/bytecount,Apache-2.0 OR MIT,"Andre Bogus , Joshua Landau " bytes,https://github.com/tokio-rs/bytes,MIT,"Carl Lerche , Sean McArthur " cap-primitives,https://github.com/bytecodealliance/cap-std,Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT,"Dan Gohman , Jakub Konka " cap-std,https://github.com/bytecodealliance/cap-std,Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT,"Dan Gohman , Jakub Konka " caps,https://github.com/lucab/caps-rs,MIT OR Apache-2.0,Luca Bruno cfg-if,https://github.com/rust-lang/cfg-if,MIT OR Apache-2.0,Alex Crichton chrono,https://github.com/chronotope/chrono,MIT OR Apache-2.0,The chrono Authors +chrono-tz,https://github.com/chronotope/chrono-tz,MIT OR Apache-2.0,The chrono-tz Authors clap,https://github.com/clap-rs/clap,MIT OR Apache-2.0,The clap Authors clap_builder,https://github.com/clap-rs/clap,MIT OR Apache-2.0,The clap_builder Authors clap_derive,https://github.com/clap-rs/clap,MIT OR Apache-2.0,The clap_derive Authors clap_lex,https://github.com/clap-rs/clap,MIT OR Apache-2.0,The clap_lex Authors +codespan-reporting,https://github.com/brendanzab/codespan,Apache-2.0,Brendan Zabarauskas colorchoice,https://github.com/rust-cli/anstyle,MIT OR Apache-2.0,The colorchoice Authors cookie,https://github.com/SergioBenitez/cookie-rs,MIT OR Apache-2.0,"Sergio Benitez , Alex Crichton " cookie_store,https://github.com/pfernie/cookie_store,MIT OR Apache-2.0,Patrick Fernie core-foundation-sys,https://github.com/servo/core-foundation-rs,MIT OR Apache-2.0,The Servo Project Developers +cpufeatures,https://github.com/RustCrypto/utils,MIT OR Apache-2.0,RustCrypto Developers crc32fast,https://github.com/srijs/rust-crc32fast,MIT OR Apache-2.0,"Sam Rijs , Alex Crichton " crossbeam,https://github.com/crossbeam-rs/crossbeam,MIT OR Apache-2.0,The crossbeam Authors crossbeam-channel,https://github.com/crossbeam-rs/crossbeam,MIT OR Apache-2.0,The crossbeam-channel Authors @@ -38,32 +50,43 @@ crossbeam-deque,https://github.com/crossbeam-rs/crossbeam,MIT OR Apache-2.0,The crossbeam-epoch,https://github.com/crossbeam-rs/crossbeam,MIT OR Apache-2.0,The crossbeam-epoch Authors crossbeam-queue,https://github.com/crossbeam-rs/crossbeam,MIT OR Apache-2.0,The crossbeam-queue Authors crossbeam-utils,https://github.com/crossbeam-rs/crossbeam,MIT OR Apache-2.0,The crossbeam-utils Authors +crypto-common,https://github.com/RustCrypto/traits,MIT OR Apache-2.0,RustCrypto Developers +data-encoding,https://github.com/ia0/data-encoding,MIT,Julien Cretin deranged,https://github.com/jhpratt/deranged,MIT OR Apache-2.0,Jacob Pratt +digest,https://github.com/RustCrypto/traits,MIT OR Apache-2.0,RustCrypto Developers displaydoc,https://github.com/yaahc/displaydoc,MIT OR Apache-2.0,Jane Lusby document-features,https://github.com/slint-ui/document-features,MIT OR Apache-2.0,Slint Developers -either,https://github.com/rayon-rs/either,MIT OR Apache-2.0,bluss +dyn-clone,https://github.com/dtolnay/dyn-clone,MIT OR Apache-2.0,David Tolnay +either,https://github.com/rayon-rs/either,MIT OR Apache-2.0,The either Authors elf,https://github.com/cole14/rust-elf,MIT OR Apache-2.0,Christopher Cole +email_address,https://github.com/johnstonskj/rust-email_address,MIT,Simon Johnston +ena,https://github.com/rust-lang/ena,MIT OR Apache-2.0,Niko Matsakis encoding_rs,https://github.com/hsivonen/encoding_rs,(Apache-2.0 OR MIT) AND BSD-3-Clause,Henri Sivonen equivalent,https://github.com/indexmap-rs/equivalent,Apache-2.0 OR MIT,The equivalent Authors errno,https://github.com/lambda-fairy/rust-errno,MIT OR Apache-2.0,"Chris Wong , Dan Gohman " +fancy-regex,https://github.com/fancy-regex/fancy-regex,MIT,"Raph Levien , Robin Stocker , Keith Hall " fastrand,https://github.com/smol-rs/fastrand,Apache-2.0 OR MIT,Stjepan Glavina find-msvc-tools,https://github.com/rust-lang/cc-rs,MIT OR Apache-2.0,The find-msvc-tools Authors fixedbitset,https://github.com/petgraph/fixedbitset,MIT OR Apache-2.0,bluss flate2,https://github.com/rust-lang/flate2-rs,MIT OR Apache-2.0,"Alex Crichton , Josh Triplett " +fluent-uri,https://github.com/yescallop/fluent-uri-rs,MIT,Scallop Ye fnv,https://github.com/servo/rust-fnv,Apache-2.0 OR MIT,Alex Crichton foldhash,https://github.com/orlp/foldhash,Zlib,Orson Peters form_urlencoded,https://github.com/servo/rust-url,MIT OR Apache-2.0,The rust-url developers +fraction,https://github.com/dnsl48/fraction,MIT OR Apache-2.0,dnsl48 fs-set-times,https://github.com/bytecodealliance/fs-set-times,Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT,Dan Gohman futures-channel,https://github.com/rust-lang/futures-rs,MIT OR Apache-2.0,The futures-channel Authors futures-core,https://github.com/rust-lang/futures-rs,MIT OR Apache-2.0,The futures-core Authors futures-sink,https://github.com/rust-lang/futures-rs,MIT OR Apache-2.0,The futures-sink Authors futures-task,https://github.com/rust-lang/futures-rs,MIT OR Apache-2.0,The futures-task Authors futures-util,https://github.com/rust-lang/futures-rs,MIT OR Apache-2.0,The futures-util Authors +generic-array,https://github.com/fizyk20/generic-array,MIT,"Bartłomiej Kamiński , Aaron Trent " getrandom,https://github.com/rust-random/getrandom,MIT OR Apache-2.0,The Rand Project Developers glob-match,https://github.com/lmapii/globmatch,MIT,Devon Govett h2,https://github.com/hyperium/h2,MIT,"Carl Lerche , Sean McArthur " hashbrown,https://github.com/rust-lang/hashbrown,MIT OR Apache-2.0,Amanieu d'Antras -hashlink,https://github.com/kyren/hashlink,MIT OR Apache-2.0,The hashlink Authors +hashbrown,https://github.com/rust-lang/hashbrown,MIT OR Apache-2.0,The hashbrown Authors +hashlink,https://github.com/djc/hashlink,MIT OR Apache-2.0,The hashlink Authors heck,https://github.com/withoutboats/heck,MIT OR Apache-2.0,The heck Authors hostname,https://github.com/djc/hostname,MIT,The hostname Authors http,https://github.com/hyperium/http,MIT OR Apache-2.0,"Alex Crichton , Carl Lerche , Sean McArthur " @@ -83,10 +106,10 @@ icu_normalizer_data,https://github.com/unicode-org/icu4x,Unicode-3.0,The ICU4X P icu_properties,https://github.com/unicode-org/icu4x,Unicode-3.0,The ICU4X Project Developers icu_properties_data,https://github.com/unicode-org/icu4x,Unicode-3.0,The ICU4X Project Developers icu_provider,https://github.com/unicode-org/icu4x,Unicode-3.0,The ICU4X Project Developers -id-arena,https://github.com/fitzgen/id-arena,MIT OR Apache-2.0,"Nick Fitzgerald , Aleksey Kladov " idna,https://github.com/servo/rust-url,MIT OR Apache-2.0,The rust-url developers idna_adapter,https://github.com/hsivonen/idna_adapter,Apache-2.0 OR MIT,The rust-url developers indexmap,https://github.com/indexmap-rs/indexmap,Apache-2.0 OR MIT,The indexmap Authors +indoc,https://github.com/dtolnay/indoc,MIT OR Apache-2.0,David Tolnay io-extras,https://github.com/sunfishcode/io-extras,Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT,Dan Gohman io-lifetimes,https://github.com/sunfishcode/io-lifetimes,Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT,Dan Gohman ipnet,https://github.com/krisprice/ipnet,MIT OR Apache-2.0,Kris Price @@ -94,15 +117,19 @@ is_terminal_polyfill,https://github.com/polyfill-rs/is_terminal_polyfill,MIT OR itertools,https://github.com/rust-itertools/itertools,MIT OR Apache-2.0,bluss itoa,https://github.com/dtolnay/itoa,MIT OR Apache-2.0,David Tolnay js-sys,https://github.com/wasm-bindgen/wasm-bindgen/tree/master/crates/js-sys,MIT OR Apache-2.0,The wasm-bindgen Developers +jsonschema,https://github.com/Stranger6667/jsonschema,MIT,Dmitry Dygalo jwalk,https://github.com/byron/jwalk,MIT,"Jesse Grosjean , Sebastian Thiel " -leb128fmt,https://github.com/bluk/leb128fmt,MIT OR Apache-2.0,Bryant Luk -libc,https://github.com/rust-lang/libc,MIT OR Apache-2.0,The libc Authors +keccak,https://github.com/RustCrypto/sponges/tree/master/keccak,Apache-2.0 OR MIT,RustCrypto Developers +lalrpop-util,https://github.com/lalrpop/lalrpop,Apache-2.0 OR MIT,Niko Matsakis +lazy_static,https://github.com/rust-lang-nursery/lazy-static.rs,MIT OR Apache-2.0,Marvin Löbel +libc,https://github.com/rust-lang/libc,MIT OR Apache-2.0,The Rust Project Developers linux-raw-sys,https://github.com/sunfishcode/linux-raw-sys,Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT,Dan Gohman litemap,https://github.com/unicode-org/icu4x,Unicode-3.0,The ICU4X Project Developers litrs,https://github.com/LukasKalbertodt/litrs,MIT OR Apache-2.0,Lukas Kalbertodt lock_api,https://github.com/Amanieu/parking_lot,MIT OR Apache-2.0,Amanieu d'Antras log,https://github.com/rust-lang/log,MIT OR Apache-2.0,The Rust Project Developers lru,https://github.com/jeromefroe/lru-rs,MIT,Jerome Froelich +lz4_flex,https://github.com/pseitz/lz4_flex,MIT,"Pascal Seitz , Arthur Silva , ticki " matchit,https://github.com/ibraheemdev/matchit,MIT AND BSD-3-Clause,Ibraheem Ahmed maybe-owned,https://github.com/rustonaut/maybe-owned,MIT OR Apache-2.0,"Philipp korber , darkstalker , daboross , Zac Burns (That3Percent) " memchr,https://github.com/BurntSushi/memchr,Unlicense OR MIT,"Andrew Gallant , bluss" @@ -110,13 +137,24 @@ mime,https://github.com/hyperium/mime,MIT OR Apache-2.0,Sean McArthur , oyvindln , Rich Geldreich richgel99@gmail.com" mio,https://github.com/tokio-rs/mio,MIT,"Carl Lerche , Thomas de Zeeuw , Tokio Contributors " multimap,https://github.com/havarnov/multimap,MIT OR Apache-2.0,Håvar Nøvik +new_debug_unreachable,https://github.com/mbrubeck/rust-debug-unreachable,MIT,"Matt Brubeck , Jonathan Reem " nix,https://github.com/nix-rust/nix,MIT,The nix Authors nom,https://github.com/rust-bakery/nom,MIT,contact@geoffroycouprie.com +nom-language,https://github.com/rust-bakery/nom,MIT,contact@geoffroycouprie.com normalize-path,https://github.com/cargo-bins/cargo-binstall,Apache-2.0 OR MIT,Jiahao XU +num,https://github.com/rust-num/num,MIT OR Apache-2.0,The Rust Project Developers +num-bigint,https://github.com/rust-num/num-bigint,MIT OR Apache-2.0,The Rust Project Developers +num-cmp,https://github.com/lifthrasiir/num-cmp,MIT OR Apache-2.0,Kang Seonghoon +num-complex,https://github.com/rust-num/num-complex,MIT OR Apache-2.0,The Rust Project Developers num-conv,https://github.com/jhpratt/num-conv,MIT OR Apache-2.0,Jacob Pratt +num-integer,https://github.com/rust-num/num-integer,MIT OR Apache-2.0,The Rust Project Developers +num-iter,https://github.com/rust-num/num-iter,MIT OR Apache-2.0,The Rust Project Developers +num-rational,https://github.com/rust-num/num-rational,MIT OR Apache-2.0,The Rust Project Developers num-traits,https://github.com/rust-num/num-traits,MIT OR Apache-2.0,The Rust Project Developers once_cell,https://github.com/matklad/once_cell,MIT OR Apache-2.0,Aleksey Kladov once_cell_polyfill,https://github.com/polyfill-rs/once_cell_polyfill,MIT OR Apache-2.0,The once_cell_polyfill Authors +ordered-float,https://github.com/reem/rust-ordered-float,MIT,"Jonathan Reem , Matt Brubeck " +outref,https://github.com/Nugine/outref,MIT,The outref Authors parking_lot,https://github.com/Amanieu/parking_lot,MIT OR Apache-2.0,Amanieu d'Antras parking_lot_core,https://github.com/Amanieu/parking_lot,MIT OR Apache-2.0,Amanieu d'Antras percent-encoding,https://github.com/servo/rust-url,MIT OR Apache-2.0,The rust-url developers @@ -130,6 +168,7 @@ pin-project-internal,https://github.com/taiki-e/pin-project,Apache-2.0 OR MIT,Th pin-project-lite,https://github.com/taiki-e/pin-project-lite,Apache-2.0 OR MIT,The pin-project-lite Authors potential_utf,https://github.com/unicode-org/icu4x,Unicode-3.0,The ICU4X Project Developers powerfmt,https://github.com/jhpratt/powerfmt,MIT OR Apache-2.0,Jacob Pratt +precomputed-hash,https://github.com/emilio/precomputed-hash,MIT,Emilio Cobos Álvarez prettyplease,https://github.com/dtolnay/prettyplease,MIT OR Apache-2.0,David Tolnay proc-macro2,https://github.com/dtolnay/proc-macro2,MIT OR Apache-2.0,"David Tolnay , Alex Crichton " prost,https://github.com/tokio-rs/prost,Apache-2.0,"Dan Burkert , Lucio Franco , Casper Meijn , Tokio Contributors " @@ -145,36 +184,49 @@ rawzip,https://github.com/nickbabcock/rawzip,MIT,Nick Babcock +ref-cast,https://github.com/dtolnay/ref-cast,MIT OR Apache-2.0,David Tolnay +ref-cast-impl,https://github.com/dtolnay/ref-cast,MIT OR Apache-2.0,David Tolnay +referencing,https://github.com/Stranger6667/jsonschema,MIT,Dmitry Dygalo regex,https://github.com/rust-lang/regex,MIT OR Apache-2.0,"The Rust Project Developers, Andrew Gallant " regex-automata,https://github.com/rust-lang/regex,MIT OR Apache-2.0,"The Rust Project Developers, Andrew Gallant " +regex-filtered,https://github.com/ua-parser/uap-rust,BSD-3-Clause,The regex-filtered Authors regex-syntax,https://github.com/rust-lang/regex,MIT OR Apache-2.0,"The Rust Project Developers, Andrew Gallant " rmp,https://github.com/3Hren/msgpack-rust,MIT,"Evgeny Safronov , Kornel " rmp-serde,https://github.com/3Hren/msgpack-rust,MIT,Evgeny Safronov rustix,https://github.com/bytecodealliance/rustix,Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT,"Dan Gohman , Jakub Konka " rustix-linux-procfs,https://github.com/sunfishcode/rustix-linux-procfs,Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT,Dan Gohman +rustversion,https://github.com/dtolnay/rustversion,MIT OR Apache-2.0,David Tolnay ryu,https://github.com/dtolnay/ryu,Apache-2.0 OR BSL-1.0,David Tolnay same-file,https://github.com/BurntSushi/same-file,Unlicense OR MIT,Andrew Gallant saphyr-parser,https://github.com/saphyr-rs/saphyr,MIT OR Apache-2.0,"Ethiraric , David Aguilar , Yuheng Chen " scopeguard,https://github.com/bluss/scopeguard,MIT OR Apache-2.0,bluss -semver,https://github.com/dtolnay/semver,MIT OR Apache-2.0,David Tolnay serde,https://github.com/serde-rs/serde,MIT OR Apache-2.0,"Erick Tryzelaar , David Tolnay " serde_core,https://github.com/serde-rs/serde,MIT OR Apache-2.0,"Erick Tryzelaar , David Tolnay " serde_derive,https://github.com/serde-rs/serde,MIT OR Apache-2.0,"Erick Tryzelaar , David Tolnay " serde_json,https://github.com/serde-rs/json,MIT OR Apache-2.0,"Erick Tryzelaar , David Tolnay " serde_yaml,https://github.com/dtolnay/serde-yaml,MIT OR Apache-2.0,David Tolnay +serde_yaml_ng,https://github.com/acatton/serde-yaml-ng,MIT,Antoine Catton +sha2,https://github.com/RustCrypto/hashes,MIT OR Apache-2.0,RustCrypto Developers +sha3,https://github.com/RustCrypto/hashes,MIT OR Apache-2.0,RustCrypto Developers shlex,https://github.com/comex/rust-shlex,MIT OR Apache-2.0,"comex , Fenhl , Adrian Taylor , Alex Touchet , Daniel Parks , Garrett Berg " signal-hook-registry,https://github.com/vorner/signal-hook,MIT OR Apache-2.0,"Michal 'vorner' Vaner , Masaki Hara " simd-adler32,https://github.com/mcountryman/simd-adler32,MIT,Marvin Countryman +simdutf8,https://github.com/rusticstuff/simdutf8,MIT OR Apache-2.0,Hans Kratz siphasher,https://github.com/jedisct1/rust-siphash,MIT OR Apache-2.0,Frank Denis slab,https://github.com/tokio-rs/slab,MIT,Carl Lerche smallvec,https://github.com/servo/rust-smallvec,MIT OR Apache-2.0,The Servo Project Developers +snafu,https://github.com/shepmaster/snafu,MIT OR Apache-2.0,Jake Goulding +snafu-derive,https://github.com/shepmaster/snafu,MIT OR Apache-2.0,Jake Goulding socket2,https://github.com/rust-lang/socket2,MIT OR Apache-2.0,"Alex Crichton , Thomas de Zeeuw " stable_deref_trait,https://github.com/storyyeller/stable_deref_trait,MIT OR Apache-2.0,Robert Grosse +string_cache,https://github.com/servo/string-cache,MIT OR Apache-2.0,The Servo Project Developers strsim,https://github.com/rapidfuzz/strsim-rs,MIT,"Danny Guo , maxbachmann " syn,https://github.com/dtolnay/syn,MIT OR Apache-2.0,David Tolnay sync_wrapper,https://github.com/Actyx/sync_wrapper,Apache-2.0,Actyx AG synstructure,https://github.com/mystor/synstructure,MIT,Nika Layzell tempfile,https://github.com/Stebalien/tempfile,MIT OR Apache-2.0,"Steven Allen , The Rust Project Developers, Ashley Mannix , Jason White " +term,https://github.com/Stebalien/term,MIT OR Apache-2.0,"The Rust Project Developers, Steven Allen" +termcolor,https://github.com/BurntSushi/termcolor,Unlicense OR MIT,Andrew Gallant thiserror,https://github.com/dtolnay/thiserror,MIT OR Apache-2.0,David Tolnay thiserror-impl,https://github.com/dtolnay/thiserror,MIT OR Apache-2.0,David Tolnay time,https://github.com/time-rs/time,MIT OR Apache-2.0,"Jacob Pratt , Time contributors" @@ -196,9 +248,14 @@ tracing,https://github.com/tokio-rs/tracing,MIT,"Eliza Weisman , Eliza Weisman , David Barsky " tracing-core,https://github.com/tokio-rs/tracing,MIT,Tokio Contributors try-lock,https://github.com/seanmonstar/try-lock,MIT,Sean McArthur +twox-hash,https://github.com/shepmaster/twox-hash,MIT,Jake Goulding typed-path,https://github.com/chipsenkbeil/typed-path,MIT OR Apache-2.0,Chip Senkbeil +typenum,https://github.com/paholg/typenum,MIT OR Apache-2.0,The typenum Authors unicase,https://github.com/seanmonstar/unicase,MIT OR Apache-2.0,Sean McArthur +unicode-general-category,https://github.com/yeslogic/unicode-general-category,Apache-2.0,YesLogic Pty. Ltd. unicode-ident,https://github.com/dtolnay/unicode-ident,(MIT OR Apache-2.0) AND Unicode-3.0,David Tolnay +unicode-segmentation,https://github.com/unicode-rs/unicode-segmentation,MIT OR Apache-2.0,"kwantam , Manish Goregaokar " +unicode-width,https://github.com/unicode-rs/unicode-width,MIT OR Apache-2.0,"kwantam , Manish Goregaokar " unicode-xid,https://github.com/unicode-rs/unicode-xid,MIT OR Apache-2.0,"erick.tryzelaar , kwantam , Manish Goregaokar " unsafe-libyaml,https://github.com/dtolnay/unsafe-libyaml,MIT,David Tolnay ureq,https://github.com/algesten/ureq,MIT OR Apache-2.0,"Martin Algesten , Jacob Hoffman-Andrews " @@ -208,19 +265,18 @@ utf8-zero,https://github.com/algesten/utf8-zero,MIT OR Apache-2.0,"Simon Sapin < utf8_iter,https://github.com/hsivonen/utf8_iter,Apache-2.0 OR MIT,Henri Sivonen utf8parse,https://github.com/alacritty/vte,Apache-2.0 OR MIT,"Joe Wilm , Christian Duerr " uuid,https://github.com/uuid-rs/uuid,Apache-2.0 OR MIT,"Ashley Mannix, Dylan DPC, Hunar Roop Kahlon" +uuid-simd,https://github.com/Nugine/simd,MIT,The uuid-simd Authors uzers,https://github.com/rustadopt/uzers-rs,MIT,"Sandro-Alessio Gierens , Benjamin Sago " +vrl,https://github.com/vectordotdev/vrl,MPL-2.0,Vector Contributors +vsimd,https://github.com/Nugine/simd,MIT,The vsimd Authors walkdir,https://github.com/BurntSushi/walkdir,Unlicense OR MIT,Andrew Gallant want,https://github.com/seanmonstar/want,MIT,Sean McArthur wasi,https://github.com/bytecodealliance/wasi,Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT,The Cranelift Project Developers wasip2,https://github.com/bytecodealliance/wasi-rs,Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT,The wasip2 Authors -wasip3,https://github.com/bytecodealliance/wasi-rs,Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT,The wasip3 Authors wasm-bindgen,https://github.com/wasm-bindgen/wasm-bindgen,MIT OR Apache-2.0,The wasm-bindgen Developers wasm-bindgen-macro,https://github.com/wasm-bindgen/wasm-bindgen/tree/master/crates/macro,MIT OR Apache-2.0,The wasm-bindgen Developers wasm-bindgen-macro-support,https://github.com/wasm-bindgen/wasm-bindgen/tree/master/crates/macro-support,MIT OR Apache-2.0,The wasm-bindgen Developers wasm-bindgen-shared,https://github.com/wasm-bindgen/wasm-bindgen/tree/master/crates/shared,MIT OR Apache-2.0,The wasm-bindgen Developers -wasm-encoder,https://github.com/bytecodealliance/wasm-tools/tree/main/crates/wasm-encoder,Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT,Nick Fitzgerald -wasm-metadata,https://github.com/bytecodealliance/wasm-tools/tree/main/crates/wasm-metadata,Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT,The wasm-metadata Authors -wasmparser,https://github.com/bytecodealliance/wasm-tools/tree/main/crates/wasmparser,Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT,Yury Delendik winapi-util,https://github.com/BurntSushi/winapi-util,Unlicense OR MIT,Andrew Gallant windows-core,https://github.com/microsoft/windows-rs,MIT OR Apache-2.0,The windows-core Authors windows-implement,https://github.com/microsoft/windows-rs,MIT OR Apache-2.0,The windows-implement Authors @@ -232,27 +288,33 @@ windows-strings,https://github.com/microsoft/windows-rs,MIT OR Apache-2.0,The wi windows-sys,https://github.com/microsoft/windows-rs,MIT OR Apache-2.0,Microsoft windows-sys,https://github.com/microsoft/windows-rs,MIT OR Apache-2.0,The windows-sys Authors windows-targets,https://github.com/microsoft/windows-rs,MIT OR Apache-2.0,Microsoft +windows-targets,https://github.com/microsoft/windows-rs,MIT OR Apache-2.0,The windows-targets Authors windows_aarch64_gnullvm,https://github.com/microsoft/windows-rs,MIT OR Apache-2.0,Microsoft +windows_aarch64_gnullvm,https://github.com/microsoft/windows-rs,MIT OR Apache-2.0,The windows_aarch64_gnullvm Authors windows_aarch64_msvc,https://github.com/microsoft/windows-rs,MIT OR Apache-2.0,Microsoft +windows_aarch64_msvc,https://github.com/microsoft/windows-rs,MIT OR Apache-2.0,The windows_aarch64_msvc Authors windows_i686_gnu,https://github.com/microsoft/windows-rs,MIT OR Apache-2.0,Microsoft +windows_i686_gnu,https://github.com/microsoft/windows-rs,MIT OR Apache-2.0,The windows_i686_gnu Authors windows_i686_gnullvm,https://github.com/microsoft/windows-rs,MIT OR Apache-2.0,Microsoft +windows_i686_gnullvm,https://github.com/microsoft/windows-rs,MIT OR Apache-2.0,The windows_i686_gnullvm Authors windows_i686_msvc,https://github.com/microsoft/windows-rs,MIT OR Apache-2.0,Microsoft +windows_i686_msvc,https://github.com/microsoft/windows-rs,MIT OR Apache-2.0,The windows_i686_msvc Authors windows_x86_64_gnu,https://github.com/microsoft/windows-rs,MIT OR Apache-2.0,Microsoft +windows_x86_64_gnu,https://github.com/microsoft/windows-rs,MIT OR Apache-2.0,The windows_x86_64_gnu Authors windows_x86_64_gnullvm,https://github.com/microsoft/windows-rs,MIT OR Apache-2.0,Microsoft +windows_x86_64_gnullvm,https://github.com/microsoft/windows-rs,MIT OR Apache-2.0,The windows_x86_64_gnullvm Authors windows_x86_64_msvc,https://github.com/microsoft/windows-rs,MIT OR Apache-2.0,Microsoft +windows_x86_64_msvc,https://github.com/microsoft/windows-rs,MIT OR Apache-2.0,The windows_x86_64_msvc Authors winx,https://github.com/sunfishcode/winx,Apache-2.0 WITH LLVM-exception,"Jakub Konka , Dan Gohman " wit-bindgen,https://github.com/bytecodealliance/wit-bindgen,Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT,Alex Crichton -wit-bindgen-core,https://github.com/bytecodealliance/wit-bindgen,Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT,Alex Crichton -wit-bindgen-rust,https://github.com/bytecodealliance/wit-bindgen,Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT,Alex Crichton -wit-bindgen-rust-macro,https://github.com/bytecodealliance/wit-bindgen,Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT,Alex Crichton -wit-component,https://github.com/bytecodealliance/wasm-tools/tree/main/crates/wit-component,Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT,Peter Huene -wit-parser,https://github.com/bytecodealliance/wasm-tools/tree/main/crates/wit-parser,Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT,Alex Crichton writeable,https://github.com/unicode-org/icu4x,Unicode-3.0,The ICU4X Project Developers xml,https://github.com/kornelski/xml-rs,MIT,"Vladimir Matveev , Kornel (https://github.com/kornelski)" xml-rs,https://github.com/netvl/xml-rs,MIT,"Vladimir Matveev , Kornel (https://github.com/kornelski)" yoke,https://github.com/unicode-org/icu4x,Unicode-3.0,Manish Goregaokar yoke-derive,https://github.com/unicode-org/icu4x,Unicode-3.0,Manish Goregaokar -zerofrom,https://github.com/unicode-org/icu4x,Unicode-3.0,Manish Goregaokar +zerocopy,https://github.com/google/zerocopy,BSD-2-Clause OR Apache-2.0 OR MIT,"Joshua Liebow-Feeser , Jack Wrenn " +zerocopy-derive,https://github.com/google/zerocopy,BSD-2-Clause OR Apache-2.0 OR MIT,"Joshua Liebow-Feeser , Jack Wrenn " +zerofrom,https://github.com/unicode-org/icu4x,Unicode-3.0,The ICU4X Project Developers zerofrom-derive,https://github.com/unicode-org/icu4x,Unicode-3.0,Manish Goregaokar zerotrie,https://github.com/unicode-org/icu4x,Unicode-3.0,The ICU4X Project Developers zerovec,https://github.com/unicode-org/icu4x,Unicode-3.0,The ICU4X Project Developers diff --git a/rust/deny.toml b/rust/deny.toml index cc64ed8ac5a9..5c36deb39c88 100644 --- a/rust/deny.toml +++ b/rust/deny.toml @@ -20,7 +20,9 @@ allow = [ "BSD-2-Clause", "BSD-3-Clause", "BSL-1.0", + "CC0-1.0", "MIT", + "MIT-0", "MPL-2.0", "Unicode-3.0", "Zlib", diff --git a/tasks/agent.py b/tasks/agent.py index 45f9b84e466d..178b224ba280 100644 --- a/tasks/agent.py +++ b/tasks/agent.py @@ -24,13 +24,14 @@ CORE_AGENT_WINDOWS_IT_CONF, containerized_integration_tests, ) +from tasks.libs.build.bazel import bazel from tasks.libs.common.constants import CONTAINER_PLATFORM_MAPPING from tasks.libs.common.go import go_build from tasks.libs.common.utils import ( REPO_PATH, - _resolve_target_platform, bin_name, get_build_flags, + get_repo_root, get_version, gitlab_section, ) @@ -84,9 +85,8 @@ def build( dda inv agent.build --build-exclude=systemd """ flavor = AgentFlavor[flavor] - target_platform = _resolve_target_platform() - if not exclude_rtloader and not flavor.is_iot() and target_platform != "aix": + if not exclude_rtloader and not flavor.is_iot() and sys.platform != "aix": # On AIX, rtloader is built natively in advance as a prerequisite. with gitlab_section("Install embedded rtloader", collapsed=True): if enable_bazel: @@ -97,32 +97,15 @@ def build( rtloader_make(ctx, install_prefix=embedded_path, cmake_options=cmake_options) rtloader_install(ctx) - if flavor.is_iot(): - # Iot mode overrides whatever passed through `--build-exclude` and `--build-include` - build_tags = get_default_build_tags(build="agent", flavor=flavor) - else: - build_tags = compute_build_tags_for_flavor( - build="agent", - flavor=flavor, - build_include=build_include, - build_exclude=build_exclude, - platform=target_platform, - ) - - if not glibc: - build_tags = list(set(build_tags).difference({"nvml"})) - ldflags, gcflags, env = get_build_flags( ctx, install_path=install_path, embedded_path=embedded_path, rtloader_root=rtloader_root, python_home_3=python_home_3, - include_python="python" in build_tags, - platform=target_platform, ) - if target_platform == 'win32': + if sys.platform == 'win32' or os.getenv("GOOS") == "windows": # Important for x-compiling env["CGO_ENABLED"] = "1" @@ -138,6 +121,34 @@ def build( out="cmd/agent/rsrc.syso", ) + if flavor.is_iot(): + # Iot mode overrides whatever passed through `--build-exclude` and `--build-include` + build_tags = get_default_build_tags(build="agent", flavor=flavor) + else: + build_tags = compute_build_tags_for_flavor( + build="agent", + flavor=flavor, + build_include=build_include, + build_exclude=build_exclude, + ) + + if not glibc: + build_tags = list(set(build_tags).difference({"nvml"})) + + if "vrl" in build_tags: + # cgo needs to find the vrl_filter static lib at link time on every platform (Linux, + # macOS and Windows all hit "library 'vrl_filter' not found" otherwise); nothing else + # builds it, so install it here (mirrors tasks/system_probe.py's + # RUST_STATIC_LIBS/build_rust_binaries for the sibling pkg/discovery/module/rust cgo bridge). + # An absolute destdir is required: a relative one is resolved by the installer against + # bazel's own BUILD_WORKSPACE_DIRECTORY, which can diverge from this process's actual + # repo root under omnibus (which builds from its own copied source tree), silently + # installing the .a into the wrong tree and leaving the real build's linker unable to + # find it. + with gitlab_section("Install VRL Rust static library", collapsed=True): + vrl_rust_dir = get_repo_root() / "pkg" / "logs" / "vrl" / "rust" + bazel(ctx, "run", "--", "@//pkg/logs/vrl/rust:install_libs", f"--destdir={vrl_rust_dir}") + if not agent_bin: agent_bin = os.path.join(BIN_PATH, bin_name("agent")) @@ -452,19 +463,6 @@ def hacky_dev_image_build( f'perl -0777 -pe \'s|{extracted_python_dir}(/opt/datadog-agent/embedded/lib/python\\d+\\.\\d+/../..)|substr $1."\\0"x length$&,0,length$&|e or die "pattern not found"\' -i dev/lib/libdatadog-agent-three.so' ) - copy_checks_d = "" - copy_checks_d_final = "" - if sys.platform.startswith("linux"): - from tasks.rust_shared_checks import build as rust_shared_checks_build - - checks_d_staging = "bin/agent/dist/checks.d" - rust_shared_checks_build(ctx, checks_d_dir=checks_d_staging) - if os.path.isdir(checks_d_staging) and any( - f.startswith("libdatadog-agent-") for f in os.listdir(checks_d_staging) - ): - copy_checks_d = f"COPY {checks_d_staging} /etc/datadog-agent/checks.d\n" - copy_checks_d_final = "COPY --from=bin /etc/datadog-agent/checks.d /etc/datadog-agent/checks.d\n" - copy_extra_agents = "" if security_agent: from tasks.security_agent import build as security_agent_build @@ -544,7 +542,6 @@ def hacky_dev_image_build( COPY bin/agent/agent /opt/datadog-agent/bin/agent/agent COPY bin/agent/dist/conf.d /etc/datadog-agent/conf.d -{copy_checks_d} COPY dev/lib/libdatadog-agent-rtloader.so.0.1.0 /opt/datadog-agent/embedded/lib/libdatadog-agent-rtloader.so.0.1.0 COPY dev/lib/libdatadog-agent-three.so /opt/datadog-agent/embedded/lib/libdatadog-agent-three.so {copy_ebpf_assets} @@ -582,7 +579,6 @@ def hacky_dev_image_build( COPY --from=bin /opt/datadog-agent/embedded/lib/libdatadog-agent-rtloader.so.0.1.0 /opt/datadog-agent/embedded/lib/libdatadog-agent-rtloader.so.0.1.0 COPY --from=bin /opt/datadog-agent/embedded/lib/libdatadog-agent-three.so /opt/datadog-agent/embedded/lib/libdatadog-agent-three.so COPY --from=bin /etc/datadog-agent/conf.d /etc/datadog-agent/conf.d -{copy_checks_d_final} {copy_extra_agents} {copy_ebpf_assets_final} RUN agent completion bash > /usr/share/bash-completion/completions/agent diff --git a/tasks/build_tags.bzl b/tasks/build_tags.bzl index 3731fae968e7..9c4f45531e35 100644 --- a/tasks/build_tags.bzl +++ b/tasks/build_tags.bzl @@ -66,6 +66,7 @@ ALL_TAGS = set([ "systemprobechecks", # used to include system-probe based checks in the agent build "test", # used for unit-tests "trivy", + "vrl", # used by the logs agent to compile/evaluate VRL processing rules via a cgo bridge to a Rust static library "wmi", "zk", "zlib", @@ -125,6 +126,7 @@ AGENT_TAGS = set([ "systemd", "systemprobechecks", "trivy", + "vrl", # benchmark-branch-only: compiles the real VRL cgo engine instead of the stub, see ralph/alp-vrl-log-processing-updated "zk", "zlib", "zstd", diff --git a/tasks/gotest.py b/tasks/gotest.py index 19e1eefeebae..88e67a3cb205 100644 --- a/tasks/gotest.py +++ b/tasks/gotest.py @@ -685,7 +685,6 @@ def test( ctx, rtloader_root=rtloader_root, python_home_3=python_home_3, - include_python="python" in unit_tests_tags, ) # Use stdout if no profile is set @@ -930,7 +929,9 @@ def get_modified_packages(ctx, build_tags=None, lint=False) -> list[GoModule]: assert best_module_path, f"No module found for {modified_file}" module = get_module_by_path(best_module_path) - if not module.should_test(): + # get_module_by_path returns None for modules registered as `ignored` in modules.yml + # (e.g. vendored/local-patch copies of third-party code) — those are never tested. + if module is None or not module.should_test(): continue targets = module.lint_targets if lint else module.test_targets diff --git a/test/regression/cases/logs_filter_baseline/datadog-agent/conf.d/logs.d/conf.yaml b/test/regression/cases/logs_filter_baseline/datadog-agent/conf.d/logs.d/conf.yaml new file mode 100644 index 000000000000..418f8fe3e027 --- /dev/null +++ b/test/regression/cases/logs_filter_baseline/datadog-agent/conf.d/logs.d/conf.yaml @@ -0,0 +1,9 @@ +logs: + - type: file + path: "/smp-shared/*.log" + service: benchmark + source: benchmark + log_processing_rules: + - type: include_at_match + name: baseline_only + pattern: '"seed":\d*[02468],' diff --git a/test/regression/cases/logs_filter_baseline/datadog-agent/datadog.yaml b/test/regression/cases/logs_filter_baseline/datadog-agent/datadog.yaml new file mode 100644 index 000000000000..d5aa08d9135e --- /dev/null +++ b/test/regression/cases/logs_filter_baseline/datadog-agent/datadog.yaml @@ -0,0 +1,19 @@ +auth_token_file_path: /tmp/agent-auth-token + +# Disable cloud detection. This stops the Agent from poking around the +# execution environment & network. This is particularly important if the target +# has network access. +cloud_provider_metadata: [] + +dd_url: http://127.0.0.1:9091 + +logs_enabled: true +logs_config: + logs_dd_url: 127.0.0.1:9092 + logs_no_ssl: true + force_use_http: true + +process_config.process_dd_url: http://localhost:9093 + +telemetry.enabled: true +telemetry.checks: '*' diff --git a/test/regression/cases/logs_filter_baseline/experiment.yaml b/test/regression/cases/logs_filter_baseline/experiment.yaml new file mode 100644 index 000000000000..b7ffb0056de9 --- /dev/null +++ b/test/regression/cases/logs_filter_baseline/experiment.yaml @@ -0,0 +1,25 @@ +optimization_goal: cpu +erratic: true + +target: + name: datadog-agent + cpu_allotment: 4 + memory_allotment: 4GiB + + environment: + DD_API_KEY: a0000001 + DD_HOSTNAME: smp-logs-filter-baseline + + profiling_environment: + DD_INTERNAL_PROFILING_BLOCK_PROFILE_RATE: 10000 + DD_INTERNAL_PROFILING_CPU_DURATION: 1m + DD_INTERNAL_PROFILING_DELTA_PROFILES: true + DD_INTERNAL_PROFILING_ENABLED: true + DD_INTERNAL_PROFILING_ENABLE_GOROUTINE_STACKTRACES: true + DD_INTERNAL_PROFILING_MUTEX_PROFILE_FRACTION: 10 + DD_INTERNAL_PROFILING_PERIOD: 1m + DD_INTERNAL_PROFILING_UNIX_SOCKET: /smp-host/apm.socket + DD_PROFILING_EXECUTION_TRACE_ENABLED: true + DD_PROFILING_EXECUTION_TRACE_PERIOD: 1m + DD_PROFILING_WAIT_PROFILE: true + DD_APM_INTERNAL_PROFILING_ENABLED: true diff --git a/test/regression/cases/logs_filter_baseline/lading/lading.yaml b/test/regression/cases/logs_filter_baseline/lading/lading.yaml new file mode 100644 index 000000000000..613f94bafd97 --- /dev/null +++ b/test/regression/cases/logs_filter_baseline/lading/lading.yaml @@ -0,0 +1,29 @@ +generator: + - file_gen: + logrotate_fs: + seed: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, + 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131] + load_profile: + constant: 1MiB + concurrent_logs: 2 + maximum_bytes_per_log: 50MiB + total_rotations: 5 + max_depth: 0 + variant: json + maximum_prebuild_cache_size_bytes: 300MiB + mount_point: /smp-shared + +blackhole: + - http: + binding_addr: "127.0.0.1:9091" + - http: + binding_addr: "127.0.0.1:9092" + response_delay_millis: 75 + - http: + binding_addr: "127.0.0.1:9093" + +target_metrics: + - prometheus: # core agent telemetry + uri: "http://127.0.0.1:5000/telemetry" + tags: + sub_agent: "core" diff --git a/test/regression/cases/logs_filter_jq/datadog-agent/conf.d/logs.d/conf.yaml b/test/regression/cases/logs_filter_jq/datadog-agent/conf.d/logs.d/conf.yaml new file mode 100644 index 000000000000..966c42ae8a64 --- /dev/null +++ b/test/regression/cases/logs_filter_jq/datadog-agent/conf.d/logs.d/conf.yaml @@ -0,0 +1,9 @@ +logs: + - type: file + path: "/smp-shared/*.log" + service: benchmark + source: benchmark + log_processing_rules: + - type: include_at_jq_match + name: jq_only + pattern: select(.seed < 32768) diff --git a/test/regression/cases/logs_filter_jq/datadog-agent/datadog.yaml b/test/regression/cases/logs_filter_jq/datadog-agent/datadog.yaml new file mode 100644 index 000000000000..d5aa08d9135e --- /dev/null +++ b/test/regression/cases/logs_filter_jq/datadog-agent/datadog.yaml @@ -0,0 +1,19 @@ +auth_token_file_path: /tmp/agent-auth-token + +# Disable cloud detection. This stops the Agent from poking around the +# execution environment & network. This is particularly important if the target +# has network access. +cloud_provider_metadata: [] + +dd_url: http://127.0.0.1:9091 + +logs_enabled: true +logs_config: + logs_dd_url: 127.0.0.1:9092 + logs_no_ssl: true + force_use_http: true + +process_config.process_dd_url: http://localhost:9093 + +telemetry.enabled: true +telemetry.checks: '*' diff --git a/test/regression/cases/logs_filter_jq/experiment.yaml b/test/regression/cases/logs_filter_jq/experiment.yaml new file mode 100644 index 000000000000..d1773cd1d96e --- /dev/null +++ b/test/regression/cases/logs_filter_jq/experiment.yaml @@ -0,0 +1,25 @@ +optimization_goal: cpu +erratic: true + +target: + name: datadog-agent + cpu_allotment: 4 + memory_allotment: 4GiB + + environment: + DD_API_KEY: a0000001 + DD_HOSTNAME: smp-logs-filter-jq + + profiling_environment: + DD_INTERNAL_PROFILING_BLOCK_PROFILE_RATE: 10000 + DD_INTERNAL_PROFILING_CPU_DURATION: 1m + DD_INTERNAL_PROFILING_DELTA_PROFILES: true + DD_INTERNAL_PROFILING_ENABLED: true + DD_INTERNAL_PROFILING_ENABLE_GOROUTINE_STACKTRACES: true + DD_INTERNAL_PROFILING_MUTEX_PROFILE_FRACTION: 10 + DD_INTERNAL_PROFILING_PERIOD: 1m + DD_INTERNAL_PROFILING_UNIX_SOCKET: /smp-host/apm.socket + DD_PROFILING_EXECUTION_TRACE_ENABLED: true + DD_PROFILING_EXECUTION_TRACE_PERIOD: 1m + DD_PROFILING_WAIT_PROFILE: true + DD_APM_INTERNAL_PROFILING_ENABLED: true diff --git a/test/regression/cases/logs_filter_jq/lading/lading.yaml b/test/regression/cases/logs_filter_jq/lading/lading.yaml new file mode 100644 index 000000000000..613f94bafd97 --- /dev/null +++ b/test/regression/cases/logs_filter_jq/lading/lading.yaml @@ -0,0 +1,29 @@ +generator: + - file_gen: + logrotate_fs: + seed: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, + 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131] + load_profile: + constant: 1MiB + concurrent_logs: 2 + maximum_bytes_per_log: 50MiB + total_rotations: 5 + max_depth: 0 + variant: json + maximum_prebuild_cache_size_bytes: 300MiB + mount_point: /smp-shared + +blackhole: + - http: + binding_addr: "127.0.0.1:9091" + - http: + binding_addr: "127.0.0.1:9092" + response_delay_millis: 75 + - http: + binding_addr: "127.0.0.1:9093" + +target_metrics: + - prometheus: # core agent telemetry + uri: "http://127.0.0.1:5000/telemetry" + tags: + sub_agent: "core" diff --git a/test/regression/cases/logs_filter_ottl/datadog-agent/conf.d/logs.d/conf.yaml b/test/regression/cases/logs_filter_ottl/datadog-agent/conf.d/logs.d/conf.yaml new file mode 100644 index 000000000000..a9d6733226fd --- /dev/null +++ b/test/regression/cases/logs_filter_ottl/datadog-agent/conf.d/logs.d/conf.yaml @@ -0,0 +1,9 @@ +logs: + - type: file + path: "/smp-shared/*.log" + service: benchmark + source: benchmark + log_processing_rules: + - type: include_at_match_ottl + name: ottl_only + pattern: attributes["seed"] < 32768 diff --git a/test/regression/cases/logs_filter_ottl/datadog-agent/datadog.yaml b/test/regression/cases/logs_filter_ottl/datadog-agent/datadog.yaml new file mode 100644 index 000000000000..d5aa08d9135e --- /dev/null +++ b/test/regression/cases/logs_filter_ottl/datadog-agent/datadog.yaml @@ -0,0 +1,19 @@ +auth_token_file_path: /tmp/agent-auth-token + +# Disable cloud detection. This stops the Agent from poking around the +# execution environment & network. This is particularly important if the target +# has network access. +cloud_provider_metadata: [] + +dd_url: http://127.0.0.1:9091 + +logs_enabled: true +logs_config: + logs_dd_url: 127.0.0.1:9092 + logs_no_ssl: true + force_use_http: true + +process_config.process_dd_url: http://localhost:9093 + +telemetry.enabled: true +telemetry.checks: '*' diff --git a/test/regression/cases/logs_filter_ottl/experiment.yaml b/test/regression/cases/logs_filter_ottl/experiment.yaml new file mode 100644 index 000000000000..6faa4e63b6ec --- /dev/null +++ b/test/regression/cases/logs_filter_ottl/experiment.yaml @@ -0,0 +1,25 @@ +optimization_goal: cpu +erratic: true + +target: + name: datadog-agent + cpu_allotment: 4 + memory_allotment: 4GiB + + environment: + DD_API_KEY: a0000001 + DD_HOSTNAME: smp-logs-filter-ottl + + profiling_environment: + DD_INTERNAL_PROFILING_BLOCK_PROFILE_RATE: 10000 + DD_INTERNAL_PROFILING_CPU_DURATION: 1m + DD_INTERNAL_PROFILING_DELTA_PROFILES: true + DD_INTERNAL_PROFILING_ENABLED: true + DD_INTERNAL_PROFILING_ENABLE_GOROUTINE_STACKTRACES: true + DD_INTERNAL_PROFILING_MUTEX_PROFILE_FRACTION: 10 + DD_INTERNAL_PROFILING_PERIOD: 1m + DD_INTERNAL_PROFILING_UNIX_SOCKET: /smp-host/apm.socket + DD_PROFILING_EXECUTION_TRACE_ENABLED: true + DD_PROFILING_EXECUTION_TRACE_PERIOD: 1m + DD_PROFILING_WAIT_PROFILE: true + DD_APM_INTERNAL_PROFILING_ENABLED: true diff --git a/test/regression/cases/logs_filter_ottl/lading/lading.yaml b/test/regression/cases/logs_filter_ottl/lading/lading.yaml new file mode 100644 index 000000000000..613f94bafd97 --- /dev/null +++ b/test/regression/cases/logs_filter_ottl/lading/lading.yaml @@ -0,0 +1,29 @@ +generator: + - file_gen: + logrotate_fs: + seed: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, + 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131] + load_profile: + constant: 1MiB + concurrent_logs: 2 + maximum_bytes_per_log: 50MiB + total_rotations: 5 + max_depth: 0 + variant: json + maximum_prebuild_cache_size_bytes: 300MiB + mount_point: /smp-shared + +blackhole: + - http: + binding_addr: "127.0.0.1:9091" + - http: + binding_addr: "127.0.0.1:9092" + response_delay_millis: 75 + - http: + binding_addr: "127.0.0.1:9093" + +target_metrics: + - prometheus: # core agent telemetry + uri: "http://127.0.0.1:5000/telemetry" + tags: + sub_agent: "core" From 765b654f2b93b7937f6dcb31e956ee81416293c0 Mon Sep 17 00:00:00 2001 From: "ralph.hyacinthe" Date: Wed, 22 Jul 2026 13:33:55 -0400 Subject: [PATCH 2/4] chore: go-mod-tidy + gazelle regen after rebasing OTTL+jq+VRL benchmark onto main Regenerates go.mod/go.sum/Cargo.lock/MODULE.bazel.lock/deps/go.MODULE.bazel and BUILD.bazel files across the workspace via `dda inv modules.add-all-replace` + `dda inv tidy`, to reconcile the two new local modules (otel-patches/coreinternal, pkg/logs/vrl) and the fastjq/ottl/vrl dependencies with the current state of main. internal/qbranch/anomalydetection-testbench/go.mod needed a hand-added replace for pkg/logs/vrl since `modules.add-all-replace` intentionally skips internal/* modules (tasks/modules.py). Co-Authored-By: Claude Sonnet 5 --- Cargo.lock | 877 ++++++++++++++++-- MODULE.bazel.lock | 116 ++- comp/anomalydetection/observer/def/go.mod | 2 + comp/anomalydetection/recorder/def/go.mod | 2 + .../severityevents/def/go.mod | 2 + comp/api/api/def/go.mod | 2 + comp/core/agenttelemetry/def/go.mod | 2 + comp/core/agenttelemetry/fx/go.mod | 38 +- comp/core/agenttelemetry/fx/go.sum | 170 ++++ comp/core/agenttelemetry/impl/go.mod | 38 +- comp/core/agenttelemetry/impl/go.sum | 170 ++++ comp/core/config/go.mod | 2 + comp/core/configstreamconsumer/def/go.mod | 2 + comp/core/configsync/go.mod | 2 + .../delegatedauth/api/cloudauth/aws/go.mod | 2 + comp/core/delegatedauth/go.mod | 2 + comp/core/flare/builder/go.mod | 2 + comp/core/flare/types/go.mod | 2 + .../hostname/hostnameinterface/def/go.mod | 2 + comp/core/hostname/hostnameinterface/go.mod | 2 + .../hostname/hostnameinterface/mock/go.mod | 2 + comp/core/ipc/def/go.mod | 2 + comp/core/ipc/httphelpers/go.mod | 2 + comp/core/ipc/impl/go.mod | 2 + comp/core/ipc/mock/go.mod | 2 + comp/core/log/def/go.mod | 2 + comp/core/log/fx/go.mod | 2 + comp/core/log/impl-trace/go.mod | 2 + comp/core/log/impl/go.mod | 2 + comp/core/log/mock/go.mod | 2 + comp/core/secrets/def/go.mod | 2 + comp/core/secrets/fx/go.mod | 2 + comp/core/secrets/impl/go.mod | 2 + comp/core/secrets/mock/go.mod | 2 + comp/core/secrets/noop-impl/go.mod | 2 + comp/core/secrets/utils/go.mod | 2 + comp/core/status/go.mod | 2 + comp/core/status/statusimpl/go.mod | 2 + comp/core/tagger/def/go.mod | 2 + comp/core/tagger/fx-remote/go.mod | 2 + comp/core/tagger/generic_store/go.mod | 2 + comp/core/tagger/impl-remote/go.mod | 2 + comp/core/tagger/origindetection/go.mod | 2 + comp/core/tagger/subscriber/go.mod | 2 + comp/core/tagger/tags/go.mod | 2 + comp/core/tagger/telemetry/go.mod | 2 + comp/core/tagger/types/go.mod | 2 + comp/core/tagger/utils/go.mod | 2 + comp/core/telemetry/go.mod | 2 + comp/def/go.mod | 2 + comp/forwarder/defaultforwarder/go.mod | 2 + .../orchestrator/orchestratorinterface/go.mod | 2 + comp/logs-library/go.mod | 38 +- comp/logs-library/go.sum | 161 ++++ comp/logs/agent/config/go.mod | 43 +- comp/logs/agent/config/go.sum | 174 ++++ comp/netflow/payload/go.mod | 2 + comp/otelcol/collector-contrib/def/go.mod | 2 + comp/otelcol/collector-contrib/impl/go.mod | 5 +- comp/otelcol/collector-contrib/impl/go.sum | 2 + comp/otelcol/converter/def/go.mod | 2 + comp/otelcol/converter/impl/go.mod | 2 + comp/otelcol/ddflareextension/def/go.mod | 2 + comp/otelcol/ddflareextension/impl/go.mod | 8 +- comp/otelcol/ddflareextension/impl/go.sum | 2 + comp/otelcol/ddflareextension/types/go.mod | 2 + comp/otelcol/ddprofilingextension/def/go.mod | 2 + comp/otelcol/ddprofilingextension/impl/go.mod | 2 + comp/otelcol/logsagentpipeline/go.mod | 38 +- comp/otelcol/logsagentpipeline/go.sum | 161 ++++ .../logsagentpipelineimpl/go.mod | 38 +- .../logsagentpipelineimpl/go.sum | 161 ++++ .../connector/datadogconnector/go.mod | 2 + .../exporter/datadogexporter/go.mod | 21 +- .../exporter/datadogexporter/go.sum | 93 ++ .../exporter/logsagentexporter/go.mod | 21 +- .../exporter/logsagentexporter/go.sum | 97 ++ .../exporter/serializerexporter/go.mod | 25 +- .../exporter/serializerexporter/go.sum | 97 ++ .../otlp/components/metricsclient/go.mod | 2 + .../processor/infraattributesprocessor/go.mod | 2 + comp/otelcol/otlp/testutil/go.mod | 2 + comp/otelcol/status/def/go.mod | 2 + comp/otelcol/status/impl/go.mod | 2 + comp/serializer/logscompression/go.mod | 2 + comp/serializer/metricscompression/go.mod | 2 + comp/trace/agent/def/go.mod | 2 + comp/trace/compression/def/go.mod | 2 + comp/trace/compression/impl-gzip/go.mod | 2 + comp/trace/compression/impl-zstd/go.mod | 2 + deps/go.MODULE.bazel | 8 + go.mod | 4 + go.sum | 2 + .../qbranch/anomalydetection-testbench/go.mod | 25 + .../qbranch/anomalydetection-testbench/go.sum | 125 +++ otel-patches/coreinternal/go.mod | 3 +- otel-patches/coreinternal/go.sum | 8 +- pkg/aggregator/ckey/go.mod | 2 + pkg/api/go.mod | 2 + pkg/collector/check/defaults/go.mod | 2 + pkg/config/basic/go.mod | 2 + pkg/config/buildschema/go.mod | 2 + pkg/config/create/go.mod | 2 + pkg/config/env/go.mod | 2 + pkg/config/helper/go.mod | 2 + pkg/config/mock/go.mod | 2 + pkg/config/model/go.mod | 2 + pkg/config/nodetreemodel/go.mod | 2 + pkg/config/remote/go.mod | 2 + pkg/config/render_config/go.mod | 2 + pkg/config/schema/go.mod | 2 + pkg/config/setup/go.mod | 2 + pkg/config/structure/go.mod | 2 + pkg/config/utils/go.mod | 2 + pkg/discovery/tracermetadata/model/go.mod | 2 + pkg/errors/go.mod | 2 + pkg/fips/go.mod | 2 + pkg/gohai/go.mod | 2 + pkg/logs/message/go.mod | 41 +- pkg/logs/message/go.sum | 176 ++++ pkg/logs/sources/go.mod | 41 +- pkg/logs/sources/go.sum | 176 ++++ pkg/logs/status/statusinterface/go.mod | 2 + pkg/logs/status/utils/go.mod | 2 + pkg/logs/types/go.mod | 2 + pkg/logs/util/testutils/go.mod | 45 +- pkg/logs/util/testutils/go.sum | 176 ++++ pkg/metrics/go.mod | 2 + pkg/network/driver/go.mod | 2 + pkg/network/payload/go.mod | 2 + pkg/networkdevice/profile/go.mod | 2 + pkg/networkpath/payload/go.mod | 2 + pkg/obfuscate/go.mod | 2 + .../inframetadata/go.mod | 2 + .../gohai/internal/gohaitest/go.mod | 2 + .../otlp/attributes/go.mod | 2 + pkg/opentelemetry-mapping-go/otlp/logs/go.mod | 2 + .../otlp/metrics/go.mod | 2 + pkg/opentelemetry-mapping-go/otlp/rum/go.mod | 2 + pkg/orchestrator/model/go.mod | 2 + pkg/orchestrator/util/go.mod | 2 + pkg/process/util/api/go.mod | 2 + pkg/proto/go.mod | 2 + pkg/remoteconfig/state/go.mod | 2 + pkg/security/secl/go.mod | 2 + pkg/security/seclwin/go.mod | 2 + pkg/serializer/go.mod | 2 + pkg/ssi/testutils/go.mod | 2 + pkg/status/health/go.mod | 2 + pkg/tagger/types/go.mod | 2 + pkg/tagset/go.mod | 2 + pkg/trace/go.mod | 2 + pkg/trace/log/go.mod | 2 + pkg/trace/otel/go.mod | 2 + pkg/trace/stats/go.mod | 2 + pkg/trace/traceutil/go.mod | 2 + pkg/util/aws/creds/go.mod | 2 + pkg/util/backoff/go.mod | 2 + pkg/util/buf/go.mod | 2 + pkg/util/cache/go.mod | 2 + pkg/util/cgroups/go.mod | 2 + pkg/util/common/go.mod | 2 + pkg/util/compression/go.mod | 2 + pkg/util/confmaputils/go.mod | 2 + pkg/util/containers/image/go.mod | 2 + pkg/util/defaultpaths/go.mod | 2 + pkg/util/executable/go.mod | 2 + pkg/util/filesystem/go.mod | 2 + pkg/util/flavor/go.mod | 2 + pkg/util/fxutil/go.mod | 2 + pkg/util/grpc/go.mod | 2 + pkg/util/hostinfo/go.mod | 2 + pkg/util/hostname/validate/go.mod | 2 + pkg/util/hostport/go.mod | 2 + pkg/util/http/go.mod | 2 + pkg/util/json/go.mod | 2 + pkg/util/jsonquery/go.mod | 2 + .../apiserver/common/namespace/go.mod | 2 + pkg/util/log/go.mod | 2 + pkg/util/log/setup/go.mod | 2 + pkg/util/option/go.mod | 2 + pkg/util/otel/go.mod | 2 + pkg/util/pointer/go.mod | 2 + pkg/util/prometheus/go.mod | 2 + pkg/util/quantile/go.mod | 2 + pkg/util/quantile/sketchtest/go.mod | 2 + pkg/util/scrubber/go.mod | 2 + pkg/util/sort/go.mod | 2 + pkg/util/startstop/go.mod | 2 + pkg/util/statstracker/go.mod | 2 + pkg/util/system/go.mod | 2 + pkg/util/testutil/go.mod | 2 + pkg/util/utilizationtracker/go.mod | 2 + pkg/util/uuid/go.mod | 2 + pkg/util/winutil/go.mod | 2 + pkg/version/go.mod | 2 + test/e2e-framework/go.mod | 2 + test/fakeintake/go.mod | 2 + test/new-e2e/go.mod | 2 + test/otel/go.mod | 21 +- test/otel/go.sum | 95 ++ 201 files changed, 3732 insertions(+), 132 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5a75f3ae5e04..558689b39ff0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8,6 +8,20 @@ version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" +[[package]] +name = "ahash" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" +dependencies = [ + "cfg-if", + "getrandom 0.3.4", + "once_cell", + "serde", + "version_check", + "zerocopy", +] + [[package]] name = "aho-corasick" version = "1.1.4" @@ -33,6 +47,12 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "allocator-api2" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + [[package]] name = "ambient-authority" version = "0.0.2" @@ -110,6 +130,15 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7d902e3d592a523def97af8f317b08ce16b7ab854c1985a0c671e6f15cebc236" +[[package]] +name = "ascii-canvas" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1e3e699d84ab1b0911a1010c5c106aa34ae89aeac103be5ce0c3859db1e891" +dependencies = [ + "term", +] + [[package]] name = "async-trait" version = "0.1.89" @@ -118,7 +147,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -176,24 +205,66 @@ dependencies = [ "tower-service", ] +[[package]] +name = "base16" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d27c3610c36aee21ce8ac510e6224498de4228ad772a171ed65643a24693a5a8" + [[package]] name = "base64" version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" +[[package]] +name = "bit-set" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" + [[package]] name = "bitflags" version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c4512299f36f043ab09a583e57bceb5a5aab7a73db1805848e8fef3c9e8c78b3" +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "borrow-or-share" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc0b364ead1874514c8c2855ab558056ebfeb775653e7ae45ff72f28f8f3166c" + [[package]] name = "bumpalo" version = "3.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" +[[package]] +name = "bytecount" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "175812e0be2bccb6abe50bb8d566126198344f707e304f45c648fd8f2cc0365e" + [[package]] name = "bytes" version = "1.11.1" @@ -275,11 +346,21 @@ dependencies = [ "windows-link", ] +[[package]] +name = "chrono-tz" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6139a8597ed92cf816dfb33f5dd6cf0bb93a6adc938f11039f371bc5bcd26c3" +dependencies = [ + "chrono", + "phf 0.12.1", +] + [[package]] name = "clap" -version = "4.6.4" +version = "4.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d91e0c145792ef73a6ad36d27c75ac09f1832222a3c209689d90f534685ee5b7" +checksum = "dd059f9da4f5c36b3787f65d38ccaab1cc315f07b01f89abc8359ee6a8205011" dependencies = [ "clap_builder", "clap_derive", @@ -299,14 +380,14 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.6.4" +version = "4.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d012d2b9d65aca7f18f4d9878a045bc17899bba951561ba5ec3c2ba1eed9a061" +checksum = "f2ce8604710f6733aa641a2b3731eaa1e8b3d9973d5e3565da11800813f997a9" dependencies = [ "heck", "proc-macro2", "quote", - "syn 3.0.2", + "syn", ] [[package]] @@ -315,6 +396,17 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9" +[[package]] +name = "codespan-reporting" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe6d2e5af09e8c8ad56c969f2157a3d4238cebc7c55f0a517728c38f7b200f81" +dependencies = [ + "serde", + "termcolor", + "unicode-width", +] + [[package]] name = "colorchoice" version = "1.0.5" @@ -356,6 +448,15 @@ version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + [[package]] name = "crc32fast" version = "1.5.0" @@ -421,6 +522,22 @@ version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" +[[package]] +name = "crypto-common" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "data-encoding" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4ae5f15dda3c708c0ade84bfee31ccab44a3da4f88015ed22f63732abe300c8" + [[package]] name = "dd-agent-log" version = "0.1.0" @@ -468,6 +585,16 @@ version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + [[package]] name = "dircpy" version = "0.3.20" @@ -487,7 +614,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -499,6 +626,12 @@ dependencies = [ "litrs", ] +[[package]] +name = "dyn-clone" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" + [[package]] name = "either" version = "1.15.0" @@ -511,6 +644,24 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55dd888a213fc57e957abf2aa305ee3e8a28dbe05687a251f33b637cd46b0070" +[[package]] +name = "email_address" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e079f19b08ca6239f47f8ba8509c11cf3ea30095831f7fed61441475edd8c449" +dependencies = [ + "serde", +] + +[[package]] +name = "ena" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eabffdaee24bd1bf95c5ef7cec31260444317e72ea56c4c91750e8b7ee58d5f1" +dependencies = [ + "log", +] + [[package]] name = "encoding_rs" version = "0.8.35" @@ -536,6 +687,17 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "fancy-regex" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72cf461f865c862bb7dc573f643dd6a2b6842f7c30b07882b56bd148cc2761b8" +dependencies = [ + "bit-set", + "regex-automata", + "regex-syntax", +] + [[package]] name = "fastrand" version = "2.4.1" @@ -565,6 +727,17 @@ dependencies = [ "zlib-rs", ] +[[package]] +name = "fluent-uri" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc74ac4d8359ae70623506d512209619e5cf8f347124910440dbc221714b328e" +dependencies = [ + "borrow-or-share", + "ref-cast", + "serde", +] + [[package]] name = "fnv" version = "1.0.7" @@ -592,6 +765,16 @@ dependencies = [ "percent-encoding", ] +[[package]] +name = "fraction" +version = "0.15.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e076045bb43dac435333ed5f04caf35c7463631d0dae2deb2638d94dd0a5b872" +dependencies = [ + "lazy_static", + "num", +] + [[package]] name = "fs-set-times" version = "0.20.3" @@ -642,6 +825,30 @@ dependencies = [ "slab", ] +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "r-efi 5.3.0", + "wasip2", + "wasm-bindgen", +] + [[package]] name = "getrandom" version = "0.4.2" @@ -650,7 +857,7 @@ checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" dependencies = [ "cfg-if", "libc", - "r-efi", + "r-efi 6.0.0", "wasip2", "wasip3", ] @@ -663,9 +870,9 @@ checksum = "9985c9503b412198aa4197559e9a318524ebc4519c229bfa05a535828c950b9d" [[package]] name = "h2" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "171fefbc92fe4a4de27e0698d6a5b392d6a0e333506bc49133760b3bcf948733" +checksum = "6cb093c84e8bd9b188d4c4a8cb6579fc016968d14c99882163cd3ff402a4f155" dependencies = [ "atomic-waker", "bytes", @@ -695,6 +902,8 @@ version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" dependencies = [ + "allocator-api2", + "equivalent", "foldhash 0.2.0", ] @@ -706,9 +915,9 @@ checksum = "4f467dd6dccf739c208452f8014c75c18bb8301b050ad1cfb27153803edb0f51" [[package]] name = "hashlink" -version = "0.11.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea0b22561a9c04a7cb1a302c013e0259cd3b4bb619f145b32f72b8b4bcbed230" +checksum = "824e001ac4f3012dd16a264bec811403a67ca9deb6c102fc5049b32c4574b35f" dependencies = [ "hashbrown 0.16.1", ] @@ -777,9 +986,9 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "hyper" -version = "1.11.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d22053281f852e11534f5198498373cbb59295120a20771d90f7ed1897490a72" +checksum = "55281c53a1894c864990125767da440a4e630446785086f52523b20033b74498" dependencies = [ "atomic-waker", "bytes", @@ -975,6 +1184,15 @@ dependencies = [ "serde_core", ] +[[package]] +name = "indoc" +version = "2.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79cf5c93f93228cf8efb3ba362535fb11199ac548a09ce117c9b1adc3030d706" +dependencies = [ + "rustversion", +] + [[package]] name = "io-extras" version = "0.19.0" @@ -1026,14 +1244,42 @@ checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "js-sys" -version = "0.3.95" +version = "0.3.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2964e92d1d9dc3364cae4d718d93f227e3abb088e747d92e0395bfdedf1c12ca" +checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" dependencies = [ - "once_cell", + "cfg-if", + "futures-util", "wasm-bindgen", ] +[[package]] +name = "jsonschema" +version = "0.38.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89f50532ce4a0ba3ae930212908d8ec50e7806065c059fe9c75da2ece6132294" +dependencies = [ + "ahash", + "bytecount", + "data-encoding", + "email_address", + "fancy-regex", + "fraction", + "getrandom 0.3.4", + "idna", + "itoa", + "num-cmp", + "num-traits", + "percent-encoding", + "referencing", + "regex", + "regex-syntax", + "serde", + "serde_json", + "unicode-general-category", + "uuid-simd", +] + [[package]] name = "jwalk" version = "0.8.1" @@ -1044,6 +1290,52 @@ dependencies = [ "rayon", ] +[[package]] +name = "keccak" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb26cec98cce3a3d96cbb7bced3c4b16e3d13f27ec56dbd62cbc8f39cfb9d653" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "lalrpop" +version = "0.22.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba4ebbd48ce411c1d10fb35185f5a51a7bfa3d8b24b4e330d30c9e3a34129501" +dependencies = [ + "ascii-canvas", + "bit-set", + "ena", + "itertools", + "lalrpop-util", + "petgraph 0.7.1", + "regex", + "regex-syntax", + "sha3", + "string_cache", + "term", + "unicode-xid", + "walkdir", +] + +[[package]] +name = "lalrpop-util" +version = "0.22.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5baa5e9ff84f1aefd264e6869907646538a52147a755d494517a8007fb48733" +dependencies = [ + "regex-automata", + "rustversion", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + [[package]] name = "leb128fmt" version = "0.1.0" @@ -1052,9 +1344,9 @@ checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" [[package]] name = "libc" -version = "0.2.189" +version = "0.2.186" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2" +checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" [[package]] name = "linux-raw-sys" @@ -1095,6 +1387,15 @@ version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b6180140927ee907000b0aa540091f6ea512ead4447c92b8fc35bc72788a5a6" +[[package]] +name = "lz4_flex" +version = "0.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "373f5eceeeab7925e0c1098212f2fbc4d416adec9d35051a6ab251e824c1854a" +dependencies = [ + "twox-hash", +] + [[package]] name = "matchit" version = "0.8.4" @@ -1155,6 +1456,12 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d87ecb2933e8aeadb3e3a02b828fed80a7528047e68b4f424523a0981a3a084" +[[package]] +name = "new_debug_unreachable" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" + [[package]] name = "nix" version = "0.31.3" @@ -1176,18 +1483,96 @@ dependencies = [ "memchr", ] +[[package]] +name = "nom-language" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2de2bc5b451bfedaef92c90b8939a8fff5770bdcc1fafd6239d086aab8fa6b29" +dependencies = [ + "nom", +] + [[package]] name = "normalize-path" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f5438dd2b2ff4c6df6e1ce22d825ed2fa93ee2922235cc45186991717f0a892d" +[[package]] +name = "num" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" +dependencies = [ + "num-bigint", + "num-complex", + "num-integer", + "num-iter", + "num-rational", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c89e69e7e0f03bea5ef08013795c25018e101932225a656383bd384495ecc367" +dependencies = [ + "num-integer", + "num-traits", +] + +[[package]] +name = "num-cmp" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63335b2e2c34fae2fb0aa2cecfd9f0832a1e24b3b32ecec612c3426d46dc8aaa" + +[[package]] +name = "num-complex" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" +dependencies = [ + "num-traits", +] + [[package]] name = "num-conv" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "521739c6d2bac4aa25192232afe6841231376b2b26d4d9fae5ecf8ca5772e441" +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c92800bd69a1eac91786bcfe9da64a897eb72911b8dc3095decbd07429e8048b" +dependencies = [ + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" +dependencies = [ + "num-bigint", + "num-integer", + "num-traits", +] + [[package]] name = "num-traits" version = "0.2.19" @@ -1209,6 +1594,21 @@ version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" +[[package]] +name = "ordered-float" +version = "4.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bb71e1b3fa6ca1c61f383464aaf2bb0e2f8e772a1f01d486832464de363b951" +dependencies = [ + "num-traits", +] + +[[package]] +name = "outref" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a80800c0488c3a21695ea981a54918fbb37abf04f4d0720c453632255e2ff0e" + [[package]] name = "parking_lot" version = "0.12.5" @@ -1238,6 +1638,16 @@ version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" +[[package]] +name = "petgraph" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" +dependencies = [ + "fixedbitset", + "indexmap", +] + [[package]] name = "petgraph" version = "0.8.3" @@ -1249,6 +1659,15 @@ dependencies = [ "indexmap", ] +[[package]] +name = "phf" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "913273894cec178f401a31ec4b656318d95473527be05c0752cc41cdc32be8b7" +dependencies = [ + "phf_shared 0.12.1", +] + [[package]] name = "phf" version = "0.14.0" @@ -1256,7 +1675,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "010378780309880b08997fae13be7834dba947d36393bd372f2b1556deb2a2f6" dependencies = [ "phf_macros", - "phf_shared", + "phf_shared 0.14.0", "serde", ] @@ -1267,7 +1686,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aeb62e0959d5a1bebc965f4d15d9e2b7cea002b6b0f5ba8cde6cc26738467100" dependencies = [ "fastrand", - "phf_shared", + "phf_shared 0.14.0", ] [[package]] @@ -1277,10 +1696,28 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5fa8d0ca26d424d27630da600c6624696e7dec8bf7b3b492b383c5dc49e5e085" dependencies = [ "phf_generator", - "phf_shared", + "phf_shared 0.14.0", "proc-macro2", "quote", - "syn 2.0.117", + "syn", +] + +[[package]] +name = "phf_shared" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" +dependencies = [ + "siphasher", +] + +[[package]] +name = "phf_shared" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06005508882fb681fd97892ecff4b7fd0fee13ef1aa569f8695dae7ab9099981" +dependencies = [ + "siphasher", ] [[package]] @@ -1309,7 +1746,7 @@ checksum = "d9b20ed30f105399776b9c883e68e536ef602a16ae6f596d2c473591d6ad64c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -1333,6 +1770,12 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" +[[package]] +name = "precomputed-hash" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" + [[package]] name = "prettyplease" version = "0.2.37" @@ -1340,7 +1783,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn 2.0.117", + "syn", ] [[package]] @@ -1372,14 +1815,14 @@ dependencies = [ "itertools", "log", "multimap", - "petgraph", + "petgraph 0.8.3", "prettyplease", "prost", "prost-types", "pulldown-cmark", "pulldown-cmark-to-cmark", "regex", - "syn 2.0.117", + "syn", "tempfile", ] @@ -1393,7 +1836,7 @@ dependencies = [ "itertools", "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -1433,7 +1876,7 @@ dependencies = [ "protoc-gen-prost", "quote", "regex", - "syn 2.0.117", + "syn", "tonic-build", ] @@ -1466,6 +1909,12 @@ dependencies = [ "proc-macro2", ] +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + [[package]] name = "r-efi" version = "6.0.0" @@ -1507,6 +1956,41 @@ dependencies = [ "bitflags", ] +[[package]] +name = "ref-cast" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "referencing" +version = "0.38.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15a8af0c6bb8eaf8b07cb06fc31ff30ca6fe19fb99afa476c276d8b24f365b0b" +dependencies = [ + "ahash", + "fluent-uri", + "getrandom 0.3.4", + "hashbrown 0.16.1", + "parking_lot", + "percent-encoding", + "serde_json", +] + [[package]] name = "regex" version = "1.13.1" @@ -1530,6 +2014,18 @@ dependencies = [ "regex-syntax", ] +[[package]] +name = "regex-filtered" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac5f7b31fbef748cc46643c1f9ba17f6d5c7c6f0ba5e372fc9c48d31ad1c8612" +dependencies = [ + "aho-corasick", + "itertools", + "regex", + "regex-syntax", +] + [[package]] name = "regex-syntax" version = "0.8.11" @@ -1623,9 +2119,9 @@ checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" [[package]] name = "serde" -version = "1.0.229" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" dependencies = [ "serde_core", "serde_derive", @@ -1633,29 +2129,29 @@ dependencies = [ [[package]] name = "serde_core" -version = "1.0.229" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.229" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 3.0.2", + "syn", ] [[package]] name = "serde_json" -version = "1.0.151" +version = "1.0.150" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c841b55ecdae098c80dcae9cf767f6f8a0c2cdb3416bbef72181df4d0fe73f14" +checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" dependencies = [ "itoa", "memchr", @@ -1677,6 +2173,40 @@ dependencies = [ "unsafe-libyaml", ] +[[package]] +name = "serde_yaml_ng" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b4db627b98b36d4203a7b458cf3573730f2bb591b28871d916dfa9efabfd41f" +dependencies = [ + "indexmap", + "itoa", + "ryu", + "serde", + "unsafe-libyaml", +] + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sha3" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77fd7028345d415a4034cf8777cd4f8ab1851274233b45f84e3d955502d93874" +dependencies = [ + "digest", + "keccak", +] + [[package]] name = "shlex" version = "1.3.0" @@ -1699,6 +2229,12 @@ version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214" +[[package]] +name = "simdutf8" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" + [[package]] name = "siphasher" version = "1.0.2" @@ -1717,6 +2253,27 @@ version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +[[package]] +name = "snafu" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e84b3f4eacbf3a1ce05eac6763b4d629d60cbc94d632e4092c54ade71f1e1a2" +dependencies = [ + "snafu-derive", +] + +[[package]] +name = "snafu-derive" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1c97747dbf44bb1ca44a561ece23508e99cb592e862f22222dcf42f51d1e451" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "socket2" version = "0.6.3" @@ -1733,6 +2290,18 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" +[[package]] +name = "string_cache" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f" +dependencies = [ + "new_debug_unreachable", + "parking_lot", + "phf_shared 0.11.3", + "precomputed-hash", +] + [[package]] name = "strsim" version = "0.11.1" @@ -1750,17 +2319,6 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "syn" -version = "3.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a207d6d6a2b7fc470b80443726053f18a2481b7e1eee970597051596567987a3" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - [[package]] name = "sync_wrapper" version = "1.0.2" @@ -1775,7 +2333,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -1801,7 +2359,7 @@ dependencies = [ "nix", "nom", "normalize-path", - "phf", + "phf 0.14.0", "rawzip", "rmp-serde", "saphyr-parser", @@ -1835,37 +2393,55 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" dependencies = [ "fastrand", - "getrandom", + "getrandom 0.4.2", "once_cell", "rustix", "windows-sys 0.61.2", ] +[[package]] +name = "term" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8c27177b12a6399ffc08b98f76f7c9a1f4fe9fc967c784c5a071fa8d93cf7e1" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "termcolor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" +dependencies = [ + "winapi-util", +] + [[package]] name = "thiserror" -version = "2.0.19" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09a43598840e33d5b0331f38c5e30d13bb11c11210a4b58f0d9b18a5a5eefcd9" +checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "2.0.19" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43cbfe0cf76104d42a574802844187e84a305e531ed54455f11fbde0f10541cd" +checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn 3.0.2", + "syn", ] [[package]] name = "time" -version = "0.3.54" +version = "0.3.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e1d5e639ff6bab73cb6885cc7e7b1de96c3f32c68ec55f3952614bec1092244" +checksum = "18dfaaeddcb932337b5e7866ee7d0ce9b76d2fd092997146f187ec09b4558a50" dependencies = [ "deranged", "num-conv", @@ -1883,9 +2459,9 @@ checksum = "9e1c906769ad99c88eaa54e728060edef082f8e358ff32030cb7c7d315e81109" [[package]] name = "time-macros" -version = "0.2.32" +version = "0.2.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e689342a48d2ea927c87ea50cabf8594854bf940e9310208848d680d668ed85" +checksum = "c431b87111666e491a90baa837f914fb45cd5dc3c268591b0220ff5057f2085f" dependencies = [ "num-conv", "time-core", @@ -1903,9 +2479,9 @@ dependencies = [ [[package]] name = "tokio" -version = "1.53.1" +version = "1.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "202caea871b69668250d242070849eb495be178ed697a3e98aebce5bc81a0bed" +checksum = "d988bcd52dbe076d3d46903332f58c912b87a2c49b1428419a5845154762ffee" dependencies = [ "bytes", "libc", @@ -1925,14 +2501,14 @@ checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] name = "tokio-stream" -version = "0.1.19" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3d06f0b082ba57c26b79407372e57cf2a1e28124f78e9479fe80322cf53420b" +checksum = "32da49809aab5c3bc678af03902d4ccddea2a87d028d86392a4b1560c6906c70" dependencies = [ "futures-core", "pin-project-lite", @@ -1990,7 +2566,7 @@ dependencies = [ "prettyplease", "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -2015,7 +2591,7 @@ dependencies = [ "prost-build", "prost-types", "quote", - "syn 2.0.117", + "syn", "tempfile", "tonic-build", ] @@ -2084,7 +2660,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -2102,24 +2678,65 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" +[[package]] +name = "twox-hash" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ea3136b675547379c4bd395ca6b938e5ad3c3d20fad76e7fe85f9e0d011419c" + [[package]] name = "typed-path" version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e28f89b80c87b8fb0cf04ab448d5dd0dd0ade2f8891bae878de66a75a28600e" +[[package]] +name = "typenum" +version = "1.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" + +[[package]] +name = "ua-parser" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f01b7ba339f8874b643216c6c957d792047143abe848568131e5d91d2ae2ada1" +dependencies = [ + "regex", + "regex-filtered", + "serde", +] + [[package]] name = "unicase" version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142" +[[package]] +name = "unicode-general-category" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b993bddc193ae5bd0d623b49ec06ac3e9312875fdae725a975c51db1cc1677f" + [[package]] name = "unicode-ident" version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" +[[package]] +name = "unicode-segmentation" +version = "1.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8" + +[[package]] +name = "unicode-width" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" + [[package]] name = "unicode-xid" version = "0.2.6" @@ -2196,11 +2813,21 @@ version = "1.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bf3923a6f5c4c6382e0b653c4117f48d631ea17f38ed86e2a828e6f7412f5239" dependencies = [ - "getrandom", + "getrandom 0.4.2", "js-sys", "wasm-bindgen", ] +[[package]] +name = "uuid-simd" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23b082222b4f6619906941c17eb2297fff4c2fb96cb60164170522942a200bd8" +dependencies = [ + "outref", + "vsimd", +] + [[package]] name = "uzers" version = "0.12.2" @@ -2217,6 +2844,60 @@ version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" +[[package]] +name = "vrl" +version = "0.33.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "772206835b5bca8719825d2ab9e6fb160cbfce8ac1dc0e5dffe22cbe77254468" +dependencies = [ + "bytes", + "cfg-if", + "chrono", + "chrono-tz", + "codespan-reporting", + "dyn-clone", + "getrandom 0.3.4", + "indoc", + "jsonschema", + "lalrpop", + "lalrpop-util", + "lz4_flex", + "nom-language", + "ordered-float", + "regex", + "serde", + "serde_json", + "serde_yaml", + "serde_yaml_ng", + "simdutf8", + "snafu", + "termcolor", + "thiserror", + "tracing", + "ua-parser", + "unicode-segmentation", +] + +[[package]] +name = "vrl_filter" +version = "0.1.0" +dependencies = [ + "base16", + "base64", + "digest", + "regex", + "serde_json", + "sha2", + "sha3", + "vrl", +] + +[[package]] +name = "vsimd" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c3082ca00d5a5ef149bb8b555a72ae84c9c59f7250f013ac822ac2e49b19c64" + [[package]] name = "walkdir" version = "2.5.0" @@ -2244,9 +2925,9 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasip2" -version = "1.0.3+wasi-0.2.9" +version = "1.0.4+wasi-0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20064672db26d7cdc89c7798c48a0fdfac8213434a1186e5ef29fd560ae223d6" +checksum = "b67efb37e106e55ce722a510d6b5f9c17f083e5fc79afc2badeb12cc313d9487" dependencies = [ "wit-bindgen 0.57.1", ] @@ -2262,9 +2943,9 @@ dependencies = [ [[package]] name = "wasm-bindgen" -version = "0.2.118" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf938a0bacb0469e83c1e148908bd7d5a6010354cf4fb73279b7447422e3a89" +checksum = "4b067c0c11094aef6b7a801c1e34a26affafdf3d051dba08456b868789aaf9a4" dependencies = [ "cfg-if", "once_cell", @@ -2275,9 +2956,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.118" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eeff24f84126c0ec2db7a449f0c2ec963c6a49efe0698c4242929da037ca28ed" +checksum = "167ce5e579f6bcf889c4f7175a8a5a585de84e8ff93976ce393efa5f2837aab1" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2285,22 +2966,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.118" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d08065faf983b2b80a79fd87d8254c409281cf7de75fc4b773019824196c904" +checksum = "f3997c7839262f4ef12cf90b818d6340c18e80f263f1a94bf157d0ec4420380e" dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn 2.0.117", + "syn", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.118" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fd04d9e306f1907bd13c6361b5c6bfc7b3b3c095ed3f8a9246390f8dbdee129" +checksum = "dc1b4cb0cc549fcf58d7dfc081778139b3d283a081644e833e84682ad71cea24" dependencies = [ "unicode-ident", ] @@ -2369,7 +3050,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -2380,7 +3061,7 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] @@ -2546,7 +3227,7 @@ dependencies = [ "heck", "indexmap", "prettyplease", - "syn 2.0.117", + "syn", "wasm-metadata", "wit-bindgen-core", "wit-component", @@ -2562,7 +3243,7 @@ dependencies = [ "prettyplease", "proc-macro2", "quote", - "syn 2.0.117", + "syn", "wit-bindgen-core", "wit-bindgen-rust", ] @@ -2655,10 +3336,30 @@ checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", "synstructure", ] +[[package]] +name = "zerocopy" +version = "0.8.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7cbbc0a705a0fd05cc3676525980d2bf5a9bc4adac6d6475209a7887cf59d19" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2e817b7b52d0c7358d3246da9d69935ebb18116b2b102b4230dac079b4862f5" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "zerofrom" version = "0.1.7" @@ -2676,7 +3377,7 @@ checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", "synstructure", ] @@ -2710,7 +3411,7 @@ checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn", ] [[package]] diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 7f0bea3b9231..f8dea18a7c78 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -1854,7 +1854,9 @@ }, "@@rules_rs+//rs:extensions.bzl%crate": { "adler2_2.0.1": "{\"dependencies\":[{\"name\":\"core\",\"optional\":true,\"package\":\"rustc-std-workspace-core\",\"req\":\"^1.0.0\"}],\"features\":{\"default\":[\"std\"],\"rustc-dep-of-std\":[\"core\"],\"std\":[]}}", + "ahash_0.8.12": "{\"dependencies\":[{\"name\":\"cfg-if\",\"req\":\"^1.0\"},{\"name\":\"const-random\",\"optional\":true,\"req\":\"^0.1.17\"},{\"features\":[\"html_reports\"],\"kind\":\"dev\",\"name\":\"criterion\",\"req\":\"^0.3.2\"},{\"kind\":\"dev\",\"name\":\"fnv\",\"req\":\"^1.0.5\"},{\"kind\":\"dev\",\"name\":\"fxhash\",\"req\":\"^0.2.1\"},{\"name\":\"getrandom\",\"optional\":true,\"req\":\"^0.3.1\"},{\"kind\":\"dev\",\"name\":\"hashbrown\",\"req\":\"^0.14.3\"},{\"kind\":\"dev\",\"name\":\"hex\",\"req\":\"^0.4.2\"},{\"kind\":\"dev\",\"name\":\"no-panic\",\"req\":\"^0.1.10\"},{\"default_features\":false,\"features\":[\"alloc\"],\"name\":\"once_cell\",\"req\":\"^1.18.0\",\"target\":\"cfg(not(all(target_arch = \\\"arm\\\", target_os = \\\"none\\\")))\"},{\"kind\":\"dev\",\"name\":\"pcg-mwc\",\"req\":\"^0.2.1\"},{\"name\":\"portable-atomic\",\"optional\":true,\"req\":\"^1.0.0\"},{\"kind\":\"dev\",\"name\":\"rand\",\"req\":\"^0.8.5\"},{\"kind\":\"dev\",\"name\":\"seahash\",\"req\":\"^4.0\"},{\"name\":\"serde\",\"optional\":true,\"req\":\"^1.0.117\"},{\"kind\":\"dev\",\"name\":\"serde_json\",\"req\":\"^1.0.59\"},{\"kind\":\"dev\",\"name\":\"smallvec\",\"req\":\"^1.13.1\"},{\"kind\":\"build\",\"name\":\"version_check\",\"req\":\"^0.9.4\"},{\"default_features\":false,\"features\":[\"simd\"],\"name\":\"zerocopy\",\"req\":\"^0.8.24\"}],\"features\":{\"atomic-polyfill\":[\"dep:portable-atomic\",\"once_cell/critical-section\"],\"compile-time-rng\":[\"const-random\"],\"default\":[\"std\",\"runtime-rng\"],\"nightly-arm-aes\":[],\"no-rng\":[],\"runtime-rng\":[\"getrandom\"],\"std\":[]}}", "aho-corasick_1.1.4": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"doc-comment\",\"req\":\"^0.3.3\"},{\"name\":\"log\",\"optional\":true,\"req\":\"^0.4.17\"},{\"default_features\":false,\"name\":\"memchr\",\"optional\":true,\"req\":\"^2.4.0\"}],\"features\":{\"default\":[\"std\",\"perf-literal\"],\"logging\":[\"dep:log\"],\"perf-literal\":[\"dep:memchr\"],\"std\":[\"memchr?/std\"]}}", + "allocator-api2_0.2.21": "{\"dependencies\":[{\"name\":\"serde\",\"optional\":true,\"req\":\"^1.0\"}],\"features\":{\"alloc\":[],\"default\":[\"std\"],\"fresh-rust\":[],\"nightly\":[],\"std\":[\"alloc\"]}}", "ambient-authority_0.0.2": "{\"dependencies\":[],\"features\":{}}", "android_system_properties_0.1.5": "{\"dependencies\":[{\"name\":\"libc\",\"req\":\"^0.2.126\"}],\"features\":{}}", "anstream_1.0.0": "{\"dependencies\":[{\"name\":\"anstyle\",\"req\":\"^1.0.0\"},{\"name\":\"anstyle-parse\",\"req\":\"^1.0.0\"},{\"name\":\"anstyle-query\",\"optional\":true,\"req\":\"^1.0.0\"},{\"name\":\"anstyle-wincon\",\"optional\":true,\"req\":\"^3.0.5\",\"target\":\"cfg(windows)\"},{\"name\":\"colorchoice\",\"req\":\"^1.0.0\"},{\"kind\":\"dev\",\"name\":\"divan\",\"req\":\"^0.1.16\"},{\"name\":\"is_terminal_polyfill\",\"req\":\"^1.48\"},{\"kind\":\"dev\",\"name\":\"lexopt\",\"req\":\"^0.3.1\"},{\"kind\":\"dev\",\"name\":\"owo-colors\",\"req\":\"^4.0.0\"},{\"kind\":\"dev\",\"name\":\"proptest\",\"req\":\"^1.7.0\"},{\"kind\":\"dev\",\"name\":\"strip-ansi-escapes\",\"req\":\"^0.2.1\"},{\"name\":\"utf8parse\",\"req\":\"^0.2.2\"}],\"features\":{\"auto\":[\"dep:anstyle-query\"],\"default\":[\"auto\",\"wincon\"],\"test\":[],\"wincon\":[\"dep:anstyle-wincon\"]}}", @@ -1864,14 +1866,21 @@ "anstyle_1.0.14": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"lexopt\",\"req\":\"^0.3.1\"},{\"kind\":\"dev\",\"name\":\"snapbox\",\"req\":\"^0.6.23\"}],\"features\":{\"default\":[\"std\"],\"std\":[]}}", "anyhow_1.0.104": "{\"dependencies\":[{\"default_features\":false,\"kind\":\"dev\",\"name\":\"futures\",\"req\":\"^0.3\"},{\"kind\":\"dev\",\"name\":\"rustversion\",\"req\":\"^1.0.6\"},{\"features\":[\"full\"],\"kind\":\"dev\",\"name\":\"syn\",\"req\":\"^3\"},{\"kind\":\"dev\",\"name\":\"thiserror\",\"req\":\"^2\"},{\"features\":[\"diff\"],\"kind\":\"dev\",\"name\":\"trybuild\",\"req\":\"^1.0.108\"}],\"features\":{\"backtrace\":[],\"default\":[\"std\"],\"std\":[]}}", "arraydeque_0.5.1": "{\"dependencies\":[],\"features\":{\"default\":[\"std\"],\"std\":[]}}", + "ascii-canvas_4.0.0": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"diff\",\"req\":\"^0.1\"},{\"name\":\"term\",\"req\":\"^1\"}],\"features\":{}}", "async-trait_0.1.89": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"futures\",\"req\":\"^0.3.30\"},{\"name\":\"proc-macro2\",\"req\":\"^1.0.74\"},{\"name\":\"quote\",\"req\":\"^1.0.35\"},{\"kind\":\"dev\",\"name\":\"rustversion\",\"req\":\"^1.0.13\"},{\"default_features\":false,\"features\":[\"clone-impls\",\"full\",\"parsing\",\"printing\",\"proc-macro\",\"visit-mut\"],\"name\":\"syn\",\"req\":\"^2.0.46\"},{\"kind\":\"dev\",\"name\":\"tracing\",\"req\":\"^0.1.40\"},{\"kind\":\"dev\",\"name\":\"tracing-attributes\",\"req\":\"^0.1.27\"},{\"features\":[\"diff\"],\"kind\":\"dev\",\"name\":\"trybuild\",\"req\":\"^1.0.81\"}],\"features\":{}}", "atomic-waker_1.1.2": "{\"dependencies\":[{\"default_features\":false,\"features\":[\"cargo_bench_support\"],\"kind\":\"dev\",\"name\":\"criterion\",\"req\":\"^0.4.0\"},{\"kind\":\"dev\",\"name\":\"futures\",\"req\":\"^0.3.5\"},{\"default_features\":false,\"name\":\"portable-atomic\",\"optional\":true,\"req\":\"^1\"},{\"kind\":\"dev\",\"name\":\"rayon\",\"req\":\"^1.7.0\"}],\"features\":{}}", "autocfg_1.5.0": "{\"dependencies\":[],\"features\":{}}", "axum-core_0.5.6": "{\"dependencies\":[{\"name\":\"bytes\",\"req\":\"^1.2\"},{\"name\":\"futures-core\",\"req\":\"^0.3\"},{\"name\":\"http\",\"req\":\"^1.0.0\"},{\"name\":\"http-body\",\"req\":\"^1.0.0\"},{\"name\":\"http-body-util\",\"req\":\"^0.1.0\"},{\"kind\":\"dev\",\"name\":\"hyper\",\"req\":\"^1.0.0\"},{\"name\":\"mime\",\"req\":\"^0.3.16\"},{\"name\":\"pin-project-lite\",\"req\":\"^0.2.7\"},{\"name\":\"sync_wrapper\",\"req\":\"^1.0.0\"},{\"features\":[\"macros\"],\"kind\":\"dev\",\"name\":\"tokio\",\"req\":\"^1.25.0\"},{\"features\":[\"limit\"],\"name\":\"tower-http\",\"optional\":true,\"req\":\"^0.6.0\"},{\"features\":[\"limit\"],\"kind\":\"dev\",\"name\":\"tower-http\",\"req\":\"^0.6.0\"},{\"name\":\"tower-layer\",\"req\":\"^0.3\"},{\"name\":\"tower-service\",\"req\":\"^0.3\"},{\"default_features\":false,\"name\":\"tracing\",\"optional\":true,\"req\":\"^0.1.37\"}],\"features\":{\"__private_docs\":[\"dep:tower-http\"],\"tracing\":[\"dep:tracing\"]}}", "axum_0.8.9": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"anyhow\",\"req\":\"^1.0\"},{\"name\":\"axum-core\",\"req\":\"^0.5.5\"},{\"name\":\"axum-macros\",\"optional\":true,\"req\":\"^0.5.1\"},{\"name\":\"base64\",\"optional\":true,\"req\":\"^0.22.1\"},{\"name\":\"bytes\",\"req\":\"^1.0\"},{\"name\":\"form_urlencoded\",\"optional\":true,\"req\":\"^1.1.0\"},{\"default_features\":false,\"features\":[\"alloc\"],\"name\":\"futures-util\",\"req\":\"^0.3\"},{\"name\":\"http\",\"req\":\"^1.0.0\"},{\"name\":\"http-body\",\"req\":\"^1.0.0\"},{\"name\":\"http-body-util\",\"req\":\"^0.1.0\"},{\"name\":\"hyper\",\"optional\":true,\"req\":\"^1.1.0\"},{\"features\":[\"client\"],\"kind\":\"dev\",\"name\":\"hyper\",\"req\":\"^1.1.0\"},{\"features\":[\"tokio\",\"server\",\"service\"],\"name\":\"hyper-util\",\"optional\":true,\"req\":\"^0.1.3\"},{\"name\":\"itoa\",\"req\":\"^1.0.5\"},{\"name\":\"matchit\",\"req\":\"=0.8.4\"},{\"name\":\"memchr\",\"req\":\"^2.4.1\"},{\"name\":\"mime\",\"req\":\"^0.3.16\"},{\"name\":\"multer\",\"optional\":true,\"req\":\"^3.0.0\"},{\"name\":\"percent-encoding\",\"req\":\"^2.1\"},{\"name\":\"pin-project-lite\",\"req\":\"^0.2.7\"},{\"kind\":\"dev\",\"name\":\"quickcheck\",\"req\":\"^1.0\"},{\"kind\":\"dev\",\"name\":\"quickcheck_macros\",\"req\":\"^1.0\"},{\"default_features\":false,\"features\":[\"json\",\"stream\",\"multipart\"],\"name\":\"reqwest\",\"optional\":true,\"req\":\"^0.12\"},{\"default_features\":false,\"features\":[\"json\",\"stream\",\"multipart\"],\"kind\":\"dev\",\"name\":\"reqwest\",\"req\":\"^0.12\"},{\"name\":\"serde\",\"optional\":true,\"req\":\"^1.0.211\"},{\"features\":[\"derive\"],\"kind\":\"dev\",\"name\":\"serde\",\"req\":\"^1.0.221\"},{\"name\":\"serde_core\",\"req\":\"^1.0.221\"},{\"features\":[\"raw_value\"],\"name\":\"serde_json\",\"optional\":true,\"req\":\"^1.0\"},{\"features\":[\"raw_value\"],\"kind\":\"dev\",\"name\":\"serde_json\",\"req\":\"^1.0\"},{\"name\":\"serde_path_to_error\",\"optional\":true,\"req\":\"^0.1.8\"},{\"name\":\"serde_urlencoded\",\"optional\":true,\"req\":\"^0.7\"},{\"name\":\"sha1\",\"optional\":true,\"req\":\"^0.10\"},{\"name\":\"sync_wrapper\",\"req\":\"^1.0.0\"},{\"features\":[\"serde-human-readable\"],\"kind\":\"dev\",\"name\":\"time\",\"req\":\"^0.3\"},{\"features\":[\"time\"],\"name\":\"tokio\",\"optional\":true,\"package\":\"tokio\",\"req\":\"^1.44\"},{\"features\":[\"macros\",\"rt\",\"rt-multi-thread\",\"net\",\"test-util\"],\"kind\":\"dev\",\"name\":\"tokio\",\"package\":\"tokio\",\"req\":\"^1.44.2\"},{\"kind\":\"dev\",\"name\":\"tokio-stream\",\"req\":\"^0.1\"},{\"name\":\"tokio-tungstenite\",\"optional\":true,\"req\":\"^0.29.0\"},{\"kind\":\"dev\",\"name\":\"tokio-tungstenite\",\"req\":\"^0.29.0\"},{\"default_features\":false,\"features\":[\"util\"],\"name\":\"tower\",\"req\":\"^0.5.2\"},{\"features\":[\"util\",\"timeout\",\"limit\",\"load-shed\",\"steer\",\"filter\"],\"kind\":\"dev\",\"name\":\"tower\",\"package\":\"tower\",\"req\":\"^0.5.2\"},{\"features\":[\"add-extension\",\"auth\",\"catch-panic\",\"compression-br\",\"compression-deflate\",\"compression-gzip\",\"cors\",\"decompression-br\",\"decompression-deflate\",\"decompression-gzip\",\"follow-redirect\",\"fs\",\"limit\",\"map-request-body\",\"map-response-body\",\"metrics\",\"normalize-path\",\"propagate-header\",\"redirect\",\"request-id\",\"sensitive-headers\",\"set-header\",\"set-status\",\"timeout\",\"trace\",\"util\",\"validate-request\"],\"name\":\"tower-http\",\"optional\":true,\"req\":\"^0.6.8\"},{\"features\":[\"add-extension\",\"auth\",\"catch-panic\",\"compression-br\",\"compression-deflate\",\"compression-gzip\",\"cors\",\"decompression-br\",\"decompression-deflate\",\"decompression-gzip\",\"follow-redirect\",\"fs\",\"limit\",\"map-request-body\",\"map-response-body\",\"metrics\",\"normalize-path\",\"propagate-header\",\"redirect\",\"request-id\",\"sensitive-headers\",\"set-header\",\"set-status\",\"timeout\",\"trace\",\"util\",\"validate-request\"],\"kind\":\"dev\",\"name\":\"tower-http\",\"req\":\"^0.6.8\"},{\"name\":\"tower-layer\",\"req\":\"^0.3.2\"},{\"name\":\"tower-service\",\"req\":\"^0.3\"},{\"default_features\":false,\"name\":\"tracing\",\"optional\":true,\"req\":\"^0.1\"},{\"kind\":\"dev\",\"name\":\"tracing\",\"req\":\"^0.1\"},{\"features\":[\"json\"],\"kind\":\"dev\",\"name\":\"tracing-subscriber\",\"req\":\"^0.3\"},{\"features\":[\"serde\",\"v4\"],\"kind\":\"dev\",\"name\":\"uuid\",\"req\":\"^1.0\"}],\"features\":{\"__private\":[\"tokio\",\"http1\",\"dep:reqwest\"],\"__private_docs\":[\"axum-core/__private_docs\",\"tower/full\",\"dep:serde\",\"dep:tower-http\"],\"default\":[\"form\",\"http1\",\"json\",\"matched-path\",\"original-uri\",\"query\",\"tokio\",\"tower-log\",\"tracing\"],\"form\":[\"dep:form_urlencoded\",\"dep:serde_urlencoded\",\"dep:serde_path_to_error\"],\"http1\":[\"dep:hyper\",\"hyper?/http1\",\"hyper-util?/http1\"],\"http2\":[\"dep:hyper\",\"hyper?/http2\",\"hyper-util?/http2\"],\"json\":[\"dep:serde_json\",\"dep:serde_path_to_error\"],\"macros\":[\"dep:axum-macros\"],\"matched-path\":[],\"multipart\":[\"dep:multer\"],\"original-uri\":[],\"query\":[\"dep:form_urlencoded\",\"dep:serde_urlencoded\",\"dep:serde_path_to_error\"],\"tokio\":[\"dep:hyper-util\",\"dep:tokio\",\"tokio/net\",\"tokio/rt\",\"tower/make\",\"tokio/macros\"],\"tower-log\":[\"tower/log\"],\"tracing\":[\"dep:tracing\",\"axum-core/tracing\"],\"ws\":[\"dep:hyper\",\"tokio\",\"dep:tokio-tungstenite\",\"dep:sha1\",\"dep:base64\"]}}", + "base16_0.2.1": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"criterion\",\"req\":\"^0.2.11\"},{\"kind\":\"dev\",\"name\":\"rand\",\"req\":\"^0.6.5\"}],\"features\":{\"alloc\":[],\"default\":[\"std\"],\"std\":[\"alloc\"]}}", "base64_0.22.1": "{\"dependencies\":[{\"features\":[\"derive\"],\"kind\":\"dev\",\"name\":\"clap\",\"req\":\"^3.2.25\"},{\"kind\":\"dev\",\"name\":\"criterion\",\"req\":\"^0.4.0\"},{\"kind\":\"dev\",\"name\":\"once_cell\",\"req\":\"^1\"},{\"features\":[\"small_rng\"],\"kind\":\"dev\",\"name\":\"rand\",\"req\":\"^0.8.5\"},{\"kind\":\"dev\",\"name\":\"rstest\",\"req\":\"^0.13.0\"},{\"kind\":\"dev\",\"name\":\"rstest_reuse\",\"req\":\"^0.6.0\"},{\"features\":[\"derive\"],\"kind\":\"dev\",\"name\":\"strum\",\"req\":\"^0.25\"}],\"features\":{\"alloc\":[],\"default\":[\"std\"],\"std\":[\"alloc\"]}}", + "bit-set_0.8.0": "{\"dependencies\":[{\"default_features\":false,\"name\":\"bit-vec\",\"req\":\"^0.8.0\"},{\"kind\":\"dev\",\"name\":\"rand\",\"req\":\"^0.8\"},{\"features\":[\"derive\"],\"name\":\"serde\",\"optional\":true,\"req\":\"^1.0\"},{\"kind\":\"dev\",\"name\":\"serde_json\",\"req\":\"^1.0\"}],\"features\":{\"default\":[\"std\"],\"serde\":[\"dep:serde\",\"bit-vec/serde\"],\"std\":[\"bit-vec/std\"]}}", + "bit-vec_0.8.0": "{\"dependencies\":[{\"default_features\":false,\"features\":[\"derive\"],\"name\":\"borsh\",\"optional\":true,\"req\":\"^1.5\"},{\"name\":\"miniserde\",\"optional\":true,\"req\":\"^0.1\"},{\"name\":\"nanoserde\",\"optional\":true,\"req\":\"^0.1\"},{\"kind\":\"dev\",\"name\":\"rand\",\"req\":\"^0.8\"},{\"kind\":\"dev\",\"name\":\"rand_xorshift\",\"req\":\"^0.3\"},{\"default_features\":false,\"features\":[\"derive\"],\"name\":\"serde\",\"optional\":true,\"req\":\"^1.0\"},{\"kind\":\"dev\",\"name\":\"serde_json\",\"req\":\"^1.0\"}],\"features\":{\"borsh_std\":[\"borsh/std\"],\"default\":[\"std\"],\"serde_no_std\":[\"serde/alloc\"],\"serde_std\":[\"std\",\"serde/std\"],\"std\":[]}}", "bitflags_2.11.1": "{\"dependencies\":[{\"name\":\"arbitrary\",\"optional\":true,\"req\":\"^1.0\"},{\"features\":[\"derive\"],\"kind\":\"dev\",\"name\":\"arbitrary\",\"req\":\"^1.0\"},{\"name\":\"bytemuck\",\"optional\":true,\"req\":\"^1.12\"},{\"features\":[\"derive\"],\"kind\":\"dev\",\"name\":\"bytemuck\",\"req\":\"^1.12.2\"},{\"kind\":\"dev\",\"name\":\"rustversion\",\"req\":\"^1.0\"},{\"default_features\":false,\"name\":\"serde_core\",\"optional\":true,\"req\":\"^1.0.228\"},{\"kind\":\"dev\",\"name\":\"serde_json\",\"req\":\"^1.0\"},{\"features\":[\"derive\"],\"kind\":\"dev\",\"name\":\"serde_lib\",\"package\":\"serde\",\"req\":\"^1.0.103\"},{\"kind\":\"dev\",\"name\":\"serde_test\",\"req\":\"^1.0.19\"},{\"kind\":\"dev\",\"name\":\"trybuild\",\"req\":\"^1.0.18\"},{\"features\":[\"derive\"],\"kind\":\"dev\",\"name\":\"zerocopy\",\"req\":\"^0.8\"}],\"features\":{\"example_generated\":[],\"serde\":[\"serde_core\"],\"std\":[]}}", + "block-buffer_0.10.4": "{\"dependencies\":[{\"name\":\"generic-array\",\"req\":\"^0.14\"}],\"features\":{}}", + "borrow-or-share_0.2.4": "{\"dependencies\":[],\"features\":{\"alloc\":[],\"default\":[\"alloc\"],\"std\":[\"alloc\"]}}", "bumpalo_3.20.2": "{\"dependencies\":[{\"default_features\":false,\"name\":\"allocator-api2\",\"optional\":true,\"req\":\"^0.2.8\"},{\"kind\":\"dev\",\"name\":\"blink-alloc\",\"req\":\"=0.4.0\"},{\"kind\":\"dev\",\"name\":\"criterion\",\"req\":\"^0.3.6\"},{\"kind\":\"dev\",\"name\":\"quickcheck\",\"req\":\"=1.0.3\"},{\"kind\":\"dev\",\"name\":\"rand\",\"req\":\"^0.8.5\"},{\"kind\":\"dev\",\"name\":\"rayon\",\"req\":\"=1.10.0\"},{\"kind\":\"dev\",\"name\":\"rayon-core\",\"req\":\"=1.12.1\"},{\"name\":\"serde\",\"optional\":true,\"req\":\"^1.0.171\"},{\"features\":[\"derive\"],\"kind\":\"dev\",\"name\":\"serde\",\"req\":\"^1.0.197\"},{\"kind\":\"dev\",\"name\":\"serde_json\",\"req\":\"^1.0.115\"}],\"features\":{\"allocator_api\":[],\"bench_allocator_api\":[\"allocator_api\",\"blink-alloc/nightly\"],\"boxed\":[],\"collections\":[],\"default\":[],\"serde\":[\"dep:serde\"],\"std\":[]}}", + "bytecount_0.6.9": "{\"dependencies\":[{\"default_features\":false,\"kind\":\"dev\",\"name\":\"criterion\",\"req\":\"^0.4\"},{\"kind\":\"dev\",\"name\":\"quickcheck\",\"req\":\"^1.0\"},{\"kind\":\"dev\",\"name\":\"rand\",\"req\":\"^0.8\"}],\"features\":{\"generic-simd\":[],\"html_report\":[],\"runtime-dispatch-simd\":[]}}", "bytes_1.11.1": "{\"dependencies\":[{\"default_features\":false,\"features\":[\"require-cas\"],\"name\":\"extra-platforms\",\"optional\":true,\"package\":\"portable-atomic\",\"req\":\"^1.3\"},{\"kind\":\"dev\",\"name\":\"loom\",\"req\":\"^0.7\",\"target\":\"cfg(loom)\"},{\"default_features\":false,\"features\":[\"alloc\"],\"name\":\"serde\",\"optional\":true,\"req\":\"^1.0.60\"},{\"kind\":\"dev\",\"name\":\"serde_test\",\"req\":\"^1.0\"}],\"features\":{\"default\":[\"std\"],\"std\":[]}}", "cap-primitives_4.0.2": "{\"dependencies\":[{\"name\":\"ambient-authority\",\"req\":\"^0.0.2\"},{\"features\":[\"derive\"],\"name\":\"arbitrary\",\"optional\":true,\"req\":\"^1.0.0\"},{\"name\":\"fs-set-times\",\"req\":\"^0.20.0\"},{\"name\":\"io-extras\",\"req\":\"^0.19.0\"},{\"default_features\":false,\"name\":\"io-lifetimes\",\"req\":\"^3.0.1\"},{\"name\":\"ipnet\",\"req\":\"^2.5.0\"},{\"name\":\"maybe-owned\",\"req\":\"^0.3.4\"},{\"features\":[\"fs\",\"process\",\"termios\",\"time\"],\"name\":\"rustix\",\"req\":\"^1.0.0\",\"target\":\"cfg(not(windows))\"},{\"name\":\"rustix-linux-procfs\",\"req\":\"^0.1.1\",\"target\":\"cfg(any(target_os = \\\"android\\\", target_os = \\\"linux\\\"))\"},{\"features\":[\"Win32_Foundation\",\"Win32_Security\",\"Win32_Storage_FileSystem\",\"Win32_System_Kernel\",\"Win32_System_WindowsProgramming\",\"Win32_System_IO\",\"Wdk_Storage_FileSystem\",\"Wdk_Foundation\"],\"name\":\"windows-sys\",\"req\":\">=0.60, <0.62\",\"target\":\"cfg(windows)\"},{\"name\":\"winx\",\"req\":\"^0.36.0\",\"target\":\"cfg(windows)\"}],\"features\":{}}", "cap-std_4.0.2": "{\"dependencies\":[{\"name\":\"arf-strings\",\"optional\":true,\"req\":\"^0.7.0\"},{\"name\":\"camino\",\"optional\":true,\"req\":\"^1.0.5\"},{\"name\":\"cap-primitives\",\"req\":\"^4.0.2\"},{\"name\":\"io-extras\",\"req\":\"^0.19.0\"},{\"default_features\":false,\"name\":\"io-lifetimes\",\"req\":\"^3.0.1\"},{\"features\":[\"fs\"],\"name\":\"rustix\",\"req\":\"^1.0.0\",\"target\":\"cfg(not(windows))\"}],\"features\":{\"arf_strings\":[\"fs_utf8\",\"arf-strings\"],\"default\":[],\"fs_utf8\":[\"camino\"]}}", @@ -1879,15 +1888,18 @@ "cc_1.2.60": "{\"dependencies\":[{\"name\":\"find-msvc-tools\",\"req\":\"^0.1.9\"},{\"default_features\":false,\"name\":\"jobserver\",\"optional\":true,\"req\":\"^0.1.30\"},{\"default_features\":false,\"name\":\"libc\",\"optional\":true,\"req\":\"^0.2.62\",\"target\":\"cfg(unix)\"},{\"name\":\"shlex\",\"req\":\"^1.3.0\"},{\"kind\":\"dev\",\"name\":\"tempfile\",\"req\":\"^3\"}],\"features\":{\"jobserver\":[],\"parallel\":[\"dep:libc\",\"dep:jobserver\"]}}", "cfg-if_1.0.4": "{\"dependencies\":[{\"name\":\"core\",\"optional\":true,\"package\":\"rustc-std-workspace-core\",\"req\":\"^1.0.0\"}],\"features\":{\"rustc-dep-of-std\":[\"core\"]}}", "cfg_aliases_0.2.1": "{\"dependencies\":[],\"features\":{}}", + "chrono-tz_0.10.4": "{\"dependencies\":[{\"features\":[\"derive\"],\"name\":\"arbitrary\",\"optional\":true,\"req\":\"^1.2\"},{\"default_features\":false,\"name\":\"chrono\",\"req\":\"^0.4.25\"},{\"default_features\":false,\"features\":[\"alloc\"],\"kind\":\"dev\",\"name\":\"chrono\",\"req\":\"^0.4\"},{\"kind\":\"build\",\"name\":\"chrono-tz-build\",\"optional\":true,\"req\":\"^0.5\"},{\"kind\":\"dev\",\"name\":\"chrono-tz-build\",\"req\":\"^0.5\"},{\"default_features\":false,\"name\":\"phf\",\"req\":\"^0.12\"},{\"default_features\":false,\"name\":\"serde\",\"optional\":true,\"req\":\"^1.0.99\"},{\"kind\":\"dev\",\"name\":\"serde_test\",\"req\":\"^1\"},{\"kind\":\"dev\",\"name\":\"tzfile\",\"req\":\"^0.1\"},{\"default_features\":false,\"name\":\"uncased\",\"optional\":true,\"req\":\"^0.9\"}],\"features\":{\"case-insensitive\":[\"dep:uncased\",\"chrono-tz-build\",\"chrono-tz-build/case-insensitive\",\"phf/uncased\"],\"default\":[\"std\"],\"filter-by-regex\":[\"chrono-tz-build\",\"chrono-tz-build/filter-by-regex\"],\"serde\":[\"dep:serde\"],\"std\":[]}}", "chrono_0.4.45": "{\"dependencies\":[{\"features\":[\"derive\"],\"name\":\"arbitrary\",\"optional\":true,\"req\":\"^1.0.0\"},{\"kind\":\"dev\",\"name\":\"bincode\",\"req\":\"^1.3.0\"},{\"name\":\"defmt\",\"optional\":true,\"req\":\"^1.0.1\"},{\"features\":[\"fallback\"],\"name\":\"iana-time-zone\",\"optional\":true,\"req\":\"^0.1.45\",\"target\":\"cfg(unix)\"},{\"name\":\"js-sys\",\"optional\":true,\"req\":\"^0.3\",\"target\":\"cfg(all(target_arch = \\\"wasm32\\\", not(any(target_os = \\\"emscripten\\\", target_os = \\\"wasi\\\"))))\"},{\"default_features\":false,\"name\":\"num-traits\",\"req\":\"^0.2\"},{\"name\":\"pure-rust-locales\",\"optional\":true,\"req\":\"^0.8.2\"},{\"default_features\":false,\"name\":\"rkyv\",\"optional\":true,\"req\":\"^0.7.43\"},{\"default_features\":false,\"name\":\"serde\",\"optional\":true,\"req\":\"^1.0.99\"},{\"default_features\":false,\"kind\":\"dev\",\"name\":\"serde_derive\",\"req\":\"^1\"},{\"kind\":\"dev\",\"name\":\"serde_json\",\"req\":\"^1\"},{\"kind\":\"dev\",\"name\":\"similar-asserts\",\"req\":\"^2.0.0\"},{\"name\":\"wasm-bindgen\",\"optional\":true,\"req\":\"^0.2\",\"target\":\"cfg(all(target_arch = \\\"wasm32\\\", not(any(target_os = \\\"emscripten\\\", target_os = \\\"wasi\\\"))))\"},{\"kind\":\"dev\",\"name\":\"wasm-bindgen-test\",\"req\":\"^0.3\",\"target\":\"cfg(all(target_arch = \\\"wasm32\\\", not(any(target_os = \\\"emscripten\\\", target_os = \\\"wasi\\\"))))\"},{\"kind\":\"dev\",\"name\":\"windows-bindgen\",\"req\":\"^0.66\"},{\"name\":\"windows-link\",\"optional\":true,\"req\":\"^0.2\",\"target\":\"cfg(windows)\"}],\"features\":{\"__internal_bench\":[],\"alloc\":[],\"clock\":[\"winapi\",\"iana-time-zone\",\"now\"],\"core-error\":[],\"default\":[\"clock\",\"std\",\"oldtime\",\"wasmbind\"],\"defmt\":[\"dep:defmt\",\"pure-rust-locales?/defmt\"],\"libc\":[],\"now\":[\"std\"],\"oldtime\":[],\"rkyv\":[\"dep:rkyv\",\"rkyv/size_32\"],\"rkyv-16\":[\"dep:rkyv\",\"rkyv?/size_16\"],\"rkyv-32\":[\"dep:rkyv\",\"rkyv?/size_32\"],\"rkyv-64\":[\"dep:rkyv\",\"rkyv?/size_64\"],\"rkyv-validation\":[\"rkyv?/validation\"],\"std\":[\"alloc\"],\"unstable-locales\":[\"pure-rust-locales\"],\"wasmbind\":[\"wasm-bindgen\",\"js-sys\"],\"winapi\":[\"windows-link\"]}}", - "clap_4.6.4": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"automod\",\"req\":\"^1.0.16\"},{\"default_features\":false,\"kind\":\"dev\",\"name\":\"clap-cargo\",\"req\":\"^0.15.2\"},{\"default_features\":false,\"name\":\"clap_builder\",\"req\":\"=4.6.2\"},{\"name\":\"clap_derive\",\"optional\":true,\"req\":\"=4.6.4\"},{\"kind\":\"dev\",\"name\":\"jiff\",\"req\":\"^0.2.23\"},{\"kind\":\"dev\",\"name\":\"rustversion\",\"req\":\"^1.0.22\"},{\"kind\":\"dev\",\"name\":\"semver\",\"req\":\"^1.0.27\"},{\"kind\":\"dev\",\"name\":\"shlex\",\"req\":\"^2.0.0\"},{\"features\":[\"term-svg\"],\"kind\":\"dev\",\"name\":\"snapbox\",\"req\":\"^1.2.0\"},{\"kind\":\"dev\",\"name\":\"trybuild\",\"req\":\"^1.0.116\"},{\"default_features\":false,\"features\":[\"color-auto\",\"diff\",\"examples\"],\"kind\":\"dev\",\"name\":\"trycmd\",\"req\":\"^1.2.0\"}],\"features\":{\"cargo\":[\"clap_builder/cargo\"],\"color\":[\"clap_builder/color\"],\"debug\":[\"clap_builder/debug\",\"clap_derive?/debug\"],\"default\":[\"std\",\"color\",\"help\",\"usage\",\"error-context\",\"suggestions\"],\"deprecated\":[\"clap_builder/deprecated\",\"clap_derive?/deprecated\"],\"derive\":[\"dep:clap_derive\"],\"env\":[\"clap_builder/env\"],\"error-context\":[\"clap_builder/error-context\"],\"help\":[\"clap_builder/help\"],\"std\":[\"clap_builder/std\"],\"string\":[\"clap_builder/string\"],\"suggestions\":[\"clap_builder/suggestions\"],\"unicode\":[\"clap_builder/unicode\"],\"unstable-derive-ui-tests\":[],\"unstable-doc\":[\"clap_builder/unstable-doc\",\"derive\"],\"unstable-ext\":[\"clap_builder/unstable-ext\"],\"unstable-markdown\":[\"clap_derive/unstable-markdown\"],\"unstable-styles\":[\"clap_builder/unstable-styles\"],\"unstable-v5\":[\"clap_builder/unstable-v5\",\"clap_derive?/unstable-v5\",\"deprecated\"],\"usage\":[\"clap_builder/usage\"],\"wrap_help\":[\"clap_builder/wrap_help\"]}}", + "clap_4.6.2": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"automod\",\"req\":\"^1.0.16\"},{\"default_features\":false,\"kind\":\"dev\",\"name\":\"clap-cargo\",\"req\":\"^0.15.2\"},{\"default_features\":false,\"name\":\"clap_builder\",\"req\":\"=4.6.2\"},{\"name\":\"clap_derive\",\"optional\":true,\"req\":\"=4.6.1\"},{\"kind\":\"dev\",\"name\":\"jiff\",\"req\":\"^0.2.23\"},{\"kind\":\"dev\",\"name\":\"rustversion\",\"req\":\"^1.0.22\"},{\"kind\":\"dev\",\"name\":\"semver\",\"req\":\"^1.0.27\"},{\"kind\":\"dev\",\"name\":\"shlex\",\"req\":\"^2.0.0\"},{\"features\":[\"term-svg\"],\"kind\":\"dev\",\"name\":\"snapbox\",\"req\":\"^1.2.0\"},{\"kind\":\"dev\",\"name\":\"trybuild\",\"req\":\"^1.0.116\"},{\"default_features\":false,\"features\":[\"color-auto\",\"diff\",\"examples\"],\"kind\":\"dev\",\"name\":\"trycmd\",\"req\":\"^1.2.0\"}],\"features\":{\"cargo\":[\"clap_builder/cargo\"],\"color\":[\"clap_builder/color\"],\"debug\":[\"clap_builder/debug\",\"clap_derive?/debug\"],\"default\":[\"std\",\"color\",\"help\",\"usage\",\"error-context\",\"suggestions\"],\"deprecated\":[\"clap_builder/deprecated\",\"clap_derive?/deprecated\"],\"derive\":[\"dep:clap_derive\"],\"env\":[\"clap_builder/env\"],\"error-context\":[\"clap_builder/error-context\"],\"help\":[\"clap_builder/help\"],\"std\":[\"clap_builder/std\"],\"string\":[\"clap_builder/string\"],\"suggestions\":[\"clap_builder/suggestions\"],\"unicode\":[\"clap_builder/unicode\"],\"unstable-derive-ui-tests\":[],\"unstable-doc\":[\"clap_builder/unstable-doc\",\"derive\"],\"unstable-ext\":[\"clap_builder/unstable-ext\"],\"unstable-markdown\":[\"clap_derive/unstable-markdown\"],\"unstable-styles\":[\"clap_builder/unstable-styles\"],\"unstable-v5\":[\"clap_builder/unstable-v5\",\"clap_derive?/unstable-v5\",\"deprecated\"],\"usage\":[\"clap_builder/usage\"],\"wrap_help\":[\"clap_builder/wrap_help\"]}}", "clap_builder_4.6.2": "{\"dependencies\":[{\"name\":\"anstream\",\"optional\":true,\"req\":\"^1.0.0\"},{\"name\":\"anstyle\",\"req\":\"^1.0.14\"},{\"name\":\"backtrace\",\"optional\":true,\"req\":\"^0.3.76\"},{\"name\":\"clap_lex\",\"req\":\"^1.0.0\"},{\"kind\":\"dev\",\"name\":\"color-print\",\"req\":\"^0.3.7\"},{\"kind\":\"dev\",\"name\":\"snapbox\",\"req\":\"^1.2.0\"},{\"kind\":\"dev\",\"name\":\"static_assertions\",\"req\":\"^1.1.0\"},{\"name\":\"strsim\",\"optional\":true,\"req\":\"^0.11.1\"},{\"name\":\"terminal_size\",\"optional\":true,\"req\":\"^0.4.4\"},{\"kind\":\"dev\",\"name\":\"unic-emoji-char\",\"req\":\"^0.9.0\"},{\"name\":\"unicase\",\"optional\":true,\"req\":\"^2.9.0\"},{\"name\":\"unicode-width\",\"optional\":true,\"req\":\"^0.2.2\"}],\"features\":{\"cargo\":[],\"color\":[\"dep:anstream\"],\"debug\":[\"dep:backtrace\"],\"default\":[\"std\",\"color\",\"help\",\"usage\",\"error-context\",\"suggestions\"],\"deprecated\":[],\"env\":[],\"error-context\":[],\"help\":[],\"std\":[\"anstyle/std\"],\"string\":[],\"suggestions\":[\"dep:strsim\",\"error-context\"],\"unicode\":[\"dep:unicode-width\",\"dep:unicase\"],\"unstable-doc\":[\"cargo\",\"wrap_help\",\"env\",\"unicode\",\"string\",\"unstable-ext\"],\"unstable-ext\":[],\"unstable-styles\":[\"color\"],\"unstable-v5\":[\"deprecated\"],\"usage\":[],\"wrap_help\":[\"help\",\"dep:terminal_size\"]}}", - "clap_derive_4.6.4": "{\"dependencies\":[{\"name\":\"anstyle\",\"optional\":true,\"req\":\"^1.0.14\"},{\"name\":\"heck\",\"req\":\"^0.5.0\"},{\"name\":\"proc-macro2\",\"req\":\"^1.0.106\"},{\"default_features\":false,\"name\":\"pulldown-cmark\",\"optional\":true,\"req\":\"^0.13.3\"},{\"name\":\"quote\",\"req\":\"^1.0.45\"},{\"features\":[\"full\"],\"name\":\"syn\",\"req\":\"^3.0.2\"}],\"features\":{\"debug\":[],\"default\":[],\"deprecated\":[],\"raw-deprecated\":[\"deprecated\"],\"unstable-markdown\":[\"dep:pulldown-cmark\",\"dep:anstyle\"],\"unstable-v5\":[\"deprecated\"]}}", + "clap_derive_4.6.1": "{\"dependencies\":[{\"name\":\"anstyle\",\"optional\":true,\"req\":\"^1.0.14\"},{\"name\":\"heck\",\"req\":\"^0.5.0\"},{\"name\":\"proc-macro2\",\"req\":\"^1.0.106\"},{\"default_features\":false,\"name\":\"pulldown-cmark\",\"optional\":true,\"req\":\"^0.13.3\"},{\"name\":\"quote\",\"req\":\"^1.0.45\"},{\"features\":[\"full\"],\"name\":\"syn\",\"req\":\"^2.0.117\"}],\"features\":{\"debug\":[],\"default\":[],\"deprecated\":[],\"raw-deprecated\":[\"deprecated\"],\"unstable-markdown\":[\"dep:pulldown-cmark\",\"dep:anstyle\"],\"unstable-v5\":[\"deprecated\"]}}", "clap_lex_1.1.0": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"automod\",\"req\":\"^1.0.16\"}],\"features\":{}}", + "codespan-reporting_0.12.0": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"anyhow\",\"req\":\"^1\"},{\"kind\":\"dev\",\"name\":\"insta\",\"req\":\"^1.6.3\"},{\"kind\":\"dev\",\"name\":\"lazy_static\",\"req\":\"^1.4\"},{\"kind\":\"dev\",\"name\":\"peg\",\"req\":\"^0.7\"},{\"kind\":\"dev\",\"name\":\"pico-args\",\"req\":\"^0.5.0\"},{\"kind\":\"dev\",\"name\":\"rustyline\",\"req\":\"^6\"},{\"default_features\":false,\"features\":[\"derive\",\"alloc\"],\"name\":\"serde\",\"optional\":true,\"req\":\"^1\"},{\"name\":\"termcolor\",\"optional\":true,\"req\":\"^1.0.4\"},{\"name\":\"unicode-width\",\"req\":\">=0.1, <0.3\"},{\"kind\":\"dev\",\"name\":\"unindent\",\"req\":\"^0.1\"}],\"features\":{\"ascii-only\":[],\"default\":[\"std\",\"termcolor\"],\"serialization\":[\"serde\"],\"std\":[\"serde?/std\"],\"termcolor\":[\"std\",\"dep:termcolor\"]}}", "colorchoice_1.0.5": "{\"dependencies\":[],\"features\":{}}", "cookie_0.18.1": "{\"dependencies\":[{\"name\":\"aes-gcm\",\"optional\":true,\"req\":\"^0.10.0\"},{\"name\":\"base64\",\"optional\":true,\"req\":\"^0.22\"},{\"name\":\"hkdf\",\"optional\":true,\"req\":\"^0.12.0\"},{\"name\":\"hmac\",\"optional\":true,\"req\":\"^0.12.0\"},{\"name\":\"percent-encoding\",\"optional\":true,\"req\":\"^2.0\"},{\"name\":\"rand\",\"optional\":true,\"req\":\"^0.8\"},{\"name\":\"sha2\",\"optional\":true,\"req\":\"^0.10.0\"},{\"name\":\"subtle\",\"optional\":true,\"req\":\"^2.3\"},{\"default_features\":false,\"features\":[\"std\",\"parsing\",\"formatting\",\"macros\"],\"name\":\"time\",\"req\":\"^0.3\"},{\"kind\":\"build\",\"name\":\"version_check\",\"req\":\"^0.9.4\"}],\"features\":{\"key-expansion\":[\"sha2\",\"hkdf\"],\"percent-encode\":[\"percent-encoding\"],\"private\":[\"aes-gcm\",\"base64\",\"rand\",\"subtle\"],\"secure\":[\"private\",\"signed\",\"key-expansion\"],\"signed\":[\"hmac\",\"sha2\",\"base64\",\"rand\",\"subtle\"]}}", "cookie_store_0.22.1": "{\"dependencies\":[{\"features\":[\"percent-encode\"],\"name\":\"cookie\",\"req\":\"^0.18.0\"},{\"name\":\"document-features\",\"req\":\"^0.2.10\"},{\"name\":\"idna\",\"req\":\"^1.0\"},{\"name\":\"indexmap\",\"optional\":true,\"req\":\"^2.6.0\"},{\"name\":\"log\",\"req\":\"^0.4.17\"},{\"name\":\"publicsuffix\",\"optional\":true,\"req\":\"^2.2.3\"},{\"name\":\"ron\",\"optional\":true,\"req\":\"^0.10.1\"},{\"name\":\"serde\",\"optional\":true,\"req\":\"^1.0.147\"},{\"name\":\"serde_derive\",\"optional\":true,\"req\":\"^1.0.147\"},{\"name\":\"serde_json\",\"optional\":true,\"req\":\"^1.0.87\"},{\"name\":\"time\",\"req\":\"^0.3.47\"},{\"name\":\"url\",\"req\":\"^2.3.1\"}],\"features\":{\"default\":[\"public_suffix\",\"serde_json\"],\"log_secure_cookie_values\":[],\"preserve_order\":[\"dep:indexmap\"],\"public_suffix\":[\"dep:publicsuffix\"],\"serde\":[\"dep:serde\",\"dep:serde_derive\"],\"serde_json\":[\"serde\",\"dep:serde_json\"],\"serde_ron\":[\"serde\",\"dep:ron\"],\"wasm-bindgen\":[\"time/wasm-bindgen\"]}}", "core-foundation-sys_0.8.7": "{\"dependencies\":[],\"features\":{\"default\":[\"link\"],\"link\":[],\"mac_os_10_7_support\":[],\"mac_os_10_8_features\":[]}}", + "cpufeatures_0.2.17": "{\"dependencies\":[{\"default_features\":false,\"name\":\"libc\",\"req\":\"^0.2.155\",\"target\":\"aarch64-linux-android\"},{\"default_features\":false,\"name\":\"libc\",\"req\":\"^0.2.155\",\"target\":\"cfg(all(target_arch = \\\"aarch64\\\", target_os = \\\"linux\\\"))\"},{\"default_features\":false,\"name\":\"libc\",\"req\":\"^0.2.155\",\"target\":\"cfg(all(target_arch = \\\"aarch64\\\", target_vendor = \\\"apple\\\"))\"},{\"default_features\":false,\"name\":\"libc\",\"req\":\"^0.2.155\",\"target\":\"cfg(all(target_arch = \\\"loongarch64\\\", target_os = \\\"linux\\\"))\"}],\"features\":{}}", "crc32fast_1.5.0": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"bencher\",\"req\":\"^0.1\"},{\"name\":\"cfg-if\",\"req\":\"^1.0\"},{\"default_features\":false,\"kind\":\"dev\",\"name\":\"quickcheck\",\"req\":\"^1.0\"},{\"kind\":\"dev\",\"name\":\"rand\",\"req\":\"^0.8\"}],\"features\":{\"default\":[\"std\"],\"nightly\":[],\"std\":[]}}", "crossbeam-channel_0.5.15": "{\"dependencies\":[{\"default_features\":false,\"name\":\"crossbeam-utils\",\"req\":\"^0.8.18\"},{\"kind\":\"dev\",\"name\":\"num_cpus\",\"req\":\"^1.13.0\"},{\"kind\":\"dev\",\"name\":\"rand\",\"req\":\"^0.8\"},{\"kind\":\"dev\",\"name\":\"signal-hook\",\"req\":\"^0.3\"}],\"features\":{\"default\":[\"std\"],\"std\":[\"crossbeam-utils/std\"]}}", "crossbeam-deque_0.8.6": "{\"dependencies\":[{\"default_features\":false,\"name\":\"crossbeam-epoch\",\"req\":\"^0.9.17\"},{\"default_features\":false,\"name\":\"crossbeam-utils\",\"req\":\"^0.8.18\"},{\"kind\":\"dev\",\"name\":\"rand\",\"req\":\"^0.8\"}],\"features\":{\"default\":[\"std\"],\"std\":[\"crossbeam-epoch/std\",\"crossbeam-utils/std\"]}}", @@ -1895,36 +1907,47 @@ "crossbeam-queue_0.3.12": "{\"dependencies\":[{\"default_features\":false,\"name\":\"crossbeam-utils\",\"req\":\"^0.8.18\"},{\"kind\":\"dev\",\"name\":\"rand\",\"req\":\"^0.8\"}],\"features\":{\"alloc\":[],\"default\":[\"std\"],\"nightly\":[\"crossbeam-utils/nightly\"],\"std\":[\"alloc\",\"crossbeam-utils/std\"]}}", "crossbeam-utils_0.8.21": "{\"dependencies\":[{\"name\":\"loom\",\"optional\":true,\"req\":\"^0.7.1\",\"target\":\"cfg(crossbeam_loom)\"},{\"kind\":\"dev\",\"name\":\"rand\",\"req\":\"^0.8\"}],\"features\":{\"default\":[\"std\"],\"nightly\":[],\"std\":[]}}", "crossbeam_0.8.4": "{\"dependencies\":[{\"default_features\":false,\"name\":\"crossbeam-channel\",\"optional\":true,\"req\":\"^0.5.10\"},{\"default_features\":false,\"name\":\"crossbeam-deque\",\"optional\":true,\"req\":\"^0.8.4\"},{\"default_features\":false,\"name\":\"crossbeam-epoch\",\"optional\":true,\"req\":\"^0.9.17\"},{\"default_features\":false,\"name\":\"crossbeam-queue\",\"optional\":true,\"req\":\"^0.3.10\"},{\"default_features\":false,\"name\":\"crossbeam-utils\",\"req\":\"^0.8.18\"},{\"kind\":\"dev\",\"name\":\"rand\",\"req\":\"^0.8\"}],\"features\":{\"alloc\":[\"crossbeam-epoch/alloc\",\"crossbeam-queue/alloc\"],\"default\":[\"std\"],\"nightly\":[\"crossbeam-epoch/nightly\",\"crossbeam-utils/nightly\",\"crossbeam-queue/nightly\"],\"std\":[\"alloc\",\"crossbeam-channel/std\",\"crossbeam-deque/std\",\"crossbeam-epoch/std\",\"crossbeam-queue/std\",\"crossbeam-utils/std\"]}}", + "crypto-common_0.1.7": "{\"dependencies\":[{\"features\":[\"more_lengths\"],\"name\":\"generic-array\",\"req\":\"=0.14.7\"},{\"name\":\"rand_core\",\"optional\":true,\"req\":\"^0.6\"},{\"name\":\"typenum\",\"req\":\"^1.14\"}],\"features\":{\"getrandom\":[\"rand_core/getrandom\"],\"std\":[]}}", + "data-encoding_2.11.0": "{\"dependencies\":[],\"features\":{\"alloc\":[],\"default\":[\"std\"],\"std\":[\"alloc\"]}}", "deranged_0.5.8": "{\"dependencies\":[{\"name\":\"deranged-macros\",\"optional\":true,\"req\":\"=0.3.0\"},{\"default_features\":false,\"name\":\"num-traits\",\"optional\":true,\"req\":\"^0.2.15\"},{\"default_features\":false,\"name\":\"powerfmt\",\"optional\":true,\"req\":\"^0.2.0\"},{\"default_features\":false,\"name\":\"quickcheck\",\"optional\":true,\"req\":\"^1.0.3\"},{\"default_features\":false,\"name\":\"rand010\",\"optional\":true,\"package\":\"rand\",\"req\":\"^0.10.0\"},{\"kind\":\"dev\",\"name\":\"rand010\",\"package\":\"rand\",\"req\":\"^0.10.0\"},{\"default_features\":false,\"name\":\"rand08\",\"optional\":true,\"package\":\"rand\",\"req\":\"^0.8.4\"},{\"kind\":\"dev\",\"name\":\"rand08\",\"package\":\"rand\",\"req\":\"^0.8.4\"},{\"default_features\":false,\"name\":\"rand09\",\"optional\":true,\"package\":\"rand\",\"req\":\"^0.9.0\"},{\"kind\":\"dev\",\"name\":\"rand09\",\"package\":\"rand\",\"req\":\"^0.9.0\"},{\"default_features\":false,\"name\":\"serde_core\",\"optional\":true,\"req\":\"^1.0.220\"},{\"kind\":\"dev\",\"name\":\"serde_json\",\"req\":\"^1.0.86\"}],\"features\":{\"alloc\":[],\"default\":[],\"macros\":[\"dep:deranged-macros\"],\"num\":[\"dep:num-traits\"],\"powerfmt\":[\"dep:powerfmt\"],\"quickcheck\":[\"dep:quickcheck\",\"alloc\"],\"rand\":[\"rand08\",\"rand09\",\"rand010\"],\"rand010\":[\"dep:rand010\"],\"rand08\":[\"dep:rand08\"],\"rand09\":[\"dep:rand09\"],\"serde\":[\"dep:serde_core\"]}}", + "digest_0.10.7": "{\"dependencies\":[{\"name\":\"blobby\",\"optional\":true,\"req\":\"^0.3\"},{\"name\":\"block-buffer\",\"optional\":true,\"req\":\"^0.10\"},{\"name\":\"const-oid\",\"optional\":true,\"req\":\"^0.9\"},{\"name\":\"crypto-common\",\"req\":\"^0.1.3\"},{\"default_features\":false,\"name\":\"subtle\",\"optional\":true,\"req\":\"^2.4\"}],\"features\":{\"alloc\":[],\"core-api\":[\"block-buffer\"],\"default\":[\"core-api\"],\"dev\":[\"blobby\"],\"mac\":[\"subtle\"],\"oid\":[\"const-oid\"],\"rand_core\":[\"crypto-common/rand_core\"],\"std\":[\"alloc\",\"crypto-common/std\"]}}", "dircpy_0.3.20": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"criterion\",\"req\":\"^0.5\"},{\"kind\":\"dev\",\"name\":\"env_logger\",\"req\":\"^0.11\"},{\"name\":\"jwalk\",\"optional\":true,\"req\":\"^0.8\"},{\"name\":\"log\",\"req\":\"^0.4\"},{\"features\":[\"blocking\"],\"kind\":\"dev\",\"name\":\"reqwest\",\"req\":\"^0.13\"},{\"kind\":\"dev\",\"name\":\"unzip\",\"req\":\"^0.1\"},{\"name\":\"walkdir\",\"req\":\"^2.5\"}],\"features\":{\"default\":[\"jwalk\"]}}", "displaydoc_0.2.5": "{\"dependencies\":[{\"default_features\":false,\"kind\":\"dev\",\"name\":\"libc\",\"req\":\"^0.2\"},{\"kind\":\"dev\",\"name\":\"pretty_assertions\",\"req\":\"^0.6.1\"},{\"name\":\"proc-macro2\",\"req\":\"^1.0\"},{\"name\":\"quote\",\"req\":\"^1.0\"},{\"kind\":\"dev\",\"name\":\"rustversion\",\"req\":\"^1.0.0\"},{\"kind\":\"dev\",\"name\":\"static_assertions\",\"req\":\"^1.1\"},{\"name\":\"syn\",\"req\":\"^2.0\"},{\"kind\":\"dev\",\"name\":\"thiserror\",\"req\":\"^1.0.24\"},{\"kind\":\"dev\",\"name\":\"trybuild\",\"req\":\"^1.0\"}],\"features\":{\"default\":[\"std\"],\"std\":[]}}", "document-features_0.2.12": "{\"dependencies\":[{\"name\":\"litrs\",\"req\":\"^1.0.0\"}],\"features\":{\"default\":[],\"self-test\":[]}}", + "dyn-clone_1.0.20": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"rustversion\",\"req\":\"^1.0\"},{\"features\":[\"diff\"],\"kind\":\"dev\",\"name\":\"trybuild\",\"req\":\"^1.0.66\"}],\"features\":{}}", "either_1.15.0": "{\"dependencies\":[{\"default_features\":false,\"features\":[\"alloc\",\"derive\"],\"name\":\"serde\",\"optional\":true,\"req\":\"^1.0.95\"},{\"kind\":\"dev\",\"name\":\"serde_json\",\"req\":\"^1.0.0\"}],\"features\":{\"default\":[\"std\"],\"std\":[],\"use_std\":[\"std\"]}}", "elf_0.8.0": "{\"dependencies\":[],\"features\":{\"alloc\":[],\"default\":[\"alloc\",\"std\",\"to_str\"],\"std\":[\"alloc\"],\"to_str\":[]}}", + "email_address_0.2.9": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"claims\",\"req\":\"^0.7.1\"},{\"name\":\"serde\",\"optional\":true,\"req\":\"^1.0\"},{\"kind\":\"dev\",\"name\":\"serde_assert\",\"req\":\"^0.8.0\"}],\"features\":{\"default\":[\"serde_support\"],\"serde_support\":[\"serde\"]}}", + "ena_0.14.4": "{\"dependencies\":[{\"name\":\"dogged\",\"optional\":true,\"req\":\"^0.2.0\"},{\"name\":\"log\",\"req\":\"^0.4\"}],\"features\":{\"bench\":[],\"persistent\":[\"dogged\"]}}", "encoding_rs_0.8.35": "{\"dependencies\":[{\"name\":\"any_all_workaround\",\"optional\":true,\"req\":\"^0.1.0\"},{\"kind\":\"dev\",\"name\":\"bincode\",\"req\":\"^1.0\"},{\"name\":\"cfg-if\",\"req\":\"^1.0\"},{\"name\":\"serde\",\"optional\":true,\"req\":\"^1.0\"},{\"kind\":\"dev\",\"name\":\"serde_derive\",\"req\":\"^1.0\"},{\"kind\":\"dev\",\"name\":\"serde_json\",\"req\":\"^1.0\"}],\"features\":{\"alloc\":[],\"default\":[\"alloc\"],\"fast-big5-hanzi-encode\":[],\"fast-gb-hanzi-encode\":[],\"fast-hangul-encode\":[],\"fast-hanja-encode\":[],\"fast-kanji-encode\":[],\"fast-legacy-encode\":[\"fast-hangul-encode\",\"fast-hanja-encode\",\"fast-kanji-encode\",\"fast-gb-hanzi-encode\",\"fast-big5-hanzi-encode\"],\"less-slow-big5-hanzi-encode\":[],\"less-slow-gb-hanzi-encode\":[],\"less-slow-kanji-encode\":[],\"simd-accel\":[\"any_all_workaround\"]}}", "equivalent_1.0.2": "{\"dependencies\":[],\"features\":{}}", "errno_0.3.14": "{\"dependencies\":[{\"default_features\":false,\"name\":\"libc\",\"req\":\"^0.2\",\"target\":\"cfg(target_os=\\\"hermit\\\")\"},{\"default_features\":false,\"name\":\"libc\",\"req\":\"^0.2\",\"target\":\"cfg(target_os=\\\"wasi\\\")\"},{\"default_features\":false,\"name\":\"libc\",\"req\":\"^0.2\",\"target\":\"cfg(unix)\"},{\"features\":[\"Win32_Foundation\",\"Win32_System_Diagnostics_Debug\"],\"name\":\"windows-sys\",\"req\":\">=0.52, <0.62\",\"target\":\"cfg(windows)\"}],\"features\":{\"default\":[\"std\"],\"std\":[\"libc/std\"]}}", + "fancy-regex_0.17.0": "{\"dependencies\":[{\"default_features\":false,\"name\":\"bit-set\",\"req\":\"^0.8\"},{\"kind\":\"dev\",\"name\":\"criterion\",\"req\":\"^0.5\"},{\"kind\":\"dev\",\"name\":\"matches\",\"req\":\"^0.1.10\"},{\"kind\":\"dev\",\"name\":\"quickcheck\",\"req\":\"^1.0\"},{\"kind\":\"dev\",\"name\":\"regex\",\"req\":\"^1.10\"},{\"default_features\":false,\"features\":[\"alloc\",\"syntax\",\"meta\",\"nfa\",\"dfa\",\"hybrid\"],\"name\":\"regex-automata\",\"req\":\"^0.4\"},{\"default_features\":false,\"name\":\"regex-syntax\",\"req\":\"^0.8\"}],\"features\":{\"default\":[\"unicode\",\"perf\",\"std\",\"variable-lookbehinds\"],\"perf\":[\"regex-automata/perf\"],\"std\":[\"regex-automata/std\",\"regex-syntax/std\",\"bit-set/std\"],\"track_caller\":[],\"unicode\":[\"regex-automata/unicode\",\"regex-syntax/unicode\"],\"variable-lookbehinds\":[\"regex-automata/dfa-search\"]}}", "fastrand_2.4.1": "{\"dependencies\":[{\"features\":[\"wasm_js\"],\"name\":\"getrandom\",\"optional\":true,\"req\":\"^0.3.4\",\"target\":\"cfg(all(any(target_arch = \\\"wasm32\\\", target_arch = \\\"wasm64\\\"), target_os = \\\"unknown\\\"))\"},{\"kind\":\"dev\",\"name\":\"getrandom\",\"req\":\"^0.3.4\"},{\"features\":[\"wasm_js\"],\"kind\":\"dev\",\"name\":\"getrandom\",\"req\":\"^0.3.4\",\"target\":\"cfg(all(any(target_arch = \\\"wasm32\\\", target_arch = \\\"wasm64\\\"), target_os = \\\"unknown\\\"))\"},{\"kind\":\"dev\",\"name\":\"rand\",\"req\":\"^0.9\"},{\"kind\":\"dev\",\"name\":\"wasm-bindgen-test\",\"req\":\"^0.3\",\"target\":\"cfg(all(any(target_arch = \\\"wasm32\\\", target_arch = \\\"wasm64\\\"), target_os = \\\"unknown\\\"))\"},{\"kind\":\"dev\",\"name\":\"wyhash\",\"req\":\"^0.6\"}],\"features\":{\"alloc\":[],\"default\":[\"std\"],\"js\":[\"std\",\"getrandom\"],\"std\":[\"alloc\"]}}", "find-msvc-tools_0.1.9": "{\"dependencies\":[],\"features\":{}}", "fixedbitset_0.5.7": "{\"dependencies\":[{\"name\":\"serde\",\"optional\":true,\"req\":\"^1.0\"},{\"kind\":\"dev\",\"name\":\"serde_json\",\"req\":\"^1.0\"}],\"features\":{\"default\":[\"std\"],\"std\":[]}}", "flate2_1.1.9": "{\"dependencies\":[{\"name\":\"cloudflare-zlib-sys\",\"optional\":true,\"req\":\"^0.3.6\"},{\"name\":\"crc32fast\",\"optional\":true,\"req\":\"^1.2.0\"},{\"name\":\"document-features\",\"optional\":true,\"req\":\"^0.2\"},{\"default_features\":false,\"kind\":\"dev\",\"name\":\"futures\",\"req\":\"^0.3\"},{\"name\":\"libz-ng-sys\",\"optional\":true,\"req\":\"^1.1.16\"},{\"default_features\":false,\"name\":\"libz-sys\",\"optional\":true,\"req\":\"^1.1.20\"},{\"default_features\":false,\"features\":[\"with-alloc\",\"simd\"],\"name\":\"miniz_oxide\",\"req\":\"^0.8.5\",\"target\":\"cfg(all(target_arch = \\\"wasm32\\\", not(target_os = \\\"emscripten\\\")))\"},{\"default_features\":false,\"features\":[\"with-alloc\",\"simd\"],\"name\":\"miniz_oxide\",\"optional\":true,\"req\":\"^0.8.5\"},{\"default_features\":false,\"kind\":\"dev\",\"name\":\"quickcheck\",\"req\":\"^1.0\"},{\"kind\":\"dev\",\"name\":\"rand\",\"req\":\"^0.9\"},{\"default_features\":false,\"features\":[\"std\",\"rust-allocator\"],\"name\":\"zlib-rs\",\"optional\":true,\"req\":\"^0.6.0\"}],\"features\":{\"any_c_zlib\":[\"any_zlib\"],\"any_impl\":[],\"any_zlib\":[\"any_impl\"],\"cloudflare_zlib\":[\"any_c_zlib\",\"cloudflare-zlib-sys\",\"dep:crc32fast\"],\"default\":[\"rust_backend\"],\"miniz-sys\":[\"rust_backend\"],\"miniz_oxide\":[\"any_impl\",\"dep:miniz_oxide\",\"dep:crc32fast\"],\"rust_backend\":[\"miniz_oxide\",\"any_impl\"],\"zlib\":[\"any_c_zlib\",\"libz-sys\",\"dep:crc32fast\"],\"zlib-default\":[\"any_c_zlib\",\"libz-sys/default\",\"dep:crc32fast\"],\"zlib-ng\":[\"any_c_zlib\",\"libz-ng-sys\",\"dep:crc32fast\"],\"zlib-ng-compat\":[\"zlib\",\"libz-sys/zlib-ng\",\"dep:crc32fast\"],\"zlib-rs\":[\"any_zlib\",\"dep:zlib-rs\"]}}", + "fluent-uri_0.4.1": "{\"dependencies\":[{\"default_features\":false,\"name\":\"borrow-or-share\",\"req\":\"^0.2.4\"},{\"name\":\"ref-cast\",\"req\":\"^1.0\"},{\"default_features\":false,\"name\":\"serde\",\"optional\":true,\"req\":\"^1.0\"}],\"features\":{\"alloc\":[\"borrow-or-share/alloc\",\"serde?/alloc\"],\"default\":[\"std\"],\"impl-error\":[],\"net\":[],\"std\":[\"alloc\",\"impl-error\"]}}", "fnv_1.0.7": "{\"dependencies\":[],\"features\":{\"default\":[\"std\"],\"std\":[]}}", "foldhash_0.1.5": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"ahash\",\"req\":\"^0.8\"},{\"kind\":\"dev\",\"name\":\"chrono\",\"req\":\"^0.4\"},{\"kind\":\"dev\",\"name\":\"criterion\",\"req\":\"^0.5\"},{\"kind\":\"dev\",\"name\":\"fxhash\",\"req\":\"^0.2\"},{\"kind\":\"dev\",\"name\":\"hashbrown\",\"req\":\"^0.14\"},{\"kind\":\"dev\",\"name\":\"rand\",\"req\":\"^0.8\"},{\"kind\":\"dev\",\"name\":\"uuid\",\"req\":\"^1.8\"}],\"features\":{\"default\":[\"std\"],\"std\":[]}}", "foldhash_0.2.0": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"ahash\",\"req\":\"^0.8\"},{\"kind\":\"dev\",\"name\":\"chrono\",\"req\":\"^0.4\"},{\"kind\":\"dev\",\"name\":\"criterion\",\"req\":\"^0.5\"},{\"kind\":\"dev\",\"name\":\"fxhash\",\"req\":\"^0.2\"},{\"kind\":\"dev\",\"name\":\"hashbrown\",\"req\":\"^0.15\"},{\"kind\":\"dev\",\"name\":\"rand\",\"req\":\"^0.8\"},{\"kind\":\"dev\",\"name\":\"rapidhash\",\"req\":\"^3.1.0\"},{\"kind\":\"dev\",\"name\":\"uuid\",\"req\":\"^1.8\"}],\"features\":{\"default\":[\"std\"],\"nightly\":[],\"std\":[]}}", "form_urlencoded_1.2.2": "{\"dependencies\":[{\"default_features\":false,\"name\":\"percent-encoding\",\"req\":\"^2.3.0\"}],\"features\":{\"alloc\":[\"percent-encoding/alloc\"],\"default\":[\"std\"],\"std\":[\"alloc\",\"percent-encoding/std\"]}}", + "fraction_0.15.4": "{\"dependencies\":[{\"name\":\"byteorder\",\"optional\":true,\"req\":\"^1\"},{\"name\":\"bytes\",\"optional\":true,\"req\":\"^1\"},{\"kind\":\"dev\",\"name\":\"criterion\",\"req\":\"^0.5\"},{\"name\":\"juniper\",\"optional\":true,\"req\":\"^0.15\"},{\"name\":\"lazy_static\",\"optional\":true,\"req\":\"^1\"},{\"default_features\":false,\"name\":\"num\",\"req\":\"^0.4.3\"},{\"name\":\"postgres-types\",\"optional\":true,\"req\":\"^0.2\"},{\"kind\":\"dev\",\"name\":\"rand\",\"req\":\"^0.8\"},{\"name\":\"serde\",\"optional\":true,\"req\":\"^1\"},{\"name\":\"serde_derive\",\"optional\":true,\"req\":\"^1\"}],\"features\":{\"default\":[\"with-bigint\",\"with-decimal\",\"with-dynaint\"],\"with-approx\":[\"with-bigint\"],\"with-bigint\":[\"num/num-bigint\",\"num/std\",\"lazy_static\"],\"with-decimal\":[],\"with-dynaint\":[],\"with-juniper-support\":[\"juniper\"],\"with-postgres-support\":[\"postgres-types\",\"byteorder\",\"bytes\"],\"with-serde-support\":[\"serde\",\"serde_derive\",\"num/serde\"],\"with-unicode\":[]}}", "fs-set-times_0.20.3": "{\"dependencies\":[{\"default_features\":false,\"name\":\"io-lifetimes\",\"req\":\"^2.0.0\"},{\"features\":[\"fs\",\"time\"],\"name\":\"rustix\",\"req\":\"^1.0.0\",\"target\":\"cfg(not(windows))\"},{\"features\":[\"Win32_Foundation\",\"Win32_Storage_FileSystem\"],\"name\":\"windows-sys\",\"req\":\">=0.52, <0.60\",\"target\":\"cfg(windows)\"}],\"features\":{}}", "futures-channel_0.3.32": "{\"dependencies\":[{\"default_features\":false,\"name\":\"futures-core\",\"req\":\"^0.3.32\"},{\"default_features\":false,\"name\":\"futures-sink\",\"optional\":true,\"req\":\"^0.3.32\"}],\"features\":{\"alloc\":[\"futures-core/alloc\"],\"cfg-target-has-atomic\":[],\"default\":[\"std\"],\"sink\":[\"futures-sink\"],\"std\":[\"alloc\",\"futures-core/std\"],\"unstable\":[]}}", "futures-core_0.3.32": "{\"dependencies\":[{\"default_features\":false,\"features\":[\"require-cas\"],\"name\":\"portable-atomic\",\"optional\":true,\"req\":\"^1.3\"}],\"features\":{\"alloc\":[],\"cfg-target-has-atomic\":[],\"default\":[\"std\"],\"std\":[\"alloc\"],\"unstable\":[]}}", "futures-sink_0.3.32": "{\"dependencies\":[],\"features\":{\"alloc\":[],\"default\":[\"std\"],\"std\":[\"alloc\"]}}", "futures-task_0.3.32": "{\"dependencies\":[],\"features\":{\"alloc\":[],\"cfg-target-has-atomic\":[],\"default\":[\"std\"],\"std\":[\"alloc\"],\"unstable\":[]}}", "futures-util_0.3.32": "{\"dependencies\":[{\"default_features\":false,\"features\":[\"std\"],\"name\":\"futures-channel\",\"optional\":true,\"req\":\"^0.3.32\"},{\"default_features\":false,\"name\":\"futures-core\",\"req\":\"^0.3.32\"},{\"default_features\":false,\"features\":[\"std\"],\"name\":\"futures-io\",\"optional\":true,\"req\":\"^0.3.32\"},{\"default_features\":false,\"name\":\"futures-macro\",\"optional\":true,\"req\":\"=0.3.32\"},{\"default_features\":false,\"name\":\"futures-sink\",\"optional\":true,\"req\":\"^0.3.32\"},{\"default_features\":false,\"name\":\"futures-task\",\"req\":\"^0.3.32\"},{\"name\":\"futures_01\",\"optional\":true,\"package\":\"futures\",\"req\":\"^0.1.25\"},{\"name\":\"libc\",\"optional\":true,\"req\":\"^0.2.26\"},{\"name\":\"memchr\",\"optional\":true,\"req\":\"^2.2\"},{\"name\":\"pin-project-lite\",\"req\":\"^0.2.6\"},{\"default_features\":false,\"name\":\"slab\",\"optional\":true,\"req\":\"^0.4.7\"},{\"name\":\"spin\",\"optional\":true,\"req\":\"^0.10.0\"},{\"kind\":\"dev\",\"name\":\"tokio\",\"req\":\"^0.1.11\"},{\"name\":\"tokio-io\",\"optional\":true,\"req\":\"^0.1.9\"}],\"features\":{\"alloc\":[\"futures-core/alloc\",\"futures-task/alloc\",\"slab\"],\"async-await\":[],\"async-await-macro\":[\"async-await\",\"futures-macro\"],\"bilock\":[],\"cfg-target-has-atomic\":[],\"channel\":[\"std\",\"futures-channel\"],\"compat\":[\"std\",\"futures_01\",\"libc\"],\"default\":[\"std\",\"async-await\",\"async-await-macro\"],\"io\":[\"std\",\"futures-io\",\"memchr\"],\"io-compat\":[\"io\",\"compat\",\"tokio-io\",\"libc\"],\"portable-atomic\":[\"futures-core/portable-atomic\"],\"sink\":[\"futures-sink\"],\"std\":[\"alloc\",\"futures-core/std\",\"futures-task/std\",\"slab/std\"],\"unstable\":[\"futures-core/unstable\",\"futures-task/unstable\"],\"write-all-vectored\":[\"io\"]}}", + "generic-array_0.14.7": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"bincode\",\"req\":\"^1.0\"},{\"default_features\":false,\"name\":\"serde\",\"optional\":true,\"req\":\"^1.0\"},{\"kind\":\"dev\",\"name\":\"serde_json\",\"req\":\"^1.0\"},{\"name\":\"typenum\",\"req\":\"^1.12\"},{\"kind\":\"build\",\"name\":\"version_check\",\"req\":\"^0.9\"},{\"default_features\":false,\"name\":\"zeroize\",\"optional\":true,\"req\":\"^1\"}],\"features\":{\"more_lengths\":[]}}", + "getrandom_0.3.4": "{\"dependencies\":[{\"name\":\"cfg-if\",\"req\":\"^1\"},{\"default_features\":false,\"name\":\"js-sys\",\"optional\":true,\"req\":\"^0.3.77\",\"target\":\"cfg(all(target_arch = \\\"wasm32\\\", any(target_os = \\\"unknown\\\", target_os = \\\"none\\\"), target_feature = \\\"atomics\\\"))\"},{\"default_features\":false,\"name\":\"libc\",\"req\":\"^0.2.154\",\"target\":\"cfg(all(any(target_os = \\\"linux\\\", target_os = \\\"android\\\"), not(any(all(target_os = \\\"linux\\\", target_env = \\\"\\\"), getrandom_backend = \\\"custom\\\", getrandom_backend = \\\"linux_raw\\\", getrandom_backend = \\\"rdrand\\\", getrandom_backend = \\\"rndr\\\"))))\"},{\"default_features\":false,\"name\":\"libc\",\"req\":\"^0.2.154\",\"target\":\"cfg(any(target_os = \\\"dragonfly\\\", target_os = \\\"freebsd\\\", target_os = \\\"hurd\\\", target_os = \\\"illumos\\\", target_os = \\\"cygwin\\\", all(target_os = \\\"horizon\\\", target_arch = \\\"arm\\\")))\"},{\"default_features\":false,\"name\":\"libc\",\"req\":\"^0.2.154\",\"target\":\"cfg(any(target_os = \\\"haiku\\\", target_os = \\\"redox\\\", target_os = \\\"nto\\\", target_os = \\\"aix\\\"))\"},{\"default_features\":false,\"name\":\"libc\",\"req\":\"^0.2.154\",\"target\":\"cfg(any(target_os = \\\"ios\\\", target_os = \\\"visionos\\\", target_os = \\\"watchos\\\", target_os = \\\"tvos\\\"))\"},{\"default_features\":false,\"name\":\"libc\",\"req\":\"^0.2.154\",\"target\":\"cfg(any(target_os = \\\"macos\\\", target_os = \\\"openbsd\\\", target_os = \\\"vita\\\", target_os = \\\"emscripten\\\"))\"},{\"default_features\":false,\"name\":\"libc\",\"req\":\"^0.2.154\",\"target\":\"cfg(target_os = \\\"netbsd\\\")\"},{\"default_features\":false,\"name\":\"libc\",\"req\":\"^0.2.154\",\"target\":\"cfg(target_os = \\\"solaris\\\")\"},{\"default_features\":false,\"name\":\"libc\",\"req\":\"^0.2.154\",\"target\":\"cfg(target_os = \\\"vxworks\\\")\"},{\"default_features\":false,\"name\":\"r-efi\",\"req\":\"^5.1\",\"target\":\"cfg(all(target_os = \\\"uefi\\\", getrandom_backend = \\\"efi_rng\\\"))\"},{\"default_features\":false,\"name\":\"wasip2\",\"req\":\"^1\",\"target\":\"cfg(all(target_arch = \\\"wasm32\\\", target_os = \\\"wasi\\\", target_env = \\\"p2\\\"))\"},{\"default_features\":false,\"name\":\"wasm-bindgen\",\"optional\":true,\"req\":\"^0.2.98\",\"target\":\"cfg(all(target_arch = \\\"wasm32\\\", any(target_os = \\\"unknown\\\", target_os = \\\"none\\\")))\"},{\"kind\":\"dev\",\"name\":\"wasm-bindgen-test\",\"req\":\"^0.3\",\"target\":\"cfg(all(target_arch = \\\"wasm32\\\", any(target_os = \\\"unknown\\\", target_os = \\\"none\\\")))\"}],\"features\":{\"std\":[],\"wasm_js\":[\"dep:wasm-bindgen\",\"dep:js-sys\"]}}", "getrandom_0.4.2": "{\"dependencies\":[{\"name\":\"cfg-if\",\"req\":\"^1\"},{\"default_features\":false,\"name\":\"js-sys\",\"optional\":true,\"req\":\"^0.3.77\",\"target\":\"cfg(all(target_arch = \\\"wasm32\\\", any(target_os = \\\"unknown\\\", target_os = \\\"none\\\"), target_feature = \\\"atomics\\\"))\"},{\"default_features\":false,\"name\":\"libc\",\"req\":\"^0.2.154\",\"target\":\"cfg(all(any(target_os = \\\"linux\\\", target_os = \\\"android\\\"), not(any(all(target_os = \\\"linux\\\", target_env = \\\"\\\"), getrandom_backend = \\\"custom\\\", getrandom_backend = \\\"linux_raw\\\", getrandom_backend = \\\"rdrand\\\", getrandom_backend = \\\"rndr\\\"))))\"},{\"default_features\":false,\"name\":\"libc\",\"req\":\"^0.2.154\",\"target\":\"cfg(any(target_os = \\\"dragonfly\\\", target_os = \\\"freebsd\\\", target_os = \\\"hurd\\\", target_os = \\\"illumos\\\", target_os = \\\"cygwin\\\", all(target_os = \\\"horizon\\\", target_arch = \\\"arm\\\")))\"},{\"default_features\":false,\"name\":\"libc\",\"req\":\"^0.2.154\",\"target\":\"cfg(any(target_os = \\\"haiku\\\", target_os = \\\"redox\\\", target_os = \\\"nto\\\", target_os = \\\"aix\\\"))\"},{\"default_features\":false,\"name\":\"libc\",\"req\":\"^0.2.154\",\"target\":\"cfg(any(target_os = \\\"ios\\\", target_os = \\\"visionos\\\", target_os = \\\"watchos\\\", target_os = \\\"tvos\\\"))\"},{\"default_features\":false,\"name\":\"libc\",\"req\":\"^0.2.154\",\"target\":\"cfg(any(target_os = \\\"macos\\\", target_os = \\\"openbsd\\\", target_os = \\\"vita\\\", target_os = \\\"emscripten\\\"))\"},{\"default_features\":false,\"name\":\"libc\",\"req\":\"^0.2.154\",\"target\":\"cfg(target_os = \\\"netbsd\\\")\"},{\"default_features\":false,\"name\":\"libc\",\"req\":\"^0.2.154\",\"target\":\"cfg(target_os = \\\"solaris\\\")\"},{\"default_features\":false,\"name\":\"libc\",\"req\":\"^0.2.154\",\"target\":\"cfg(target_os = \\\"vxworks\\\")\"},{\"default_features\":false,\"name\":\"r-efi\",\"req\":\"^6\",\"target\":\"cfg(all(target_os = \\\"uefi\\\", getrandom_backend = \\\"efi_rng\\\"))\"},{\"name\":\"rand_core\",\"optional\":true,\"req\":\"^0.10.0\"},{\"default_features\":false,\"name\":\"wasip2\",\"req\":\"^1\",\"target\":\"cfg(all(target_arch = \\\"wasm32\\\", target_os = \\\"wasi\\\", target_env = \\\"p2\\\"))\"},{\"name\":\"wasip3\",\"req\":\"^0.4\",\"target\":\"cfg(all(target_arch = \\\"wasm32\\\", target_os = \\\"wasi\\\", target_env = \\\"p3\\\"))\"},{\"default_features\":false,\"name\":\"wasm-bindgen\",\"optional\":true,\"req\":\"^0.2.98\",\"target\":\"cfg(all(target_arch = \\\"wasm32\\\", any(target_os = \\\"unknown\\\", target_os = \\\"none\\\")))\"},{\"kind\":\"dev\",\"name\":\"wasm-bindgen-test\",\"req\":\"^0.3\",\"target\":\"cfg(all(target_arch = \\\"wasm32\\\", any(target_os = \\\"unknown\\\", target_os = \\\"none\\\")))\"}],\"features\":{\"std\":[],\"sys_rng\":[\"dep:rand_core\"],\"wasm_js\":[\"dep:wasm-bindgen\",\"dep:js-sys\"]}}", "glob-match_0.2.1": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"criterion\",\"req\":\"^0.4.0\"},{\"kind\":\"dev\",\"name\":\"glob\",\"req\":\"^0.3.1\"},{\"kind\":\"dev\",\"name\":\"globset\",\"req\":\"^0.4.10\"}],\"features\":{}}", - "h2_0.4.14": "{\"dependencies\":[{\"name\":\"atomic-waker\",\"req\":\"^1.0.0\"},{\"name\":\"bytes\",\"req\":\"^1\"},{\"default_features\":false,\"kind\":\"dev\",\"name\":\"env_logger\",\"req\":\"^0.10\"},{\"name\":\"fnv\",\"req\":\"^1.0.5\"},{\"default_features\":false,\"name\":\"futures-core\",\"req\":\"^0.3\"},{\"default_features\":false,\"name\":\"futures-sink\",\"req\":\"^0.3\"},{\"kind\":\"dev\",\"name\":\"hex\",\"req\":\"^0.4.3\"},{\"name\":\"http\",\"req\":\"^1\"},{\"features\":[\"std\"],\"name\":\"indexmap\",\"req\":\"^2\"},{\"default_features\":false,\"kind\":\"dev\",\"name\":\"quickcheck\",\"req\":\"^1.0.3\"},{\"kind\":\"dev\",\"name\":\"rand\",\"req\":\"^0.8.4\"},{\"kind\":\"dev\",\"name\":\"serde\",\"req\":\"^1.0.0\"},{\"kind\":\"dev\",\"name\":\"serde_json\",\"req\":\"^1.0.0\"},{\"name\":\"slab\",\"req\":\"^0.4.2\"},{\"features\":[\"io-util\"],\"name\":\"tokio\",\"req\":\"^1\"},{\"features\":[\"rt-multi-thread\",\"macros\",\"sync\",\"net\"],\"kind\":\"dev\",\"name\":\"tokio\",\"req\":\"^1\"},{\"kind\":\"dev\",\"name\":\"tokio-rustls\",\"req\":\"^0.26\"},{\"features\":[\"codec\",\"io\"],\"name\":\"tokio-util\",\"req\":\"^0.7.1\"},{\"default_features\":false,\"features\":[\"std\"],\"name\":\"tracing\",\"req\":\"^0.1.35\"},{\"kind\":\"dev\",\"name\":\"walkdir\",\"req\":\"^2.3.2\"},{\"kind\":\"dev\",\"name\":\"webpki-roots\",\"req\":\"^1\"}],\"features\":{\"stream\":[],\"unstable\":[]}}", + "h2_0.4.15": "{\"dependencies\":[{\"name\":\"atomic-waker\",\"req\":\"^1.0.0\"},{\"name\":\"bytes\",\"req\":\"^1\"},{\"default_features\":false,\"kind\":\"dev\",\"name\":\"env_logger\",\"req\":\"^0.10\"},{\"name\":\"fnv\",\"req\":\"^1.0.5\"},{\"default_features\":false,\"name\":\"futures-core\",\"req\":\"^0.3\"},{\"default_features\":false,\"name\":\"futures-sink\",\"req\":\"^0.3\"},{\"kind\":\"dev\",\"name\":\"hex\",\"req\":\"^0.4.3\"},{\"name\":\"http\",\"req\":\"^1.1\"},{\"features\":[\"std\"],\"name\":\"indexmap\",\"req\":\"^2\"},{\"default_features\":false,\"kind\":\"dev\",\"name\":\"quickcheck\",\"req\":\"^1.0.3\"},{\"kind\":\"dev\",\"name\":\"rand\",\"req\":\"^0.8.4\"},{\"kind\":\"dev\",\"name\":\"serde\",\"req\":\"^1.0.0\"},{\"kind\":\"dev\",\"name\":\"serde_json\",\"req\":\"^1.0.0\"},{\"name\":\"slab\",\"req\":\"^0.4.2\"},{\"features\":[\"io-util\"],\"name\":\"tokio\",\"req\":\"^1\"},{\"features\":[\"rt-multi-thread\",\"macros\",\"sync\",\"net\"],\"kind\":\"dev\",\"name\":\"tokio\",\"req\":\"^1\"},{\"kind\":\"dev\",\"name\":\"tokio-rustls\",\"req\":\"^0.26\"},{\"features\":[\"codec\",\"io\"],\"name\":\"tokio-util\",\"req\":\"^0.7.1\"},{\"default_features\":false,\"features\":[\"std\"],\"name\":\"tracing\",\"req\":\"^0.1.35\"},{\"kind\":\"dev\",\"name\":\"walkdir\",\"req\":\"^2.3.2\"},{\"kind\":\"dev\",\"name\":\"webpki-roots\",\"req\":\"^1\"}],\"features\":{\"stream\":[],\"unstable\":[]}}", "hashbrown_0.15.5": "{\"dependencies\":[{\"name\":\"alloc\",\"optional\":true,\"package\":\"rustc-std-workspace-alloc\",\"req\":\"^1.0.0\"},{\"default_features\":false,\"features\":[\"alloc\"],\"name\":\"allocator-api2\",\"optional\":true,\"req\":\"^0.2.9\"},{\"features\":[\"allocator-api2\"],\"kind\":\"dev\",\"name\":\"bumpalo\",\"req\":\"^3.13.0\"},{\"name\":\"core\",\"optional\":true,\"package\":\"rustc-std-workspace-core\",\"req\":\"^1.0.0\"},{\"kind\":\"dev\",\"name\":\"doc-comment\",\"req\":\"^0.3.1\"},{\"default_features\":false,\"name\":\"equivalent\",\"optional\":true,\"req\":\"^1.0\"},{\"kind\":\"dev\",\"name\":\"fnv\",\"req\":\"^1.0.7\"},{\"default_features\":false,\"name\":\"foldhash\",\"optional\":true,\"req\":\"^0.1.2\"},{\"kind\":\"dev\",\"name\":\"lazy_static\",\"req\":\"^1.4\"},{\"features\":[\"small_rng\"],\"kind\":\"dev\",\"name\":\"rand\",\"req\":\"^0.9.0\"},{\"name\":\"rayon\",\"optional\":true,\"req\":\"^1.2\"},{\"kind\":\"dev\",\"name\":\"rayon\",\"req\":\"^1.2\"},{\"default_features\":false,\"name\":\"serde\",\"optional\":true,\"req\":\"^1.0.25\"},{\"kind\":\"dev\",\"name\":\"serde_test\",\"req\":\"^1.0\"}],\"features\":{\"default\":[\"default-hasher\",\"inline-more\",\"allocator-api2\",\"equivalent\",\"raw-entry\"],\"default-hasher\":[\"dep:foldhash\"],\"inline-more\":[],\"nightly\":[\"bumpalo/allocator_api\"],\"raw-entry\":[],\"rustc-dep-of-std\":[\"nightly\",\"core\",\"alloc\",\"rustc-internal-api\"],\"rustc-internal-api\":[]}}", "hashbrown_0.16.1": "{\"dependencies\":[{\"name\":\"alloc\",\"optional\":true,\"package\":\"rustc-std-workspace-alloc\",\"req\":\"^1.0.0\"},{\"default_features\":false,\"features\":[\"alloc\"],\"name\":\"allocator-api2\",\"optional\":true,\"req\":\"^0.2.9\"},{\"features\":[\"allocator-api2\"],\"kind\":\"dev\",\"name\":\"bumpalo\",\"req\":\"^3.13.0\"},{\"name\":\"core\",\"optional\":true,\"package\":\"rustc-std-workspace-core\",\"req\":\"^1.0.0\"},{\"default_features\":false,\"name\":\"equivalent\",\"optional\":true,\"req\":\"^1.0\"},{\"kind\":\"dev\",\"name\":\"fnv\",\"req\":\"^1.0.7\"},{\"default_features\":false,\"name\":\"foldhash\",\"optional\":true,\"req\":\"^0.2.0\"},{\"kind\":\"dev\",\"name\":\"lazy_static\",\"req\":\"^1.4\"},{\"kind\":\"dev\",\"name\":\"libc\",\"req\":\"^0.2.155\",\"target\":\"cfg(unix)\"},{\"features\":[\"small_rng\"],\"kind\":\"dev\",\"name\":\"rand\",\"req\":\"^0.9.0\"},{\"name\":\"rayon\",\"optional\":true,\"req\":\"^1.9.0\"},{\"kind\":\"dev\",\"name\":\"rayon\",\"req\":\"^1.2\"},{\"default_features\":false,\"name\":\"serde\",\"optional\":true,\"req\":\"^1.0.220\",\"target\":\"cfg(any())\"},{\"default_features\":false,\"name\":\"serde_core\",\"optional\":true,\"req\":\"^1.0.221\"},{\"kind\":\"dev\",\"name\":\"serde_test\",\"req\":\"^1.0\"}],\"features\":{\"default\":[\"default-hasher\",\"inline-more\",\"allocator-api2\",\"equivalent\",\"raw-entry\"],\"default-hasher\":[\"dep:foldhash\"],\"inline-more\":[],\"nightly\":[\"foldhash?/nightly\",\"bumpalo/allocator_api\"],\"raw-entry\":[],\"rustc-dep-of-std\":[\"nightly\",\"core\",\"alloc\",\"rustc-internal-api\"],\"rustc-internal-api\":[],\"serde\":[\"dep:serde_core\",\"dep:serde\"]}}", "hashbrown_0.17.0": "{\"dependencies\":[{\"name\":\"alloc\",\"optional\":true,\"package\":\"rustc-std-workspace-alloc\",\"req\":\"^1.0.0\"},{\"default_features\":false,\"features\":[\"alloc\"],\"name\":\"allocator-api2\",\"optional\":true,\"req\":\"^0.2.9\"},{\"features\":[\"allocator-api2\"],\"kind\":\"dev\",\"name\":\"bumpalo\",\"req\":\"^3.13.0\"},{\"name\":\"core\",\"optional\":true,\"package\":\"rustc-std-workspace-core\",\"req\":\"^1.0.0\"},{\"features\":[\"html_reports\"],\"kind\":\"dev\",\"name\":\"criterion\",\"req\":\"^0.7\"},{\"default_features\":false,\"name\":\"equivalent\",\"optional\":true,\"req\":\"^1.0\"},{\"kind\":\"dev\",\"name\":\"fnv\",\"req\":\"^1.0.7\"},{\"default_features\":false,\"name\":\"foldhash\",\"optional\":true,\"req\":\"^0.2.0\"},{\"kind\":\"dev\",\"name\":\"libc\",\"req\":\"^0.2.155\",\"target\":\"cfg(unix)\"},{\"features\":[\"small_rng\"],\"kind\":\"dev\",\"name\":\"rand\",\"req\":\"^0.9.0\"},{\"name\":\"rayon\",\"optional\":true,\"req\":\"^1.9.0\"},{\"kind\":\"dev\",\"name\":\"rayon\",\"req\":\"^1.2\"},{\"default_features\":false,\"name\":\"serde\",\"optional\":true,\"req\":\"^1.0.220\",\"target\":\"cfg(any())\"},{\"default_features\":false,\"name\":\"serde_core\",\"optional\":true,\"req\":\"^1.0.221\"},{\"kind\":\"dev\",\"name\":\"serde_test\",\"req\":\"^1.0\"}],\"features\":{\"default\":[\"default-hasher\",\"inline-more\",\"allocator-api2\",\"equivalent\",\"raw-entry\"],\"default-hasher\":[\"dep:foldhash\"],\"inline-more\":[],\"nightly\":[\"foldhash?/nightly\",\"bumpalo/allocator_api\"],\"raw-entry\":[],\"rustc-dep-of-std\":[\"nightly\",\"core\",\"alloc\",\"rustc-internal-api\"],\"rustc-internal-api\":[],\"serde\":[\"dep:serde_core\",\"dep:serde\"]}}", - "hashlink_0.11.0": "{\"dependencies\":[{\"default_features\":false,\"features\":[\"default-hasher\"],\"name\":\"hashbrown\",\"req\":\"^0.16\"},{\"kind\":\"dev\",\"name\":\"rustc-hash\",\"req\":\"^2\"},{\"default_features\":false,\"name\":\"serde\",\"optional\":true,\"req\":\"^1.0\"},{\"kind\":\"dev\",\"name\":\"serde_test\",\"req\":\"^1.0\"}],\"features\":{\"serde_impl\":[\"serde\"]}}", + "hashlink_0.11.1": "{\"dependencies\":[{\"default_features\":false,\"features\":[\"default-hasher\"],\"name\":\"hashbrown\",\"req\":\"^0.16\"},{\"kind\":\"dev\",\"name\":\"rustc-hash\",\"req\":\"^2\"},{\"default_features\":false,\"name\":\"serde\",\"optional\":true,\"req\":\"^1.0\"},{\"kind\":\"dev\",\"name\":\"serde_test\",\"req\":\"^1.0\"}],\"features\":{\"serde_impl\":[\"serde\"]}}", "heck_0.5.0": "{\"dependencies\":[],\"features\":{}}", "hostname_0.4.2": "{\"dependencies\":[{\"name\":\"cfg-if\",\"req\":\"^1\"},{\"name\":\"libc\",\"req\":\"^0.2\",\"target\":\"cfg(any(unix, target_os = \\\"redox\\\"))\"},{\"kind\":\"dev\",\"name\":\"similar-asserts\",\"req\":\"^1.6.1\"},{\"kind\":\"dev\",\"name\":\"version-sync\",\"req\":\"^0.9\"},{\"kind\":\"dev\",\"name\":\"windows-bindgen\",\"req\":\"^0.65\"},{\"name\":\"windows-link\",\"req\":\"^0.2\",\"target\":\"cfg(target_os = \\\"windows\\\")\"}],\"features\":{\"default\":[],\"set\":[]}}", "http-body-util_0.1.4": "{\"dependencies\":[{\"name\":\"bytes\",\"req\":\"^1\"},{\"default_features\":false,\"name\":\"futures-core\",\"req\":\"^0.3\"},{\"default_features\":false,\"kind\":\"dev\",\"name\":\"futures-util\",\"req\":\"^0.3\"},{\"name\":\"http\",\"req\":\"^1\"},{\"name\":\"http-body\",\"req\":\"^1\"},{\"name\":\"pin-project-lite\",\"req\":\"^0.2\"},{\"features\":[\"sync\"],\"name\":\"tokio\",\"optional\":true,\"req\":\"^1\"},{\"features\":[\"macros\",\"rt\",\"sync\",\"rt-multi-thread\"],\"kind\":\"dev\",\"name\":\"tokio\",\"req\":\"^1\"}],\"features\":{\"channel\":[\"dep:tokio\"],\"default\":[],\"full\":[\"channel\"]}}", @@ -1934,7 +1957,7 @@ "httpdate_1.0.3": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"criterion\",\"req\":\"^0.5\"}],\"features\":{}}", "hyper-timeout_0.5.2": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"http-body-util\",\"req\":\"^0.1\"},{\"name\":\"hyper\",\"req\":\"^1.1\"},{\"features\":[\"http1\"],\"kind\":\"dev\",\"name\":\"hyper\",\"req\":\"^1.1\"},{\"kind\":\"dev\",\"name\":\"hyper-tls\",\"req\":\"^0.6\"},{\"features\":[\"client-legacy\",\"http1\"],\"name\":\"hyper-util\",\"req\":\"^0.1.10\"},{\"features\":[\"client-legacy\",\"http1\",\"server\",\"server-graceful\"],\"kind\":\"dev\",\"name\":\"hyper-util\",\"req\":\"^0.1.10\"},{\"name\":\"pin-project-lite\",\"req\":\"^0.2\"},{\"name\":\"tokio\",\"req\":\"^1.35\"},{\"features\":[\"io-std\",\"io-util\",\"macros\"],\"kind\":\"dev\",\"name\":\"tokio\",\"req\":\"^1.35\"},{\"name\":\"tower-service\",\"req\":\"^0.3\"}],\"features\":{}}", "hyper-util_0.1.20": "{\"dependencies\":[{\"name\":\"base64\",\"optional\":true,\"req\":\"^0.22\"},{\"name\":\"bytes\",\"req\":\"^1.7.1\"},{\"kind\":\"dev\",\"name\":\"bytes\",\"req\":\"^1\"},{\"name\":\"futures-channel\",\"optional\":true,\"req\":\"^0.3\"},{\"default_features\":false,\"name\":\"futures-util\",\"optional\":true,\"req\":\"^0.3.16\"},{\"default_features\":false,\"features\":[\"alloc\"],\"kind\":\"dev\",\"name\":\"futures-util\",\"req\":\"^0.3.16\"},{\"name\":\"http\",\"req\":\"^1.0\"},{\"name\":\"http-body\",\"req\":\"^1.0.0\"},{\"kind\":\"dev\",\"name\":\"http-body-util\",\"req\":\"^0.1.0\"},{\"name\":\"hyper\",\"req\":\"^1.8.0\"},{\"features\":[\"full\"],\"kind\":\"dev\",\"name\":\"hyper\",\"req\":\"^1.4.0\"},{\"name\":\"ipnet\",\"optional\":true,\"req\":\"^2.9\"},{\"name\":\"libc\",\"optional\":true,\"req\":\"^0.2\"},{\"name\":\"percent-encoding\",\"optional\":true,\"req\":\"^2.3\"},{\"name\":\"pin-project-lite\",\"req\":\"^0.2.4\"},{\"kind\":\"dev\",\"name\":\"pnet_datalink\",\"req\":\"^0.35.0\",\"target\":\"cfg(any(target_os = \\\"linux\\\", target_os = \\\"macos\\\"))\"},{\"kind\":\"dev\",\"name\":\"pretty_env_logger\",\"req\":\"^0.5\"},{\"features\":[\"all\"],\"name\":\"socket2\",\"optional\":true,\"req\":\">=0.5.9, <0.7\"},{\"name\":\"system-configuration\",\"optional\":true,\"req\":\"^0.7\",\"target\":\"cfg(target_os = \\\"macos\\\")\"},{\"default_features\":false,\"name\":\"tokio\",\"optional\":true,\"req\":\"^1\"},{\"features\":[\"macros\",\"test-util\",\"signal\"],\"kind\":\"dev\",\"name\":\"tokio\",\"req\":\"^1\"},{\"kind\":\"dev\",\"name\":\"tokio-test\",\"req\":\"^0.4\"},{\"name\":\"tower-layer\",\"optional\":true,\"req\":\"^0.3\"},{\"name\":\"tower-service\",\"optional\":true,\"req\":\"^0.3\"},{\"kind\":\"dev\",\"name\":\"tower-test\",\"req\":\"^0.4\"},{\"default_features\":false,\"features\":[\"std\"],\"name\":\"tracing\",\"optional\":true,\"req\":\"^0.1\"},{\"name\":\"windows-registry\",\"optional\":true,\"req\":\">=0.3, <0.7\",\"target\":\"cfg(windows)\"}],\"features\":{\"__internal_happy_eyeballs_tests\":[],\"client\":[\"hyper/client\",\"tokio/net\",\"dep:tracing\",\"dep:futures-channel\",\"dep:tower-service\"],\"client-legacy\":[\"client\",\"dep:socket2\",\"tokio/sync\",\"dep:libc\",\"dep:futures-util\"],\"client-pool\":[\"client\",\"dep:futures-util\",\"dep:tower-layer\"],\"client-proxy\":[\"client\",\"dep:base64\",\"dep:ipnet\",\"dep:percent-encoding\"],\"client-proxy-system\":[\"dep:system-configuration\",\"dep:windows-registry\"],\"default\":[],\"full\":[\"client\",\"client-legacy\",\"client-pool\",\"client-proxy\",\"client-proxy-system\",\"server\",\"server-auto\",\"server-graceful\",\"service\",\"http1\",\"http2\",\"tokio\",\"tracing\"],\"http1\":[\"hyper/http1\"],\"http2\":[\"hyper/http2\"],\"server\":[\"hyper/server\"],\"server-auto\":[\"server\",\"http1\",\"http2\"],\"server-graceful\":[\"server\",\"tokio/sync\"],\"service\":[\"dep:tower-service\"],\"tokio\":[\"dep:tokio\",\"tokio/rt\",\"tokio/time\"],\"tracing\":[\"dep:tracing\"]}}", - "hyper_1.11.0": "{\"dependencies\":[{\"name\":\"atomic-waker\",\"optional\":true,\"req\":\"^1.1.2\"},{\"name\":\"bytes\",\"req\":\"^1.2\"},{\"kind\":\"dev\",\"name\":\"form_urlencoded\",\"req\":\"^1\"},{\"name\":\"futures-channel\",\"optional\":true,\"req\":\"^0.3\"},{\"features\":[\"sink\"],\"kind\":\"dev\",\"name\":\"futures-channel\",\"req\":\"^0.3\"},{\"name\":\"futures-core\",\"optional\":true,\"req\":\"^0.3.31\"},{\"default_features\":false,\"features\":[\"alloc\"],\"name\":\"futures-util\",\"optional\":true,\"req\":\"^0.3\"},{\"default_features\":false,\"features\":[\"alloc\",\"sink\"],\"kind\":\"dev\",\"name\":\"futures-util\",\"req\":\"^0.3\"},{\"name\":\"h2\",\"optional\":true,\"req\":\"^0.4.14\"},{\"name\":\"http\",\"req\":\"^1\"},{\"name\":\"http-body\",\"req\":\"^1\"},{\"name\":\"http-body-util\",\"optional\":true,\"req\":\"^0.1\"},{\"kind\":\"dev\",\"name\":\"http-body-util\",\"req\":\"^0.1\"},{\"name\":\"httparse\",\"optional\":true,\"req\":\"^1.9\"},{\"name\":\"httpdate\",\"optional\":true,\"req\":\"^1.0\"},{\"name\":\"itoa\",\"optional\":true,\"req\":\"^1\"},{\"name\":\"pin-project-lite\",\"optional\":true,\"req\":\"^0.2.4\"},{\"kind\":\"dev\",\"name\":\"pin-project-lite\",\"req\":\"^0.2.4\"},{\"kind\":\"dev\",\"name\":\"pretty_env_logger\",\"req\":\"^0.5\"},{\"features\":[\"derive\"],\"kind\":\"dev\",\"name\":\"serde\",\"req\":\"^1.0\"},{\"kind\":\"dev\",\"name\":\"serde_json\",\"req\":\"^1.0\"},{\"features\":[\"const_generics\",\"const_new\"],\"name\":\"smallvec\",\"optional\":true,\"req\":\"^1.12\"},{\"kind\":\"dev\",\"name\":\"spmc\",\"req\":\"^0.3\"},{\"features\":[\"sync\"],\"name\":\"tokio\",\"req\":\"^1\"},{\"features\":[\"fs\",\"macros\",\"net\",\"io-std\",\"io-util\",\"rt\",\"rt-multi-thread\",\"sync\",\"time\",\"test-util\"],\"kind\":\"dev\",\"name\":\"tokio\",\"req\":\"^1\"},{\"kind\":\"dev\",\"name\":\"tokio-test\",\"req\":\"^0.4\"},{\"kind\":\"dev\",\"name\":\"tokio-util\",\"req\":\"^0.7.10\"},{\"default_features\":false,\"features\":[\"std\"],\"name\":\"tracing\",\"optional\":true,\"req\":\"^0.1\"},{\"kind\":\"dev\",\"name\":\"tracing\",\"req\":\"^0.1\"},{\"kind\":\"dev\",\"name\":\"tracing-subscriber\",\"req\":\"^0.3\"},{\"name\":\"want\",\"optional\":true,\"req\":\"^0.3\"}],\"features\":{\"capi\":[],\"client\":[\"dep:want\",\"dep:pin-project-lite\",\"dep:smallvec\"],\"default\":[],\"ffi\":[\"dep:http-body-util\",\"dep:futures-util\"],\"full\":[\"client\",\"http1\",\"http2\",\"server\"],\"http1\":[\"dep:atomic-waker\",\"dep:futures-channel\",\"dep:futures-core\",\"dep:httparse\",\"dep:itoa\"],\"http2\":[\"dep:atomic-waker\",\"dep:futures-channel\",\"dep:futures-core\",\"dep:h2\"],\"nightly\":[],\"server\":[\"dep:httpdate\",\"dep:pin-project-lite\",\"dep:smallvec\"],\"tracing\":[\"dep:tracing\"]}}", + "hyper_1.10.1": "{\"dependencies\":[{\"name\":\"atomic-waker\",\"optional\":true,\"req\":\"^1.1.2\"},{\"name\":\"bytes\",\"req\":\"^1.2\"},{\"kind\":\"dev\",\"name\":\"form_urlencoded\",\"req\":\"^1\"},{\"name\":\"futures-channel\",\"optional\":true,\"req\":\"^0.3\"},{\"features\":[\"sink\"],\"kind\":\"dev\",\"name\":\"futures-channel\",\"req\":\"^0.3\"},{\"name\":\"futures-core\",\"optional\":true,\"req\":\"^0.3.31\"},{\"default_features\":false,\"features\":[\"alloc\"],\"name\":\"futures-util\",\"optional\":true,\"req\":\"^0.3\"},{\"default_features\":false,\"features\":[\"alloc\",\"sink\"],\"kind\":\"dev\",\"name\":\"futures-util\",\"req\":\"^0.3\"},{\"name\":\"h2\",\"optional\":true,\"req\":\"^0.4.14\"},{\"name\":\"http\",\"req\":\"^1\"},{\"name\":\"http-body\",\"req\":\"^1\"},{\"name\":\"http-body-util\",\"optional\":true,\"req\":\"^0.1\"},{\"kind\":\"dev\",\"name\":\"http-body-util\",\"req\":\"^0.1\"},{\"name\":\"httparse\",\"optional\":true,\"req\":\"^1.9\"},{\"name\":\"httpdate\",\"optional\":true,\"req\":\"^1.0\"},{\"name\":\"itoa\",\"optional\":true,\"req\":\"^1\"},{\"name\":\"pin-project-lite\",\"optional\":true,\"req\":\"^0.2.4\"},{\"kind\":\"dev\",\"name\":\"pin-project-lite\",\"req\":\"^0.2.4\"},{\"kind\":\"dev\",\"name\":\"pretty_env_logger\",\"req\":\"^0.5\"},{\"features\":[\"derive\"],\"kind\":\"dev\",\"name\":\"serde\",\"req\":\"^1.0\"},{\"kind\":\"dev\",\"name\":\"serde_json\",\"req\":\"^1.0\"},{\"features\":[\"const_generics\",\"const_new\"],\"name\":\"smallvec\",\"optional\":true,\"req\":\"^1.12\"},{\"kind\":\"dev\",\"name\":\"spmc\",\"req\":\"^0.3\"},{\"features\":[\"sync\"],\"name\":\"tokio\",\"req\":\"^1\"},{\"features\":[\"fs\",\"macros\",\"net\",\"io-std\",\"io-util\",\"rt\",\"rt-multi-thread\",\"sync\",\"time\",\"test-util\"],\"kind\":\"dev\",\"name\":\"tokio\",\"req\":\"^1\"},{\"kind\":\"dev\",\"name\":\"tokio-test\",\"req\":\"^0.4\"},{\"kind\":\"dev\",\"name\":\"tokio-util\",\"req\":\"^0.7.10\"},{\"default_features\":false,\"features\":[\"std\"],\"name\":\"tracing\",\"optional\":true,\"req\":\"^0.1\"},{\"kind\":\"dev\",\"name\":\"tracing\",\"req\":\"^0.1\"},{\"kind\":\"dev\",\"name\":\"tracing-subscriber\",\"req\":\"^0.3\"},{\"name\":\"want\",\"optional\":true,\"req\":\"^0.3\"}],\"features\":{\"capi\":[],\"client\":[\"dep:want\",\"dep:pin-project-lite\",\"dep:smallvec\"],\"default\":[],\"ffi\":[\"dep:http-body-util\",\"dep:futures-util\"],\"full\":[\"client\",\"http1\",\"http2\",\"server\"],\"http1\":[\"dep:atomic-waker\",\"dep:futures-channel\",\"dep:futures-core\",\"dep:httparse\",\"dep:itoa\"],\"http2\":[\"dep:futures-channel\",\"dep:futures-core\",\"dep:h2\"],\"nightly\":[],\"server\":[\"dep:httpdate\",\"dep:pin-project-lite\",\"dep:smallvec\"],\"tracing\":[\"dep:tracing\"]}}", "iana-time-zone-haiku_0.1.2": "{\"dependencies\":[{\"kind\":\"build\",\"name\":\"cc\",\"req\":\"^1.0.79\"}],\"features\":{}}", "iana-time-zone_0.1.65": "{\"dependencies\":[{\"name\":\"android_system_properties\",\"req\":\"^0.1.5\",\"target\":\"cfg(target_os = \\\"android\\\")\"},{\"kind\":\"dev\",\"name\":\"chrono-tz\",\"req\":\"^0.10.1\"},{\"name\":\"core-foundation-sys\",\"req\":\"^0.8.6\",\"target\":\"cfg(target_vendor = \\\"apple\\\")\"},{\"kind\":\"dev\",\"name\":\"getrandom\",\"req\":\"^0.2.1\"},{\"features\":[\"js\"],\"kind\":\"dev\",\"name\":\"getrandom\",\"req\":\"^0.2.1\",\"target\":\"cfg(all(target_arch = \\\"wasm32\\\", target_os = \\\"unknown\\\"))\"},{\"name\":\"iana-time-zone-haiku\",\"req\":\"^0.1.1\",\"target\":\"cfg(target_os = \\\"haiku\\\")\"},{\"name\":\"js-sys\",\"req\":\"^0.3.66\",\"target\":\"cfg(all(target_arch = \\\"wasm32\\\", target_os = \\\"unknown\\\"))\"},{\"name\":\"log\",\"req\":\"^0.4.14\",\"target\":\"cfg(all(target_arch = \\\"wasm32\\\", target_os = \\\"unknown\\\"))\"},{\"name\":\"wasm-bindgen\",\"req\":\"^0.2.89\",\"target\":\"cfg(all(target_arch = \\\"wasm32\\\", target_os = \\\"unknown\\\"))\"},{\"kind\":\"dev\",\"name\":\"wasm-bindgen-test\",\"req\":\"^0.3.46\",\"target\":\"cfg(all(target_arch = \\\"wasm32\\\", target_os = \\\"unknown\\\"))\"},{\"name\":\"windows-core\",\"req\":\">=0.56, <=0.62\",\"target\":\"cfg(target_os = \\\"windows\\\")\"}],\"features\":{\"fallback\":[]}}", "icu_collections_2.2.0": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"criterion\",\"req\":\"^0.5.0\",\"target\":\"cfg(not(target_arch = \\\"wasm32\\\"))\"},{\"default_features\":false,\"features\":[\"derive\"],\"name\":\"databake\",\"optional\":true,\"req\":\"^0.2.0\"},{\"default_features\":false,\"name\":\"displaydoc\",\"req\":\"^0.2.3\"},{\"kind\":\"dev\",\"name\":\"iai\",\"req\":\"^0.1.1\"},{\"default_features\":false,\"features\":[\"alloc\"],\"kind\":\"dev\",\"name\":\"postcard\",\"req\":\"^1.0.3\"},{\"default_features\":false,\"features\":[\"zerovec\"],\"name\":\"potential_utf\",\"req\":\"^0.1.3\"},{\"default_features\":false,\"features\":[\"derive\"],\"name\":\"serde\",\"optional\":true,\"req\":\"^1.0.220\"},{\"default_features\":false,\"features\":[\"derive\"],\"kind\":\"dev\",\"name\":\"serde\",\"req\":\"^1.0.220\"},{\"kind\":\"dev\",\"name\":\"serde_json\",\"req\":\"^1.0.45\"},{\"default_features\":false,\"features\":[\"parse\"],\"kind\":\"dev\",\"name\":\"toml\",\"req\":\"^0.8.0\"},{\"default_features\":false,\"name\":\"utf8_iter\",\"req\":\"^1.0.2\"},{\"default_features\":false,\"features\":[\"derive\"],\"name\":\"yoke\",\"req\":\"^0.8.2\"},{\"default_features\":false,\"features\":[\"derive\"],\"name\":\"zerofrom\",\"req\":\"^0.1.6\"},{\"default_features\":false,\"features\":[\"derive\",\"yoke\"],\"name\":\"zerovec\",\"req\":\"^0.11.6\"}],\"features\":{\"alloc\":[\"serde?/alloc\",\"zerovec/alloc\"],\"databake\":[\"dep:databake\",\"zerovec/databake\"],\"serde\":[\"dep:serde\",\"zerovec/serde\",\"potential_utf/serde\",\"alloc\"]}}", @@ -1948,6 +1971,7 @@ "idna_1.1.0": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"assert_matches\",\"req\":\"^1.3\"},{\"kind\":\"dev\",\"name\":\"bencher\",\"req\":\"^0.1\"},{\"name\":\"idna_adapter\",\"req\":\"^1\"},{\"kind\":\"dev\",\"name\":\"serde_json\",\"req\":\"^1.0\"},{\"features\":[\"const_generics\"],\"name\":\"smallvec\",\"req\":\"^1.13.1\"},{\"kind\":\"dev\",\"name\":\"tester\",\"req\":\"^0.9\"},{\"name\":\"utf8_iter\",\"req\":\"^1.0.4\"}],\"features\":{\"alloc\":[],\"compiled_data\":[\"idna_adapter/compiled_data\"],\"default\":[\"std\",\"compiled_data\"],\"std\":[\"alloc\"]}}", "idna_adapter_1.2.1": "{\"dependencies\":[{\"default_features\":false,\"name\":\"icu_normalizer\",\"req\":\"^2\"},{\"default_features\":false,\"name\":\"icu_properties\",\"req\":\"^2\"}],\"features\":{\"compiled_data\":[\"icu_normalizer/compiled_data\",\"icu_properties/compiled_data\"]}}", "indexmap_2.14.0": "{\"dependencies\":[{\"default_features\":false,\"name\":\"arbitrary\",\"optional\":true,\"req\":\"^1.0\"},{\"default_features\":false,\"name\":\"borsh\",\"optional\":true,\"req\":\"^1.2\"},{\"default_features\":false,\"name\":\"equivalent\",\"req\":\"^1.0\"},{\"default_features\":false,\"kind\":\"dev\",\"name\":\"fastrand\",\"req\":\"^2\"},{\"kind\":\"dev\",\"name\":\"fnv\",\"req\":\"^1.0\"},{\"default_features\":false,\"name\":\"hashbrown\",\"req\":\"^0.17\"},{\"kind\":\"dev\",\"name\":\"itertools\",\"req\":\"^0.14\"},{\"default_features\":false,\"name\":\"quickcheck\",\"optional\":true,\"req\":\"^1.0\"},{\"default_features\":false,\"kind\":\"dev\",\"name\":\"quickcheck\",\"req\":\"^1.1\"},{\"name\":\"rayon\",\"optional\":true,\"req\":\"^1.9\"},{\"default_features\":false,\"name\":\"serde\",\"optional\":true,\"req\":\"^1.0.220\",\"target\":\"cfg(any())\"},{\"default_features\":false,\"features\":[\"derive\"],\"kind\":\"dev\",\"name\":\"serde\",\"req\":\"^1.0\"},{\"default_features\":false,\"name\":\"serde_core\",\"optional\":true,\"req\":\"^1.0.220\"},{\"default_features\":false,\"name\":\"sval\",\"optional\":true,\"req\":\"^2\"}],\"features\":{\"default\":[\"std\"],\"serde\":[\"dep:serde_core\",\"dep:serde\"],\"std\":[],\"test_debug\":[]}}", + "indoc_2.0.7": "{\"dependencies\":[{\"kind\":\"build\",\"name\":\"rustversion\",\"req\":\"^1.0\"},{\"kind\":\"dev\",\"name\":\"rustversion\",\"req\":\"^1.0\"},{\"features\":[\"diff\"],\"kind\":\"dev\",\"name\":\"trybuild\",\"req\":\"^1.0.108\"},{\"kind\":\"dev\",\"name\":\"unindent\",\"req\":\"^0.2.3\"}],\"features\":{}}", "io-extras_0.19.0": "{\"dependencies\":[{\"features\":[\"io_safety\"],\"name\":\"async-std\",\"optional\":true,\"req\":\"^1.13.0\"},{\"name\":\"io-lifetimes\",\"req\":\"^3.0.0\"},{\"name\":\"mio\",\"optional\":true,\"req\":\"^1.0.2\"},{\"name\":\"os_pipe\",\"optional\":true,\"req\":\"^1.2.1\"},{\"kind\":\"dev\",\"name\":\"os_pipe\",\"req\":\"^1.0.0\"},{\"name\":\"socket2\",\"optional\":true,\"req\":\"^0.6.0\"},{\"features\":[\"io-std\",\"fs\",\"net\",\"process\"],\"name\":\"tokio\",\"optional\":true,\"req\":\"^1.6.0\"},{\"features\":[\"Win32_Foundation\",\"Win32_Networking_WinSock\",\"Win32_System_Console\"],\"name\":\"windows-sys\",\"req\":\">=0.52, <=0.60\",\"target\":\"cfg(windows)\"}],\"features\":{\"default\":[],\"use_async_std\":[\"async-std\"],\"use_mio_net\":[\"mio\",\"mio/net\"],\"use_mio_os_ext\":[\"mio\",\"mio/os-ext\"],\"use_os_pipe\":[\"os_pipe\"],\"use_socket2\":[\"socket2\"],\"use_tokio\":[\"tokio\"]}}", "io-lifetimes_2.0.4": "{\"dependencies\":[{\"features\":[\"io_safety\"],\"name\":\"async-std\",\"optional\":true,\"req\":\"^1.13.0\",\"target\":\"cfg(not(target_os = \\\"wasi\\\"))\"},{\"name\":\"hermit-abi\",\"optional\":true,\"req\":\">=0.3, <=0.4\",\"target\":\"cfg(target_os = \\\"hermit\\\")\"},{\"name\":\"libc\",\"optional\":true,\"req\":\"^0.2.96\",\"target\":\"cfg(not(windows))\"},{\"features\":[\"net\",\"os-ext\"],\"name\":\"mio\",\"optional\":true,\"req\":\"^0.8.0\",\"target\":\"cfg(not(target_os = \\\"wasi\\\"))\"},{\"features\":[\"io_safety\"],\"name\":\"os_pipe\",\"optional\":true,\"req\":\"^1.0.0\",\"target\":\"cfg(not(target_os = \\\"wasi\\\"))\"},{\"name\":\"socket2\",\"optional\":true,\"req\":\"^0.5.0\",\"target\":\"cfg(not(target_os = \\\"wasi\\\"))\"},{\"features\":[\"io-std\",\"fs\",\"net\",\"process\"],\"name\":\"tokio\",\"optional\":true,\"req\":\"^1.6.0\",\"target\":\"cfg(not(target_os = \\\"wasi\\\"))\"},{\"features\":[\"Win32_Foundation\",\"Win32_Storage_FileSystem\",\"Win32_Networking_WinSock\",\"Win32_Security\",\"Win32_System_IO\"],\"name\":\"windows-sys\",\"optional\":true,\"req\":\">=0.52, <=0.59\",\"target\":\"cfg(windows)\"}],\"features\":{\"close\":[\"libc\",\"hermit-abi\",\"windows-sys\"],\"default\":[]}}", "io-lifetimes_3.0.1": "{\"dependencies\":[{\"features\":[\"io_safety\"],\"name\":\"async-std\",\"optional\":true,\"req\":\"^1.13.0\",\"target\":\"cfg(not(target_os = \\\"wasi\\\"))\"},{\"name\":\"hermit-abi\",\"optional\":true,\"req\":\">=0.3, <=0.5\",\"target\":\"cfg(target_os = \\\"hermit\\\")\"},{\"name\":\"libc\",\"optional\":true,\"req\":\"^0.2.96\",\"target\":\"cfg(not(windows))\"},{\"features\":[\"net\",\"os-ext\"],\"name\":\"mio\",\"optional\":true,\"req\":\"^1.0.0\",\"target\":\"cfg(not(target_os = \\\"wasi\\\"))\"},{\"features\":[\"io_safety\"],\"name\":\"os_pipe\",\"optional\":true,\"req\":\"^1.0.0\",\"target\":\"cfg(not(target_os = \\\"wasi\\\"))\"},{\"name\":\"socket2\",\"optional\":true,\"req\":\"^0.6.0\",\"target\":\"cfg(not(target_os = \\\"wasi\\\"))\"},{\"features\":[\"io-std\",\"fs\",\"net\",\"process\"],\"name\":\"tokio\",\"optional\":true,\"req\":\"^1.6.0\",\"target\":\"cfg(not(target_os = \\\"wasi\\\"))\"},{\"features\":[\"Win32_Foundation\",\"Win32_Storage_FileSystem\",\"Win32_Networking_WinSock\",\"Win32_Security\",\"Win32_System_IO\"],\"name\":\"windows-sys\",\"optional\":true,\"req\":\">=0.52, <=0.60\",\"target\":\"cfg(windows)\"}],\"features\":{\"close\":[\"libc\",\"hermit-abi\",\"windows-sys\"],\"default\":[]}}", @@ -1955,16 +1979,22 @@ "is_terminal_polyfill_1.70.2": "{\"dependencies\":[],\"features\":{\"default\":[]}}", "itertools_0.14.0": "{\"dependencies\":[{\"features\":[\"html_reports\"],\"kind\":\"dev\",\"name\":\"criterion\",\"req\":\"^0.4.0\"},{\"default_features\":false,\"name\":\"either\",\"req\":\"^1.0\"},{\"kind\":\"dev\",\"name\":\"paste\",\"req\":\"^1.0.0\"},{\"kind\":\"dev\",\"name\":\"permutohedron\",\"req\":\"^0.2\"},{\"default_features\":false,\"kind\":\"dev\",\"name\":\"quickcheck\",\"req\":\"^0.9\"},{\"kind\":\"dev\",\"name\":\"rand\",\"req\":\"^0.7\"}],\"features\":{\"default\":[\"use_std\"],\"use_alloc\":[],\"use_std\":[\"use_alloc\",\"either/use_std\"]}}", "itoa_1.0.18": "{\"dependencies\":[{\"default_features\":false,\"kind\":\"dev\",\"name\":\"criterion\",\"req\":\"^0.8\",\"target\":\"cfg(not(miri))\"},{\"name\":\"no-panic\",\"optional\":true,\"req\":\"^0.1\"}],\"features\":{}}", - "js-sys_0.3.95": "{\"dependencies\":[{\"name\":\"cfg-if\",\"optional\":true,\"req\":\"^1.0.0\"},{\"kind\":\"dev\",\"name\":\"futures-channel\",\"req\":\"^0.3\",\"target\":\"cfg(target_arch = \\\"wasm32\\\")\"},{\"default_features\":false,\"name\":\"futures-core\",\"optional\":true,\"req\":\"^0.3.8\"},{\"default_features\":false,\"kind\":\"dev\",\"name\":\"futures-lite\",\"req\":\"^2\",\"target\":\"cfg(target_arch = \\\"wasm32\\\")\"},{\"default_features\":false,\"features\":[\"std\"],\"name\":\"futures-util\",\"optional\":true,\"req\":\"^0.3.31\"},{\"kind\":\"dev\",\"name\":\"half\",\"req\":\"^2\",\"target\":\"cfg(target_arch = \\\"wasm32\\\")\"},{\"default_features\":false,\"name\":\"once_cell\",\"req\":\"^1.12\"},{\"default_features\":false,\"name\":\"wasm-bindgen\",\"req\":\"=0.2.118\"}],\"features\":{\"default\":[\"std\",\"unsafe-eval\"],\"futures\":[\"dep:cfg-if\",\"dep:futures-util\"],\"futures-core-03-stream\":[\"futures\",\"dep:futures-core\"],\"std\":[\"wasm-bindgen/std\"],\"unsafe-eval\":[]}}", + "js-sys_0.3.103": "{\"dependencies\":[{\"name\":\"cfg-if\",\"req\":\"^1.0.0\"},{\"kind\":\"dev\",\"name\":\"futures-channel\",\"req\":\"^0.3\",\"target\":\"cfg(target_arch = \\\"wasm32\\\")\"},{\"default_features\":false,\"name\":\"futures-core\",\"optional\":true,\"req\":\"^0.3.8\"},{\"default_features\":false,\"kind\":\"dev\",\"name\":\"futures-lite\",\"req\":\"^2\",\"target\":\"cfg(target_arch = \\\"wasm32\\\")\"},{\"default_features\":false,\"features\":[\"std\"],\"name\":\"futures-util\",\"optional\":true,\"req\":\"^0.3.31\"},{\"kind\":\"dev\",\"name\":\"half\",\"req\":\"^2\",\"target\":\"cfg(target_arch = \\\"wasm32\\\")\"},{\"default_features\":false,\"name\":\"wasm-bindgen\",\"req\":\"=0.2.126\"}],\"features\":{\"default\":[\"std\",\"unsafe-eval\"],\"futures-core-03-stream\":[\"dep:futures-util\",\"dep:futures-core\"],\"std\":[\"wasm-bindgen/std\",\"dep:futures-util\"],\"unsafe-eval\":[]}}", + "jsonschema_0.38.1": "{\"dependencies\":[{\"features\":[\"serde\"],\"name\":\"ahash\",\"req\":\"^0.8\"},{\"name\":\"async-trait\",\"optional\":true,\"req\":\"^0.1.86\"},{\"features\":[\"runtime-dispatch-simd\"],\"name\":\"bytecount\",\"req\":\"^0.6\"},{\"default_features\":false,\"kind\":\"dev\",\"name\":\"codspeed-criterion-compat\",\"req\":\"^4.1\",\"target\":\"cfg(not(target_arch = \\\"wasm32\\\"))\"},{\"default_features\":false,\"kind\":\"dev\",\"name\":\"criterion\",\"req\":\"^0.7\",\"target\":\"cfg(not(target_arch = \\\"wasm32\\\"))\"},{\"name\":\"data-encoding\",\"req\":\"^2.9\"},{\"name\":\"email_address\",\"req\":\"^0.2.9\"},{\"name\":\"fancy-regex\",\"req\":\"^0.17\"},{\"default_features\":false,\"features\":[\"with-bigint\"],\"name\":\"fraction\",\"req\":\"^0.15\"},{\"default_features\":false,\"features\":[\"std\"],\"kind\":\"dev\",\"name\":\"futures\",\"req\":\"^0.3\"},{\"features\":[\"wasm_js\"],\"name\":\"getrandom\",\"req\":\"^0.3.4\",\"target\":\"cfg(target_arch = \\\"wasm32\\\")\"},{\"name\":\"idna\",\"req\":\"^1.0.2\"},{\"name\":\"itoa\",\"req\":\"^1\"},{\"name\":\"num-bigint\",\"optional\":true,\"req\":\"^0.4\"},{\"name\":\"num-cmp\",\"req\":\"^0.1\"},{\"name\":\"num-traits\",\"req\":\"^0.2.19\"},{\"name\":\"percent-encoding\",\"req\":\"^2.3\"},{\"name\":\"referencing\",\"req\":\"^0.38.1\"},{\"name\":\"regex\",\"req\":\"^1.11.1\"},{\"name\":\"regex-syntax\",\"req\":\"^0.8.5\"},{\"default_features\":false,\"features\":[\"blocking\",\"json\"],\"name\":\"reqwest\",\"optional\":true,\"req\":\"^0.12\",\"target\":\"cfg(not(target_arch = \\\"wasm32\\\"))\"},{\"default_features\":false,\"features\":[\"json\"],\"name\":\"reqwest\",\"optional\":true,\"req\":\"^0.12\",\"target\":\"cfg(target_arch = \\\"wasm32\\\")\"},{\"features\":[\"derive\"],\"name\":\"serde\",\"req\":\"^1.0\"},{\"name\":\"serde_json\",\"req\":\"^1\"},{\"kind\":\"dev\",\"name\":\"tempfile\",\"req\":\"^3.13.0\",\"target\":\"cfg(not(target_arch = \\\"wasm32\\\"))\"},{\"kind\":\"dev\",\"name\":\"test-case\",\"req\":\"^3\"},{\"kind\":\"dev\",\"name\":\"test-case\",\"req\":\"^3\",\"target\":\"cfg(not(target_arch = \\\"wasm32\\\"))\"},{\"features\":[\"fs\",\"rt\"],\"name\":\"tokio\",\"optional\":true,\"req\":\"^1.0\",\"target\":\"cfg(not(target_arch = \\\"wasm32\\\"))\"},{\"features\":[\"rt\"],\"name\":\"tokio\",\"optional\":true,\"req\":\"^1.0\",\"target\":\"cfg(target_arch = \\\"wasm32\\\")\"},{\"features\":[\"macros\",\"rt\"],\"kind\":\"dev\",\"name\":\"tokio\",\"req\":\"^1\",\"target\":\"cfg(not(target_arch = \\\"wasm32\\\"))\"},{\"name\":\"unicode-general-category\",\"req\":\"^1.1\"},{\"default_features\":false,\"features\":[\"std\",\"detect\"],\"name\":\"uuid-simd\",\"req\":\"^0.8\"},{\"kind\":\"dev\",\"name\":\"wasm-bindgen-test\",\"req\":\"^0.3.55\",\"target\":\"cfg(all(target_arch = \\\"wasm32\\\", target_os = \\\"unknown\\\"))\"}],\"features\":{\"arbitrary-precision\":[\"serde_json/arbitrary_precision\",\"dep:num-bigint\"],\"default\":[\"resolve-http\",\"resolve-file\"],\"resolve-async\":[\"referencing/retrieve-async\",\"reqwest/default\",\"dep:async-trait\",\"dep:tokio\"],\"resolve-file\":[],\"resolve-http\":[\"reqwest\"]}}", "jwalk_0.8.1": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"criterion\",\"req\":\"^0.4.0\"},{\"name\":\"crossbeam\",\"req\":\"^0.8\"},{\"kind\":\"dev\",\"name\":\"fs_extra\",\"req\":\"^1.2\"},{\"kind\":\"dev\",\"name\":\"ignore\",\"req\":\"^0.4\"},{\"kind\":\"dev\",\"name\":\"lazy_static\",\"req\":\"^1.4\"},{\"kind\":\"dev\",\"name\":\"num_cpus\",\"req\":\"^1.12\"},{\"name\":\"rayon\",\"req\":\"^1.5\"},{\"kind\":\"dev\",\"name\":\"tempfile\",\"req\":\"^3.1\"},{\"kind\":\"dev\",\"name\":\"walkdir\",\"req\":\"^2.3\"}],\"features\":{}}", + "keccak_0.1.6": "{\"dependencies\":[{\"name\":\"cpufeatures\",\"req\":\"^0.2\",\"target\":\"cfg(target_arch = \\\"aarch64\\\")\"}],\"features\":{\"asm\":[],\"no_unroll\":[],\"simd\":[]}}", + "lalrpop-util_0.22.2": "{\"dependencies\":[{\"default_features\":false,\"features\":[\"perf-inline\",\"perf-literal-substring\",\"syntax\",\"hybrid\"],\"name\":\"regex-automata\",\"optional\":true,\"req\":\"^0.4\"},{\"name\":\"rustversion\",\"req\":\"^1.0\"}],\"features\":{\"default\":[\"std\",\"unicode\"],\"lexer\":[\"regex-automata\"],\"std\":[\"regex-automata/perf\"],\"unicode\":[\"regex-automata?/unicode\"]}}", + "lalrpop_0.22.2": "{\"dependencies\":[{\"default_features\":false,\"name\":\"ascii-canvas\",\"req\":\"^4.0\"},{\"default_features\":false,\"name\":\"bit-set\",\"req\":\"^0.8\"},{\"default_features\":false,\"kind\":\"dev\",\"name\":\"diff\",\"req\":\"^0.1.12\"},{\"default_features\":false,\"name\":\"ena\",\"req\":\"^0.14\"},{\"default_features\":false,\"features\":[\"use_std\"],\"name\":\"itertools\",\"req\":\"^0.14\"},{\"default_features\":false,\"name\":\"lalrpop-util\",\"req\":\"^0.22.2\"},{\"default_features\":false,\"name\":\"petgraph\",\"req\":\"^0.7\"},{\"default_features\":false,\"name\":\"pico-args\",\"optional\":true,\"req\":\"^0.5\"},{\"kind\":\"dev\",\"name\":\"rand\",\"req\":\"^0.8\"},{\"kind\":\"dev\",\"name\":\"rand_chacha\",\"req\":\"^0.3.1\"},{\"default_features\":false,\"features\":[\"std\"],\"name\":\"regex\",\"req\":\"^1.3\"},{\"default_features\":false,\"name\":\"regex-syntax\",\"req\":\"^0.8.2\"},{\"default_features\":false,\"name\":\"sha3\",\"req\":\"^0.10\"},{\"default_features\":false,\"name\":\"string_cache\",\"req\":\"^0.8\"},{\"default_features\":false,\"name\":\"term\",\"req\":\"^1.0\"},{\"default_features\":false,\"name\":\"unicode-xid\",\"req\":\"^0.2\"},{\"name\":\"walkdir\",\"req\":\"^2.4.0\"}],\"features\":{\"default\":[\"lexer\",\"unicode\",\"pico-args\"],\"lexer\":[\"lalrpop-util/lexer\",\"lalrpop-util/std\"],\"unicode\":[\"regex/unicode\",\"regex-syntax/unicode\",\"lalrpop-util/unicode\"]}}", + "lazy_static_1.5.0": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"doc-comment\",\"req\":\"^0.3.1\"},{\"default_features\":false,\"features\":[\"once\"],\"name\":\"spin\",\"optional\":true,\"req\":\"^0.9.8\"},{\"kind\":\"dev\",\"name\":\"trybuild\",\"req\":\"^1\"}],\"features\":{\"spin_no_std\":[\"spin\"]}}", "leb128fmt_0.1.0": "{\"dependencies\":[],\"features\":{\"alloc\":[],\"default\":[\"std\"],\"std\":[]}}", - "libc_0.2.189": "{\"dependencies\":[{\"name\":\"rustc-std-workspace-core\",\"optional\":true,\"req\":\"^1.0.1\"}],\"features\":{\"align\":[],\"const-extern-fn\":[],\"default\":[\"std\"],\"extra_traits\":[],\"rustc-dep-of-std\":[\"align\",\"rustc-std-workspace-core\"],\"std\":[],\"use_std\":[\"std\"]}}", + "libc_0.2.186": "{\"dependencies\":[{\"name\":\"rustc-std-workspace-core\",\"optional\":true,\"req\":\"^1.0.1\"}],\"features\":{\"align\":[],\"const-extern-fn\":[],\"default\":[\"std\"],\"extra_traits\":[],\"rustc-dep-of-std\":[\"align\",\"rustc-std-workspace-core\"],\"std\":[],\"use_std\":[\"std\"]}}", "linux-raw-sys_0.12.1": "{\"dependencies\":[{\"name\":\"core\",\"optional\":true,\"package\":\"rustc-std-workspace-core\",\"req\":\"^1.0.0\"},{\"kind\":\"dev\",\"name\":\"libc\",\"req\":\"^0.2.100\"},{\"kind\":\"dev\",\"name\":\"static_assertions\",\"req\":\"^1.1.0\"}],\"features\":{\"auxvec\":[],\"bootparam\":[],\"btrfs\":[],\"default\":[\"std\",\"general\",\"errno\"],\"elf\":[],\"elf_uapi\":[],\"errno\":[],\"general\":[],\"if_arp\":[],\"if_ether\":[],\"if_packet\":[],\"if_tun\":[],\"image\":[],\"io_uring\":[],\"ioctl\":[],\"landlock\":[],\"loop_device\":[],\"mempolicy\":[],\"net\":[],\"netlink\":[],\"no_std\":[],\"prctl\":[],\"ptrace\":[],\"rustc-dep-of-std\":[\"core\",\"no_std\"],\"std\":[],\"system\":[],\"vm_sockets\":[],\"xdp\":[]}}", "litemap_0.8.2": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"bincode\",\"req\":\"^1.3.1\"},{\"kind\":\"dev\",\"name\":\"criterion\",\"req\":\"^0.5.0\",\"target\":\"cfg(not(target_arch = \\\"wasm32\\\"))\"},{\"default_features\":false,\"name\":\"databake\",\"optional\":true,\"req\":\"^0.2.0\"},{\"default_features\":false,\"features\":[\"use-std\"],\"kind\":\"dev\",\"name\":\"postcard\",\"req\":\"^1.0.3\"},{\"kind\":\"dev\",\"name\":\"rand\",\"req\":\"^0.9\"},{\"features\":[\"validation\"],\"kind\":\"dev\",\"name\":\"rkyv\",\"req\":\"^0.7\"},{\"default_features\":false,\"features\":[\"alloc\"],\"name\":\"serde_core\",\"optional\":true,\"req\":\"^1.0.220\"},{\"default_features\":false,\"kind\":\"dev\",\"name\":\"serde_core\",\"req\":\"^1.0.220\"},{\"kind\":\"dev\",\"name\":\"serde_json\",\"req\":\"^1.0.45\"},{\"default_features\":false,\"features\":[\"derive\"],\"name\":\"yoke\",\"optional\":true,\"req\":\"^0.8.2\"}],\"features\":{\"alloc\":[],\"databake\":[\"dep:databake\"],\"default\":[\"alloc\"],\"serde\":[\"dep:serde_core\",\"alloc\"],\"testing\":[\"alloc\"],\"yoke\":[\"dep:yoke\"]}}", "litrs_1.0.0": "{\"dependencies\":[{\"name\":\"proc-macro2\",\"optional\":true,\"req\":\"^1.0.63\"},{\"name\":\"unicode-xid\",\"optional\":true,\"req\":\"^0.2.4\"}],\"features\":{\"check_suffix\":[\"unicode-xid\"]}}", "lock_api_0.4.14": "{\"dependencies\":[{\"name\":\"owning_ref\",\"optional\":true,\"req\":\"^0.4.1\"},{\"default_features\":false,\"name\":\"scopeguard\",\"req\":\"^1.1.0\"},{\"default_features\":false,\"name\":\"serde\",\"optional\":true,\"req\":\"^1.0.126\"}],\"features\":{\"arc_lock\":[],\"atomic_usize\":[],\"default\":[\"atomic_usize\"],\"nightly\":[]}}", "log_0.4.33": "{\"dependencies\":[{\"default_features\":false,\"kind\":\"dev\",\"name\":\"proc-macro2\",\"req\":\"^1.0.63\"},{\"features\":[\"derive\"],\"kind\":\"dev\",\"name\":\"serde\",\"req\":\"^1.0\"},{\"default_features\":false,\"name\":\"serde_core\",\"optional\":true,\"req\":\"^1.0\"},{\"kind\":\"dev\",\"name\":\"serde_json\",\"req\":\"^1.0\"},{\"kind\":\"dev\",\"name\":\"serde_test\",\"req\":\"^1.0\"},{\"default_features\":false,\"name\":\"sval\",\"optional\":true,\"req\":\"^2.16\"},{\"kind\":\"dev\",\"name\":\"sval\",\"req\":\"^2.16\"},{\"kind\":\"dev\",\"name\":\"sval_derive\",\"req\":\"^2.16\"},{\"default_features\":false,\"name\":\"sval_ref\",\"optional\":true,\"req\":\"^2.16\"},{\"default_features\":false,\"features\":[\"inline-i128\"],\"name\":\"value-bag\",\"optional\":true,\"req\":\"^1.12\"},{\"features\":[\"test\"],\"kind\":\"dev\",\"name\":\"value-bag\",\"req\":\"^1.12\"}],\"features\":{\"kv\":[],\"kv_serde\":[\"kv_std\",\"value-bag/serde\",\"serde\"],\"kv_std\":[\"std\",\"kv\",\"value-bag/error\"],\"kv_sval\":[\"kv\",\"value-bag/sval\",\"sval\",\"sval_ref\"],\"kv_unstable\":[\"kv\",\"value-bag\"],\"kv_unstable_serde\":[\"kv_serde\",\"kv_unstable_std\"],\"kv_unstable_std\":[\"kv_std\",\"kv_unstable\"],\"kv_unstable_sval\":[\"kv_sval\",\"kv_unstable\"],\"max_level_debug\":[],\"max_level_error\":[],\"max_level_info\":[],\"max_level_off\":[],\"max_level_trace\":[],\"max_level_warn\":[],\"release_max_level_debug\":[],\"release_max_level_error\":[],\"release_max_level_info\":[],\"release_max_level_off\":[],\"release_max_level_trace\":[],\"release_max_level_warn\":[],\"serde\":[\"serde_core\"],\"std\":[]}}", "lru_0.18.1": "{\"dependencies\":[{\"name\":\"hashbrown\",\"optional\":true,\"req\":\"^0.17.0\"},{\"kind\":\"dev\",\"name\":\"scoped_threadpool\",\"req\":\"0.1.*\"},{\"kind\":\"dev\",\"name\":\"stats_alloc\",\"req\":\"0.1.*\"}],\"features\":{\"default\":[\"hashbrown\"],\"nightly\":[\"hashbrown\",\"hashbrown/nightly\"]}}", + "lz4_flex_0.11.6": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"binggan\",\"req\":\"^0.12.0\"},{\"kind\":\"dev\",\"name\":\"jemallocator\",\"req\":\"^0.5.4\"},{\"kind\":\"dev\",\"name\":\"lz4-compress\",\"req\":\"^0.1.1\"},{\"kind\":\"dev\",\"name\":\"lzzzz\",\"req\":\"^1.0.4\"},{\"kind\":\"dev\",\"name\":\"more-asserts\",\"req\":\"^0.3.1\"},{\"kind\":\"dev\",\"name\":\"proptest\",\"req\":\"^1.0.0\"},{\"kind\":\"dev\",\"name\":\"serde_json\",\"req\":\"^1.0.91\"},{\"kind\":\"dev\",\"name\":\"snap\",\"req\":\"^1.1.0\"},{\"default_features\":false,\"features\":[\"xxhash32\"],\"name\":\"twox-hash\",\"optional\":true,\"req\":\"^2.0.0\"}],\"features\":{\"checked-decode\":[],\"default\":[\"std\",\"safe-encode\",\"safe-decode\",\"frame\",\"checked-decode\"],\"frame\":[\"std\",\"dep:twox-hash\"],\"nightly\":[],\"safe-decode\":[],\"safe-encode\":[],\"std\":[]}}", "matchit_0.8.4": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"actix-router\",\"req\":\"^0.2.7\"},{\"kind\":\"dev\",\"name\":\"criterion\",\"req\":\"^0.3.4\"},{\"kind\":\"dev\",\"name\":\"gonzales\",\"req\":\"^0.0.3-beta\"},{\"features\":[\"full\"],\"kind\":\"dev\",\"name\":\"hyper\",\"req\":\"^0.14\"},{\"kind\":\"dev\",\"name\":\"path-tree\",\"req\":\"^0.2.2\"},{\"kind\":\"dev\",\"name\":\"regex\",\"req\":\"^1.5.4\"},{\"kind\":\"dev\",\"name\":\"route-recognizer\",\"req\":\"^0.3.0\"},{\"kind\":\"dev\",\"name\":\"routefinder\",\"req\":\"^0.5.2\"},{\"features\":[\"full\"],\"kind\":\"dev\",\"name\":\"tokio\",\"req\":\"^1\"},{\"features\":[\"make\",\"util\"],\"kind\":\"dev\",\"name\":\"tower\",\"req\":\"^0.4\"}],\"features\":{\"__test_helpers\":[],\"default\":[]}}", "maybe-owned_0.3.4": "{\"dependencies\":[{\"name\":\"serde\",\"optional\":true,\"req\":\"^1\"},{\"kind\":\"dev\",\"name\":\"serde_derive\",\"req\":\"^1\"},{\"kind\":\"dev\",\"name\":\"serde_json\",\"req\":\"^1\"}],\"features\":{}}", "memchr_2.8.3": "{\"dependencies\":[{\"name\":\"core\",\"optional\":true,\"package\":\"rustc-std-workspace-core\",\"req\":\"^1.0.0\"},{\"name\":\"log\",\"optional\":true,\"req\":\"^0.4.20\"},{\"default_features\":false,\"kind\":\"dev\",\"name\":\"quickcheck\",\"req\":\"^1.0.3\"}],\"features\":{\"alloc\":[],\"default\":[\"std\"],\"libc\":[],\"logging\":[\"dep:log\"],\"rustc-dep-of-std\":[\"core\"],\"std\":[\"alloc\"],\"use_std\":[\"std\"]}}", @@ -1973,26 +2003,42 @@ "miniz_oxide_0.8.9": "{\"dependencies\":[{\"default_features\":false,\"name\":\"adler2\",\"req\":\"^2.0\"},{\"name\":\"alloc\",\"optional\":true,\"package\":\"rustc-std-workspace-alloc\",\"req\":\"^1.0.0\"},{\"name\":\"core\",\"optional\":true,\"package\":\"rustc-std-workspace-core\",\"req\":\"^1.0.0\"},{\"features\":[\"derive\"],\"name\":\"serde\",\"optional\":true,\"req\":\"^1.0\"},{\"default_features\":false,\"name\":\"simd-adler32\",\"optional\":true,\"req\":\"^0.3.3\"}],\"features\":{\"block-boundary\":[],\"default\":[\"with-alloc\"],\"rustc-dep-of-std\":[\"core\",\"alloc\",\"adler2/rustc-dep-of-std\"],\"simd\":[\"simd-adler32\"],\"std\":[],\"with-alloc\":[]}}", "mio_1.2.0": "{\"dependencies\":[{\"default_features\":false,\"kind\":\"dev\",\"name\":\"env_logger\",\"req\":\"^0.11\"},{\"name\":\"libc\",\"req\":\"^0.2.183\",\"target\":\"cfg(any(unix, target_os = \\\"hermit\\\", target_os = \\\"wasi\\\"))\"},{\"name\":\"log\",\"optional\":true,\"req\":\"^0.4.8\"},{\"kind\":\"dev\",\"name\":\"rand\",\"req\":\"^0.9\"},{\"name\":\"wasi\",\"req\":\"^0.11.0\",\"target\":\"cfg(target_os = \\\"wasi\\\")\"},{\"features\":[\"Wdk_Foundation\",\"Wdk_Storage_FileSystem\",\"Wdk_System_IO\",\"Win32_Foundation\",\"Win32_Networking_WinSock\",\"Win32_Storage_FileSystem\",\"Win32_Security\",\"Win32_System_IO\",\"Win32_System_WindowsProgramming\"],\"name\":\"windows-sys\",\"req\":\"^0.61\",\"target\":\"cfg(windows)\"}],\"features\":{\"default\":[\"log\"],\"net\":[],\"os-ext\":[\"os-poll\",\"windows-sys/Win32_System_Pipes\",\"windows-sys/Win32_Security\"],\"os-poll\":[]}}", "multimap_0.10.1": "{\"dependencies\":[{\"name\":\"serde\",\"optional\":true,\"req\":\"^1.0\"},{\"kind\":\"dev\",\"name\":\"serde_test\",\"req\":\"^1.0\"}],\"features\":{\"default\":[\"serde_impl\"],\"serde_impl\":[\"serde\"]}}", + "new_debug_unreachable_1.0.6": "{\"dependencies\":[],\"features\":{}}", "nix_0.31.3": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"assert-impl\",\"req\":\"^0.1\"},{\"name\":\"bitflags\",\"req\":\"^2.3.3\"},{\"kind\":\"dev\",\"name\":\"caps\",\"req\":\"^0.5.3\",\"target\":\"cfg(any(target_os = \\\"android\\\", target_os = \\\"linux\\\"))\"},{\"name\":\"cfg-if\",\"req\":\"^1.0\"},{\"kind\":\"build\",\"name\":\"cfg_aliases\",\"req\":\"^0.2.1\"},{\"features\":[\"extra_traits\"],\"name\":\"libc\",\"req\":\"^0.2.186\"},{\"name\":\"memoffset\",\"optional\":true,\"req\":\"^0.9\"},{\"kind\":\"dev\",\"name\":\"parking_lot\",\"req\":\"^0.12\"},{\"name\":\"pin-utils\",\"optional\":true,\"req\":\"^0.1.0\"},{\"kind\":\"dev\",\"name\":\"rand\",\"req\":\"^0.9\"},{\"kind\":\"dev\",\"name\":\"semver\",\"req\":\"^1.0.7\"},{\"kind\":\"dev\",\"name\":\"sysctl\",\"req\":\"^0.4\",\"target\":\"cfg(target_os = \\\"freebsd\\\")\"},{\"kind\":\"dev\",\"name\":\"tempfile\",\"req\":\"^3.7.1\"}],\"features\":{\"acct\":[],\"aio\":[\"pin-utils\"],\"default\":[],\"dir\":[\"fs\"],\"env\":[],\"event\":[\"poll\"],\"fanotify\":[],\"feature\":[],\"fs\":[],\"hostname\":[],\"inotify\":[],\"ioctl\":[],\"kmod\":[],\"mman\":[],\"mount\":[\"uio\"],\"mqueue\":[\"fs\"],\"net\":[\"socket\"],\"personality\":[],\"poll\":[],\"process\":[],\"pthread\":[],\"ptrace\":[\"process\"],\"quota\":[],\"reboot\":[],\"resource\":[],\"sched\":[\"process\"],\"signal\":[\"process\"],\"socket\":[\"memoffset\"],\"syslog\":[],\"term\":[],\"time\":[],\"ucontext\":[\"signal\"],\"uio\":[],\"user\":[\"feature\"],\"zerocopy\":[\"fs\",\"uio\"]}}", + "nom-language_0.1.0": "{\"dependencies\":[{\"name\":\"nom\",\"req\":\"^8.0.0\"}],\"features\":{}}", "nom_8.0.0": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"doc-comment\",\"req\":\"^0.3\"},{\"default_features\":false,\"name\":\"memchr\",\"req\":\"^2.3\"},{\"kind\":\"dev\",\"name\":\"proptest\",\"req\":\"=1.0.0\"}],\"features\":{\"alloc\":[],\"default\":[\"std\"],\"docsrs\":[],\"std\":[\"alloc\",\"memchr/std\"]}}", "normalize-path_0.2.1": "{\"dependencies\":[],\"features\":{}}", + "num-bigint_0.4.8": "{\"dependencies\":[{\"default_features\":false,\"name\":\"arbitrary\",\"optional\":true,\"req\":\"^1\"},{\"default_features\":false,\"features\":[\"i128\"],\"name\":\"num-integer\",\"req\":\"^0.1.46\"},{\"default_features\":false,\"features\":[\"i128\"],\"name\":\"num-traits\",\"req\":\"^0.2.18\"},{\"default_features\":false,\"name\":\"quickcheck\",\"optional\":true,\"req\":\"^1\"},{\"default_features\":false,\"name\":\"rand\",\"optional\":true,\"req\":\"^0.8\"},{\"default_features\":false,\"name\":\"serde\",\"optional\":true,\"req\":\"^1.0\"}],\"features\":{\"arbitrary\":[\"dep:arbitrary\"],\"default\":[\"std\"],\"quickcheck\":[\"dep:quickcheck\"],\"rand\":[\"dep:rand\"],\"serde\":[\"dep:serde\"],\"std\":[\"num-integer/std\",\"num-traits/std\"]}}", + "num-cmp_0.1.0": "{\"dependencies\":[],\"features\":{\"i128\":[]}}", + "num-complex_0.4.6": "{\"dependencies\":[{\"default_features\":false,\"name\":\"bytecheck\",\"optional\":true,\"req\":\"^0.6\"},{\"name\":\"bytemuck\",\"optional\":true,\"req\":\"^1\"},{\"default_features\":false,\"features\":[\"i128\"],\"name\":\"num-traits\",\"req\":\"^0.2.18\"},{\"default_features\":false,\"name\":\"rand\",\"optional\":true,\"req\":\"^0.8\"},{\"default_features\":false,\"name\":\"rkyv\",\"optional\":true,\"req\":\"^0.7\"},{\"default_features\":false,\"name\":\"serde\",\"optional\":true,\"req\":\"^1.0\"}],\"features\":{\"bytecheck\":[\"dep:bytecheck\"],\"bytemuck\":[\"dep:bytemuck\"],\"default\":[\"std\"],\"libm\":[\"num-traits/libm\"],\"rand\":[\"dep:rand\"],\"rkyv\":[\"dep:rkyv\"],\"serde\":[\"dep:serde\"],\"std\":[\"num-traits/std\"]}}", "num-conv_0.2.2": "{\"dependencies\":[],\"features\":{}}", + "num-integer_0.1.46": "{\"dependencies\":[{\"default_features\":false,\"features\":[\"i128\"],\"name\":\"num-traits\",\"req\":\"^0.2.11\"}],\"features\":{\"default\":[\"std\"],\"i128\":[],\"std\":[\"num-traits/std\"]}}", + "num-iter_0.1.46": "{\"dependencies\":[{\"default_features\":false,\"features\":[\"i128\"],\"name\":\"num-integer\",\"req\":\"^0.1.46\"},{\"default_features\":false,\"features\":[\"i128\"],\"name\":\"num-traits\",\"req\":\"^0.2.11\"}],\"features\":{\"default\":[\"std\"],\"i128\":[],\"std\":[\"num-integer/std\",\"num-traits/std\"]}}", + "num-rational_0.4.2": "{\"dependencies\":[{\"default_features\":false,\"name\":\"num-bigint\",\"optional\":true,\"req\":\"^0.4.0\"},{\"default_features\":false,\"features\":[\"i128\"],\"name\":\"num-integer\",\"req\":\"^0.1.42\"},{\"default_features\":false,\"features\":[\"i128\"],\"name\":\"num-traits\",\"req\":\"^0.2.18\"},{\"default_features\":false,\"name\":\"serde\",\"optional\":true,\"req\":\"^1.0.0\"}],\"features\":{\"default\":[\"num-bigint\",\"std\"],\"num-bigint\":[\"dep:num-bigint\"],\"num-bigint-std\":[\"num-bigint/std\"],\"serde\":[\"dep:serde\"],\"std\":[\"num-bigint?/std\",\"num-integer/std\",\"num-traits/std\"]}}", "num-traits_0.2.19": "{\"dependencies\":[{\"kind\":\"build\",\"name\":\"autocfg\",\"req\":\"^1\"},{\"name\":\"libm\",\"optional\":true,\"req\":\"^0.2.0\"}],\"features\":{\"default\":[\"std\"],\"i128\":[],\"libm\":[\"dep:libm\"],\"std\":[]}}", + "num_0.4.3": "{\"dependencies\":[{\"default_features\":false,\"name\":\"num-bigint\",\"optional\":true,\"req\":\"^0.4.5\"},{\"default_features\":false,\"name\":\"num-complex\",\"req\":\"^0.4.6\"},{\"default_features\":false,\"features\":[\"i128\"],\"name\":\"num-integer\",\"req\":\"^0.1.46\"},{\"default_features\":false,\"features\":[\"i128\"],\"name\":\"num-iter\",\"req\":\"^0.1.45\"},{\"default_features\":false,\"name\":\"num-rational\",\"req\":\"^0.4.2\"},{\"default_features\":false,\"features\":[\"i128\"],\"name\":\"num-traits\",\"req\":\"^0.2.19\"}],\"features\":{\"alloc\":[\"dep:num-bigint\",\"num-rational/num-bigint\"],\"default\":[\"std\"],\"libm\":[\"num-complex/libm\",\"num-traits/libm\"],\"num-bigint\":[\"dep:num-bigint\"],\"rand\":[\"num-bigint/rand\",\"num-complex/rand\"],\"serde\":[\"num-bigint/serde\",\"num-complex/serde\",\"num-rational/serde\"],\"std\":[\"dep:num-bigint\",\"num-bigint/std\",\"num-complex/std\",\"num-integer/std\",\"num-iter/std\",\"num-rational/std\",\"num-rational/num-bigint-std\",\"num-traits/std\"]}}", "once_cell_1.21.4": "{\"dependencies\":[{\"name\":\"critical-section\",\"optional\":true,\"req\":\"^1.1.3\"},{\"features\":[\"std\"],\"kind\":\"dev\",\"name\":\"critical-section\",\"req\":\"^1.1.3\"},{\"default_features\":false,\"name\":\"parking_lot_core\",\"optional\":true,\"req\":\"^0.9.10\"},{\"default_features\":false,\"name\":\"portable-atomic\",\"optional\":true,\"req\":\"^1.8\"},{\"kind\":\"dev\",\"name\":\"regex\",\"req\":\"^1.10.6\"}],\"features\":{\"alloc\":[\"race\"],\"atomic-polyfill\":[\"critical-section\"],\"critical-section\":[\"dep:critical-section\",\"portable-atomic\"],\"default\":[\"std\"],\"parking_lot\":[\"dep:parking_lot_core\"],\"portable-atomic\":[\"dep:portable-atomic\"],\"race\":[],\"std\":[\"alloc\"],\"unstable\":[]}}", "once_cell_polyfill_1.70.2": "{\"dependencies\":[],\"features\":{\"default\":[]}}", + "ordered-float_4.6.0": "{\"dependencies\":[{\"name\":\"arbitrary\",\"optional\":true,\"req\":\"^1.0.0\"},{\"default_features\":false,\"name\":\"borsh\",\"optional\":true,\"req\":\"^1.2.0\"},{\"default_features\":false,\"name\":\"bytemuck\",\"optional\":true,\"req\":\"^1.12.2\"},{\"name\":\"derive-visitor\",\"optional\":true,\"req\":\"^0.4.0\"},{\"name\":\"num-cmp\",\"optional\":true,\"req\":\"^0.1.0\"},{\"default_features\":false,\"name\":\"num-traits\",\"req\":\"^0.2.9\"},{\"name\":\"proptest\",\"optional\":true,\"req\":\"^1.0.0\"},{\"default_features\":false,\"name\":\"rand\",\"optional\":true,\"req\":\"^0.8.3\"},{\"default_features\":false,\"features\":[\"rend\"],\"name\":\"rkyv\",\"optional\":true,\"req\":\"^0.7.41\"},{\"name\":\"schemars\",\"optional\":true,\"req\":\"^0.8.8\"},{\"default_features\":false,\"name\":\"serde\",\"optional\":true,\"req\":\"^1.0\"},{\"kind\":\"dev\",\"name\":\"serde_test\",\"req\":\"^1.0\"},{\"default_features\":false,\"name\":\"speedy\",\"optional\":true,\"req\":\"^0.8.3\"}],\"features\":{\"default\":[\"std\"],\"libm\":[\"num-traits/libm\"],\"randtest\":[\"rand/std\",\"rand/std_rng\"],\"rkyv\":[\"rkyv_32\"],\"rkyv_16\":[\"dep:rkyv\",\"rkyv?/size_16\"],\"rkyv_32\":[\"dep:rkyv\",\"rkyv?/size_32\"],\"rkyv_64\":[\"dep:rkyv\",\"rkyv?/size_64\"],\"rkyv_ck\":[\"rkyv?/validation\"],\"serde\":[\"dep:serde\",\"rand?/serde1\"],\"std\":[\"num-traits/std\"]}}", + "outref_0.5.2": "{\"dependencies\":[],\"features\":{}}", "parking_lot_0.12.5": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"bincode\",\"req\":\"^1.3.3\"},{\"name\":\"lock_api\",\"req\":\"^0.4.14\"},{\"name\":\"parking_lot_core\",\"req\":\"^0.9.12\"},{\"kind\":\"dev\",\"name\":\"rand\",\"req\":\"^0.8.3\"}],\"features\":{\"arc_lock\":[\"lock_api/arc_lock\"],\"deadlock_detection\":[\"parking_lot_core/deadlock_detection\"],\"default\":[],\"hardware-lock-elision\":[],\"nightly\":[\"parking_lot_core/nightly\",\"lock_api/nightly\"],\"owning_ref\":[\"lock_api/owning_ref\"],\"send_guard\":[],\"serde\":[\"lock_api/serde\"]}}", "parking_lot_core_0.9.12": "{\"dependencies\":[{\"name\":\"backtrace\",\"optional\":true,\"req\":\"^0.3.60\"},{\"name\":\"cfg-if\",\"req\":\"^1.0.0\"},{\"name\":\"libc\",\"req\":\"^0.2.95\",\"target\":\"cfg(unix)\"},{\"name\":\"petgraph\",\"optional\":true,\"req\":\"^0.6.0\"},{\"name\":\"redox_syscall\",\"req\":\"^0.5\",\"target\":\"cfg(target_os = \\\"redox\\\")\"},{\"name\":\"smallvec\",\"req\":\"^1.6.1\"},{\"name\":\"windows-link\",\"req\":\"^0.2.0\",\"target\":\"cfg(windows)\"}],\"features\":{\"deadlock_detection\":[\"petgraph\",\"backtrace\"],\"nightly\":[]}}", "percent-encoding_2.3.2": "{\"dependencies\":[],\"features\":{\"alloc\":[],\"default\":[\"std\"],\"std\":[\"alloc\"]}}", + "petgraph_0.7.1": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"ahash\",\"req\":\"^0.7.2\"},{\"kind\":\"dev\",\"name\":\"bincode\",\"req\":\"^1.3.3\"},{\"kind\":\"dev\",\"name\":\"defmac\",\"req\":\"^0.2.1\"},{\"default_features\":false,\"name\":\"fixedbitset\",\"req\":\"^0.5.7\"},{\"kind\":\"dev\",\"name\":\"fxhash\",\"req\":\"^0.2.1\"},{\"name\":\"indexmap\",\"req\":\"^2.5.0\"},{\"default_features\":false,\"kind\":\"dev\",\"name\":\"itertools\",\"req\":\"^0.12.1\"},{\"kind\":\"dev\",\"name\":\"odds\",\"req\":\"^0.4.0\"},{\"default_features\":false,\"name\":\"quickcheck\",\"optional\":true,\"req\":\"^0.8\"},{\"kind\":\"dev\",\"name\":\"rand\",\"req\":\"^0.5.5\"},{\"name\":\"rayon\",\"optional\":true,\"req\":\"^1.5.3\"},{\"name\":\"serde\",\"optional\":true,\"req\":\"^1.0\"},{\"name\":\"serde_derive\",\"optional\":true,\"req\":\"^1.0\"}],\"features\":{\"all\":[\"unstable\",\"quickcheck\",\"matrix_graph\",\"stable_graph\",\"graphmap\",\"rayon\"],\"default\":[\"graphmap\",\"stable_graph\",\"matrix_graph\"],\"generate\":[],\"graphmap\":[],\"matrix_graph\":[],\"rayon\":[\"dep:rayon\",\"indexmap/rayon\"],\"serde-1\":[\"serde\",\"serde_derive\"],\"stable_graph\":[],\"unstable\":[\"generate\"]}}", "petgraph_0.8.3": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"ahash\",\"req\":\"^0.7.2\"},{\"kind\":\"dev\",\"name\":\"bincode\",\"req\":\"^1.3.3\"},{\"kind\":\"dev\",\"name\":\"defmac\",\"req\":\"^0.2.1\"},{\"name\":\"dot-parser\",\"optional\":true,\"req\":\"^0.5.1\"},{\"name\":\"dot-parser-macros\",\"optional\":true,\"req\":\"^0.5.1\"},{\"default_features\":false,\"name\":\"fixedbitset\",\"req\":\"^0.5.7\"},{\"kind\":\"dev\",\"name\":\"fxhash\",\"req\":\"^0.2.1\"},{\"default_features\":false,\"features\":[\"default-hasher\",\"inline-more\"],\"name\":\"hashbrown\",\"req\":\"^0.15.0\"},{\"default_features\":false,\"name\":\"indexmap\",\"req\":\"^2.5.0\"},{\"default_features\":false,\"kind\":\"dev\",\"name\":\"itertools\",\"req\":\"^0.12.1\"},{\"kind\":\"dev\",\"name\":\"odds\",\"req\":\"^0.4.0\"},{\"default_features\":false,\"name\":\"quickcheck\",\"optional\":true,\"req\":\"^0.8\"},{\"kind\":\"dev\",\"name\":\"rand\",\"req\":\"^0.5.5\"},{\"name\":\"rayon\",\"optional\":true,\"req\":\"^1.5.3\"},{\"default_features\":false,\"name\":\"serde\",\"optional\":true,\"req\":\"^1.0\"},{\"default_features\":false,\"name\":\"serde_derive\",\"optional\":true,\"req\":\"^1.0\"}],\"features\":{\"all\":[\"unstable\",\"quickcheck\",\"matrix_graph\",\"stable_graph\",\"graphmap\",\"rayon\",\"dot_parser\"],\"default\":[\"std\",\"graphmap\",\"stable_graph\",\"matrix_graph\"],\"dot_parser\":[\"std\",\"dep:dot-parser\",\"dep:dot-parser-macros\"],\"generate\":[],\"graphmap\":[],\"matrix_graph\":[],\"quickcheck\":[\"std\",\"dep:quickcheck\",\"graphmap\",\"stable_graph\"],\"rayon\":[\"std\",\"dep:rayon\",\"indexmap/rayon\",\"hashbrown/rayon\"],\"serde-1\":[\"serde\",\"serde_derive\"],\"stable_graph\":[\"serde?/alloc\"],\"std\":[\"indexmap/std\"],\"unstable\":[\"generate\"]}}", + "phf_0.12.1": "{\"dependencies\":[{\"name\":\"phf_macros\",\"optional\":true,\"req\":\"^0.12.0\"},{\"default_features\":false,\"name\":\"phf_shared\",\"req\":\"^0.12.0\"},{\"default_features\":false,\"name\":\"serde\",\"optional\":true,\"req\":\"^1.0\"}],\"features\":{\"default\":[\"std\"],\"macros\":[\"phf_macros\"],\"std\":[\"phf_shared/std\",\"serde?/std\"],\"uncased\":[\"phf_macros?/uncased\",\"phf_shared/uncased\"],\"unicase\":[\"phf_macros?/unicase\",\"phf_shared/unicase\"]}}", "phf_0.14.0": "{\"dependencies\":[{\"name\":\"phf_macros\",\"optional\":true,\"req\":\"^0.14.0\"},{\"default_features\":false,\"name\":\"phf_shared\",\"req\":\"^0.14.0\"},{\"default_features\":false,\"name\":\"serde\",\"optional\":true,\"req\":\"^1.0\"}],\"features\":{\"default\":[\"std\"],\"macros\":[\"phf_macros\"],\"ptrhash\":[\"phf_macros?/ptrhash\",\"phf_shared/ptrhash\"],\"std\":[\"phf_shared/std\",\"serde?/std\"],\"uncased\":[\"phf_macros?/uncased\",\"phf_shared/uncased\"],\"unicase\":[\"phf_macros?/unicase\",\"phf_shared/unicase\"]}}", "phf_generator_0.14.0": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"criterion\",\"req\":\"^0.8.0\"},{\"default_features\":false,\"name\":\"fastrand\",\"req\":\"^2.1.0\"},{\"default_features\":false,\"name\":\"phf_shared\",\"req\":\"^0.14.0\"}],\"features\":{\"ptrhash\":[\"phf_shared/ptrhash\"]}}", "phf_macros_0.14.0": "{\"dependencies\":[{\"name\":\"phf_generator\",\"req\":\"^0.14.0\"},{\"default_features\":false,\"name\":\"phf_shared\",\"req\":\"^0.14.0\"},{\"name\":\"proc-macro2\",\"req\":\"^1.0.95\"},{\"name\":\"quote\",\"req\":\"^1\"},{\"features\":[\"full\"],\"name\":\"syn\",\"req\":\"^2\"},{\"name\":\"uncased_\",\"optional\":true,\"package\":\"uncased\",\"req\":\"^0.9.7\"},{\"name\":\"unicase_\",\"optional\":true,\"package\":\"unicase\",\"req\":\"^2.4.0\"}],\"features\":{\"ptrhash\":[\"phf_generator/ptrhash\"],\"uncased\":[\"uncased_\",\"phf_shared/uncased\"],\"unicase\":[\"unicase_\",\"phf_shared/unicase\"]}}", + "phf_shared_0.11.3": "{\"dependencies\":[{\"name\":\"siphasher\",\"req\":\"^1.0\"},{\"default_features\":false,\"name\":\"uncased\",\"optional\":true,\"req\":\"^0.9.9\"},{\"name\":\"unicase\",\"optional\":true,\"req\":\"^2.4.0\"}],\"features\":{\"default\":[\"std\"],\"std\":[]}}", + "phf_shared_0.12.1": "{\"dependencies\":[{\"name\":\"siphasher\",\"req\":\"^1.0\"},{\"default_features\":false,\"name\":\"uncased\",\"optional\":true,\"req\":\"^0.9.9\"},{\"name\":\"unicase\",\"optional\":true,\"req\":\"^2.4.0\"}],\"features\":{\"default\":[\"std\"],\"std\":[]}}", "phf_shared_0.14.0": "{\"dependencies\":[{\"name\":\"siphasher\",\"req\":\"^1.0\"},{\"default_features\":false,\"name\":\"uncased\",\"optional\":true,\"req\":\"^0.9.9\"},{\"name\":\"unicase\",\"optional\":true,\"req\":\"^2.8.1\"}],\"features\":{\"default\":[\"std\"],\"ptrhash\":[],\"std\":[]}}", "pin-project-internal_1.1.11": "{\"dependencies\":[{\"name\":\"proc-macro2\",\"req\":\"^1.0.60\"},{\"name\":\"quote\",\"req\":\"^1.0.25\"},{\"default_features\":false,\"features\":[\"parsing\",\"printing\",\"clone-impls\",\"proc-macro\",\"full\",\"visit-mut\"],\"name\":\"syn\",\"req\":\"^2.0.1\"}],\"features\":{}}", "pin-project-lite_0.2.17": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"rustversion\",\"req\":\"^1\"},{\"kind\":\"dev\",\"name\":\"static_assertions\",\"req\":\"^1\"}],\"features\":{}}", "pin-project_1.1.11": "{\"dependencies\":[{\"name\":\"pin-project-internal\",\"req\":\"=1.1.11\"},{\"kind\":\"dev\",\"name\":\"rustversion\",\"req\":\"^1\"},{\"kind\":\"dev\",\"name\":\"static_assertions\",\"req\":\"^1\"}],\"features\":{}}", "potential_utf_0.1.5": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"bincode\",\"req\":\"^1.3.1\"},{\"default_features\":false,\"name\":\"databake\",\"optional\":true,\"req\":\"^0.2.0\"},{\"default_features\":false,\"name\":\"serde_core\",\"optional\":true,\"req\":\"^1.0.220\"},{\"kind\":\"dev\",\"name\":\"serde_json\",\"req\":\"^1.0.45\"},{\"default_features\":false,\"name\":\"writeable\",\"optional\":true,\"req\":\"^0.6.1\"},{\"default_features\":false,\"name\":\"zerovec\",\"optional\":true,\"req\":\"^0.11.6\"}],\"features\":{\"alloc\":[\"serde_core?/alloc\",\"writeable/alloc\",\"zerovec?/alloc\"],\"databake\":[\"dep:databake\"],\"default\":[\"alloc\"],\"serde\":[\"dep:serde_core\"],\"writeable\":[\"dep:writeable\"],\"zerovec\":[\"dep:zerovec\"]}}", "powerfmt_0.2.0": "{\"dependencies\":[{\"name\":\"powerfmt-macros\",\"optional\":true,\"req\":\"=0.1.0\"}],\"features\":{\"alloc\":[],\"default\":[\"std\",\"macros\"],\"macros\":[\"dep:powerfmt-macros\"],\"std\":[\"alloc\"]}}", + "precomputed-hash_0.1.1": "{\"dependencies\":[],\"features\":{}}", "prettyplease_0.2.37": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"indoc\",\"req\":\"^2\"},{\"default_features\":false,\"name\":\"proc-macro2\",\"req\":\"^1.0.80\"},{\"default_features\":false,\"kind\":\"dev\",\"name\":\"proc-macro2\",\"req\":\"^1.0.80\"},{\"default_features\":false,\"kind\":\"dev\",\"name\":\"quote\",\"req\":\"^1.0.35\"},{\"default_features\":false,\"features\":[\"full\"],\"name\":\"syn\",\"req\":\"^2.0.105\"},{\"default_features\":false,\"features\":[\"clone-impls\",\"extra-traits\",\"parsing\",\"printing\",\"visit-mut\"],\"kind\":\"dev\",\"name\":\"syn\",\"req\":\"^2.0.105\"}],\"features\":{\"verbatim\":[\"syn/parsing\"]}}", "proc-macro2_1.0.106": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"flate2\",\"req\":\"^1.0\"},{\"default_features\":false,\"kind\":\"dev\",\"name\":\"quote\",\"req\":\"^1.0\"},{\"kind\":\"dev\",\"name\":\"rayon\",\"req\":\"^1.0\"},{\"kind\":\"dev\",\"name\":\"rustversion\",\"req\":\"^1\"},{\"kind\":\"dev\",\"name\":\"tar\",\"req\":\"^0.4\"},{\"name\":\"unicode-ident\",\"req\":\"^1.0\"}],\"features\":{\"default\":[\"proc-macro\"],\"nightly\":[],\"proc-macro\":[],\"span-locations\":[]}}", "prost-build_0.14.3": "{\"dependencies\":[{\"default_features\":false,\"kind\":\"dev\",\"name\":\"env_logger\",\"req\":\"^0.11\"},{\"name\":\"heck\",\"req\":\">=0.4, <=0.5\"},{\"default_features\":false,\"features\":[\"use_alloc\"],\"name\":\"itertools\",\"req\":\">=0.10, <=0.14\"},{\"name\":\"log\",\"req\":\"^0.4.4\"},{\"default_features\":false,\"name\":\"multimap\",\"req\":\">=0.8, <=0.10\"},{\"default_features\":false,\"features\":[\"std\"],\"name\":\"petgraph\",\"req\":\"^0.8\"},{\"name\":\"prettyplease\",\"optional\":true,\"req\":\"^0.2\"},{\"default_features\":false,\"name\":\"prost\",\"req\":\"^0.14.3\"},{\"default_features\":false,\"name\":\"prost-types\",\"req\":\"^0.14.3\"},{\"default_features\":false,\"name\":\"pulldown-cmark\",\"optional\":true,\"req\":\"^0.13\"},{\"name\":\"pulldown-cmark-to-cmark\",\"optional\":true,\"req\":\"^22\"},{\"default_features\":false,\"features\":[\"std\",\"unicode-bool\"],\"name\":\"regex\",\"req\":\"^1.8.1\"},{\"features\":[\"full\"],\"name\":\"syn\",\"optional\":true,\"req\":\"^2\"},{\"name\":\"tempfile\",\"req\":\"^3\"}],\"features\":{\"cleanup-markdown\":[\"dep:pulldown-cmark\",\"dep:pulldown-cmark-to-cmark\"],\"default\":[\"format\"],\"format\":[\"dep:prettyplease\",\"dep:syn\"]}}", @@ -2004,12 +2050,17 @@ "pulldown-cmark-to-cmark_22.0.0": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"indoc\",\"req\":\"^2.0.5\"},{\"kind\":\"dev\",\"name\":\"pretty_assertions\",\"req\":\"^1.4.0\"},{\"default_features\":false,\"name\":\"pulldown-cmark\",\"req\":\"^0.13.0\"},{\"kind\":\"dev\",\"name\":\"yansi\",\"req\":\"^1.0.1\"}],\"features\":{}}", "pulldown-cmark_0.13.3": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"bincode\",\"req\":\"^1.3.1\"},{\"name\":\"bitflags\",\"req\":\"^2\"},{\"name\":\"getopts\",\"optional\":true,\"req\":\"^0.2\"},{\"kind\":\"dev\",\"name\":\"lazy_static\",\"req\":\"^1.4\"},{\"name\":\"memchr\",\"req\":\"^2.5\"},{\"name\":\"pulldown-cmark-escape\",\"optional\":true,\"req\":\"^0.11\"},{\"kind\":\"dev\",\"name\":\"regex\",\"req\":\"^1.6\"},{\"features\":[\"derive\"],\"name\":\"serde\",\"optional\":true,\"req\":\"^1.0\"},{\"kind\":\"dev\",\"name\":\"serde_json\",\"req\":\"^1.0.61\"},{\"name\":\"unicase\",\"req\":\"^2.6\"}],\"features\":{\"default\":[\"getopts\",\"html\"],\"gen-tests\":[],\"html\":[\"pulldown-cmark-escape\"],\"simd\":[\"pulldown-cmark-escape?/simd\"]}}", "quote_1.0.45": "{\"dependencies\":[{\"default_features\":false,\"name\":\"proc-macro2\",\"req\":\"^1.0.80\"},{\"kind\":\"dev\",\"name\":\"rustversion\",\"req\":\"^1.0\"},{\"features\":[\"diff\"],\"kind\":\"dev\",\"name\":\"trybuild\",\"req\":\"^1.0.108\"}],\"features\":{\"default\":[\"proc-macro\"],\"proc-macro\":[\"proc-macro2/proc-macro\"]}}", + "r-efi_5.3.0": "{\"dependencies\":[{\"name\":\"core\",\"optional\":true,\"package\":\"rustc-std-workspace-core\",\"req\":\"^1.0.0\"}],\"features\":{\"efiapi\":[],\"examples\":[\"native\"],\"native\":[],\"rustc-dep-of-std\":[\"core\"]}}", "r-efi_6.0.0": "{\"dependencies\":[{\"name\":\"core\",\"optional\":true,\"package\":\"rustc-std-workspace-core\",\"req\":\"^1.0.0\"}],\"features\":{\"native\":[],\"rustc-dep-of-std\":[\"core\"]}}", "rawzip_0.5.1": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"aes\",\"req\":\"^0.9.1\"},{\"kind\":\"dev\",\"name\":\"ctr\",\"req\":\"^0.10.1\"},{\"kind\":\"dev\",\"name\":\"filetime\",\"req\":\"^0.2\"},{\"kind\":\"dev\",\"name\":\"flate2\",\"req\":\"^1.1.9\"},{\"kind\":\"dev\",\"name\":\"hmac\",\"req\":\"^0.13.0\"},{\"default_features\":false,\"kind\":\"dev\",\"name\":\"jiff\",\"req\":\"^0.2.28\"},{\"kind\":\"dev\",\"name\":\"paste\",\"req\":\"^1.0\"},{\"kind\":\"dev\",\"name\":\"pbkdf2\",\"req\":\"^0.13.0\"},{\"kind\":\"dev\",\"name\":\"quickcheck\",\"req\":\"^1.0.3\"},{\"kind\":\"dev\",\"name\":\"quickcheck_macros\",\"req\":\"^1.0.0\"},{\"kind\":\"dev\",\"name\":\"rstest\",\"req\":\"^0.26.1\"},{\"kind\":\"dev\",\"name\":\"sha1\",\"req\":\"^0.11.0\"},{\"kind\":\"dev\",\"name\":\"zstd\",\"req\":\"^0.13.3\"}],\"features\":{\"alloc\":[],\"default\":[\"std\"],\"std\":[\"alloc\"]}}", "rayon-core_1.13.0": "{\"dependencies\":[{\"name\":\"crossbeam-deque\",\"req\":\"^0.8.1\"},{\"name\":\"crossbeam-utils\",\"req\":\"^0.8.0\"},{\"kind\":\"dev\",\"name\":\"libc\",\"req\":\"^0.2\",\"target\":\"cfg(unix)\"},{\"kind\":\"dev\",\"name\":\"rand\",\"req\":\"^0.9\"},{\"kind\":\"dev\",\"name\":\"rand_xorshift\",\"req\":\"^0.4\"},{\"kind\":\"dev\",\"name\":\"scoped-tls\",\"req\":\"^1.0\"},{\"name\":\"wasm_sync\",\"optional\":true,\"req\":\"^0.1.0\"}],\"features\":{\"web_spin_lock\":[\"dep:wasm_sync\"]}}", "rayon_1.12.0": "{\"dependencies\":[{\"default_features\":false,\"name\":\"either\",\"req\":\"^1\"},{\"kind\":\"dev\",\"name\":\"rand\",\"req\":\"^0.9\"},{\"kind\":\"dev\",\"name\":\"rand_xorshift\",\"req\":\"^0.4\"},{\"name\":\"rayon-core\",\"req\":\"^1.13.0\"},{\"name\":\"wasm_sync\",\"optional\":true,\"req\":\"^0.1.0\"}],\"features\":{\"web_spin_lock\":[\"dep:wasm_sync\",\"rayon-core/web_spin_lock\"]}}", "redox_syscall_0.5.18": "{\"dependencies\":[{\"name\":\"bitflags\",\"req\":\"^2.4\"},{\"name\":\"core\",\"optional\":true,\"package\":\"rustc-std-workspace-core\",\"req\":\"^1.0.0\"},{\"kind\":\"dev\",\"name\":\"loom\",\"req\":\"^0.7\",\"target\":\"cfg(loom)\"}],\"features\":{\"default\":[\"userspace\"],\"rustc-dep-of-std\":[\"core\",\"bitflags/rustc-dep-of-std\"],\"std\":[],\"userspace\":[]}}", + "ref-cast-impl_1.0.25": "{\"dependencies\":[{\"name\":\"proc-macro2\",\"req\":\"^1.0.74\"},{\"name\":\"quote\",\"req\":\"^1.0.35\"},{\"kind\":\"dev\",\"name\":\"ref-cast\",\"req\":\"^1\"},{\"name\":\"syn\",\"req\":\"^2.0.46\"}],\"features\":{}}", + "ref-cast_1.0.25": "{\"dependencies\":[{\"name\":\"ref-cast-impl\",\"req\":\"=1.0.25\"},{\"kind\":\"dev\",\"name\":\"ref-cast-test-suite\",\"req\":\"^0\"},{\"kind\":\"dev\",\"name\":\"rustversion\",\"req\":\"^1.0.13\"},{\"features\":[\"diff\"],\"kind\":\"dev\",\"name\":\"trybuild\",\"req\":\"^1.0.108\"}],\"features\":{}}", + "referencing_0.38.1": "{\"dependencies\":[{\"features\":[\"serde\"],\"name\":\"ahash\",\"req\":\"^0.8\"},{\"name\":\"async-trait\",\"optional\":true,\"req\":\"^0.1.86\"},{\"default_features\":false,\"kind\":\"dev\",\"name\":\"codspeed-criterion-compat\",\"req\":\"^4.1\"},{\"default_features\":false,\"kind\":\"dev\",\"name\":\"criterion\",\"req\":\"^0.7\"},{\"features\":[\"serde\"],\"name\":\"fluent-uri\",\"req\":\"^0.4.1\"},{\"name\":\"futures\",\"optional\":true,\"req\":\"^0.3.31\"},{\"features\":[\"wasm_js\"],\"name\":\"getrandom\",\"req\":\"^0.3.4\",\"target\":\"cfg(target_arch = \\\"wasm32\\\")\"},{\"features\":[\"js\"],\"kind\":\"dev\",\"name\":\"getrandom\",\"req\":\"^0.2\"},{\"name\":\"hashbrown\",\"req\":\"^0.16\"},{\"name\":\"parking_lot\",\"req\":\"^0.12.3\"},{\"name\":\"percent-encoding\",\"req\":\"^2.3.1\"},{\"name\":\"serde_json\",\"req\":\"^1\"},{\"kind\":\"dev\",\"name\":\"test-case\",\"req\":\"^3.3.1\"},{\"features\":[\"macros\",\"rt\"],\"kind\":\"dev\",\"name\":\"tokio\",\"req\":\"^1\"}],\"features\":{\"default\":[],\"retrieve-async\":[\"dep:async-trait\",\"dep:futures\"]}}", "regex-automata_0.4.16": "{\"dependencies\":[{\"default_features\":false,\"name\":\"aho-corasick\",\"optional\":true,\"req\":\"^1.0.0\"},{\"kind\":\"dev\",\"name\":\"anyhow\",\"req\":\"^1.0.69\"},{\"default_features\":false,\"features\":[\"std\"],\"kind\":\"dev\",\"name\":\"bstr\",\"req\":\"^1.3.0\"},{\"kind\":\"dev\",\"name\":\"doc-comment\",\"req\":\"^0.3.3\"},{\"default_features\":false,\"features\":[\"atty\",\"humantime\",\"termcolor\"],\"kind\":\"dev\",\"name\":\"env_logger\",\"req\":\"^0.9.3\"},{\"name\":\"log\",\"optional\":true,\"req\":\"^0.4.14\"},{\"default_features\":false,\"name\":\"memchr\",\"optional\":true,\"req\":\"^2.6.0\"},{\"default_features\":false,\"kind\":\"dev\",\"name\":\"quickcheck\",\"req\":\"^1.0.3\"},{\"default_features\":false,\"name\":\"regex-syntax\",\"optional\":true,\"req\":\"^0.8.5\"},{\"kind\":\"dev\",\"name\":\"regex-test\",\"req\":\"^0.1.0\"}],\"features\":{\"alloc\":[],\"default\":[\"std\",\"syntax\",\"perf\",\"unicode\",\"meta\",\"nfa\",\"dfa\",\"hybrid\"],\"dfa\":[\"dfa-build\",\"dfa-search\",\"dfa-onepass\"],\"dfa-build\":[\"nfa-thompson\",\"dfa-search\"],\"dfa-onepass\":[\"nfa-thompson\"],\"dfa-search\":[],\"hybrid\":[\"alloc\",\"nfa-thompson\"],\"internal-instrument\":[\"internal-instrument-pikevm\"],\"internal-instrument-pikevm\":[\"logging\",\"std\"],\"logging\":[\"dep:log\",\"aho-corasick?/logging\",\"memchr?/logging\"],\"meta\":[\"syntax\",\"nfa-pikevm\"],\"nfa\":[\"nfa-thompson\",\"nfa-pikevm\",\"nfa-backtrack\"],\"nfa-backtrack\":[\"nfa-thompson\"],\"nfa-pikevm\":[\"nfa-thompson\"],\"nfa-thompson\":[\"alloc\"],\"perf\":[\"perf-inline\",\"perf-literal\"],\"perf-inline\":[],\"perf-literal\":[\"perf-literal-substring\",\"perf-literal-multisubstring\"],\"perf-literal-multisubstring\":[\"dep:aho-corasick\"],\"perf-literal-substring\":[\"aho-corasick?/perf-literal\",\"dep:memchr\"],\"std\":[\"regex-syntax?/std\",\"memchr?/std\",\"aho-corasick?/std\",\"alloc\"],\"syntax\":[\"dep:regex-syntax\",\"alloc\"],\"unicode\":[\"unicode-age\",\"unicode-bool\",\"unicode-case\",\"unicode-gencat\",\"unicode-perl\",\"unicode-script\",\"unicode-segment\",\"unicode-word-boundary\",\"regex-syntax?/unicode\"],\"unicode-age\":[\"regex-syntax?/unicode-age\"],\"unicode-bool\":[\"regex-syntax?/unicode-bool\"],\"unicode-case\":[\"regex-syntax?/unicode-case\"],\"unicode-gencat\":[\"regex-syntax?/unicode-gencat\"],\"unicode-perl\":[\"regex-syntax?/unicode-perl\"],\"unicode-script\":[\"regex-syntax?/unicode-script\"],\"unicode-segment\":[\"regex-syntax?/unicode-segment\"],\"unicode-word-boundary\":[]}}", + "regex-filtered_0.2.1": "{\"dependencies\":[{\"name\":\"aho-corasick\",\"req\":\"^1.1.3\"},{\"features\":[\"derive\"],\"kind\":\"dev\",\"name\":\"clap\",\"req\":\"^4.5.23\"},{\"kind\":\"dev\",\"name\":\"criterion\",\"req\":\"^0.8.1\"},{\"name\":\"itertools\",\"req\":\"^0.14.0\"},{\"name\":\"regex\",\"req\":\"^1.11.1\"},{\"name\":\"regex-syntax\",\"req\":\"^0.8.5\"}],\"features\":{}}", "regex-syntax_0.8.11": "{\"dependencies\":[{\"features\":[\"derive\"],\"name\":\"arbitrary\",\"optional\":true,\"req\":\"^1.3.0\"}],\"features\":{\"arbitrary\":[\"dep:arbitrary\"],\"default\":[\"std\",\"unicode\"],\"std\":[],\"unicode\":[\"unicode-age\",\"unicode-bool\",\"unicode-case\",\"unicode-gencat\",\"unicode-perl\",\"unicode-script\",\"unicode-segment\"],\"unicode-age\":[],\"unicode-bool\":[],\"unicode-case\":[],\"unicode-gencat\":[],\"unicode-perl\":[],\"unicode-script\":[],\"unicode-segment\":[]}}", "regex_1.13.1": "{\"dependencies\":[{\"default_features\":false,\"name\":\"aho-corasick\",\"optional\":true,\"req\":\"^1.0.0\"},{\"kind\":\"dev\",\"name\":\"anyhow\",\"req\":\"^1.0.69\"},{\"kind\":\"dev\",\"name\":\"doc-comment\",\"req\":\"^0.3\"},{\"default_features\":false,\"features\":[\"atty\",\"humantime\",\"termcolor\"],\"kind\":\"dev\",\"name\":\"env_logger\",\"req\":\"^0.9.3\"},{\"default_features\":false,\"name\":\"memchr\",\"optional\":true,\"req\":\"^2.6.0\"},{\"default_features\":false,\"kind\":\"dev\",\"name\":\"quickcheck\",\"req\":\"^1.0.3\"},{\"default_features\":false,\"features\":[\"alloc\",\"syntax\",\"meta\",\"nfa-pikevm\"],\"name\":\"regex-automata\",\"req\":\"^0.4.16\"},{\"default_features\":false,\"name\":\"regex-syntax\",\"req\":\"^0.8.11\"},{\"kind\":\"dev\",\"name\":\"regex-test\",\"req\":\"^0.1.0\"}],\"features\":{\"default\":[\"std\",\"perf\",\"unicode\",\"regex-syntax/default\"],\"logging\":[\"aho-corasick?/logging\",\"memchr?/logging\",\"regex-automata/logging\"],\"pattern\":[],\"perf\":[\"perf-cache\",\"perf-dfa\",\"perf-onepass\",\"perf-backtrack\",\"perf-inline\",\"perf-literal\"],\"perf-backtrack\":[\"regex-automata/nfa-backtrack\"],\"perf-cache\":[],\"perf-dfa\":[\"regex-automata/hybrid\"],\"perf-dfa-full\":[\"regex-automata/dfa-build\",\"regex-automata/dfa-search\"],\"perf-inline\":[\"regex-automata/perf-inline\"],\"perf-literal\":[\"dep:aho-corasick\",\"dep:memchr\",\"regex-automata/perf-literal\"],\"perf-onepass\":[\"regex-automata/dfa-onepass\"],\"std\":[\"aho-corasick?/std\",\"memchr?/std\",\"regex-automata/std\",\"regex-syntax/std\"],\"unicode\":[\"unicode-age\",\"unicode-bool\",\"unicode-case\",\"unicode-gencat\",\"unicode-perl\",\"unicode-script\",\"unicode-segment\",\"regex-automata/unicode\",\"regex-syntax/unicode\"],\"unicode-age\":[\"regex-automata/unicode-age\",\"regex-syntax/unicode-age\"],\"unicode-bool\":[\"regex-automata/unicode-bool\",\"regex-syntax/unicode-bool\"],\"unicode-case\":[\"regex-automata/unicode-case\",\"regex-syntax/unicode-case\"],\"unicode-gencat\":[\"regex-automata/unicode-gencat\",\"regex-syntax/unicode-gencat\"],\"unicode-perl\":[\"regex-automata/unicode-perl\",\"regex-automata/unicode-word-boundary\",\"regex-syntax/unicode-perl\"],\"unicode-script\":[\"regex-automata/unicode-script\",\"regex-syntax/unicode-script\"],\"unicode-segment\":[\"regex-automata/unicode-segment\",\"regex-syntax/unicode-segment\"],\"unstable\":[\"pattern\"],\"use_std\":[\"std\"]}}", "rmp-serde_1.3.1": "{\"dependencies\":[{\"name\":\"rmp\",\"req\":\"^0.8.14\"},{\"name\":\"serde\",\"req\":\"^1.0.228\"},{\"features\":[\"derive\"],\"kind\":\"dev\",\"name\":\"serde\",\"req\":\"^1.0.228\"},{\"kind\":\"dev\",\"name\":\"serde_bytes\",\"req\":\"^0.11.19\"}],\"features\":{}}", @@ -2022,36 +2073,44 @@ "saphyr-parser_0.0.11": "{\"dependencies\":[{\"default_features\":false,\"name\":\"arraydeque\",\"req\":\"^0.5.1\"},{\"kind\":\"dev\",\"name\":\"libtest-mimic\",\"req\":\"^0.8.2\"},{\"features\":[\"fancy\"],\"kind\":\"dev\",\"name\":\"miette\",\"req\":\"^7.6.0\"},{\"kind\":\"dev\",\"name\":\"quickcheck\",\"req\":\"^1.1\"},{\"kind\":\"dev\",\"name\":\"rustyline\",\"req\":\"^17.0.2\"},{\"default_features\":false,\"name\":\"thiserror\",\"req\":\"^2.0.17\"}],\"features\":{\"debug_prints\":[]}}", "scopeguard_1.2.0": "{\"dependencies\":[],\"features\":{\"default\":[\"use_std\"],\"use_std\":[]}}", "semver_1.0.28": "{\"dependencies\":[{\"default_features\":false,\"kind\":\"dev\",\"name\":\"criterion\",\"req\":\"^0.8\",\"target\":\"cfg(not(miri))\"},{\"default_features\":false,\"name\":\"serde\",\"optional\":true,\"package\":\"serde_core\",\"req\":\"^1.0.220\"},{\"default_features\":false,\"name\":\"serde\",\"optional\":true,\"req\":\"^1.0.220\",\"target\":\"cfg(any())\"}],\"features\":{\"default\":[\"std\"],\"serde\":[\"dep:serde\"],\"std\":[]}}", - "serde_1.0.229": "{\"dependencies\":[{\"default_features\":false,\"features\":[\"result\"],\"name\":\"serde_core\",\"req\":\"=1.0.229\"},{\"name\":\"serde_derive\",\"optional\":true,\"req\":\"^1\"}],\"features\":{\"alloc\":[\"serde_core/alloc\"],\"default\":[\"std\"],\"derive\":[\"serde_derive\"],\"rc\":[\"serde_core/rc\"],\"std\":[\"serde_core/std\"],\"unstable\":[\"serde_core/unstable\"]}}", - "serde_core_1.0.229": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"serde\",\"req\":\"^1\"},{\"name\":\"serde_derive\",\"req\":\"=1.0.229\",\"target\":\"cfg(any())\"},{\"kind\":\"dev\",\"name\":\"serde_derive\",\"req\":\"^1\"}],\"features\":{\"alloc\":[],\"default\":[\"std\",\"result\"],\"rc\":[],\"result\":[],\"std\":[],\"unstable\":[]}}", - "serde_derive_1.0.229": "{\"dependencies\":[{\"default_features\":false,\"features\":[\"proc-macro\"],\"name\":\"proc-macro2\",\"req\":\"^1.0.74\"},{\"default_features\":false,\"features\":[\"proc-macro\"],\"name\":\"quote\",\"req\":\"^1.0.35\"},{\"kind\":\"dev\",\"name\":\"serde\",\"req\":\"^1\"},{\"default_features\":false,\"features\":[\"clone-impls\",\"derive\",\"parsing\",\"printing\",\"proc-macro\"],\"name\":\"syn\",\"req\":\"^3\"}],\"features\":{\"default\":[],\"deserialize_in_place\":[]}}", - "serde_json_1.0.151": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"automod\",\"req\":\"^1.0.11\"},{\"name\":\"indexmap\",\"optional\":true,\"req\":\"^2.2.3\"},{\"kind\":\"dev\",\"name\":\"indoc\",\"req\":\"^2.0.2\"},{\"name\":\"itoa\",\"req\":\"^1.0\"},{\"default_features\":false,\"name\":\"memchr\",\"req\":\"^2\"},{\"kind\":\"dev\",\"name\":\"ref-cast\",\"req\":\"^1.0.18\"},{\"kind\":\"dev\",\"name\":\"rustversion\",\"req\":\"^1.0.13\"},{\"default_features\":false,\"name\":\"serde\",\"req\":\"^1.0.220\",\"target\":\"cfg(any())\"},{\"features\":[\"derive\"],\"kind\":\"dev\",\"name\":\"serde\",\"req\":\"^1.0.194\"},{\"kind\":\"dev\",\"name\":\"serde_bytes\",\"req\":\"^0.11.10\"},{\"default_features\":false,\"name\":\"serde_core\",\"req\":\"^1.0.220\"},{\"kind\":\"dev\",\"name\":\"serde_derive\",\"req\":\"^1.0.166\"},{\"kind\":\"dev\",\"name\":\"serde_stacker\",\"req\":\"^0.1.8\"},{\"features\":[\"diff\"],\"kind\":\"dev\",\"name\":\"trybuild\",\"req\":\"^1.0.108\"},{\"name\":\"zmij\",\"req\":\"^1.0\"}],\"features\":{\"alloc\":[\"serde_core/alloc\"],\"arbitrary_precision\":[],\"default\":[\"std\"],\"float_roundtrip\":[],\"preserve_order\":[\"indexmap\",\"std\"],\"raw_value\":[],\"std\":[\"memchr/std\",\"serde_core/std\"],\"unbounded_depth\":[]}}", + "serde_1.0.228": "{\"dependencies\":[{\"default_features\":false,\"features\":[\"result\"],\"name\":\"serde_core\",\"req\":\"=1.0.228\"},{\"name\":\"serde_derive\",\"optional\":true,\"req\":\"^1\"}],\"features\":{\"alloc\":[\"serde_core/alloc\"],\"default\":[\"std\"],\"derive\":[\"serde_derive\"],\"rc\":[\"serde_core/rc\"],\"std\":[\"serde_core/std\"],\"unstable\":[\"serde_core/unstable\"]}}", + "serde_core_1.0.228": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"serde\",\"req\":\"^1\"},{\"name\":\"serde_derive\",\"req\":\"=1.0.228\",\"target\":\"cfg(any())\"},{\"kind\":\"dev\",\"name\":\"serde_derive\",\"req\":\"^1\"}],\"features\":{\"alloc\":[],\"default\":[\"std\",\"result\"],\"rc\":[],\"result\":[],\"std\":[],\"unstable\":[]}}", + "serde_derive_1.0.228": "{\"dependencies\":[{\"default_features\":false,\"features\":[\"proc-macro\"],\"name\":\"proc-macro2\",\"req\":\"^1.0.74\"},{\"default_features\":false,\"features\":[\"proc-macro\"],\"name\":\"quote\",\"req\":\"^1.0.35\"},{\"kind\":\"dev\",\"name\":\"serde\",\"req\":\"^1\"},{\"default_features\":false,\"features\":[\"clone-impls\",\"derive\",\"parsing\",\"printing\",\"proc-macro\"],\"name\":\"syn\",\"req\":\"^2.0.81\"}],\"features\":{\"default\":[],\"deserialize_in_place\":[]}}", + "serde_json_1.0.150": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"automod\",\"req\":\"^1.0.11\"},{\"name\":\"indexmap\",\"optional\":true,\"req\":\"^2.2.3\"},{\"kind\":\"dev\",\"name\":\"indoc\",\"req\":\"^2.0.2\"},{\"name\":\"itoa\",\"req\":\"^1.0\"},{\"default_features\":false,\"name\":\"memchr\",\"req\":\"^2\"},{\"kind\":\"dev\",\"name\":\"ref-cast\",\"req\":\"^1.0.18\"},{\"kind\":\"dev\",\"name\":\"rustversion\",\"req\":\"^1.0.13\"},{\"default_features\":false,\"name\":\"serde\",\"req\":\"^1.0.220\",\"target\":\"cfg(any())\"},{\"features\":[\"derive\"],\"kind\":\"dev\",\"name\":\"serde\",\"req\":\"^1.0.194\"},{\"kind\":\"dev\",\"name\":\"serde_bytes\",\"req\":\"^0.11.10\"},{\"default_features\":false,\"name\":\"serde_core\",\"req\":\"^1.0.220\"},{\"kind\":\"dev\",\"name\":\"serde_derive\",\"req\":\"^1.0.166\"},{\"kind\":\"dev\",\"name\":\"serde_stacker\",\"req\":\"^0.1.8\"},{\"features\":[\"diff\"],\"kind\":\"dev\",\"name\":\"trybuild\",\"req\":\"^1.0.108\"},{\"name\":\"zmij\",\"req\":\"^1.0\"}],\"features\":{\"alloc\":[\"serde_core/alloc\"],\"arbitrary_precision\":[],\"default\":[\"std\"],\"float_roundtrip\":[],\"preserve_order\":[\"indexmap\",\"std\"],\"raw_value\":[],\"std\":[\"memchr/std\",\"serde_core/std\"],\"unbounded_depth\":[]}}", "serde_yaml_0.9.34+deprecated": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"anyhow\",\"req\":\"^1.0.79\"},{\"name\":\"indexmap\",\"req\":\"^2.2.1\"},{\"kind\":\"dev\",\"name\":\"indoc\",\"req\":\"^2.0\"},{\"name\":\"itoa\",\"req\":\"^1.0\"},{\"name\":\"ryu\",\"req\":\"^1.0\"},{\"name\":\"serde\",\"req\":\"^1.0.195\"},{\"kind\":\"dev\",\"name\":\"serde_derive\",\"req\":\"^1.0.195\"},{\"name\":\"unsafe-libyaml\",\"req\":\"^0.2.11\"}],\"features\":{}}", + "serde_yaml_ng_0.10.0": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"anyhow\",\"req\":\"^1.0.79\"},{\"name\":\"indexmap\",\"req\":\"^2.2.1\"},{\"kind\":\"dev\",\"name\":\"indoc\",\"req\":\"^2.0\"},{\"name\":\"itoa\",\"req\":\"^1.0\"},{\"name\":\"ryu\",\"req\":\"^1.0\"},{\"name\":\"serde\",\"req\":\"^1.0.195\"},{\"kind\":\"dev\",\"name\":\"serde_derive\",\"req\":\"^1.0.195\"},{\"name\":\"unsafe-libyaml\",\"req\":\"^0.2.11\"}],\"features\":{}}", + "sha2_0.10.9": "{\"dependencies\":[{\"name\":\"cfg-if\",\"req\":\"^1.0\"},{\"name\":\"cpufeatures\",\"req\":\"^0.2\",\"target\":\"cfg(any(target_arch = \\\"aarch64\\\", target_arch = \\\"x86_64\\\", target_arch = \\\"x86\\\"))\"},{\"name\":\"digest\",\"req\":\"^0.10.7\"},{\"features\":[\"dev\"],\"kind\":\"dev\",\"name\":\"digest\",\"req\":\"^0.10.7\"},{\"kind\":\"dev\",\"name\":\"hex-literal\",\"req\":\"^0.2.2\"},{\"name\":\"sha2-asm\",\"optional\":true,\"req\":\"^0.6.1\",\"target\":\"cfg(any(target_arch = \\\"aarch64\\\", target_arch = \\\"x86_64\\\", target_arch = \\\"x86\\\"))\"}],\"features\":{\"asm\":[\"sha2-asm\"],\"asm-aarch64\":[\"asm\"],\"compress\":[],\"default\":[\"std\"],\"force-soft\":[],\"force-soft-compact\":[],\"loongarch64_asm\":[],\"oid\":[\"digest/oid\"],\"std\":[\"digest/std\"]}}", + "sha3_0.10.9": "{\"dependencies\":[{\"name\":\"digest\",\"req\":\"^0.10.7\"},{\"features\":[\"dev\"],\"kind\":\"dev\",\"name\":\"digest\",\"req\":\"^0.10.7\"},{\"kind\":\"dev\",\"name\":\"hex-literal\",\"req\":\"^0.2.2\"},{\"name\":\"keccak\",\"req\":\"^0.1.4\"},{\"default_features\":false,\"name\":\"zeroize\",\"optional\":true,\"req\":\"^1.6.0\"}],\"features\":{\"asm\":[\"keccak/asm\"],\"default\":[\"std\"],\"oid\":[\"digest/oid\"],\"reset\":[],\"std\":[\"digest/std\"]}}", "shlex_1.3.0": "{\"dependencies\":[],\"features\":{\"default\":[\"std\"],\"std\":[]}}", "signal-hook-registry_1.4.8": "{\"dependencies\":[{\"name\":\"errno\",\"req\":\">=0.2, <0.4\"},{\"name\":\"libc\",\"req\":\"^0.2\"},{\"kind\":\"dev\",\"name\":\"signal-hook\",\"req\":\"~0.3\"}],\"features\":{}}", "simd-adler32_0.3.9": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"adler\",\"req\":\"^1.0.2\"},{\"kind\":\"dev\",\"name\":\"adler32\",\"req\":\"^1.2.0\"},{\"kind\":\"dev\",\"name\":\"criterion\",\"req\":\"^0.3\"},{\"features\":[\"small_rng\"],\"kind\":\"dev\",\"name\":\"rand\",\"req\":\"^0.8\"}],\"features\":{\"const-generics\":[],\"default\":[\"std\",\"const-generics\"],\"nightly\":[],\"std\":[]}}", + "simdutf8_0.1.5": "{\"dependencies\":[],\"features\":{\"aarch64_neon\":[],\"aarch64_neon_prefetch\":[],\"default\":[\"std\"],\"hints\":[],\"public_imp\":[],\"std\":[]}}", "siphasher_1.0.2": "{\"dependencies\":[{\"features\":[\"derive\"],\"name\":\"serde\",\"optional\":true,\"req\":\"^1.0\"},{\"name\":\"serde_json\",\"optional\":true,\"req\":\"^1.0\"}],\"features\":{\"default\":[\"std\"],\"serde_no_std\":[\"serde/alloc\"],\"serde_std\":[\"std\",\"serde/std\"],\"std\":[]}}", "slab_0.4.12": "{\"dependencies\":[{\"default_features\":false,\"features\":[\"alloc\"],\"name\":\"serde\",\"optional\":true,\"req\":\"^1.0.95\"},{\"features\":[\"derive\"],\"kind\":\"dev\",\"name\":\"serde\",\"req\":\"^1\"},{\"kind\":\"dev\",\"name\":\"serde_test\",\"req\":\"^1\"}],\"features\":{\"default\":[\"std\"],\"std\":[]}}", "smallvec_1.15.1": "{\"dependencies\":[{\"name\":\"arbitrary\",\"optional\":true,\"req\":\"^1\"},{\"default_features\":false,\"name\":\"bincode\",\"optional\":true,\"req\":\"^2\"},{\"kind\":\"dev\",\"name\":\"bincode1\",\"package\":\"bincode\",\"req\":\"^1.0.1\"},{\"kind\":\"dev\",\"name\":\"debugger_test\",\"req\":\"^0.1.0\"},{\"kind\":\"dev\",\"name\":\"debugger_test_parser\",\"req\":\"^0.1.0\"},{\"default_features\":false,\"name\":\"malloc_size_of\",\"optional\":true,\"req\":\"^0.1\"},{\"default_features\":false,\"name\":\"serde\",\"optional\":true,\"req\":\"^1\"},{\"default_features\":false,\"name\":\"unty\",\"optional\":true,\"req\":\"^0.0.4\"}],\"features\":{\"const_generics\":[],\"const_new\":[\"const_generics\"],\"debugger_visualizer\":[],\"drain_filter\":[],\"drain_keep_rest\":[\"drain_filter\"],\"impl_bincode\":[\"bincode\",\"unty\"],\"may_dangle\":[],\"specialization\":[],\"union\":[],\"write\":[]}}", + "snafu-derive_0.8.9": "{\"dependencies\":[{\"default_features\":false,\"name\":\"heck\",\"req\":\">=0.4, <0.6\"},{\"name\":\"proc-macro2\",\"req\":\"^1.0.52\"},{\"name\":\"quote\",\"req\":\"^1.0.25\"},{\"features\":[\"full\"],\"name\":\"syn\",\"req\":\"^2.0\"}],\"features\":{\"rust_1_61\":[],\"unstable-provider-api\":[]}}", + "snafu_0.8.9": "{\"dependencies\":[{\"name\":\"backtrace\",\"optional\":true,\"req\":\"^0.3.0\"},{\"default_features\":false,\"name\":\"futures-core-crate\",\"optional\":true,\"package\":\"futures-core\",\"req\":\"^0.3.0\"},{\"default_features\":false,\"name\":\"futures-crate\",\"optional\":true,\"package\":\"futures\",\"req\":\"^0.3.11\"},{\"default_features\":false,\"name\":\"pin-project\",\"optional\":true,\"req\":\"^1.0.2\"},{\"name\":\"snafu-derive\",\"req\":\"^0.8.9\"}],\"features\":{\"alloc\":[],\"backtraces-impl-backtrace-crate\":[\"backtrace\"],\"default\":[\"std\",\"rust_1_65\"],\"futures\":[\"futures-core-crate\",\"pin-project\"],\"guide\":[],\"internal-dev-dependencies\":[\"futures-crate\"],\"rust_1_61\":[\"snafu-derive/rust_1_61\"],\"rust_1_65\":[\"rust_1_61\"],\"rust_1_81\":[\"rust_1_65\"],\"std\":[\"alloc\"],\"unstable-core-error\":[],\"unstable-provider-api\":[\"snafu-derive/unstable-provider-api\"],\"unstable-try-trait\":[]}}", "socket2_0.6.3": "{\"dependencies\":[{\"name\":\"libc\",\"req\":\"^0.2.172\",\"target\":\"cfg(any(unix, target_os = \\\"wasi\\\"))\"},{\"features\":[\"Win32_Foundation\",\"Win32_Networking_WinSock\",\"Win32_System_IO\",\"Win32_System_Threading\",\"Win32_System_WindowsProgramming\"],\"name\":\"windows-sys\",\"req\":\">=0.60, <0.62\",\"target\":\"cfg(windows)\"}],\"features\":{\"all\":[]}}", "stable_deref_trait_1.2.1": "{\"dependencies\":[],\"features\":{\"alloc\":[],\"default\":[\"std\"],\"std\":[\"alloc\"]}}", + "string_cache_0.8.9": "{\"dependencies\":[{\"default_features\":false,\"name\":\"malloc_size_of\",\"optional\":true,\"req\":\"^0.1\"},{\"name\":\"new_debug_unreachable\",\"req\":\"^1.0.2\"},{\"name\":\"parking_lot\",\"req\":\"^0.12\"},{\"name\":\"phf_shared\",\"req\":\"^0.11\"},{\"name\":\"precomputed-hash\",\"req\":\"^0.1\"},{\"name\":\"serde\",\"optional\":true,\"req\":\"^1\"}],\"features\":{\"default\":[\"serde_support\"],\"serde_support\":[\"serde\"]}}", "strsim_0.11.1": "{\"dependencies\":[],\"features\":{}}", "syn_2.0.117": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"anyhow\",\"req\":\"^1\"},{\"kind\":\"dev\",\"name\":\"automod\",\"req\":\"^1\"},{\"kind\":\"dev\",\"name\":\"flate2\",\"req\":\"^1\",\"target\":\"cfg(not(miri))\"},{\"kind\":\"dev\",\"name\":\"insta\",\"req\":\"^1\"},{\"default_features\":false,\"name\":\"proc-macro2\",\"req\":\"^1.0.91\"},{\"default_features\":false,\"name\":\"quote\",\"optional\":true,\"req\":\"^1.0.35\"},{\"kind\":\"dev\",\"name\":\"rayon\",\"req\":\"^1\",\"target\":\"cfg(not(miri))\"},{\"kind\":\"dev\",\"name\":\"ref-cast\",\"req\":\"^1\"},{\"features\":[\"blocking\"],\"kind\":\"dev\",\"name\":\"reqwest\",\"req\":\"^0.13\",\"target\":\"cfg(not(miri))\"},{\"kind\":\"dev\",\"name\":\"rustversion\",\"req\":\"^1\"},{\"kind\":\"dev\",\"name\":\"syn-test-suite\",\"req\":\"^0\"},{\"kind\":\"dev\",\"name\":\"tar\",\"req\":\"^0.4.16\",\"target\":\"cfg(not(miri))\"},{\"kind\":\"dev\",\"name\":\"termcolor\",\"req\":\"^1\"},{\"name\":\"unicode-ident\",\"req\":\"^1\"},{\"kind\":\"dev\",\"name\":\"walkdir\",\"req\":\"^2.3.2\",\"target\":\"cfg(not(miri))\"}],\"features\":{\"clone-impls\":[],\"default\":[\"derive\",\"parsing\",\"printing\",\"clone-impls\",\"proc-macro\"],\"derive\":[],\"extra-traits\":[],\"fold\":[],\"full\":[],\"parsing\":[],\"printing\":[\"dep:quote\"],\"proc-macro\":[\"proc-macro2/proc-macro\",\"quote?/proc-macro\"],\"test\":[\"syn-test-suite/all-features\"],\"visit\":[],\"visit-mut\":[]}}", - "syn_3.0.2": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"anyhow\",\"req\":\"^1\"},{\"kind\":\"dev\",\"name\":\"automod\",\"req\":\"^1\"},{\"kind\":\"dev\",\"name\":\"flate2\",\"req\":\"^1\",\"target\":\"cfg(not(miri))\"},{\"kind\":\"dev\",\"name\":\"insta\",\"req\":\"^1\"},{\"default_features\":false,\"name\":\"proc-macro2\",\"req\":\"^1.0.91\"},{\"default_features\":false,\"name\":\"quote\",\"optional\":true,\"req\":\"^1.0.35\"},{\"kind\":\"dev\",\"name\":\"rayon\",\"req\":\"^1\",\"target\":\"cfg(not(miri))\"},{\"kind\":\"dev\",\"name\":\"ref-cast\",\"req\":\"^1\"},{\"features\":[\"blocking\"],\"kind\":\"dev\",\"name\":\"reqwest\",\"req\":\"^0.13\",\"target\":\"cfg(not(miri))\"},{\"kind\":\"dev\",\"name\":\"rustversion\",\"req\":\"^1\"},{\"kind\":\"dev\",\"name\":\"syn-test-suite\",\"req\":\"^0\"},{\"kind\":\"dev\",\"name\":\"tar\",\"req\":\"^0.4.16\",\"target\":\"cfg(not(miri))\"},{\"kind\":\"dev\",\"name\":\"termcolor\",\"req\":\"^1\"},{\"name\":\"unicode-ident\",\"req\":\"^1\"},{\"kind\":\"dev\",\"name\":\"walkdir\",\"req\":\"^2.3.2\",\"target\":\"cfg(not(miri))\"}],\"features\":{\"clone-impls\":[],\"default\":[\"derive\",\"parsing\",\"printing\",\"clone-impls\",\"proc-macro\"],\"derive\":[],\"extra-traits\":[],\"fold\":[],\"full\":[],\"parsing\":[],\"printing\":[\"dep:quote\"],\"proc-macro\":[\"proc-macro2/proc-macro\",\"quote?/proc-macro\"],\"test\":[\"syn-test-suite/all-features\"],\"visit\":[],\"visit-mut\":[]}}", "sync_wrapper_1.0.2": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"futures\",\"req\":\"^0.3\"},{\"default_features\":false,\"name\":\"futures-core\",\"optional\":true,\"req\":\"^0.3\"},{\"kind\":\"dev\",\"name\":\"pin-project-lite\",\"req\":\"^0.2.7\"}],\"features\":{\"futures\":[\"futures-core\"]}}", "synstructure_0.13.2": "{\"dependencies\":[{\"default_features\":false,\"name\":\"proc-macro2\",\"req\":\"^1.0.60\"},{\"default_features\":false,\"name\":\"quote\",\"req\":\"^1\"},{\"default_features\":false,\"features\":[\"derive\",\"parsing\",\"printing\",\"clone-impls\",\"visit\",\"extra-traits\"],\"name\":\"syn\",\"req\":\"^2\"},{\"kind\":\"dev\",\"name\":\"synstructure_test_traits\",\"req\":\"^0.1\"}],\"features\":{\"default\":[\"proc-macro\"],\"proc-macro\":[\"proc-macro2/proc-macro\",\"syn/proc-macro\",\"quote/proc-macro\"]}}", "temp-env_0.3.6": "{\"dependencies\":[{\"name\":\"futures\",\"optional\":true,\"req\":\"^0.3.21\"},{\"name\":\"parking_lot\",\"req\":\"^0.12.1\"},{\"features\":[\"full\"],\"kind\":\"dev\",\"name\":\"tokio\",\"req\":\"^1.21.1\"}],\"features\":{\"async_closure\":[\"dep:futures\"],\"default\":[]}}", "tempfile_3.27.0": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"doc-comment\",\"req\":\"^0.3\"},{\"name\":\"fastrand\",\"req\":\"^2.1.1\"},{\"default_features\":false,\"name\":\"getrandom\",\"optional\":true,\"req\":\">=0.3.0, <0.5\",\"target\":\"cfg(any(unix, windows, target_os = \\\"wasi\\\"))\"},{\"default_features\":false,\"features\":[\"std\"],\"name\":\"once_cell\",\"req\":\"^1.19.0\"},{\"features\":[\"fs\"],\"name\":\"rustix\",\"req\":\"^1.1.4\",\"target\":\"cfg(any(unix, target_os = \\\"wasi\\\"))\"},{\"features\":[\"Win32_Storage_FileSystem\",\"Win32_Foundation\"],\"name\":\"windows-sys\",\"req\":\">=0.52, <0.62\",\"target\":\"cfg(windows)\"}],\"features\":{\"default\":[\"getrandom\"],\"nightly\":[]}}", - "thiserror-impl_2.0.19": "{\"dependencies\":[{\"name\":\"proc-macro2\",\"req\":\"^1.0.74\"},{\"name\":\"quote\",\"req\":\"^1.0.35\"},{\"name\":\"syn\",\"req\":\"^3\"}],\"features\":{}}", - "thiserror_2.0.19": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"anyhow\",\"req\":\"^1.0.73\"},{\"kind\":\"dev\",\"name\":\"ref-cast\",\"req\":\"^1.0.18\"},{\"kind\":\"dev\",\"name\":\"rustversion\",\"req\":\"^1.0.13\"},{\"name\":\"thiserror-impl\",\"req\":\"=2.0.19\"},{\"features\":[\"diff\"],\"kind\":\"dev\",\"name\":\"trybuild\",\"req\":\"^1.0.108\"}],\"features\":{\"default\":[\"std\"],\"std\":[]}}", + "term_1.2.1": "{\"dependencies\":[{\"features\":[\"Win32_Storage\",\"Win32_Foundation\",\"Win32_System_Console\",\"Win32_Storage_FileSystem\",\"Win32_Security\"],\"name\":\"windows-sys\",\"req\":\">=0.59, <0.62\",\"target\":\"cfg(windows)\"}],\"features\":{\"default\":[]}}", + "termcolor_1.4.1": "{\"dependencies\":[{\"name\":\"winapi-util\",\"req\":\"^0.1.3\",\"target\":\"cfg(windows)\"}],\"features\":{}}", + "thiserror-impl_2.0.18": "{\"dependencies\":[{\"name\":\"proc-macro2\",\"req\":\"^1.0.74\"},{\"name\":\"quote\",\"req\":\"^1.0.35\"},{\"name\":\"syn\",\"req\":\"^2.0.87\"}],\"features\":{}}", + "thiserror_2.0.18": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"anyhow\",\"req\":\"^1.0.73\"},{\"kind\":\"dev\",\"name\":\"ref-cast\",\"req\":\"^1.0.18\"},{\"kind\":\"dev\",\"name\":\"rustversion\",\"req\":\"^1.0.13\"},{\"name\":\"thiserror-impl\",\"req\":\"=2.0.18\"},{\"features\":[\"diff\"],\"kind\":\"dev\",\"name\":\"trybuild\",\"req\":\"^1.0.108\"}],\"features\":{\"default\":[\"std\"],\"std\":[]}}", "time-core_0.1.9": "{\"dependencies\":[],\"features\":{\"large-dates\":[]}}", - "time-macros_0.2.32": "{\"dependencies\":[{\"name\":\"num-conv\",\"req\":\"^0.2.2\"},{\"name\":\"time-core\",\"req\":\"=0.1.9\"}],\"features\":{\"formatting\":[],\"large-dates\":[],\"parsing\":[],\"serde\":[]}}", - "time_0.3.54": "{\"dependencies\":[{\"default_features\":false,\"kind\":\"dev\",\"name\":\"criterion\",\"req\":\"^0.8.1\",\"target\":\"cfg(bench)\"},{\"name\":\"deranged\",\"req\":\"^0.5.8\"},{\"name\":\"js-sys\",\"optional\":true,\"req\":\"^0.3.58\",\"target\":\"cfg(all(target_family = \\\"wasm\\\", not(any(target_os = \\\"emscripten\\\", target_os = \\\"wasi\\\"))))\"},{\"name\":\"libc\",\"optional\":true,\"req\":\"^0.2.98\",\"target\":\"cfg(target_family = \\\"unix\\\")\"},{\"name\":\"num-conv\",\"req\":\"^0.2.2\"},{\"kind\":\"dev\",\"name\":\"num-conv\",\"req\":\"^0.2.2\"},{\"name\":\"num_threads\",\"optional\":true,\"req\":\"^0.1.2\",\"target\":\"cfg(target_family = \\\"unix\\\")\"},{\"default_features\":false,\"name\":\"powerfmt\",\"req\":\"^0.2.0\"},{\"default_features\":false,\"name\":\"quickcheck\",\"optional\":true,\"req\":\"^1.0.3\"},{\"kind\":\"dev\",\"name\":\"quickcheck_macros\",\"req\":\"^1.0.0\"},{\"default_features\":false,\"name\":\"rand010\",\"optional\":true,\"package\":\"rand\",\"req\":\"^0.10.1\"},{\"default_features\":false,\"name\":\"rand08\",\"optional\":true,\"package\":\"rand\",\"req\":\"^0.8.6\"},{\"default_features\":false,\"kind\":\"dev\",\"name\":\"rand08\",\"package\":\"rand\",\"req\":\"^0.8.6\"},{\"default_features\":false,\"name\":\"rand09\",\"optional\":true,\"package\":\"rand\",\"req\":\"^0.9.4\"},{\"default_features\":false,\"features\":[\"small_rng\"],\"kind\":\"dev\",\"name\":\"rand09\",\"package\":\"rand\",\"req\":\"^0.9.4\"},{\"default_features\":false,\"kind\":\"dev\",\"name\":\"rstest\",\"req\":\"^0.26.1\"},{\"kind\":\"dev\",\"name\":\"rstest_reuse\",\"req\":\"^0.7.0\"},{\"default_features\":false,\"features\":[\"derive\",\"alloc\"],\"kind\":\"dev\",\"name\":\"serde\",\"req\":\"^1.0.184\"},{\"default_features\":false,\"name\":\"serde_core\",\"optional\":true,\"req\":\"^1.0.220\"},{\"kind\":\"dev\",\"name\":\"serde_json\",\"req\":\"^1.0.68\"},{\"kind\":\"dev\",\"name\":\"serde_test2\",\"req\":\"^2.0.0\"},{\"name\":\"time-core\",\"req\":\"=0.1.9\"},{\"name\":\"time-macros\",\"optional\":true,\"req\":\"=0.2.32\"},{\"kind\":\"dev\",\"name\":\"time-macros\",\"req\":\"=0.2.32\"},{\"kind\":\"dev\",\"name\":\"trybuild\",\"req\":\"^1.0.102\",\"target\":\"cfg(__ui_tests)\"}],\"features\":{\"alloc\":[\"serde_core?/alloc\"],\"default\":[\"std\"],\"formatting\":[\"std\",\"time-macros?/formatting\"],\"large-dates\":[\"time-core/large-dates\",\"time-macros?/large-dates\"],\"local-offset\":[\"std\",\"dep:libc\",\"dep:num_threads\"],\"macros\":[\"dep:time-macros\"],\"parsing\":[\"time-macros?/parsing\"],\"quickcheck\":[\"dep:quickcheck\",\"alloc\",\"deranged/quickcheck\"],\"rand\":[\"rand08\",\"rand09\",\"rand010\"],\"rand010\":[\"dep:rand010\",\"deranged/rand010\"],\"rand08\":[\"dep:rand08\",\"deranged/rand08\"],\"rand09\":[\"dep:rand09\",\"deranged/rand09\"],\"serde\":[\"dep:serde_core\",\"time-macros?/serde\",\"deranged/serde\"],\"serde-human-readable\":[\"serde\",\"formatting\",\"parsing\"],\"serde-well-known\":[\"serde\",\"formatting\",\"parsing\"],\"std\":[\"alloc\"],\"wasm-bindgen\":[\"dep:js-sys\"]}}", + "time-macros_0.2.31": "{\"dependencies\":[{\"name\":\"num-conv\",\"req\":\"^0.2.2\"},{\"name\":\"time-core\",\"req\":\"=0.1.9\"}],\"features\":{\"formatting\":[],\"large-dates\":[],\"parsing\":[],\"serde\":[]}}", + "time_0.3.53": "{\"dependencies\":[{\"default_features\":false,\"kind\":\"dev\",\"name\":\"criterion\",\"req\":\"^0.8.1\",\"target\":\"cfg(bench)\"},{\"name\":\"deranged\",\"req\":\"^0.5.8\"},{\"name\":\"js-sys\",\"optional\":true,\"req\":\"^0.3.58\",\"target\":\"cfg(all(target_family = \\\"wasm\\\", not(any(target_os = \\\"emscripten\\\", target_os = \\\"wasi\\\"))))\"},{\"name\":\"libc\",\"optional\":true,\"req\":\"^0.2.98\",\"target\":\"cfg(target_family = \\\"unix\\\")\"},{\"name\":\"num-conv\",\"req\":\"^0.2.2\"},{\"kind\":\"dev\",\"name\":\"num-conv\",\"req\":\"^0.2.2\"},{\"name\":\"num_threads\",\"optional\":true,\"req\":\"^0.1.2\",\"target\":\"cfg(target_family = \\\"unix\\\")\"},{\"default_features\":false,\"name\":\"powerfmt\",\"req\":\"^0.2.0\"},{\"default_features\":false,\"name\":\"quickcheck\",\"optional\":true,\"req\":\"^1.0.3\"},{\"kind\":\"dev\",\"name\":\"quickcheck_macros\",\"req\":\"^1.0.0\"},{\"default_features\":false,\"name\":\"rand010\",\"optional\":true,\"package\":\"rand\",\"req\":\"^0.10.1\"},{\"default_features\":false,\"name\":\"rand08\",\"optional\":true,\"package\":\"rand\",\"req\":\"^0.8.6\"},{\"default_features\":false,\"kind\":\"dev\",\"name\":\"rand08\",\"package\":\"rand\",\"req\":\"^0.8.6\"},{\"default_features\":false,\"name\":\"rand09\",\"optional\":true,\"package\":\"rand\",\"req\":\"^0.9.4\"},{\"default_features\":false,\"features\":[\"small_rng\"],\"kind\":\"dev\",\"name\":\"rand09\",\"package\":\"rand\",\"req\":\"^0.9.4\"},{\"default_features\":false,\"kind\":\"dev\",\"name\":\"rstest\",\"req\":\"^0.26.1\"},{\"kind\":\"dev\",\"name\":\"rstest_reuse\",\"req\":\"^0.7.0\"},{\"default_features\":false,\"features\":[\"derive\",\"alloc\"],\"kind\":\"dev\",\"name\":\"serde\",\"req\":\"^1.0.184\"},{\"default_features\":false,\"name\":\"serde_core\",\"optional\":true,\"req\":\"^1.0.220\"},{\"kind\":\"dev\",\"name\":\"serde_json\",\"req\":\"^1.0.68\"},{\"kind\":\"dev\",\"name\":\"serde_test2\",\"req\":\"^2.0.0\"},{\"name\":\"time-core\",\"req\":\"=0.1.9\"},{\"name\":\"time-macros\",\"optional\":true,\"req\":\"=0.2.31\"},{\"kind\":\"dev\",\"name\":\"time-macros\",\"req\":\"=0.2.31\"},{\"kind\":\"dev\",\"name\":\"trybuild\",\"req\":\"^1.0.102\",\"target\":\"cfg(__ui_tests)\"}],\"features\":{\"alloc\":[\"serde_core?/alloc\"],\"default\":[\"std\"],\"formatting\":[\"std\",\"time-macros?/formatting\"],\"large-dates\":[\"time-core/large-dates\",\"time-macros?/large-dates\"],\"local-offset\":[\"std\",\"dep:libc\",\"dep:num_threads\"],\"macros\":[\"dep:time-macros\"],\"parsing\":[\"time-macros?/parsing\"],\"quickcheck\":[\"dep:quickcheck\",\"alloc\",\"deranged/quickcheck\"],\"rand\":[\"rand08\",\"rand09\",\"rand010\"],\"rand010\":[\"dep:rand010\",\"deranged/rand010\"],\"rand08\":[\"dep:rand08\",\"deranged/rand08\"],\"rand09\":[\"dep:rand09\",\"deranged/rand09\"],\"serde\":[\"dep:serde_core\",\"time-macros?/serde\",\"deranged/serde\"],\"serde-human-readable\":[\"serde\",\"formatting\",\"parsing\"],\"serde-well-known\":[\"serde\",\"formatting\",\"parsing\"],\"std\":[\"alloc\"],\"wasm-bindgen\":[\"dep:js-sys\"]}}", "tinystr_0.8.3": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"bincode\",\"req\":\"^1.3.1\"},{\"kind\":\"dev\",\"name\":\"criterion\",\"req\":\"^0.5.0\",\"target\":\"cfg(not(target_arch = \\\"wasm32\\\"))\"},{\"default_features\":false,\"name\":\"databake\",\"optional\":true,\"req\":\"^0.2.0\"},{\"default_features\":false,\"name\":\"displaydoc\",\"req\":\"^0.2.3\"},{\"default_features\":false,\"features\":[\"use-std\"],\"kind\":\"dev\",\"name\":\"postcard\",\"req\":\"^1.0.3\"},{\"features\":[\"small_rng\"],\"kind\":\"dev\",\"name\":\"rand\",\"req\":\"^0.9\"},{\"default_features\":false,\"name\":\"serde_core\",\"optional\":true,\"req\":\"^1.0.220\"},{\"features\":[\"alloc\"],\"kind\":\"dev\",\"name\":\"serde_json\",\"req\":\"^1.0.45\"},{\"default_features\":false,\"name\":\"zerovec\",\"optional\":true,\"req\":\"^0.11.6\"}],\"features\":{\"alloc\":[\"serde_core?/alloc\",\"zerovec?/alloc\"],\"databake\":[\"dep:databake\"],\"default\":[\"alloc\"],\"serde\":[\"dep:serde_core\"],\"std\":[],\"zerovec\":[\"dep:zerovec\"]}}", "tokio-macros_2.7.0": "{\"dependencies\":[{\"name\":\"proc-macro2\",\"req\":\"^1.0.60\"},{\"name\":\"quote\",\"req\":\"^1\"},{\"features\":[\"full\"],\"name\":\"syn\",\"req\":\"^2.0\"},{\"features\":[\"full\",\"test-util\"],\"kind\":\"dev\",\"name\":\"tokio\",\"req\":\"^1.0.0\"}],\"features\":{}}", - "tokio-stream_0.1.19": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"async-stream\",\"req\":\"^0.3\"},{\"default_features\":false,\"kind\":\"dev\",\"name\":\"futures\",\"req\":\"^0.3\"},{\"name\":\"futures-core\",\"req\":\"^0.3.0\"},{\"kind\":\"dev\",\"name\":\"parking_lot\",\"req\":\"^0.12.0\"},{\"name\":\"pin-project-lite\",\"req\":\"^0.2.11\"},{\"features\":[\"sync\"],\"name\":\"tokio\",\"req\":\"^1.38.0\"},{\"features\":[\"full\",\"test-util\"],\"kind\":\"dev\",\"name\":\"tokio\",\"req\":\"^1.38.0\"},{\"kind\":\"dev\",\"name\":\"tokio-test\",\"req\":\"^0.4\"},{\"name\":\"tokio-util\",\"optional\":true,\"req\":\"^0.7.0\"}],\"features\":{\"default\":[\"time\"],\"fs\":[\"tokio/fs\"],\"full\":[\"time\",\"net\",\"io-util\",\"fs\",\"rt\",\"sync\",\"signal\"],\"io-util\":[\"tokio/io-util\"],\"net\":[\"tokio/net\"],\"rt\":[\"tokio/rt\"],\"signal\":[\"tokio/signal\"],\"sync\":[\"tokio/sync\",\"tokio-util\"],\"time\":[\"tokio/time\"]}}", + "tokio-stream_0.1.18": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"async-stream\",\"req\":\"^0.3\"},{\"default_features\":false,\"kind\":\"dev\",\"name\":\"futures\",\"req\":\"^0.3\"},{\"name\":\"futures-core\",\"req\":\"^0.3.0\"},{\"kind\":\"dev\",\"name\":\"parking_lot\",\"req\":\"^0.12.0\"},{\"name\":\"pin-project-lite\",\"req\":\"^0.2.11\"},{\"features\":[\"sync\"],\"name\":\"tokio\",\"req\":\"^1.15.0\"},{\"features\":[\"full\",\"test-util\"],\"kind\":\"dev\",\"name\":\"tokio\",\"req\":\"^1.2.0\"},{\"kind\":\"dev\",\"name\":\"tokio-test\",\"req\":\"^0.4\"},{\"name\":\"tokio-util\",\"optional\":true,\"req\":\"^0.7.0\"}],\"features\":{\"default\":[\"time\"],\"fs\":[\"tokio/fs\"],\"full\":[\"time\",\"net\",\"io-util\",\"fs\",\"sync\",\"signal\"],\"io-util\":[\"tokio/io-util\"],\"net\":[\"tokio/net\"],\"signal\":[\"tokio/signal\"],\"sync\":[\"tokio/sync\",\"tokio-util\"],\"time\":[\"tokio/time\"]}}", "tokio-util_0.7.18": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"async-stream\",\"req\":\"^0.3.0\"},{\"name\":\"bytes\",\"req\":\"^1.5.0\"},{\"kind\":\"dev\",\"name\":\"futures\",\"req\":\"^0.3.0\"},{\"name\":\"futures-core\",\"req\":\"^0.3.0\"},{\"name\":\"futures-io\",\"optional\":true,\"req\":\"^0.3.0\"},{\"name\":\"futures-sink\",\"req\":\"^0.3.0\"},{\"kind\":\"dev\",\"name\":\"futures-test\",\"req\":\"^0.3.5\"},{\"name\":\"futures-util\",\"optional\":true,\"req\":\"^0.3.0\"},{\"default_features\":false,\"name\":\"hashbrown\",\"optional\":true,\"req\":\"^0.15.0\"},{\"features\":[\"futures\",\"checkpoint\"],\"kind\":\"dev\",\"name\":\"loom\",\"req\":\"^0.7\",\"target\":\"cfg(loom)\"},{\"kind\":\"dev\",\"name\":\"parking_lot\",\"req\":\"^0.12.0\"},{\"name\":\"pin-project-lite\",\"req\":\"^0.2.11\"},{\"name\":\"slab\",\"optional\":true,\"req\":\"^0.4.4\"},{\"kind\":\"dev\",\"name\":\"tempfile\",\"req\":\"^3.1.0\"},{\"features\":[\"sync\"],\"name\":\"tokio\",\"req\":\"^1.44.0\"},{\"features\":[\"full\"],\"kind\":\"dev\",\"name\":\"tokio\",\"req\":\"^1.0.0\"},{\"kind\":\"dev\",\"name\":\"tokio-stream\",\"req\":\"^0.1\"},{\"kind\":\"dev\",\"name\":\"tokio-test\",\"req\":\"^0.4.0\"},{\"default_features\":false,\"features\":[\"std\"],\"name\":\"tracing\",\"optional\":true,\"req\":\"^0.1.29\"}],\"features\":{\"__docs_rs\":[\"futures-util\"],\"codec\":[],\"compat\":[\"futures-io\"],\"default\":[],\"full\":[\"codec\",\"compat\",\"io-util\",\"time\",\"net\",\"rt\",\"join-map\"],\"io\":[],\"io-util\":[\"io\",\"tokio/rt\",\"tokio/io-util\"],\"join-map\":[\"rt\",\"hashbrown\"],\"net\":[\"tokio/net\"],\"rt\":[\"tokio/rt\",\"tokio/sync\",\"futures-util\"],\"time\":[\"tokio/time\",\"slab\"]}}", - "tokio_1.53.1": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"async-stream\",\"req\":\"^0.3\"},{\"name\":\"backtrace\",\"optional\":true,\"req\":\"^0.3.58\",\"target\":\"cfg(all(tokio_unstable, target_os = \\\"linux\\\"))\"},{\"kind\":\"dev\",\"name\":\"backtrace\",\"req\":\"^0.3.58\",\"target\":\"cfg(all(tokio_unstable, target_os = \\\"linux\\\"))\"},{\"name\":\"bytes\",\"optional\":true,\"req\":\"^1.2.1\"},{\"features\":[\"async-await\"],\"kind\":\"dev\",\"name\":\"futures\",\"req\":\"^0.3.0\"},{\"kind\":\"dev\",\"name\":\"futures-concurrency\",\"req\":\"^7.6.3\"},{\"kind\":\"dev\",\"name\":\"futures-test\",\"req\":\"^0.3.31\"},{\"default_features\":false,\"name\":\"io-uring\",\"optional\":true,\"req\":\"^0.7.11\",\"target\":\"cfg(all(tokio_unstable, target_os = \\\"linux\\\"))\"},{\"name\":\"libc\",\"optional\":true,\"req\":\"^0.2.168\",\"target\":\"cfg(all(tokio_unstable, target_os = \\\"linux\\\"))\"},{\"name\":\"libc\",\"optional\":true,\"req\":\"^0.2.168\",\"target\":\"cfg(target_os = \\\"wasi\\\")\"},{\"name\":\"libc\",\"optional\":true,\"req\":\"^0.2.168\",\"target\":\"cfg(unix)\"},{\"kind\":\"dev\",\"name\":\"libc\",\"req\":\"^0.2.168\",\"target\":\"cfg(unix)\"},{\"features\":[\"futures\",\"checkpoint\"],\"kind\":\"dev\",\"name\":\"loom\",\"req\":\"^0.7\",\"target\":\"cfg(loom)\"},{\"default_features\":false,\"name\":\"mio\",\"optional\":true,\"req\":\"^1.2.0\"},{\"default_features\":false,\"features\":[\"os-poll\",\"os-ext\"],\"name\":\"mio\",\"optional\":true,\"req\":\"^1.2.0\",\"target\":\"cfg(all(tokio_unstable, target_os = \\\"linux\\\"))\"},{\"features\":[\"tokio\"],\"kind\":\"dev\",\"name\":\"mio-aio\",\"req\":\"^2\",\"target\":\"cfg(target_os = \\\"freebsd\\\")\"},{\"kind\":\"dev\",\"name\":\"mockall\",\"req\":\"^0.13.0\"},{\"default_features\":false,\"features\":[\"aio\",\"fs\",\"socket\"],\"kind\":\"dev\",\"name\":\"nix\",\"req\":\"^0.31.0\",\"target\":\"cfg(unix)\"},{\"name\":\"parking_lot\",\"optional\":true,\"req\":\"^0.12.0\"},{\"name\":\"pin-project-lite\",\"req\":\"^0.2.11\"},{\"kind\":\"dev\",\"name\":\"proptest\",\"req\":\"^1\",\"target\":\"cfg(not(target_family = \\\"wasm\\\"))\"},{\"kind\":\"dev\",\"name\":\"rand\",\"req\":\"^0.9\",\"target\":\"cfg(not(all(target_family = \\\"wasm\\\", target_os = \\\"unknown\\\")))\"},{\"name\":\"signal-hook-registry\",\"optional\":true,\"req\":\"^1.1.1\",\"target\":\"cfg(unix)\"},{\"name\":\"slab\",\"optional\":true,\"req\":\"^0.4.9\",\"target\":\"cfg(all(tokio_unstable, target_os = \\\"linux\\\"))\"},{\"features\":[\"all\"],\"name\":\"socket2\",\"optional\":true,\"req\":\"^0.6.3\",\"target\":\"cfg(any(not(target_family = \\\"wasm\\\"), all(target_os = \\\"wasi\\\", not(target_env = \\\"p1\\\"))))\"},{\"kind\":\"dev\",\"name\":\"socket2\",\"req\":\"^0.6.0\",\"target\":\"cfg(not(target_family = \\\"wasm\\\"))\"},{\"kind\":\"dev\",\"name\":\"tempfile\",\"req\":\"^3.1.0\",\"target\":\"cfg(not(target_family = \\\"wasm\\\"))\"},{\"name\":\"tokio-macros\",\"optional\":true,\"req\":\"~2.7.0\"},{\"kind\":\"dev\",\"name\":\"tokio-stream\",\"req\":\"^0.1\"},{\"kind\":\"dev\",\"name\":\"tokio-test\",\"req\":\"^0.4.0\"},{\"features\":[\"rt\"],\"kind\":\"dev\",\"name\":\"tokio-util\",\"req\":\"^0.7\"},{\"default_features\":false,\"features\":[\"std\"],\"name\":\"tracing\",\"optional\":true,\"req\":\"^0.1.29\",\"target\":\"cfg(tokio_unstable)\"},{\"kind\":\"dev\",\"name\":\"tracing-mock\",\"req\":\"=0.1.0-beta.1\",\"target\":\"cfg(all(tokio_unstable, target_has_atomic = \\\"64\\\"))\"},{\"kind\":\"dev\",\"name\":\"wasm-bindgen-test\",\"req\":\"^0.3.0\",\"target\":\"cfg(all(target_family = \\\"wasm\\\", not(target_os = \\\"wasi\\\")))\"},{\"name\":\"windows-sys\",\"optional\":true,\"req\":\"^0.61\",\"target\":\"cfg(windows)\"},{\"features\":[\"Win32_Foundation\",\"Win32_Security_Authorization\"],\"kind\":\"dev\",\"name\":\"windows-sys\",\"req\":\"^0.61\",\"target\":\"cfg(windows)\"}],\"features\":{\"default\":[],\"fs\":[],\"full\":[\"fs\",\"io-util\",\"io-std\",\"macros\",\"net\",\"parking_lot\",\"process\",\"rt\",\"rt-multi-thread\",\"signal\",\"sync\",\"time\"],\"io-std\":[],\"io-uring\":[\"dep:io-uring\",\"libc\",\"mio/os-poll\",\"mio/os-ext\",\"dep:slab\"],\"io-util\":[\"bytes\"],\"macros\":[\"tokio-macros\"],\"net\":[\"libc\",\"mio/os-poll\",\"mio/os-ext\",\"mio/net\",\"socket2\",\"windows-sys/Win32_Foundation\",\"windows-sys/Win32_Security\",\"windows-sys/Win32_Storage_FileSystem\",\"windows-sys/Win32_System_Pipes\",\"windows-sys/Win32_System_SystemServices\"],\"process\":[\"bytes\",\"libc\",\"mio/os-poll\",\"mio/os-ext\",\"mio/net\",\"signal-hook-registry\",\"windows-sys/Win32_Foundation\",\"windows-sys/Win32_System_Threading\",\"windows-sys/Win32_System_WindowsProgramming\"],\"rt\":[],\"rt-multi-thread\":[\"rt\"],\"schedule-latency\":[],\"signal\":[\"libc\",\"mio/os-poll\",\"mio/net\",\"mio/os-ext\",\"signal-hook-registry\",\"windows-sys/Win32_Foundation\",\"windows-sys/Win32_System_Console\"],\"sync\":[],\"taskdump\":[\"dep:backtrace\"],\"test-util\":[\"rt\",\"sync\",\"time\"],\"time\":[]}}", + "tokio_1.53.0": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"async-stream\",\"req\":\"^0.3\"},{\"name\":\"backtrace\",\"optional\":true,\"req\":\"^0.3.58\",\"target\":\"cfg(all(tokio_unstable, target_os = \\\"linux\\\"))\"},{\"kind\":\"dev\",\"name\":\"backtrace\",\"req\":\"^0.3.58\",\"target\":\"cfg(all(tokio_unstable, target_os = \\\"linux\\\"))\"},{\"name\":\"bytes\",\"optional\":true,\"req\":\"^1.2.1\"},{\"features\":[\"async-await\"],\"kind\":\"dev\",\"name\":\"futures\",\"req\":\"^0.3.0\"},{\"kind\":\"dev\",\"name\":\"futures-concurrency\",\"req\":\"^7.6.3\"},{\"kind\":\"dev\",\"name\":\"futures-test\",\"req\":\"^0.3.31\"},{\"default_features\":false,\"name\":\"io-uring\",\"optional\":true,\"req\":\"^0.7.11\",\"target\":\"cfg(all(tokio_unstable, target_os = \\\"linux\\\"))\"},{\"name\":\"libc\",\"optional\":true,\"req\":\"^0.2.168\",\"target\":\"cfg(all(tokio_unstable, target_os = \\\"linux\\\"))\"},{\"name\":\"libc\",\"optional\":true,\"req\":\"^0.2.168\",\"target\":\"cfg(target_os = \\\"wasi\\\")\"},{\"name\":\"libc\",\"optional\":true,\"req\":\"^0.2.168\",\"target\":\"cfg(unix)\"},{\"kind\":\"dev\",\"name\":\"libc\",\"req\":\"^0.2.168\",\"target\":\"cfg(unix)\"},{\"features\":[\"futures\",\"checkpoint\"],\"kind\":\"dev\",\"name\":\"loom\",\"req\":\"^0.7\",\"target\":\"cfg(loom)\"},{\"default_features\":false,\"name\":\"mio\",\"optional\":true,\"req\":\"^1.2.0\"},{\"default_features\":false,\"features\":[\"os-poll\",\"os-ext\"],\"name\":\"mio\",\"optional\":true,\"req\":\"^1.2.0\",\"target\":\"cfg(all(tokio_unstable, target_os = \\\"linux\\\"))\"},{\"features\":[\"tokio\"],\"kind\":\"dev\",\"name\":\"mio-aio\",\"req\":\"^2\",\"target\":\"cfg(target_os = \\\"freebsd\\\")\"},{\"kind\":\"dev\",\"name\":\"mockall\",\"req\":\"^0.13.0\"},{\"default_features\":false,\"features\":[\"aio\",\"fs\",\"socket\"],\"kind\":\"dev\",\"name\":\"nix\",\"req\":\"^0.31.0\",\"target\":\"cfg(unix)\"},{\"name\":\"parking_lot\",\"optional\":true,\"req\":\"^0.12.0\"},{\"name\":\"pin-project-lite\",\"req\":\"^0.2.11\"},{\"kind\":\"dev\",\"name\":\"proptest\",\"req\":\"^1\",\"target\":\"cfg(not(target_family = \\\"wasm\\\"))\"},{\"kind\":\"dev\",\"name\":\"rand\",\"req\":\"^0.9\",\"target\":\"cfg(not(all(target_family = \\\"wasm\\\", target_os = \\\"unknown\\\")))\"},{\"name\":\"signal-hook-registry\",\"optional\":true,\"req\":\"^1.1.1\",\"target\":\"cfg(unix)\"},{\"name\":\"slab\",\"optional\":true,\"req\":\"^0.4.9\",\"target\":\"cfg(all(tokio_unstable, target_os = \\\"linux\\\"))\"},{\"features\":[\"all\"],\"name\":\"socket2\",\"optional\":true,\"req\":\"^0.6.3\",\"target\":\"cfg(any(not(target_family = \\\"wasm\\\"), all(target_os = \\\"wasi\\\", not(target_env = \\\"p1\\\"))))\"},{\"kind\":\"dev\",\"name\":\"socket2\",\"req\":\"^0.6.0\",\"target\":\"cfg(not(target_family = \\\"wasm\\\"))\"},{\"kind\":\"dev\",\"name\":\"tempfile\",\"req\":\"^3.1.0\",\"target\":\"cfg(not(target_family = \\\"wasm\\\"))\"},{\"name\":\"tokio-macros\",\"optional\":true,\"req\":\"~2.7.0\"},{\"kind\":\"dev\",\"name\":\"tokio-stream\",\"req\":\"^0.1\"},{\"kind\":\"dev\",\"name\":\"tokio-test\",\"req\":\"^0.4.0\"},{\"features\":[\"rt\"],\"kind\":\"dev\",\"name\":\"tokio-util\",\"req\":\"^0.7\"},{\"default_features\":false,\"features\":[\"std\"],\"name\":\"tracing\",\"optional\":true,\"req\":\"^0.1.29\",\"target\":\"cfg(tokio_unstable)\"},{\"kind\":\"dev\",\"name\":\"tracing-mock\",\"req\":\"=0.1.0-beta.1\",\"target\":\"cfg(all(tokio_unstable, target_has_atomic = \\\"64\\\"))\"},{\"kind\":\"dev\",\"name\":\"wasm-bindgen-test\",\"req\":\"^0.3.0\",\"target\":\"cfg(all(target_family = \\\"wasm\\\", not(target_os = \\\"wasi\\\")))\"},{\"name\":\"windows-sys\",\"optional\":true,\"req\":\"^0.61\",\"target\":\"cfg(windows)\"},{\"features\":[\"Win32_Foundation\",\"Win32_Security_Authorization\"],\"kind\":\"dev\",\"name\":\"windows-sys\",\"req\":\"^0.61\",\"target\":\"cfg(windows)\"}],\"features\":{\"default\":[],\"fs\":[],\"full\":[\"fs\",\"io-util\",\"io-std\",\"macros\",\"net\",\"parking_lot\",\"process\",\"rt\",\"rt-multi-thread\",\"signal\",\"sync\",\"time\"],\"io-std\":[],\"io-uring\":[\"dep:io-uring\",\"libc\",\"mio/os-poll\",\"mio/os-ext\",\"dep:slab\"],\"io-util\":[\"bytes\"],\"macros\":[\"tokio-macros\"],\"net\":[\"libc\",\"mio/os-poll\",\"mio/os-ext\",\"mio/net\",\"socket2\",\"windows-sys/Win32_Foundation\",\"windows-sys/Win32_Security\",\"windows-sys/Win32_Storage_FileSystem\",\"windows-sys/Win32_System_Pipes\",\"windows-sys/Win32_System_SystemServices\"],\"process\":[\"bytes\",\"libc\",\"mio/os-poll\",\"mio/os-ext\",\"mio/net\",\"signal-hook-registry\",\"windows-sys/Win32_Foundation\",\"windows-sys/Win32_System_Threading\",\"windows-sys/Win32_System_WindowsProgramming\"],\"rt\":[],\"rt-multi-thread\":[\"rt\"],\"schedule-latency\":[],\"signal\":[\"libc\",\"mio/os-poll\",\"mio/net\",\"mio/os-ext\",\"signal-hook-registry\",\"windows-sys/Win32_Foundation\",\"windows-sys/Win32_System_Console\"],\"sync\":[],\"taskdump\":[\"dep:backtrace\"],\"test-util\":[\"rt\",\"sync\",\"time\"],\"time\":[]}}", "tonic-build_0.14.6": "{\"dependencies\":[{\"name\":\"prettyplease\",\"req\":\"^0.2\"},{\"name\":\"proc-macro2\",\"req\":\"^1.0\"},{\"name\":\"quote\",\"req\":\"^1.0\"},{\"name\":\"syn\",\"req\":\"^2.0\"}],\"features\":{\"default\":[\"transport\"],\"transport\":[]}}", "tonic-prost-build_0.14.6": "{\"dependencies\":[{\"name\":\"prettyplease\",\"req\":\"^0.2\"},{\"name\":\"proc-macro2\",\"req\":\"^1.0\"},{\"name\":\"prost-build\",\"req\":\"^0.14\"},{\"name\":\"prost-types\",\"req\":\"^0.14\"},{\"name\":\"quote\",\"req\":\"^1.0\"},{\"name\":\"syn\",\"req\":\"^2.0\"},{\"name\":\"tempfile\",\"req\":\"^3.0\"},{\"default_features\":false,\"kind\":\"dev\",\"name\":\"tonic\",\"req\":\"^0.14.6\"},{\"default_features\":false,\"name\":\"tonic-build\",\"req\":\"^0.14.6\"}],\"features\":{\"cleanup-markdown\":[\"prost-build/cleanup-markdown\"],\"default\":[\"transport\",\"cleanup-markdown\"],\"transport\":[\"tonic-build/transport\"]}}", "tonic-prost_0.14.6": "{\"dependencies\":[{\"name\":\"bytes\",\"req\":\"^1\"},{\"kind\":\"dev\",\"name\":\"http-body\",\"req\":\"^1\"},{\"kind\":\"dev\",\"name\":\"http-body-util\",\"req\":\"^0.1\"},{\"name\":\"prost\",\"req\":\"^0.14\"},{\"features\":[\"macros\",\"rt-multi-thread\"],\"kind\":\"dev\",\"name\":\"tokio\",\"req\":\"^1\"},{\"kind\":\"dev\",\"name\":\"tokio-stream\",\"req\":\"^0.1\"},{\"default_features\":false,\"name\":\"tonic\",\"req\":\"^0.14.6\"}],\"features\":{}}", @@ -2064,9 +2123,15 @@ "tracing-core_0.1.36": "{\"dependencies\":[{\"name\":\"once_cell\",\"optional\":true,\"req\":\"^1.13.0\"},{\"default_features\":false,\"name\":\"valuable\",\"optional\":true,\"req\":\"^0.1.0\",\"target\":\"cfg(tracing_unstable)\"}],\"features\":{\"default\":[\"std\",\"valuable?/std\"],\"std\":[\"once_cell\"]}}", "tracing_0.1.44": "{\"dependencies\":[{\"default_features\":false,\"kind\":\"dev\",\"name\":\"criterion\",\"req\":\"^0.3.6\"},{\"default_features\":false,\"kind\":\"dev\",\"name\":\"futures\",\"req\":\"^0.3.21\"},{\"name\":\"log\",\"optional\":true,\"req\":\"^0.4.17\"},{\"kind\":\"dev\",\"name\":\"log\",\"req\":\"^0.4.17\"},{\"name\":\"pin-project-lite\",\"req\":\"^0.2.9\"},{\"name\":\"tracing-attributes\",\"optional\":true,\"req\":\"^0.1.31\"},{\"default_features\":false,\"name\":\"tracing-core\",\"req\":\"^0.1.36\"},{\"kind\":\"dev\",\"name\":\"wasm-bindgen-test\",\"req\":\"^0.3.38\",\"target\":\"cfg(target_arch = \\\"wasm32\\\")\"}],\"features\":{\"async-await\":[],\"attributes\":[\"tracing-attributes\"],\"default\":[\"std\",\"attributes\"],\"log-always\":[\"log\"],\"max_level_debug\":[],\"max_level_error\":[],\"max_level_info\":[],\"max_level_off\":[],\"max_level_trace\":[],\"max_level_warn\":[],\"release_max_level_debug\":[],\"release_max_level_error\":[],\"release_max_level_info\":[],\"release_max_level_off\":[],\"release_max_level_trace\":[],\"release_max_level_warn\":[],\"std\":[\"tracing-core/std\"],\"valuable\":[\"tracing-core/valuable\"]}}", "try-lock_0.2.5": "{\"dependencies\":[],\"features\":{}}", + "twox-hash_2.1.2": "{\"dependencies\":[{\"default_features\":false,\"features\":[\"thread_rng\"],\"name\":\"rand\",\"optional\":true,\"req\":\"^0.9.0\"},{\"default_features\":false,\"features\":[\"derive\"],\"name\":\"serde\",\"optional\":true,\"req\":\"^1.0.0\"},{\"kind\":\"dev\",\"name\":\"serde_json\",\"req\":\"^1.0.117\"}],\"features\":{\"alloc\":[],\"default\":[\"random\",\"xxhash32\",\"xxhash64\",\"xxhash3_64\",\"xxhash3_128\",\"std\"],\"random\":[\"dep:rand\"],\"serialize\":[\"dep:serde\"],\"std\":[\"alloc\"],\"xxhash32\":[],\"xxhash3_128\":[],\"xxhash3_64\":[],\"xxhash64\":[]}}", "typed-path_0.12.3": "{\"dependencies\":[],\"features\":{\"default\":[\"std\"],\"std\":[]}}", + "typenum_1.20.1": "{\"dependencies\":[{\"default_features\":false,\"name\":\"scale-info\",\"optional\":true,\"req\":\"^1.0\"}],\"features\":{\"const-generics\":[],\"i128\":[],\"scale_info\":[\"scale-info/derive\"],\"strict\":[]}}", + "ua-parser_0.2.2": "{\"dependencies\":[{\"features\":[\"derive\"],\"kind\":\"dev\",\"name\":\"clap\",\"req\":\"^4.5.23\"},{\"name\":\"regex\",\"req\":\"^1.11.1\"},{\"name\":\"regex-filtered\",\"req\":\"^0.2.1\"},{\"features\":[\"derive\"],\"name\":\"serde\",\"req\":\"^1.0.215\"},{\"kind\":\"dev\",\"name\":\"serde_json\",\"req\":\"^1.0.133\"},{\"kind\":\"dev\",\"name\":\"serde_yaml\",\"req\":\"^0.9.34\"}],\"features\":{}}", "unicase_2.9.0": "{\"dependencies\":[],\"features\":{\"nightly\":[]}}", + "unicode-general-category_1.1.0": "{\"dependencies\":[],\"features\":{}}", "unicode-ident_1.0.24": "{\"dependencies\":[{\"default_features\":false,\"kind\":\"dev\",\"name\":\"criterion\",\"req\":\"^0.8\",\"target\":\"cfg(not(miri))\"},{\"kind\":\"dev\",\"name\":\"fst\",\"req\":\"^0.4\"},{\"kind\":\"dev\",\"name\":\"rand\",\"req\":\"^0.10\"},{\"kind\":\"dev\",\"name\":\"roaring\",\"req\":\"^0.11\"},{\"default_features\":false,\"kind\":\"dev\",\"name\":\"ucd-trie\",\"req\":\"^0.1\"},{\"kind\":\"dev\",\"name\":\"unicode-xid\",\"req\":\"^0.2.6\"}],\"features\":{}}", + "unicode-segmentation_1.13.3": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"criterion\",\"req\":\"^0.5\"},{\"kind\":\"dev\",\"name\":\"proptest\",\"req\":\"^1.7.0\"},{\"kind\":\"dev\",\"name\":\"quickcheck\",\"req\":\"^1.0\"}],\"features\":{\"no_std\":[]}}", + "unicode-width_0.2.2": "{\"dependencies\":[{\"name\":\"core\",\"optional\":true,\"package\":\"rustc-std-workspace-core\",\"req\":\"^1.0\"},{\"name\":\"std\",\"optional\":true,\"package\":\"rustc-std-workspace-std\",\"req\":\"^1.0\"}],\"features\":{\"cjk\":[],\"default\":[\"cjk\"],\"no_std\":[],\"rustc-dep-of-std\":[\"std\",\"core\"]}}", "unicode-xid_0.2.6": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"criterion\",\"req\":\"^0.3\"}],\"features\":{\"bench\":[],\"default\":[],\"no_std\":[]}}", "unsafe-libyaml_0.2.11": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"pretty_assertions\",\"req\":\"^1.0\"}],\"features\":{}}", "ureq-proto_0.6.0": "{\"dependencies\":[{\"default_features\":false,\"features\":[\"std\"],\"name\":\"base64\",\"req\":\"^0.22.1\"},{\"default_features\":false,\"features\":[\"std\"],\"name\":\"http\",\"req\":\"^1.1.0\"},{\"default_features\":false,\"name\":\"httparse\",\"req\":\"^1.8.0\"},{\"name\":\"log\",\"req\":\"^0.4.22\"}],\"features\":{\"client\":[],\"default\":[\"client\",\"server\"],\"server\":[]}}", @@ -2075,18 +2140,21 @@ "utf8-zero_0.8.1": "{\"dependencies\":[],\"features\":{\"default\":[\"std\"],\"std\":[]}}", "utf8_iter_1.0.4": "{\"dependencies\":[],\"features\":{}}", "utf8parse_0.2.2": "{\"dependencies\":[],\"features\":{\"default\":[],\"nightly\":[]}}", + "uuid-simd_0.8.0": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"hex-simd\",\"req\":\"^0.8.0\"},{\"name\":\"outref\",\"req\":\"^0.5.0\"},{\"name\":\"uuid\",\"optional\":true,\"req\":\"^1.2.2\"},{\"name\":\"vsimd\",\"req\":\"^0.8.0\"},{\"kind\":\"dev\",\"name\":\"wasm-bindgen-test\",\"req\":\"^0.3.33\",\"target\":\"cfg(target_arch = \\\"wasm32\\\")\"}],\"features\":{\"alloc\":[\"vsimd/alloc\"],\"default\":[\"std\",\"detect\",\"uuid\"],\"detect\":[\"vsimd/detect\"],\"std\":[\"alloc\",\"vsimd/std\"],\"unstable\":[\"vsimd/unstable\",\"hex-simd/unstable\"]}}", "uuid_1.24.0": "{\"dependencies\":[{\"name\":\"arbitrary\",\"optional\":true,\"req\":\"^1.1.3\"},{\"default_features\":false,\"name\":\"atomic\",\"optional\":true,\"req\":\"^0.6\"},{\"default_features\":false,\"name\":\"borsh\",\"optional\":true,\"req\":\"^1\"},{\"default_features\":false,\"name\":\"borsh-derive\",\"optional\":true,\"req\":\"^1\"},{\"features\":[\"derive\"],\"name\":\"bytemuck\",\"optional\":true,\"req\":\"^1.22\"},{\"name\":\"getrandom\",\"optional\":true,\"req\":\"^0.4\",\"target\":\"cfg(not(all(target_arch = \\\"wasm32\\\", any(target_os = \\\"unknown\\\", target_os = \\\"none\\\"))))\"},{\"kind\":\"dev\",\"name\":\"gungraun\",\"req\":\"=0.19.2\",\"target\":\"cfg(not(target_arch = \\\"wasm32\\\"))\"},{\"default_features\":false,\"name\":\"js-sys\",\"optional\":true,\"req\":\"^0.3\",\"target\":\"cfg(all(target_arch = \\\"wasm32\\\", any(target_os = \\\"unknown\\\", target_os = \\\"none\\\"), target_feature = \\\"atomics\\\"))\"},{\"default_features\":false,\"name\":\"md-5\",\"optional\":true,\"req\":\"^0.10\"},{\"name\":\"rand\",\"optional\":true,\"req\":\"^0.10\",\"target\":\"cfg(not(all(target_arch = \\\"wasm32\\\", any(target_os = \\\"unknown\\\", target_os = \\\"none\\\"))))\"},{\"kind\":\"dev\",\"name\":\"rustversion\",\"req\":\"^1\"},{\"kind\":\"dev\",\"name\":\"serde\",\"req\":\"^1.0.221\"},{\"default_features\":false,\"name\":\"serde_core\",\"optional\":true,\"req\":\"^1.0.221\"},{\"kind\":\"dev\",\"name\":\"serde_derive\",\"req\":\"^1.0.221\"},{\"kind\":\"dev\",\"name\":\"serde_json\",\"req\":\"^1.0\"},{\"kind\":\"dev\",\"name\":\"serde_test\",\"req\":\"^1.0.56\"},{\"default_features\":false,\"name\":\"sha1_smol\",\"optional\":true,\"req\":\"^1\"},{\"name\":\"slog\",\"optional\":true,\"req\":\"^2\"},{\"kind\":\"dev\",\"name\":\"trybuild\",\"req\":\"^1.0.52\"},{\"name\":\"uuid-rng-internal-lib\",\"optional\":true,\"package\":\"uuid-rng-internal\",\"req\":\"^1.24.0\",\"target\":\"cfg(all(target_arch = \\\"wasm32\\\", any(target_os = \\\"unknown\\\", target_os = \\\"none\\\")))\"},{\"default_features\":false,\"name\":\"wasm-bindgen\",\"optional\":true,\"req\":\"^0.2\",\"target\":\"cfg(all(target_arch = \\\"wasm32\\\", any(target_os = \\\"unknown\\\", target_os = \\\"none\\\")))\"},{\"kind\":\"dev\",\"name\":\"wasm-bindgen\",\"req\":\"^0.2\",\"target\":\"cfg(all(target_arch = \\\"wasm32\\\", any(target_os = \\\"unknown\\\", target_os = \\\"none\\\")))\"},{\"kind\":\"dev\",\"name\":\"wasm-bindgen-test\",\"req\":\"^0.3\",\"target\":\"cfg(all(target_arch = \\\"wasm32\\\", any(target_os = \\\"unknown\\\", target_os = \\\"none\\\")))\"},{\"features\":[\"derive\"],\"name\":\"zerocopy\",\"optional\":true,\"req\":\"^0.8\"}],\"features\":{\"atomic\":[\"dep:atomic\"],\"borsh\":[\"dep:borsh\",\"dep:borsh-derive\"],\"default\":[\"std\"],\"fast-rng\":[\"rng\",\"dep:rand\"],\"js\":[\"dep:wasm-bindgen\",\"dep:js-sys\"],\"macro-diagnostics\":[],\"md5\":[\"dep:md-5\"],\"rng\":[\"dep:getrandom\"],\"rng-getrandom\":[\"rng\",\"dep:getrandom\",\"uuid-rng-internal-lib\",\"uuid-rng-internal-lib/getrandom\"],\"rng-rand\":[\"rng\",\"dep:rand\",\"uuid-rng-internal-lib\",\"uuid-rng-internal-lib/rand\"],\"serde\":[\"dep:serde_core\"],\"sha1\":[\"dep:sha1_smol\"],\"std\":[\"wasm-bindgen?/std\",\"js-sys?/std\"],\"v1\":[\"atomic\"],\"v3\":[\"md5\"],\"v4\":[\"rng\"],\"v5\":[\"sha1\"],\"v6\":[\"atomic\"],\"v7\":[\"rng\"],\"v8\":[]}}", "uzers_0.12.2": "{\"dependencies\":[{\"default_features\":false,\"kind\":\"dev\",\"name\":\"env_logger\",\"req\":\"^0.11\"},{\"name\":\"libc\",\"req\":\"^0.2\"},{\"default_features\":false,\"name\":\"log\",\"optional\":true,\"req\":\"^0.4\"},{\"kind\":\"dev\",\"name\":\"serial_test\",\"req\":\"^3.1\"}],\"features\":{\"cache\":[],\"default\":[\"cache\",\"mock\",\"logging\"],\"logging\":[\"log\"],\"mock\":[],\"test-integration\":[]}}", "version_check_0.9.5": "{\"dependencies\":[],\"features\":{}}", + "vrl_0.33.1": "{\"dependencies\":[{\"name\":\"aes\",\"optional\":true,\"req\":\"^0.8\"},{\"name\":\"aes-siv\",\"optional\":true,\"req\":\"^0.7.0\"},{\"kind\":\"dev\",\"name\":\"anyhow\",\"req\":\"^1\"},{\"features\":[\"derive\"],\"name\":\"arbitrary\",\"optional\":true,\"req\":\"^1\"},{\"name\":\"base16\",\"optional\":true,\"req\":\"^0.2\"},{\"name\":\"base62\",\"optional\":true,\"req\":\"^2.2.1\"},{\"name\":\"base64-simd\",\"optional\":true,\"req\":\"^0.8\"},{\"default_features\":false,\"name\":\"bytes\",\"optional\":true,\"req\":\"^1\"},{\"features\":[\"alloc\"],\"name\":\"cbc\",\"optional\":true,\"req\":\"^0.1\"},{\"name\":\"cfb-mode\",\"optional\":true,\"req\":\"^0.8\"},{\"name\":\"cfg-if\",\"req\":\"^1\"},{\"name\":\"chacha20poly1305\",\"optional\":true,\"req\":\"^0.10\"},{\"name\":\"charset\",\"optional\":true,\"req\":\"^0.1\"},{\"default_features\":false,\"features\":[\"clock\",\"serde\",\"wasmbind\"],\"name\":\"chrono\",\"optional\":true,\"req\":\"^0.4\"},{\"default_features\":false,\"name\":\"chrono-tz\",\"optional\":true,\"req\":\"^0.10\"},{\"kind\":\"dev\",\"name\":\"chrono-tz\",\"req\":\"^0.10\"},{\"default_features\":false,\"name\":\"ciborium\",\"optional\":true,\"req\":\"^0.2.2\"},{\"name\":\"cidr\",\"optional\":true,\"req\":\"^0.3\"},{\"features\":[\"derive\"],\"name\":\"clap\",\"optional\":true,\"req\":\"^4\"},{\"name\":\"codespan-reporting\",\"optional\":true,\"req\":\"^0.12\"},{\"name\":\"community-id\",\"optional\":true,\"req\":\"^0.2\"},{\"kind\":\"dev\",\"name\":\"constcat\",\"req\":\"^0.6\"},{\"name\":\"convert_case\",\"optional\":true,\"req\":\"^0.7.1\"},{\"name\":\"crc\",\"optional\":true,\"req\":\"^3.3.0\"},{\"kind\":\"dev\",\"name\":\"criterion\",\"req\":\"^0.8\"},{\"features\":[\"salsa20\"],\"name\":\"crypto_secretbox\",\"optional\":true,\"req\":\"^0.1\"},{\"name\":\"csv\",\"optional\":true,\"req\":\"^1\"},{\"name\":\"ctr\",\"optional\":true,\"req\":\"^0.9\"},{\"name\":\"digest\",\"optional\":true,\"req\":\"^0.10\"},{\"name\":\"dns-lookup\",\"optional\":true,\"req\":\"^3\",\"target\":\"cfg(not(target_arch = \\\"wasm32\\\"))\"},{\"features\":[\"resolv-sync\",\"serde\"],\"name\":\"domain\",\"optional\":true,\"req\":\"^0.12.0\",\"target\":\"cfg(not(target_arch = \\\"wasm32\\\"))\"},{\"default_features\":false,\"name\":\"dyn-clone\",\"optional\":true,\"req\":\"^1\"},{\"name\":\"encoding_rs\",\"optional\":true,\"req\":\"^0.8.35\"},{\"name\":\"exitcode\",\"optional\":true,\"req\":\"^1\"},{\"default_features\":false,\"name\":\"fancy-regex\",\"optional\":true,\"req\":\"^0.17\"},{\"default_features\":false,\"features\":[\"zlib-rs\"],\"name\":\"flate2\",\"optional\":true,\"req\":\"^1.1.2\"},{\"features\":[\"wasm_js\"],\"name\":\"getrandom\",\"req\":\"^0.3\",\"target\":\"cfg(target_arch = \\\"wasm32\\\")\"},{\"name\":\"grok\",\"optional\":true,\"req\":\"^2.4\",\"target\":\"cfg(not(target_arch = \\\"wasm32\\\"))\"},{\"name\":\"hex\",\"optional\":true,\"req\":\"^0.4\"},{\"name\":\"hmac\",\"optional\":true,\"req\":\"^0.12\"},{\"name\":\"hostname\",\"optional\":true,\"req\":\"^0.4\",\"target\":\"cfg(not(target_arch = \\\"wasm32\\\"))\"},{\"name\":\"iana-time-zone\",\"optional\":true,\"req\":\"^0.1\"},{\"name\":\"idna\",\"optional\":true,\"req\":\"^1.0\"},{\"default_features\":false,\"features\":[\"std\"],\"name\":\"indexmap\",\"optional\":true,\"req\":\"^2\"},{\"name\":\"indoc\",\"optional\":true,\"req\":\"^2\"},{\"kind\":\"dev\",\"name\":\"indoc\",\"req\":\"^2\"},{\"name\":\"influxdb-line-protocol\",\"optional\":true,\"req\":\"^2.0.0\"},{\"default_features\":false,\"name\":\"ipcrypt-rs\",\"optional\":true,\"req\":\"^0.9.4\"},{\"default_features\":false,\"features\":[\"use_std\"],\"name\":\"itertools\",\"optional\":true,\"req\":\"^0.14\"},{\"default_features\":false,\"name\":\"jsonschema\",\"req\":\"^0.38.1\",\"target\":\"cfg(not(target_arch = \\\"wasm32\\\"))\"},{\"default_features\":false,\"kind\":\"build\",\"name\":\"lalrpop\",\"req\":\"^0.22\"},{\"name\":\"lalrpop-util\",\"optional\":true,\"req\":\"^0.22\"},{\"name\":\"lz4_flex\",\"req\":\"^0.11.5\"},{\"name\":\"md-5\",\"optional\":true,\"req\":\"^0.10\"},{\"default_features\":false,\"features\":[\"lua54\",\"send\",\"vendored\"],\"name\":\"mlua\",\"optional\":true,\"req\":\"^0.10\"},{\"default_features\":false,\"features\":[\"lua54\",\"send\",\"vendored\"],\"kind\":\"dev\",\"name\":\"mlua\",\"req\":\"^0.10\"},{\"default_features\":false,\"features\":[\"std\"],\"name\":\"nom\",\"optional\":true,\"req\":\"^8\"},{\"default_features\":false,\"name\":\"nom-language\",\"req\":\"^0.1.0\"},{\"name\":\"nu-ansi-term\",\"optional\":true,\"req\":\"^0.50\"},{\"name\":\"ofb\",\"optional\":true,\"req\":\"^0.6\"},{\"default_features\":false,\"name\":\"onig\",\"optional\":true,\"req\":\"^6\",\"target\":\"cfg(not(target_arch = \\\"wasm32\\\"))\"},{\"default_features\":false,\"name\":\"ordered-float\",\"optional\":true,\"req\":\"^4\"},{\"name\":\"parse-size\",\"optional\":true,\"req\":\"^1.1.0\"},{\"default_features\":false,\"kind\":\"dev\",\"name\":\"pastey\",\"req\":\"^0.2\"},{\"default_features\":false,\"name\":\"peeking_take_while\",\"optional\":true,\"req\":\"^1\"},{\"name\":\"percent-encoding\",\"optional\":true,\"req\":\"^2\"},{\"default_features\":false,\"features\":[\"std\"],\"name\":\"pest\",\"optional\":true,\"req\":\"^2\"},{\"default_features\":false,\"features\":[\"std\"],\"name\":\"pest_derive\",\"optional\":true,\"req\":\"^2\"},{\"default_features\":false,\"name\":\"prettydiff\",\"optional\":true,\"req\":\"^0.8\"},{\"default_features\":false,\"name\":\"prettytable-rs\",\"optional\":true,\"req\":\"^0.10\"},{\"name\":\"proptest\",\"optional\":true,\"req\":\"^1\"},{\"kind\":\"dev\",\"name\":\"proptest\",\"req\":\"^1\"},{\"name\":\"proptest-derive\",\"optional\":true,\"req\":\"^0.6\"},{\"kind\":\"dev\",\"name\":\"proptest-derive\",\"req\":\"^0.6\"},{\"default_features\":false,\"features\":[\"std\"],\"name\":\"prost\",\"optional\":true,\"req\":\"^0.13\"},{\"default_features\":false,\"name\":\"prost-reflect\",\"optional\":true,\"req\":\"^0.14\"},{\"name\":\"psl\",\"optional\":true,\"req\":\"^2\"},{\"name\":\"psl-types\",\"optional\":true,\"req\":\"^2\"},{\"name\":\"publicsuffix\",\"optional\":true,\"req\":\"^2\"},{\"name\":\"quickcheck\",\"optional\":true,\"req\":\"^1\"},{\"kind\":\"dev\",\"name\":\"quickcheck\",\"req\":\"^1\"},{\"name\":\"quoted_printable\",\"optional\":true,\"req\":\"^0.5\"},{\"name\":\"rand\",\"optional\":true,\"req\":\"^0.9.3\"},{\"default_features\":false,\"features\":[\"std\",\"perf\",\"unicode\"],\"name\":\"regex\",\"optional\":true,\"req\":\"^1\"},{\"default_features\":false,\"features\":[\"std\",\"perf\",\"unicode\"],\"kind\":\"dev\",\"name\":\"regex\",\"req\":\"^1\"},{\"name\":\"relative-path\",\"optional\":true,\"req\":\"^2.0.1\"},{\"default_features\":false,\"features\":[\"http2\",\"rustls-tls-native-roots\"],\"name\":\"reqwest\",\"optional\":true,\"req\":\"^0.12\",\"target\":\"cfg(not(target_arch = \\\"wasm32\\\"))\"},{\"default_features\":false,\"name\":\"reqwest-middleware\",\"optional\":true,\"req\":\"^0.4\",\"target\":\"cfg(not(target_arch = \\\"wasm32\\\"))\"},{\"default_features\":false,\"name\":\"reqwest-retry\",\"optional\":true,\"req\":\"^0.8\",\"target\":\"cfg(not(target_arch = \\\"wasm32\\\"))\"},{\"name\":\"roxmltree\",\"optional\":true,\"req\":\"^0.21\"},{\"default_features\":false,\"name\":\"rust_decimal\",\"optional\":true,\"req\":\"^1\"},{\"default_features\":false,\"name\":\"rustyline\",\"optional\":true,\"req\":\"^17\"},{\"name\":\"seahash\",\"optional\":true,\"req\":\"^4\"},{\"features\":[\"derive\"],\"name\":\"serde\",\"optional\":true,\"req\":\"^1\"},{\"default_features\":false,\"features\":[\"std\",\"raw_value\"],\"name\":\"serde_json\",\"optional\":true,\"req\":\"^1\"},{\"kind\":\"dev\",\"name\":\"serde_json\",\"req\":\"^1\"},{\"kind\":\"build\",\"name\":\"serde_yaml\",\"req\":\"^0.9.34\"},{\"name\":\"serde_yaml_ng\",\"req\":\"^0.10.0\"},{\"name\":\"sha-1\",\"optional\":true,\"req\":\"^0.10\"},{\"name\":\"sha-2\",\"optional\":true,\"package\":\"sha2\",\"req\":\"^0.10\"},{\"name\":\"sha-3\",\"optional\":true,\"package\":\"sha3\",\"req\":\"^0.10\"},{\"name\":\"simdutf8\",\"optional\":true,\"req\":\"^0.1.5\"},{\"name\":\"snafu\",\"optional\":true,\"req\":\"^0.8\"},{\"name\":\"snap\",\"optional\":true,\"req\":\"^1\"},{\"name\":\"strip-ansi-escapes\",\"optional\":true,\"req\":\"^0.2\"},{\"name\":\"strum\",\"optional\":true,\"req\":\"^0.26\"},{\"name\":\"strum_macros\",\"optional\":true,\"req\":\"^0.26\"},{\"name\":\"syslog_loose\",\"optional\":true,\"req\":\"^0.22\"},{\"name\":\"termcolor\",\"optional\":true,\"req\":\"^1\"},{\"name\":\"thiserror\",\"optional\":true,\"req\":\"^2\"},{\"features\":[\"io-util\",\"macros\",\"net\",\"time\",\"sync\",\"rt\",\"rt-multi-thread\"],\"name\":\"tokio\",\"optional\":true,\"req\":\"^1.45\",\"target\":\"cfg(not(target_arch = \\\"wasm32\\\"))\"},{\"default_features\":false,\"name\":\"tracing\",\"req\":\"^0.1\"},{\"default_features\":false,\"kind\":\"dev\",\"name\":\"tracing-test\",\"req\":\"^0.2\"},{\"name\":\"ua-parser\",\"optional\":true,\"req\":\"^0.2\"},{\"kind\":\"build\",\"name\":\"ua-parser\",\"req\":\"^0.2\"},{\"name\":\"unicode-segmentation\",\"req\":\"^1.12.0\"},{\"name\":\"url\",\"optional\":true,\"req\":\"^2\"},{\"name\":\"utf8-width\",\"optional\":true,\"req\":\"^0.1\"},{\"features\":[\"v4\",\"v7\"],\"name\":\"uuid\",\"optional\":true,\"req\":\"^1\",\"target\":\"cfg(not(target_arch = \\\"wasm32\\\"))\"},{\"features\":[\"v4\",\"v7\",\"js\"],\"name\":\"uuid\",\"optional\":true,\"req\":\"^1\",\"target\":\"cfg(target_arch = \\\"wasm32\\\")\"},{\"default_features\":false,\"name\":\"webbrowser\",\"optional\":true,\"req\":\"^1.0\"},{\"name\":\"woothee\",\"optional\":true,\"req\":\"^0.13\"},{\"features\":[\"xxh3\",\"xxh32\",\"xxh64\"],\"name\":\"xxhash-rust\",\"optional\":true,\"req\":\"^0.8\"},{\"default_features\":false,\"features\":[\"wasm\"],\"name\":\"zstd\",\"optional\":true,\"req\":\"^0.13\"}],\"features\":{\"arbitrary\":[\"dep:quickcheck\",\"dep:arbitrary\"],\"cli\":[\"compiler\",\"dep:clap\",\"dep:serde_json\",\"dep:thiserror\",\"dep:exitcode\",\"dep:webbrowser\",\"dep:rustyline\",\"dep:prettytable-rs\"],\"compiler\":[\"diagnostic\",\"path\",\"parser\",\"value\",\"dep:chrono\",\"dep:serde\",\"dep:regex\",\"dep:bytes\",\"dep:ordered-float\",\"dep:chrono-tz\",\"dep:snafu\",\"dep:thiserror\",\"dep:dyn-clone\",\"dep:indoc\",\"dep:thiserror\",\"dep:lalrpop-util\"],\"core\":[\"value\",\"dep:snafu\",\"dep:nom\"],\"datadog\":[\"datadog_filter\",\"datadog_grok\",\"datadog_search\"],\"datadog_filter\":[\"path\",\"datadog_search\",\"dep:regex\",\"dep:dyn-clone\"],\"datadog_grok\":[\"value\",\"parsing\",\"dep:nom\",\"dep:peeking_take_while\",\"dep:serde_json\",\"dep:onig\",\"dep:lalrpop-util\",\"dep:thiserror\",\"dep:chrono\",\"dep:chrono-tz\",\"dep:percent-encoding\",\"dep:fancy-regex\"],\"datadog_search\":[\"dep:pest\",\"dep:pest_derive\",\"dep:itertools\",\"dep:regex\",\"dep:serde\"],\"default\":[\"compiler\",\"value\",\"diagnostic\",\"path\",\"parser\",\"stdlib\",\"datadog\",\"core\",\"cli\",\"enable_env_functions\",\"enable_system_functions\",\"enable_network_functions\",\"enable_crypto_functions\"],\"diagnostic\":[\"dep:codespan-reporting\",\"dep:termcolor\"],\"docs\":[\"stdlib\",\"indexmap/serde\",\"serde_json/preserve_order\",\"dep:clap\",\"dep:thiserror\",\"dep:exitcode\"],\"enable_crypto_functions\":[\"dep:aes\",\"dep:aes-siv\",\"dep:cbc\",\"dep:cfb-mode\",\"dep:chacha20poly1305\",\"dep:crypto_secretbox\",\"dep:ctr\",\"dep:digest\",\"dep:hex\",\"dep:hmac\",\"dep:ipcrypt-rs\",\"dep:md-5\",\"dep:ofb\",\"dep:seahash\",\"dep:sha-1\",\"dep:sha-2\",\"dep:sha-3\",\"dep:xxhash-rust\",\"dep:crc\"],\"enable_env_functions\":[],\"enable_network_functions\":[\"dep:reqwest\",\"dep:reqwest-middleware\",\"dep:reqwest-retry\"],\"enable_system_functions\":[\"dep:relative-path\"],\"float_roundtrip\":[\"dep:serde_json\",\"serde_json/float_roundtrip\"],\"generate-fixtures\":[\"arbitrary\"],\"lua\":[\"dep:mlua\"],\"parser\":[\"path\",\"diagnostic\",\"value\",\"dep:thiserror\",\"dep:ordered-float\",\"dep:lalrpop-util\"],\"parsing\":[\"value\",\"compiler\",\"dep:url\",\"dep:nom\",\"dep:regex\",\"dep:roxmltree\",\"dep:rust_decimal\"],\"path\":[\"value\",\"dep:serde\",\"dep:snafu\",\"dep:regex\"],\"proptest\":[\"dep:proptest\",\"dep:proptest-derive\"],\"stdlib\":[\"stdlib-base\",\"enable_crypto_functions\",\"enable_env_functions\",\"enable_system_functions\",\"enable_network_functions\"],\"stdlib-base\":[\"compiler\",\"core\",\"datadog\",\"parsing\",\"dep:base16\",\"dep:base62\",\"dep:base64-simd\",\"dep:charset\",\"dep:convert_case\",\"dep:ciborium\",\"dep:cidr\",\"dep:community-id\",\"dep:csv\",\"dep:domain\",\"dep:dns-lookup\",\"dep:flate2\",\"dep:grok\",\"dep:hostname\",\"dep:iana-time-zone\",\"dep:idna\",\"dep:indexmap\",\"dep:influxdb-line-protocol\",\"dep:nom\",\"dep:parse-size\",\"dep:percent-encoding\",\"dep:prost\",\"dep:prost-reflect\",\"dep:psl\",\"dep:psl-types\",\"dep:publicsuffix\",\"dep:quoted_printable\",\"dep:rand\",\"dep:roxmltree\",\"dep:rust_decimal\",\"dep:snap\",\"dep:strip-ansi-escapes\",\"dep:strum\",\"dep:strum_macros\",\"dep:syslog_loose\",\"dep:tokio\",\"dep:ua-parser\",\"dep:url\",\"dep:utf8-width\",\"dep:uuid\",\"dep:woothee\",\"dep:zstd\",\"dep:encoding_rs\"],\"string_path\":[],\"test\":[\"string_path\"],\"test_framework\":[\"compiler\",\"dep:prettydiff\",\"dep:serde_json\",\"dep:nu-ansi-term\"],\"value\":[\"path\",\"dep:bytes\",\"dep:regex\",\"dep:ordered-float\",\"dep:chrono\",\"dep:serde_json\",\"dep:simdutf8\"]}}", + "vsimd_0.8.0": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"const-str\",\"req\":\"^0.5.3\"},{\"features\":[\"js\"],\"kind\":\"dev\",\"name\":\"getrandom\",\"req\":\"^0.2.8\",\"target\":\"cfg(target_arch = \\\"wasm32\\\")\"},{\"kind\":\"dev\",\"name\":\"rand\",\"req\":\"^0.8.5\"},{\"kind\":\"dev\",\"name\":\"wasm-bindgen-test\",\"req\":\"^0.3.33\",\"target\":\"cfg(target_arch = \\\"wasm32\\\")\"}],\"features\":{\"alloc\":[],\"detect\":[\"std\"],\"std\":[\"alloc\"],\"unstable\":[]}}", "walkdir_2.5.0": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"doc-comment\",\"req\":\"^0.3\"},{\"name\":\"same-file\",\"req\":\"^1.0.1\"},{\"name\":\"winapi-util\",\"req\":\"^0.1.1\",\"target\":\"cfg(windows)\"}],\"features\":{}}", "want_0.3.1": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"tokio-executor\",\"req\":\"^0.2.0-alpha.2\"},{\"kind\":\"dev\",\"name\":\"tokio-sync\",\"req\":\"^0.2.0-alpha.2\"},{\"name\":\"try-lock\",\"req\":\"^0.2.4\"}],\"features\":{}}", "wasi_0.11.1+wasi-snapshot-preview1": "{\"dependencies\":[{\"name\":\"core\",\"optional\":true,\"package\":\"rustc-std-workspace-core\",\"req\":\"^1.0\"},{\"name\":\"rustc-std-workspace-alloc\",\"optional\":true,\"req\":\"^1.0\"}],\"features\":{\"default\":[\"std\"],\"rustc-dep-of-std\":[\"core\",\"rustc-std-workspace-alloc\"],\"std\":[]}}", - "wasip2_1.0.3+wasi-0.2.9": "{\"dependencies\":[{\"name\":\"alloc\",\"optional\":true,\"package\":\"rustc-std-workspace-alloc\",\"req\":\"^1.0\"},{\"name\":\"core\",\"optional\":true,\"package\":\"rustc-std-workspace-core\",\"req\":\"^1.0\"},{\"default_features\":false,\"name\":\"wit-bindgen\",\"req\":\"^0.57.1\"}],\"features\":{\"bitflags\":[\"wit-bindgen/bitflags\"],\"default\":[\"std\",\"bitflags\"],\"rustc-dep-of-std\":[\"core\",\"alloc\",\"wit-bindgen/rustc-dep-of-std\"],\"std\":[]}}", + "wasip2_1.0.4+wasi-0.2.12": "{\"dependencies\":[{\"name\":\"alloc\",\"optional\":true,\"package\":\"rustc-std-workspace-alloc\",\"req\":\"^1.0\"},{\"name\":\"core\",\"optional\":true,\"package\":\"rustc-std-workspace-core\",\"req\":\"^1.0\"},{\"default_features\":false,\"name\":\"wit-bindgen\",\"req\":\"^0.57.1\"}],\"features\":{\"bitflags\":[\"wit-bindgen/bitflags\"],\"default\":[\"std\",\"bitflags\"],\"rustc-dep-of-std\":[\"core\",\"alloc\",\"wit-bindgen/rustc-dep-of-std\"],\"std\":[]}}", "wasip3_0.4.0+wasi-0.3.0-rc-2026-01-06": "{\"dependencies\":[{\"name\":\"bytes\",\"optional\":true,\"req\":\"^1.10.1\"},{\"kind\":\"dev\",\"name\":\"futures\",\"req\":\"^0.3.31\"},{\"name\":\"http\",\"optional\":true,\"req\":\"^1.3.1\"},{\"kind\":\"dev\",\"name\":\"http\",\"req\":\"^1.3.1\"},{\"name\":\"http-body\",\"optional\":true,\"req\":\"^1.0.1\"},{\"name\":\"thiserror\",\"optional\":true,\"req\":\"^2.0.17\"},{\"default_features\":false,\"features\":[\"async\"],\"name\":\"wit-bindgen\",\"req\":\"^0.51.0\"},{\"default_features\":false,\"features\":[\"async-spawn\"],\"kind\":\"dev\",\"name\":\"wit-bindgen\",\"req\":\"^0.51.0\"}],\"features\":{\"http-compat\":[\"dep:bytes\",\"dep:http-body\",\"dep:http\",\"dep:thiserror\",\"wit-bindgen/async-spawn\"]}}", - "wasm-bindgen-macro-support_0.2.118": "{\"dependencies\":[{\"name\":\"bumpalo\",\"req\":\"^3.0.0\"},{\"name\":\"proc-macro2\",\"req\":\"^1.0\"},{\"name\":\"quote\",\"req\":\"^1.0\"},{\"features\":[\"visit\",\"visit-mut\",\"full\",\"extra-traits\"],\"name\":\"syn\",\"req\":\"^2.0\"},{\"name\":\"wasm-bindgen-shared\",\"req\":\"=0.2.118\"}],\"features\":{\"extra-traits\":[\"syn/extra-traits\"],\"strict-macro\":[]}}", - "wasm-bindgen-macro_0.2.118": "{\"dependencies\":[{\"name\":\"quote\",\"req\":\"^1.0\"},{\"kind\":\"dev\",\"name\":\"trybuild\",\"req\":\"^1.0\"},{\"name\":\"wasm-bindgen-macro-support\",\"req\":\"=0.2.118\"}],\"features\":{\"strict-macro\":[\"wasm-bindgen-macro-support/strict-macro\"]}}", - "wasm-bindgen-shared_0.2.118": "{\"dependencies\":[{\"name\":\"unicode-ident\",\"req\":\"^1.0.5\"}],\"features\":{}}", - "wasm-bindgen_0.2.118": "{\"dependencies\":[{\"name\":\"cfg-if\",\"req\":\"^1.0.0\"},{\"default_features\":false,\"name\":\"once_cell\",\"req\":\"^1.12\"},{\"kind\":\"dev\",\"name\":\"once_cell\",\"req\":\"^1\"},{\"kind\":\"dev\",\"name\":\"paste\",\"req\":\"^1\",\"target\":\"cfg(target_arch = \\\"wasm32\\\")\"},{\"kind\":\"build\",\"name\":\"rustversion-compat\",\"package\":\"rustversion\",\"req\":\"^1.0.6\"},{\"name\":\"serde\",\"optional\":true,\"req\":\"^1.0\"},{\"kind\":\"dev\",\"name\":\"serde_derive\",\"req\":\"^1.0\",\"target\":\"cfg(target_arch = \\\"wasm32\\\")\"},{\"name\":\"serde_json\",\"optional\":true,\"req\":\"^1.0\"},{\"name\":\"wasm-bindgen-macro\",\"req\":\"=0.2.118\"},{\"name\":\"wasm-bindgen-shared\",\"req\":\"=0.2.118\"}],\"features\":{\"default\":[\"std\"],\"enable-interning\":[\"std\"],\"gg-alloc\":[],\"msrv\":[],\"rustversion\":[],\"serde-serialize\":[\"serde\",\"serde_json\",\"std\"],\"spans\":[],\"std\":[],\"strict-macro\":[\"wasm-bindgen-macro/strict-macro\"],\"xxx_debug_only_print_generated_code\":[]}}", + "wasm-bindgen-macro-support_0.2.126": "{\"dependencies\":[{\"name\":\"bumpalo\",\"req\":\"^3.0.0\"},{\"name\":\"proc-macro2\",\"req\":\"^1.0\"},{\"name\":\"quote\",\"req\":\"^1.0\"},{\"features\":[\"visit\",\"visit-mut\",\"full\",\"extra-traits\"],\"name\":\"syn\",\"req\":\"^2.0\"},{\"name\":\"wasm-bindgen-shared\",\"req\":\"=0.2.126\"}],\"features\":{\"extra-traits\":[\"syn/extra-traits\"],\"strict-macro\":[]}}", + "wasm-bindgen-macro_0.2.126": "{\"dependencies\":[{\"name\":\"quote\",\"req\":\"^1.0\"},{\"kind\":\"dev\",\"name\":\"trybuild\",\"req\":\"^1.0\"},{\"name\":\"wasm-bindgen-macro-support\",\"req\":\"=0.2.126\"}],\"features\":{\"strict-macro\":[\"wasm-bindgen-macro-support/strict-macro\"]}}", + "wasm-bindgen-shared_0.2.126": "{\"dependencies\":[{\"name\":\"unicode-ident\",\"req\":\"^1.0.5\"}],\"features\":{}}", + "wasm-bindgen_0.2.126": "{\"dependencies\":[{\"name\":\"cfg-if\",\"req\":\"^1.0.0\"},{\"default_features\":false,\"name\":\"once_cell\",\"req\":\"^1.12\"},{\"kind\":\"dev\",\"name\":\"once_cell\",\"req\":\"^1\"},{\"kind\":\"dev\",\"name\":\"paste\",\"req\":\"^1\",\"target\":\"cfg(target_arch = \\\"wasm32\\\")\"},{\"kind\":\"dev\",\"name\":\"paste\",\"req\":\"^1\",\"target\":\"cfg(target_arch = \\\"wasm64\\\")\"},{\"kind\":\"build\",\"name\":\"rustversion-compat\",\"package\":\"rustversion\",\"req\":\"^1.0.6\"},{\"name\":\"serde\",\"optional\":true,\"req\":\"^1.0\"},{\"kind\":\"dev\",\"name\":\"serde_derive\",\"req\":\"^1.0\",\"target\":\"cfg(target_arch = \\\"wasm32\\\")\"},{\"kind\":\"dev\",\"name\":\"serde_derive\",\"req\":\"^1.0\",\"target\":\"cfg(target_arch = \\\"wasm64\\\")\"},{\"name\":\"serde_json\",\"optional\":true,\"req\":\"^1.0\"},{\"name\":\"wasm-bindgen-macro\",\"req\":\"=0.2.126\"},{\"name\":\"wasm-bindgen-shared\",\"req\":\"=0.2.126\"}],\"features\":{\"default\":[\"std\"],\"enable-interning\":[\"std\"],\"gg-alloc\":[],\"msrv\":[],\"rustversion\":[],\"serde-serialize\":[\"serde\",\"serde_json\",\"std\"],\"spans\":[],\"std\":[],\"strict-macro\":[\"wasm-bindgen-macro/strict-macro\"],\"xxx_debug_only_print_generated_code\":[]}}", "wasm-encoder_0.244.0": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"anyhow\",\"req\":\"^1.0.58\"},{\"default_features\":false,\"name\":\"leb128fmt\",\"req\":\"^0.1.0\"},{\"kind\":\"dev\",\"name\":\"tempfile\",\"req\":\"^3.2.0\"},{\"default_features\":false,\"features\":[\"simd\",\"simd\"],\"name\":\"wasmparser\",\"optional\":true,\"req\":\"^0.244.0\"},{\"default_features\":false,\"kind\":\"dev\",\"name\":\"wasmprinter\",\"req\":\"^0.244.0\"}],\"features\":{\"component-model\":[\"wasmparser?/component-model\"],\"default\":[\"std\",\"component-model\"],\"std\":[\"wasmparser?/std\"]}}", "wasm-metadata_0.244.0": "{\"dependencies\":[{\"name\":\"anyhow\",\"req\":\"^1.0.58\"},{\"name\":\"auditable-serde\",\"optional\":true,\"req\":\"^0.8.0\"},{\"features\":[\"derive\"],\"name\":\"clap\",\"optional\":true,\"req\":\"^4.0.0\"},{\"name\":\"flate2\",\"optional\":true,\"req\":\"^1.1.0\"},{\"default_features\":false,\"features\":[\"serde\"],\"name\":\"indexmap\",\"req\":\"^2.7.0\"},{\"default_features\":false,\"features\":[\"alloc\"],\"name\":\"serde\",\"optional\":true,\"req\":\"^1.0.166\"},{\"name\":\"serde_derive\",\"optional\":true,\"req\":\"^1.0.166\"},{\"name\":\"serde_json\",\"optional\":true,\"req\":\"^1\"},{\"name\":\"spdx\",\"optional\":true,\"req\":\"^0.10.1\"},{\"name\":\"url\",\"optional\":true,\"req\":\"^2.0.0\"},{\"default_features\":false,\"features\":[\"std\",\"component-model\"],\"name\":\"wasm-encoder\",\"req\":\"^0.244.0\"},{\"default_features\":false,\"features\":[\"simd\",\"std\",\"component-model\",\"hash-collections\"],\"name\":\"wasmparser\",\"req\":\"^0.244.0\"}],\"features\":{\"default\":[\"oci\",\"serde\"],\"oci\":[\"dep:auditable-serde\",\"dep:flate2\",\"dep:url\",\"dep:spdx\",\"dep:serde_json\",\"serde\"],\"serde\":[\"dep:serde_derive\",\"dep:serde\"]}}", "wasmparser_0.244.0": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"anyhow\",\"req\":\"^1.0.58\"},{\"name\":\"bitflags\",\"req\":\"^2.4.1\"},{\"default_features\":false,\"kind\":\"dev\",\"name\":\"criterion\",\"req\":\"^0.5.1\"},{\"kind\":\"dev\",\"name\":\"env_logger\",\"req\":\"^0.11\"},{\"default_features\":false,\"features\":[\"default-hasher\"],\"name\":\"hashbrown\",\"optional\":true,\"req\":\"^0.15.2\"},{\"default_features\":false,\"name\":\"indexmap\",\"optional\":true,\"req\":\"^2.7.0\"},{\"kind\":\"dev\",\"name\":\"log\",\"req\":\"^0.4.17\"},{\"kind\":\"dev\",\"name\":\"once_cell\",\"req\":\"^1.13.0\"},{\"kind\":\"dev\",\"name\":\"rayon\",\"req\":\"^1.3\"},{\"default_features\":false,\"name\":\"semver\",\"optional\":true,\"req\":\"^1.0.0\"},{\"default_features\":false,\"features\":[\"alloc\"],\"name\":\"serde\",\"optional\":true,\"req\":\"^1.0.166\"}],\"features\":{\"component-model\":[\"dep:semver\"],\"default\":[\"std\",\"validate\",\"serde\",\"features\",\"component-model\",\"hash-collections\",\"simd\"],\"features\":[],\"hash-collections\":[\"dep:hashbrown\",\"dep:indexmap\"],\"prefer-btree-collections\":[],\"serde\":[\"dep:serde\",\"indexmap?/serde\",\"hashbrown?/serde\"],\"simd\":[],\"std\":[\"indexmap?/std\"],\"validate\":[]}}", @@ -2123,6 +2191,8 @@ "yaml-rust2_0.11.0": "{\"dependencies\":[{\"name\":\"arraydeque\",\"req\":\"^0.5.1\"},{\"name\":\"encoding_rs\",\"optional\":true,\"req\":\"^0.8.33\"},{\"name\":\"hashlink\",\"req\":\"^0.11\"},{\"kind\":\"dev\",\"name\":\"libtest-mimic\",\"req\":\"^0.8\"},{\"kind\":\"dev\",\"name\":\"quickcheck\",\"req\":\"^1.0\"}],\"features\":{\"debug_prints\":[],\"default\":[\"encoding\"],\"encoding\":[\"dep:encoding_rs\"]}}", "yoke-derive_0.8.2": "{\"dependencies\":[{\"name\":\"proc-macro2\",\"req\":\"^1.0.61\"},{\"name\":\"quote\",\"req\":\"^1.0.44\"},{\"features\":[\"fold\"],\"name\":\"syn\",\"req\":\"^2.0.21\"},{\"name\":\"synstructure\",\"req\":\"^0.13.0\"}],\"features\":{}}", "yoke_0.8.2": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"bincode\",\"req\":\"^1.3.1\"},{\"default_features\":false,\"kind\":\"dev\",\"name\":\"postcard\",\"req\":\"^1.0.3\"},{\"default_features\":false,\"kind\":\"dev\",\"name\":\"serde\",\"req\":\"^1.0.220\"},{\"default_features\":false,\"name\":\"stable_deref_trait\",\"req\":\"^1.2.0\"},{\"default_features\":false,\"name\":\"yoke-derive\",\"optional\":true,\"req\":\"^0.8.2\"},{\"default_features\":false,\"name\":\"zerofrom\",\"optional\":true,\"req\":\"^0.1.6\"}],\"features\":{\"alloc\":[\"stable_deref_trait/alloc\",\"zerofrom/alloc\"],\"default\":[\"alloc\",\"zerofrom\"],\"derive\":[\"dep:yoke-derive\",\"zerofrom/derive\"],\"serde\":[],\"zerofrom\":[\"dep:zerofrom\"]}}", + "zerocopy-derive_0.8.54": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"dissimilar\",\"req\":\"^1.0.9\"},{\"kind\":\"dev\",\"name\":\"prettyplease\",\"req\":\"=0.2.17\"},{\"name\":\"proc-macro2\",\"req\":\"^1.0.1\"},{\"name\":\"quote\",\"req\":\"^1.0.40\"},{\"kind\":\"dev\",\"name\":\"rustversion\",\"req\":\"^1.0\"},{\"kind\":\"dev\",\"name\":\"static_assertions\",\"req\":\"^1.1\"},{\"features\":[\"full\"],\"name\":\"syn\",\"req\":\"^2.0.46\"},{\"features\":[\"visit\"],\"kind\":\"dev\",\"name\":\"syn\",\"req\":\"^2.0.46\"}],\"features\":{}}", + "zerocopy_0.8.54": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"elain\",\"req\":\"^0.3.0\"},{\"kind\":\"dev\",\"name\":\"itertools\",\"req\":\"^0.11\"},{\"default_features\":false,\"features\":[\"small_rng\"],\"kind\":\"dev\",\"name\":\"rand\",\"req\":\"^0.8.5\"},{\"kind\":\"dev\",\"name\":\"regex\",\"req\":\"^1.0\"},{\"kind\":\"dev\",\"name\":\"rustversion\",\"req\":\"^1.0\"},{\"kind\":\"dev\",\"name\":\"static_assertions\",\"req\":\"^1.1\"},{\"name\":\"zerocopy-derive\",\"req\":\"=0.8.54\",\"target\":\"cfg(any())\"},{\"name\":\"zerocopy-derive\",\"optional\":true,\"req\":\"=0.8.54\"},{\"kind\":\"dev\",\"name\":\"zerocopy-derive\",\"req\":\"=0.8.54\"}],\"features\":{\"__internal_use_only_features_that_work_on_stable\":[\"alloc\",\"derive\",\"simd\",\"std\"],\"alloc\":[],\"derive\":[\"zerocopy-derive\"],\"float-nightly\":[],\"simd\":[],\"simd-nightly\":[\"simd\"],\"std\":[\"alloc\"]}}", "zerofrom-derive_0.1.7": "{\"dependencies\":[{\"name\":\"proc-macro2\",\"req\":\"^1.0.61\"},{\"name\":\"quote\",\"req\":\"^1.0.44\"},{\"features\":[\"fold\"],\"name\":\"syn\",\"req\":\"^2.0.21\"},{\"name\":\"synstructure\",\"req\":\"^0.13.0\"}],\"features\":{}}", "zerofrom_0.1.7": "{\"dependencies\":[{\"default_features\":false,\"name\":\"zerofrom-derive\",\"optional\":true,\"req\":\"^0.1.6\"}],\"features\":{\"alloc\":[],\"default\":[\"alloc\"],\"derive\":[\"dep:zerofrom-derive\"]}}", "zerotrie_0.2.4": "{\"dependencies\":[{\"kind\":\"dev\",\"name\":\"bincode\",\"req\":\"^1.3.1\"},{\"kind\":\"dev\",\"name\":\"criterion\",\"req\":\"^0.5.0\",\"target\":\"cfg(not(target_arch = \\\"wasm32\\\"))\"},{\"default_features\":false,\"features\":[\"derive\"],\"name\":\"databake\",\"optional\":true,\"req\":\"^0.2.0\"},{\"default_features\":false,\"name\":\"displaydoc\",\"req\":\"^0.2.3\"},{\"default_features\":false,\"features\":[\"alloc\"],\"kind\":\"dev\",\"name\":\"icu_locale_core\",\"req\":\"^2.2.0\"},{\"kind\":\"dev\",\"name\":\"itertools\",\"req\":\"^0.14.0\"},{\"default_features\":false,\"features\":[\"alloc\"],\"name\":\"litemap\",\"optional\":true,\"req\":\"^0.8.0\"},{\"default_features\":false,\"features\":[\"alloc\"],\"kind\":\"dev\",\"name\":\"postcard\",\"req\":\"^1.0.3\"},{\"kind\":\"dev\",\"name\":\"rand\",\"req\":\"^0.9\"},{\"kind\":\"dev\",\"name\":\"rand_pcg\",\"req\":\"^0.9\"},{\"kind\":\"dev\",\"name\":\"rmp-serde\",\"req\":\"^1.2.0\"},{\"default_features\":false,\"features\":[\"derive\"],\"kind\":\"dev\",\"name\":\"serde\",\"req\":\"^1.0.220\"},{\"default_features\":false,\"name\":\"serde_core\",\"optional\":true,\"req\":\"^1.0.220\"},{\"kind\":\"dev\",\"name\":\"serde_json\",\"req\":\"^1.0.45\"},{\"default_features\":false,\"features\":[\"derive\"],\"name\":\"yoke\",\"optional\":true,\"req\":\"^0.8.2\"},{\"default_features\":false,\"name\":\"zerofrom\",\"optional\":true,\"req\":\"^0.1.6\"},{\"default_features\":false,\"name\":\"zerovec\",\"optional\":true,\"req\":\"^0.11.6\"}],\"features\":{\"alloc\":[\"zerovec?/alloc\"],\"databake\":[\"dep:databake\",\"zerovec?/databake\"],\"default\":[],\"dense\":[\"dep:zerovec\"],\"litemap\":[\"dep:litemap\",\"alloc\"],\"serde\":[\"dep:serde_core\",\"dep:litemap\",\"alloc\",\"litemap/serde\",\"zerovec?/serde\"],\"yoke\":[\"dep:yoke\"],\"zerofrom\":[\"dep:zerofrom\"],\"zerovec\":[\"dep:zerovec\"]}}", diff --git a/comp/anomalydetection/observer/def/go.mod b/comp/anomalydetection/observer/def/go.mod index 7a8586b416bf..2e31192845b8 100644 --- a/comp/anomalydetection/observer/def/go.mod +++ b/comp/anomalydetection/observer/def/go.mod @@ -83,6 +83,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -111,6 +112,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/comp/anomalydetection/recorder/def/go.mod b/comp/anomalydetection/recorder/def/go.mod index 1ee1c319bf29..36eed5322a08 100644 --- a/comp/anomalydetection/recorder/def/go.mod +++ b/comp/anomalydetection/recorder/def/go.mod @@ -85,6 +85,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -113,6 +114,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/comp/anomalydetection/severityevents/def/go.mod b/comp/anomalydetection/severityevents/def/go.mod index 8bd697e32735..daea6352860e 100644 --- a/comp/anomalydetection/severityevents/def/go.mod +++ b/comp/anomalydetection/severityevents/def/go.mod @@ -81,6 +81,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -109,6 +110,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/comp/api/api/def/go.mod b/comp/api/api/def/go.mod index fce581d1453b..4dc3404d75fa 100644 --- a/comp/api/api/def/go.mod +++ b/comp/api/api/def/go.mod @@ -93,6 +93,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -121,6 +122,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/comp/core/agenttelemetry/def/go.mod b/comp/core/agenttelemetry/def/go.mod index c5b8dbaa1787..b30eb400cf8a 100644 --- a/comp/core/agenttelemetry/def/go.mod +++ b/comp/core/agenttelemetry/def/go.mod @@ -104,6 +104,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -132,6 +133,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/comp/core/agenttelemetry/fx/go.mod b/comp/core/agenttelemetry/fx/go.mod index cf13935af087..4b881b580804 100644 --- a/comp/core/agenttelemetry/fx/go.mod +++ b/comp/core/agenttelemetry/fx/go.mod @@ -1,6 +1,6 @@ module github.com/DataDog/datadog-agent/comp/core/agenttelemetry/fx -go 1.25.0 +go 1.25.4 require ( github.com/DataDog/datadog-agent/comp/core/agenttelemetry/def v0.0.0 @@ -38,6 +38,7 @@ require ( github.com/DataDog/datadog-agent/pkg/fleet/installer v0.70.0 // indirect github.com/DataDog/datadog-agent/pkg/gohai v0.69.4 // indirect github.com/DataDog/datadog-agent/pkg/logs/types v0.75.4 // indirect + github.com/DataDog/datadog-agent/pkg/logs/vrl v0.0.0-00010101000000-000000000000 // indirect github.com/DataDog/datadog-agent/pkg/template v0.77.0 // indirect github.com/DataDog/datadog-agent/pkg/util/cache v0.69.4 // indirect github.com/DataDog/datadog-agent/pkg/util/defaultpaths v0.64.0-devel // indirect @@ -54,22 +55,42 @@ require ( github.com/DataDog/datadog-agent/pkg/util/uuid v0.69.4 // indirect github.com/DataDog/datadog-agent/pkg/util/winutil v0.77.0 // indirect github.com/DataDog/datadog-agent/pkg/version v0.77.0 // indirect + github.com/DataDog/fastjq v0.0.0-20260506145947-c3336f252fa2 // indirect github.com/DataDog/go-acl v1.0.1 // indirect github.com/DataDog/zstd v1.5.8-0.20260421145859-31a7e515a571 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect + github.com/alecthomas/participle/v2 v2.1.4 // indirect + github.com/antchfx/xmlquery v1.5.1 // indirect + github.com/antchfx/xpath v1.3.6 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/ebitengine/purego v0.10.0 // indirect + github.com/elastic/go-grok v0.3.1 // indirect + github.com/elastic/lunes v0.2.2 // indirect github.com/go-ole/go-ole v1.3.0 // indirect github.com/go-viper/mapstructure/v2 v2.5.0 // indirect + github.com/gobwas/glob v0.2.3 // indirect + github.com/goccy/go-json v0.10.6 // indirect github.com/gofrs/flock v0.13.0 // indirect + github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/hashicorp/go-version v1.9.0 // indirect + github.com/hashicorp/golang-lru v1.0.2 // indirect + github.com/iancoleman/strcase v0.3.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/klauspost/cpuid/v2 v2.3.0 // indirect github.com/lufia/plan9stats v0.0.0-20260330125221-c963978e514e // indirect + github.com/magefile/mage v1.15.0 // indirect github.com/mdlayher/socket v0.6.0 // indirect github.com/mdlayher/vsock v1.3.0 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.156.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0 // indirect github.com/patrickmn/go-cache v2.1.0+incompatible // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect @@ -86,7 +107,18 @@ require ( github.com/stretchr/testify v1.11.1 // indirect github.com/tklauser/go-sysconf v0.3.16 // indirect github.com/tklauser/numcpus v0.11.0 // indirect + github.com/twmb/murmur3 v1.1.8 // indirect + github.com/ua-parser/uap-go v0.0.0-20251207011819-db9adb27a0b8 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect + github.com/zeebo/xxh3 v1.1.0 // indirect + go.opentelemetry.io/collector/client v1.62.0 // indirect + go.opentelemetry.io/collector/component v1.62.0 // indirect + go.opentelemetry.io/collector/featuregate v1.62.0 // indirect + go.opentelemetry.io/collector/pdata v1.62.0 // indirect + go.opentelemetry.io/collector/pdata/pprofile v0.156.0 // indirect + go.opentelemetry.io/otel v1.44.1-0.20260622141720-fbe3d073ba93 // indirect + go.opentelemetry.io/otel/metric v1.44.1-0.20260622141720-fbe3d073ba93 // indirect + go.opentelemetry.io/otel/trace v1.44.1-0.20260622141720-fbe3d073ba93 // indirect go.uber.org/atomic v1.11.0 // indirect go.uber.org/dig v1.19.0 // indirect go.uber.org/fx v1.24.0 // indirect @@ -94,11 +126,13 @@ require ( go.uber.org/zap v1.28.0 // indirect go.yaml.in/yaml/v2 v2.4.4 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect + golang.org/x/exp v0.0.0-20260611194520-c48552f49976 // indirect golang.org/x/net v0.57.0 // indirect golang.org/x/sync v0.22.0 // indirect golang.org/x/sys v0.47.0 // indirect golang.org/x/text v0.40.0 // indirect golang.org/x/time v0.15.0 // indirect + google.golang.org/grpc v1.82.1 // indirect google.golang.org/protobuf v1.36.12-0.20260116114154-8c4c4ae446ca // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) @@ -182,6 +216,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -210,6 +245,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/comp/core/agenttelemetry/fx/go.sum b/comp/core/agenttelemetry/fx/go.sum index 288f067f0600..3a9e993b6a82 100644 --- a/comp/core/agenttelemetry/fx/go.sum +++ b/comp/core/agenttelemetry/fx/go.sum @@ -1,51 +1,109 @@ +github.com/DataDog/fastjq v0.0.0-20260506145947-c3336f252fa2 h1:a9xjjGg5UQzUd+yliPDF9e4wQA9qq9PKT+DRDUaonOM= +github.com/DataDog/fastjq v0.0.0-20260506145947-c3336f252fa2/go.mod h1:XbWpLvPZo0LbxPhXTMIXSB98lFwfF9MnkT77iRHTXMY= github.com/DataDog/go-acl v1.0.1 h1:uRbp98YmlVZYqNNyTBFNI3Y6bnziBLyCIR4nRu0bIpU= github.com/DataDog/go-acl v1.0.1/go.mod h1:YJx333qSb3GUqCLIbqKeGaZS2pUYh2IYGI7+FsX18CU= github.com/DataDog/zstd v1.5.8-0.20260421145859-31a7e515a571 h1:zDAogP70WYpLD6MiIjQ9tHZYmkfbFcsfGb26CMf99To= github.com/DataDog/zstd v1.5.8-0.20260421145859-31a7e515a571/go.mod h1:oyU0k4j1rV2Cxqy/hdGZzmVg3nJtHahZBImIK9ejcDA= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= +github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0= +github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k= +github.com/alecthomas/participle/v2 v2.1.4 h1:W/H79S8Sat/krZ3el6sQMvMaahJ+XcM9WSI2naI7w2U= +github.com/alecthomas/participle/v2 v2.1.4/go.mod h1:8tqVbpTX20Ru4NfYQgZf4mP18eXPTBViyMWiArNEgGI= +github.com/alecthomas/repr v0.5.2 h1:SU73FTI9D1P5UNtvseffFSGmdNci/O6RsqzeXJtP0Qs= +github.com/alecthomas/repr v0.5.2/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= +github.com/antchfx/xmlquery v1.5.1 h1:T9I4Ns1EXiWHy0IqKupGhnfTQtJwlGrpXtauYOoNv78= +github.com/antchfx/xmlquery v1.5.1/go.mod h1:bVqnl7TaDXSReKINrhZz+2E/PbCu2tUahb+wZ7WZNT8= +github.com/antchfx/xpath v1.3.6 h1:s0y+ElRRtTQdfHP609qFu0+c6bglDv20pqOViQjjdPI= +github.com/antchfx/xpath v1.3.6/go.mod h1:i54GszH55fYfBmoZXapTHN8T8tkcHfRgLyVwwqzXNcs= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/ebitengine/purego v0.10.0 h1:QIw4xfpWT6GWTzaW5XEKy3HXoqrJGx1ijYHzTF0/ISU= github.com/ebitengine/purego v0.10.0/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= +github.com/elastic/go-grok v0.3.1 h1:WEhUxe2KrwycMnlvMimJXvzRa7DoByJB4PVUIE1ZD/U= +github.com/elastic/go-grok v0.3.1/go.mod h1:n38ls8ZgOboZRgKcjMY8eFeZFMmcL9n2lP0iHhIDk64= +github.com/elastic/lunes v0.2.2 h1:dZFEaebNg9l+mzvOQN6Nd/c9y6y8rUe3tBWsTgvM08U= +github.com/elastic/lunes v0.2.2/go.mod h1:u3W/BdONWTrh0JjNZ21C907dDc+cUZttZrGa625nf2k= github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= +github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= +github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= github.com/go-viper/mapstructure/v2 v2.5.0 h1:vM5IJoUAy3d7zRSVtIwQgBj7BiWtMPfmPEgAXnvj1Ro= github.com/go-viper/mapstructure/v2 v2.5.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= +github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= +github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= +github.com/goccy/go-json v0.10.6 h1:p8HrPJzOakx/mn/bQtjgNjdTcN+/S6FcG2CTtQOrHVU= +github.com/goccy/go-json v0.10.6/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= github.com/gofrs/flock v0.13.0 h1:95JolYOvGMqeH31+FC7D2+uULf6mG61mEZ/A8dRYMzw= github.com/gofrs/flock v0.13.0/go.mod h1:jxeyy9R1auM5S6JYDBhDt+E2TCo7DkratH4Pgi8P+Z0= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 h1:f+oWsMOmNPc8JmEHVZIycC7hBoQxHH9pNKQORJNozsQ= +github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUvekVysuuOpQKo3191zZyTpiI6se1N1ULghS0sw= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/hashicorp/go-version v1.9.0 h1:CeOIz6k+LoN3qX9Z0tyQrPtiB1DFYRPfCIBtaXPSCnA= +github.com/hashicorp/go-version v1.9.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= +github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= +github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= +github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= +github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/itchyny/gojq v0.12.19 h1:ttXA0XCLEMoaLOz5lSeFOZ6u6Q3QxmG46vfgI4O0DEs= github.com/itchyny/gojq v0.12.19/go.mod h1:5galtVPDywX8SPSOrqjGxkBeDhSxEW1gSxoy7tn1iZY= github.com/itchyny/timefmt-go v0.1.8 h1:1YEo1JvfXeAHKdjelbYr/uCuhkybaHCeTkH8Bo791OI= github.com/itchyny/timefmt-go v0.1.8/go.mod h1:5E46Q+zj7vbTgWY8o5YkMeYb4I6GeWLFnetPy5oBrAI= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/klauspost/cpuid/v2 v2.3.0 h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzhA9Y= +github.com/klauspost/cpuid/v2 v2.3.0/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/lufia/plan9stats v0.0.0-20260330125221-c963978e514e h1:Q6MvJtQK/iRcRtzAscm/zF23XxJlbECiGPyRicsX+Ak= github.com/lufia/plan9stats v0.0.0-20260330125221-c963978e514e/go.mod h1:autxFIvghDt3jPTLoqZ9OZ7s9qTGNAWmYCjVFWPX/zg= +github.com/magefile/mage v1.15.0 h1:BvGheCMAsG3bWUDbZ8AyXXpCNwU9u5CB6sM+HNb9HYg= +github.com/magefile/mage v1.15.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A= github.com/mdlayher/socket v0.6.0 h1:ScZPaAGyO1icQnbFrhPM8mnXyMu9qukC1K4ZoM2IQKU= github.com/mdlayher/socket v0.6.0/go.mod h1:q7vozUAnxSqnjHc12Fik5yUKIzfZ8ITCfMkhOtE9z18= github.com/mdlayher/vsock v1.3.0 h1:bqQfZ1OznI03y6YiXp2sze05RVdzLn/zsfjnjd4+ivI= github.com/mdlayher/vsock v1.3.0/go.mod h1:WsuksavOvwCnV5UqGHUkvAvCy+Dqy81y4goKQTzxxNY= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee h1:W5t00kpgFdJifH4BDsTlE89Zl93FEloxaWZfGcifgq8= +github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw= github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.156.0 h1:wca5xIy5I/8CAylZYgOYzj5P5JAAicBA8uNtiRNh2Zo= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.156.0/go.mod h1:CaT/YS8vvoNgsLewbtwDpS0mAgsHXNXceSPzlP+TeJI= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0 h1:ESNQwLZhQlKcbCzGfFNJu3MkNur35dVBbf7sE0MLDdk= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0/go.mod h1:KW8gom6sRRy60kO9SBSzBy2FGCvfgP7C3cprTqthpaA= github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc= github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt9k/+g42oCprj/FisM4qX9L3sZB3upGN2ZU= @@ -74,16 +132,61 @@ github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiT github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.5.3 h1:jmXUvGomnU1o3W/V5h2VEradbpJDwGrzugQQvL0POH4= github.com/stretchr/objx v0.5.3/go.mod h1:rDQraq+vQZU7Fde9LOZLr8Tax6zZvy4kuNKF+QYS+U0= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/tklauser/go-sysconf v0.3.16 h1:frioLaCQSsF5Cy1jgRBrzr6t502KIIwQ0MArYICU0nA= github.com/tklauser/go-sysconf v0.3.16/go.mod h1:/qNL9xxDhc7tx3HSRsLWNnuzbVfh3e7gh/BmM179nYI= github.com/tklauser/numcpus v0.11.0 h1:nSTwhKH5e1dMNsCdVBukSZrURJRoHbSEQjdEbY+9RXw= github.com/tklauser/numcpus v0.11.0/go.mod h1:z+LwcLq54uWZTX0u/bGobaV34u6V7KNlTZejzM6/3MQ= +github.com/twmb/murmur3 v1.1.8 h1:8Yt9taO/WN3l08xErzjeschgZU2QSrwm1kclYq+0aRg= +github.com/twmb/murmur3 v1.1.8/go.mod h1:Qq/R7NUyOfr65zD+6Q5IHKsJLwP7exErjN6lyyq3OSQ= +github.com/ua-parser/uap-go v0.0.0-20251207011819-db9adb27a0b8 h1:yS0rzVnj7Z/ZeHzvv5erQbO2b8gyTL4CeMNodl9SJMQ= +github.com/ua-parser/uap-go v0.0.0-20251207011819-db9adb27a0b8/go.mod h1:gwANdYmo9R8LLwGnyDFWK2PMsaXXX2HhAvCnb/UhZsM= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= +github.com/zeebo/assert v1.3.0 h1:g7C04CbJuIDKNPFHmsk4hwZDO5O+kntRxzaUoNXj+IQ= +github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= +github.com/zeebo/xxh3 v1.1.0 h1:s7DLGDK45Dyfg7++yxI0khrfwq9661w9EN78eP/UZVs= +github.com/zeebo/xxh3 v1.1.0/go.mod h1:IisAie1LELR4xhVinxWS5+zf1lA4p0MW4T+w+W07F5s= +go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= +go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= +go.opentelemetry.io/collector/client v1.62.0 h1:Vud5nn4gX2TzMnHpNhuUhvAi4GGcO0RsaId0dftHAjM= +go.opentelemetry.io/collector/client v1.62.0/go.mod h1:iao8KfxMeND0zdp+PcHGPY9r1BDgS+OppY7RKLlUeUU= +go.opentelemetry.io/collector/component v1.62.0 h1:F1MHUlUEjSJgwcumsCbbH2rRmTK4dC8m/ipp9v4vFh0= +go.opentelemetry.io/collector/component v1.62.0/go.mod h1:NqdVWse4diWnlqh5WurI2KncJuBXe1zzYtxuC9Mmew0= +go.opentelemetry.io/collector/component/componenttest v0.156.0 h1:IV7xYP57kkKoBk7o9dYvToeotZ369A6/V+QIlLgnsEc= +go.opentelemetry.io/collector/component/componenttest v0.156.0/go.mod h1:YL7ByaKwuSuB+eBtm56awLXFlKJ7KI6jfrsjZd0uv8Y= +go.opentelemetry.io/collector/consumer v1.62.0 h1:nJzGs8soiciZvGhiA4OYwPRRCrTsXnNHrmzi/jaT3ck= +go.opentelemetry.io/collector/consumer v1.62.0/go.mod h1:uNbRHJ9LqgHxcWdLTvRTO4K3SSGZop1qlHKfV5lUvGg= +go.opentelemetry.io/collector/featuregate v1.62.0 h1:pYY7RlulSCTOS9mFWxasMLwYJCfNXHtnOkZlv3jg/V4= +go.opentelemetry.io/collector/featuregate v1.62.0/go.mod h1:4ga1QBMPEejXXmpyJS8lmaRpknJ3Lb9Bvk6e420bUFU= +go.opentelemetry.io/collector/internal/testutil v0.156.0 h1:Nu02vhHA2UQ3Yjyjisk3N24HHxwvw7PQiTz9O1PuiUY= +go.opentelemetry.io/collector/internal/testutil v0.156.0/go.mod h1:Jkjs6rkqs973LqgZ0Fe3zrokQRKULYXPIf4HuqStiEE= +go.opentelemetry.io/collector/pdata v1.62.0 h1:xGdwl2Cs5Rq5nKs0nYvAxm3Qq20HcySVAmUElATS8Es= +go.opentelemetry.io/collector/pdata v1.62.0/go.mod h1:WFy5R6XGpz2Q4MaekeEm+qc4GY5V3+BhQIwGPkp+fj0= +go.opentelemetry.io/collector/pdata/pprofile v0.156.0 h1:TnQzA2d5iMGH5//mGLqPjwdYqsFD/A7o2WgDdppxdVM= +go.opentelemetry.io/collector/pdata/pprofile v0.156.0/go.mod h1:3dtjs/mliblJJCCTXUE0AkpBNfBEybPruj3ml6WCOoI= +go.opentelemetry.io/otel v1.44.1-0.20260622141720-fbe3d073ba93 h1:r3rusw/U3IyJ0+r6xWXv1VF8TTUGVIAnK8tuzf/8Re0= +go.opentelemetry.io/otel v1.44.1-0.20260622141720-fbe3d073ba93/go.mod h1:BMgjTHL9WPRlRjL2oZCBTL4whCGtXch2H4BhOPIAyYc= +go.opentelemetry.io/otel/metric v1.44.1-0.20260622141720-fbe3d073ba93 h1:DCOdBzLW6tMYSutG82cKWgIX9JWNFixROrcgKm7Dn+Q= +go.opentelemetry.io/otel/metric v1.44.1-0.20260622141720-fbe3d073ba93/go.mod h1:8O7hanEPBNgEMmybD3s2VBKcgWOCsA6tzHBPODAiquo= +go.opentelemetry.io/otel/sdk v1.44.0 h1:nHYwb9lK+fJPU/dnT6s7W7Z8itMWyqrnVfbheVYrZ58= +go.opentelemetry.io/otel/sdk v1.44.0/go.mod h1:Osuydd3Se74nqjAKxid74N5eC+jfEqfTegHRnq58oK0= +go.opentelemetry.io/otel/sdk/metric v1.44.1-0.20260622141720-fbe3d073ba93 h1:BoVal+uHGOzlFZvHGq8bNR677inewlKioUjJPdPPCBE= +go.opentelemetry.io/otel/sdk/metric v1.44.1-0.20260622141720-fbe3d073ba93/go.mod h1:xZjeGP2g1Hxokmw5N6WDyiJb4OOKitlYGqGiwgu4CjM= +go.opentelemetry.io/otel/trace v1.44.1-0.20260622141720-fbe3d073ba93 h1:dNiK0YMSSGzwwgfNXkgBGmy33HyfUXNqKu9wBPafZhw= +go.opentelemetry.io/otel/trace v1.44.1-0.20260622141720-fbe3d073ba93/go.mod h1:oLl1jrMQAVo6v3GAggN+1VH9VIz9iUSvW53sW1Q8PIE= +go.opentelemetry.io/proto/slim/otlp v1.10.0 h1:iR97Vs/ZDR+y9TfuP9b1XBtdPWeC+OMslIBmhcLU7jM= +go.opentelemetry.io/proto/slim/otlp v1.10.0/go.mod h1:lV9250stpjYLPNA5viFabIgP2QlUGRT1GdTgAf8SIUk= +go.opentelemetry.io/proto/slim/otlp/collector/profiles/v1development v0.3.0 h1:RUF5rO0hAlgiJt1fzQVzcVs3vZVNHIcMLgOgG4rWNcQ= +go.opentelemetry.io/proto/slim/otlp/collector/profiles/v1development v0.3.0/go.mod h1:I89cynRj8y+383o7tEQVg2SVA6SRgDVIouWPUVXjx0U= +go.opentelemetry.io/proto/slim/otlp/profiles/v1development v0.3.0 h1:CQvJSldHRUN6Z8jsUeYv8J0lXRvygALXIzsmAeCcZE0= +go.opentelemetry.io/proto/slim/otlp/profiles/v1development v0.3.0/go.mod h1:xSQ+mEfJe/GjK1LXEyVOoSI1N9JV9ZI923X5kup43W4= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= go.uber.org/dig v1.19.0 h1:BACLhebsYdpQ7IROQ1AGPjrXcP5dF80U3gKoFzbaq/4= @@ -100,19 +203,86 @@ go.yaml.in/yaml/v2 v2.4.4 h1:tuyd0P+2Ont/d6e2rl3be67goVK4R6deVxCUX5vyPaQ= go.yaml.in/yaml/v2 v2.4.4/go.mod h1:gMZqIpDtDqOfM0uNfy0SkpRhvUryYH0Z6wdMYcacYXQ= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= +golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/exp v0.0.0-20260611194520-c48552f49976 h1:X8Hz2ImujgbmetVuW+w2YkyZChE3cBpZi2P158rTG9M= +golang.org/x/exp v0.0.0-20260611194520-c48552f49976/go.mod h1:vnf4pv9iKZXY58sQE1L86zmNWJ4159e1RkcWiLCkeEY= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= +golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= golang.org/x/net v0.57.0 h1:K5+3DljvIuDG9/Jv9rvyMywYNFCQ9RSUY6OOTTkT+tE= golang.org/x/net v0.57.0/go.mod h1:KpXc8iv+r3XplLAG/f7Jsf9RPszJzdR0f58q9vGOuEU= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.22.0 h1:SZjpbeLmrCk4xhRSZFNZW5gFUeCeFgjekvI/+gfScek= golang.org/x/sync v0.22.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.47.0 h1:o7XGOvZQCADBQQ4Y7VNq2dRWQR7JmOUW8Kxx4ZsNgWs= golang.org/x/sys v0.47.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= +golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= +golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/text v0.40.0 h1:Ub2Z6/xjgF1WrYQz2nuITOEegKFtiIy+rieRJ5lHZKs= golang.org/x/text v0.40.0/go.mod h1:hpnzDAfGV753zIKo+wk3u1bVKCGPbrnF7+7LBF/UHVY= golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/grpc v1.82.1 h1:NnAxzGRA0677vCa4BUkOAnO5+FfQqVl9iUXeD0IqcGE= +google.golang.org/grpc v1.82.1/go.mod h1:yzTZ1TB1Z3SG+LIYaI+WiE8D5+PZ3ArnrSp8zF3+/ZA= google.golang.org/protobuf v1.36.12-0.20260116114154-8c4c4ae446ca h1:/ro7D0tSP+jEnQPzy9e1r5L6mAcEShGlE5kFsShX5O8= google.golang.org/protobuf v1.36.12-0.20260116114154-8c4c4ae446ca/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/comp/core/agenttelemetry/impl/go.mod b/comp/core/agenttelemetry/impl/go.mod index 3b44ccb51407..abb1b9c8e6e7 100644 --- a/comp/core/agenttelemetry/impl/go.mod +++ b/comp/core/agenttelemetry/impl/go.mod @@ -1,6 +1,6 @@ module github.com/DataDog/datadog-agent/comp/core/agenttelemetry/impl -go 1.25.0 +go 1.25.4 require ( github.com/DataDog/datadog-agent/comp/api/api/def v0.72.0-rc.1 @@ -51,6 +51,7 @@ require ( github.com/DataDog/datadog-agent/pkg/fips v0.77.0 // indirect github.com/DataDog/datadog-agent/pkg/gohai v0.69.4 // indirect github.com/DataDog/datadog-agent/pkg/logs/types v0.75.4 // indirect + github.com/DataDog/datadog-agent/pkg/logs/vrl v0.0.0-00010101000000-000000000000 // indirect github.com/DataDog/datadog-agent/pkg/template v0.77.0 // indirect github.com/DataDog/datadog-agent/pkg/util/cache v0.69.4 // indirect github.com/DataDog/datadog-agent/pkg/util/defaultpaths v0.64.0-devel // indirect @@ -61,23 +62,43 @@ require ( github.com/DataDog/datadog-agent/pkg/util/system v0.77.0 // indirect github.com/DataDog/datadog-agent/pkg/util/uuid v0.69.4 // indirect github.com/DataDog/datadog-agent/pkg/util/winutil v0.77.0 // indirect + github.com/DataDog/fastjq v0.0.0-20260506145947-c3336f252fa2 // indirect github.com/DataDog/go-acl v1.0.1 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect + github.com/alecthomas/participle/v2 v2.1.4 // indirect + github.com/antchfx/xmlquery v1.5.1 // indirect + github.com/antchfx/xpath v1.3.6 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/ebitengine/purego v0.10.0 // indirect + github.com/elastic/go-grok v0.3.1 // indirect + github.com/elastic/lunes v0.2.2 // indirect github.com/go-ole/go-ole v1.3.0 // indirect github.com/go-viper/mapstructure/v2 v2.5.0 // indirect + github.com/gobwas/glob v0.2.3 // indirect + github.com/goccy/go-json v0.10.6 // indirect github.com/gofrs/flock v0.13.0 // indirect + github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/hashicorp/go-version v1.9.0 // indirect + github.com/hashicorp/golang-lru v1.0.2 // indirect + github.com/iancoleman/strcase v0.3.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/itchyny/gojq v0.12.19 // indirect github.com/itchyny/timefmt-go v0.1.8 // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/klauspost/cpuid/v2 v2.3.0 // indirect github.com/lufia/plan9stats v0.0.0-20260330125221-c963978e514e // indirect + github.com/magefile/mage v1.15.0 // indirect github.com/mdlayher/socket v0.6.0 // indirect github.com/mdlayher/vsock v1.3.0 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.156.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0 // indirect github.com/patrickmn/go-cache v2.1.0+incompatible // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect @@ -92,17 +113,30 @@ require ( github.com/stretchr/objx v0.5.3 // indirect github.com/tklauser/go-sysconf v0.3.16 // indirect github.com/tklauser/numcpus v0.11.0 // indirect + github.com/twmb/murmur3 v1.1.8 // indirect + github.com/ua-parser/uap-go v0.0.0-20251207011819-db9adb27a0b8 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect + github.com/zeebo/xxh3 v1.1.0 // indirect + go.opentelemetry.io/collector/client v1.62.0 // indirect + go.opentelemetry.io/collector/component v1.62.0 // indirect + go.opentelemetry.io/collector/featuregate v1.62.0 // indirect + go.opentelemetry.io/collector/pdata v1.62.0 // indirect + go.opentelemetry.io/collector/pdata/pprofile v0.156.0 // indirect + go.opentelemetry.io/otel v1.44.1-0.20260622141720-fbe3d073ba93 // indirect + go.opentelemetry.io/otel/metric v1.44.1-0.20260622141720-fbe3d073ba93 // indirect + go.opentelemetry.io/otel/trace v1.44.1-0.20260622141720-fbe3d073ba93 // indirect go.uber.org/dig v1.19.0 // indirect go.uber.org/fx v1.24.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.28.0 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect + golang.org/x/exp v0.0.0-20260611194520-c48552f49976 // indirect golang.org/x/net v0.57.0 // indirect golang.org/x/sync v0.22.0 // indirect golang.org/x/sys v0.47.0 // indirect golang.org/x/text v0.40.0 // indirect golang.org/x/time v0.15.0 // indirect + google.golang.org/grpc v1.82.1 // indirect google.golang.org/protobuf v1.36.12-0.20260116114154-8c4c4ae446ca // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) @@ -186,6 +220,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -214,6 +249,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/comp/core/agenttelemetry/impl/go.sum b/comp/core/agenttelemetry/impl/go.sum index 3e97a3b44c2d..7078ac2f7f77 100644 --- a/comp/core/agenttelemetry/impl/go.sum +++ b/comp/core/agenttelemetry/impl/go.sum @@ -1,37 +1,82 @@ +github.com/DataDog/fastjq v0.0.0-20260506145947-c3336f252fa2 h1:a9xjjGg5UQzUd+yliPDF9e4wQA9qq9PKT+DRDUaonOM= +github.com/DataDog/fastjq v0.0.0-20260506145947-c3336f252fa2/go.mod h1:XbWpLvPZo0LbxPhXTMIXSB98lFwfF9MnkT77iRHTXMY= github.com/DataDog/go-acl v1.0.1 h1:uRbp98YmlVZYqNNyTBFNI3Y6bnziBLyCIR4nRu0bIpU= github.com/DataDog/go-acl v1.0.1/go.mod h1:YJx333qSb3GUqCLIbqKeGaZS2pUYh2IYGI7+FsX18CU= github.com/DataDog/zstd v1.5.8-0.20260421145859-31a7e515a571 h1:zDAogP70WYpLD6MiIjQ9tHZYmkfbFcsfGb26CMf99To= github.com/DataDog/zstd v1.5.8-0.20260421145859-31a7e515a571/go.mod h1:oyU0k4j1rV2Cxqy/hdGZzmVg3nJtHahZBImIK9ejcDA= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= +github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0= +github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k= +github.com/alecthomas/participle/v2 v2.1.4 h1:W/H79S8Sat/krZ3el6sQMvMaahJ+XcM9WSI2naI7w2U= +github.com/alecthomas/participle/v2 v2.1.4/go.mod h1:8tqVbpTX20Ru4NfYQgZf4mP18eXPTBViyMWiArNEgGI= +github.com/alecthomas/repr v0.5.2 h1:SU73FTI9D1P5UNtvseffFSGmdNci/O6RsqzeXJtP0Qs= +github.com/alecthomas/repr v0.5.2/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= +github.com/antchfx/xmlquery v1.5.1 h1:T9I4Ns1EXiWHy0IqKupGhnfTQtJwlGrpXtauYOoNv78= +github.com/antchfx/xmlquery v1.5.1/go.mod h1:bVqnl7TaDXSReKINrhZz+2E/PbCu2tUahb+wZ7WZNT8= +github.com/antchfx/xpath v1.3.6 h1:s0y+ElRRtTQdfHP609qFu0+c6bglDv20pqOViQjjdPI= +github.com/antchfx/xpath v1.3.6/go.mod h1:i54GszH55fYfBmoZXapTHN8T8tkcHfRgLyVwwqzXNcs= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/ebitengine/purego v0.10.0 h1:QIw4xfpWT6GWTzaW5XEKy3HXoqrJGx1ijYHzTF0/ISU= github.com/ebitengine/purego v0.10.0/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= +github.com/elastic/go-grok v0.3.1 h1:WEhUxe2KrwycMnlvMimJXvzRa7DoByJB4PVUIE1ZD/U= +github.com/elastic/go-grok v0.3.1/go.mod h1:n38ls8ZgOboZRgKcjMY8eFeZFMmcL9n2lP0iHhIDk64= +github.com/elastic/lunes v0.2.2 h1:dZFEaebNg9l+mzvOQN6Nd/c9y6y8rUe3tBWsTgvM08U= +github.com/elastic/lunes v0.2.2/go.mod h1:u3W/BdONWTrh0JjNZ21C907dDc+cUZttZrGa625nf2k= github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= +github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= +github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= github.com/go-viper/mapstructure/v2 v2.5.0 h1:vM5IJoUAy3d7zRSVtIwQgBj7BiWtMPfmPEgAXnvj1Ro= github.com/go-viper/mapstructure/v2 v2.5.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= +github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= +github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= +github.com/goccy/go-json v0.10.6 h1:p8HrPJzOakx/mn/bQtjgNjdTcN+/S6FcG2CTtQOrHVU= +github.com/goccy/go-json v0.10.6/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= github.com/gofrs/flock v0.13.0 h1:95JolYOvGMqeH31+FC7D2+uULf6mG61mEZ/A8dRYMzw= github.com/gofrs/flock v0.13.0/go.mod h1:jxeyy9R1auM5S6JYDBhDt+E2TCo7DkratH4Pgi8P+Z0= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 h1:f+oWsMOmNPc8JmEHVZIycC7hBoQxHH9pNKQORJNozsQ= +github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUvekVysuuOpQKo3191zZyTpiI6se1N1ULghS0sw= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/hashicorp/go-version v1.9.0 h1:CeOIz6k+LoN3qX9Z0tyQrPtiB1DFYRPfCIBtaXPSCnA= +github.com/hashicorp/go-version v1.9.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= +github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= +github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= +github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= +github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/itchyny/gojq v0.12.19 h1:ttXA0XCLEMoaLOz5lSeFOZ6u6Q3QxmG46vfgI4O0DEs= github.com/itchyny/gojq v0.12.19/go.mod h1:5galtVPDywX8SPSOrqjGxkBeDhSxEW1gSxoy7tn1iZY= github.com/itchyny/timefmt-go v0.1.8 h1:1YEo1JvfXeAHKdjelbYr/uCuhkybaHCeTkH8Bo791OI= github.com/itchyny/timefmt-go v0.1.8/go.mod h1:5E46Q+zj7vbTgWY8o5YkMeYb4I6GeWLFnetPy5oBrAI= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/klauspost/compress v1.19.0 h1:sXLILfc9jV2QYWkzFOPWStmcUVH2RHEB1JCdY2oVvCQ= github.com/klauspost/compress v1.19.0/go.mod h1:cwPg85FWrGar70rWktvGQj8/hthj3wpl0PGDogxkrSQ= +github.com/klauspost/cpuid/v2 v2.3.0 h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzhA9Y= +github.com/klauspost/cpuid/v2 v2.3.0/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -40,16 +85,29 @@ github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0 github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/lufia/plan9stats v0.0.0-20260330125221-c963978e514e h1:Q6MvJtQK/iRcRtzAscm/zF23XxJlbECiGPyRicsX+Ak= github.com/lufia/plan9stats v0.0.0-20260330125221-c963978e514e/go.mod h1:autxFIvghDt3jPTLoqZ9OZ7s9qTGNAWmYCjVFWPX/zg= +github.com/magefile/mage v1.15.0 h1:BvGheCMAsG3bWUDbZ8AyXXpCNwU9u5CB6sM+HNb9HYg= +github.com/magefile/mage v1.15.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A= github.com/mdlayher/socket v0.6.0 h1:ScZPaAGyO1icQnbFrhPM8mnXyMu9qukC1K4ZoM2IQKU= github.com/mdlayher/socket v0.6.0/go.mod h1:q7vozUAnxSqnjHc12Fik5yUKIzfZ8ITCfMkhOtE9z18= github.com/mdlayher/vsock v1.3.0 h1:bqQfZ1OznI03y6YiXp2sze05RVdzLn/zsfjnjd4+ivI= github.com/mdlayher/vsock v1.3.0/go.mod h1:WsuksavOvwCnV5UqGHUkvAvCy+Dqy81y4goKQTzxxNY= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee h1:W5t00kpgFdJifH4BDsTlE89Zl93FEloxaWZfGcifgq8= +github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw= github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.156.0 h1:wca5xIy5I/8CAylZYgOYzj5P5JAAicBA8uNtiRNh2Zo= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.156.0/go.mod h1:CaT/YS8vvoNgsLewbtwDpS0mAgsHXNXceSPzlP+TeJI= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0 h1:ESNQwLZhQlKcbCzGfFNJu3MkNur35dVBbf7sE0MLDdk= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0/go.mod h1:KW8gom6sRRy60kO9SBSzBy2FGCvfgP7C3cprTqthpaA= github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc= github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt9k/+g42oCprj/FisM4qX9L3sZB3upGN2ZU= @@ -78,16 +136,61 @@ github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiT github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.5.3 h1:jmXUvGomnU1o3W/V5h2VEradbpJDwGrzugQQvL0POH4= github.com/stretchr/objx v0.5.3/go.mod h1:rDQraq+vQZU7Fde9LOZLr8Tax6zZvy4kuNKF+QYS+U0= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/tklauser/go-sysconf v0.3.16 h1:frioLaCQSsF5Cy1jgRBrzr6t502KIIwQ0MArYICU0nA= github.com/tklauser/go-sysconf v0.3.16/go.mod h1:/qNL9xxDhc7tx3HSRsLWNnuzbVfh3e7gh/BmM179nYI= github.com/tklauser/numcpus v0.11.0 h1:nSTwhKH5e1dMNsCdVBukSZrURJRoHbSEQjdEbY+9RXw= github.com/tklauser/numcpus v0.11.0/go.mod h1:z+LwcLq54uWZTX0u/bGobaV34u6V7KNlTZejzM6/3MQ= +github.com/twmb/murmur3 v1.1.8 h1:8Yt9taO/WN3l08xErzjeschgZU2QSrwm1kclYq+0aRg= +github.com/twmb/murmur3 v1.1.8/go.mod h1:Qq/R7NUyOfr65zD+6Q5IHKsJLwP7exErjN6lyyq3OSQ= +github.com/ua-parser/uap-go v0.0.0-20251207011819-db9adb27a0b8 h1:yS0rzVnj7Z/ZeHzvv5erQbO2b8gyTL4CeMNodl9SJMQ= +github.com/ua-parser/uap-go v0.0.0-20251207011819-db9adb27a0b8/go.mod h1:gwANdYmo9R8LLwGnyDFWK2PMsaXXX2HhAvCnb/UhZsM= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= +github.com/zeebo/assert v1.3.0 h1:g7C04CbJuIDKNPFHmsk4hwZDO5O+kntRxzaUoNXj+IQ= +github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= +github.com/zeebo/xxh3 v1.1.0 h1:s7DLGDK45Dyfg7++yxI0khrfwq9661w9EN78eP/UZVs= +github.com/zeebo/xxh3 v1.1.0/go.mod h1:IisAie1LELR4xhVinxWS5+zf1lA4p0MW4T+w+W07F5s= +go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= +go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= +go.opentelemetry.io/collector/client v1.62.0 h1:Vud5nn4gX2TzMnHpNhuUhvAi4GGcO0RsaId0dftHAjM= +go.opentelemetry.io/collector/client v1.62.0/go.mod h1:iao8KfxMeND0zdp+PcHGPY9r1BDgS+OppY7RKLlUeUU= +go.opentelemetry.io/collector/component v1.62.0 h1:F1MHUlUEjSJgwcumsCbbH2rRmTK4dC8m/ipp9v4vFh0= +go.opentelemetry.io/collector/component v1.62.0/go.mod h1:NqdVWse4diWnlqh5WurI2KncJuBXe1zzYtxuC9Mmew0= +go.opentelemetry.io/collector/component/componenttest v0.156.0 h1:IV7xYP57kkKoBk7o9dYvToeotZ369A6/V+QIlLgnsEc= +go.opentelemetry.io/collector/component/componenttest v0.156.0/go.mod h1:YL7ByaKwuSuB+eBtm56awLXFlKJ7KI6jfrsjZd0uv8Y= +go.opentelemetry.io/collector/consumer v1.62.0 h1:nJzGs8soiciZvGhiA4OYwPRRCrTsXnNHrmzi/jaT3ck= +go.opentelemetry.io/collector/consumer v1.62.0/go.mod h1:uNbRHJ9LqgHxcWdLTvRTO4K3SSGZop1qlHKfV5lUvGg= +go.opentelemetry.io/collector/featuregate v1.62.0 h1:pYY7RlulSCTOS9mFWxasMLwYJCfNXHtnOkZlv3jg/V4= +go.opentelemetry.io/collector/featuregate v1.62.0/go.mod h1:4ga1QBMPEejXXmpyJS8lmaRpknJ3Lb9Bvk6e420bUFU= +go.opentelemetry.io/collector/internal/testutil v0.156.0 h1:Nu02vhHA2UQ3Yjyjisk3N24HHxwvw7PQiTz9O1PuiUY= +go.opentelemetry.io/collector/internal/testutil v0.156.0/go.mod h1:Jkjs6rkqs973LqgZ0Fe3zrokQRKULYXPIf4HuqStiEE= +go.opentelemetry.io/collector/pdata v1.62.0 h1:xGdwl2Cs5Rq5nKs0nYvAxm3Qq20HcySVAmUElATS8Es= +go.opentelemetry.io/collector/pdata v1.62.0/go.mod h1:WFy5R6XGpz2Q4MaekeEm+qc4GY5V3+BhQIwGPkp+fj0= +go.opentelemetry.io/collector/pdata/pprofile v0.156.0 h1:TnQzA2d5iMGH5//mGLqPjwdYqsFD/A7o2WgDdppxdVM= +go.opentelemetry.io/collector/pdata/pprofile v0.156.0/go.mod h1:3dtjs/mliblJJCCTXUE0AkpBNfBEybPruj3ml6WCOoI= +go.opentelemetry.io/otel v1.44.1-0.20260622141720-fbe3d073ba93 h1:r3rusw/U3IyJ0+r6xWXv1VF8TTUGVIAnK8tuzf/8Re0= +go.opentelemetry.io/otel v1.44.1-0.20260622141720-fbe3d073ba93/go.mod h1:BMgjTHL9WPRlRjL2oZCBTL4whCGtXch2H4BhOPIAyYc= +go.opentelemetry.io/otel/metric v1.44.1-0.20260622141720-fbe3d073ba93 h1:DCOdBzLW6tMYSutG82cKWgIX9JWNFixROrcgKm7Dn+Q= +go.opentelemetry.io/otel/metric v1.44.1-0.20260622141720-fbe3d073ba93/go.mod h1:8O7hanEPBNgEMmybD3s2VBKcgWOCsA6tzHBPODAiquo= +go.opentelemetry.io/otel/sdk v1.44.0 h1:nHYwb9lK+fJPU/dnT6s7W7Z8itMWyqrnVfbheVYrZ58= +go.opentelemetry.io/otel/sdk v1.44.0/go.mod h1:Osuydd3Se74nqjAKxid74N5eC+jfEqfTegHRnq58oK0= +go.opentelemetry.io/otel/sdk/metric v1.44.1-0.20260622141720-fbe3d073ba93 h1:BoVal+uHGOzlFZvHGq8bNR677inewlKioUjJPdPPCBE= +go.opentelemetry.io/otel/sdk/metric v1.44.1-0.20260622141720-fbe3d073ba93/go.mod h1:xZjeGP2g1Hxokmw5N6WDyiJb4OOKitlYGqGiwgu4CjM= +go.opentelemetry.io/otel/trace v1.44.1-0.20260622141720-fbe3d073ba93 h1:dNiK0YMSSGzwwgfNXkgBGmy33HyfUXNqKu9wBPafZhw= +go.opentelemetry.io/otel/trace v1.44.1-0.20260622141720-fbe3d073ba93/go.mod h1:oLl1jrMQAVo6v3GAggN+1VH9VIz9iUSvW53sW1Q8PIE= +go.opentelemetry.io/proto/slim/otlp v1.10.0 h1:iR97Vs/ZDR+y9TfuP9b1XBtdPWeC+OMslIBmhcLU7jM= +go.opentelemetry.io/proto/slim/otlp v1.10.0/go.mod h1:lV9250stpjYLPNA5viFabIgP2QlUGRT1GdTgAf8SIUk= +go.opentelemetry.io/proto/slim/otlp/collector/profiles/v1development v0.3.0 h1:RUF5rO0hAlgiJt1fzQVzcVs3vZVNHIcMLgOgG4rWNcQ= +go.opentelemetry.io/proto/slim/otlp/collector/profiles/v1development v0.3.0/go.mod h1:I89cynRj8y+383o7tEQVg2SVA6SRgDVIouWPUVXjx0U= +go.opentelemetry.io/proto/slim/otlp/profiles/v1development v0.3.0 h1:CQvJSldHRUN6Z8jsUeYv8J0lXRvygALXIzsmAeCcZE0= +go.opentelemetry.io/proto/slim/otlp/profiles/v1development v0.3.0/go.mod h1:xSQ+mEfJe/GjK1LXEyVOoSI1N9JV9ZI923X5kup43W4= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= go.uber.org/dig v1.19.0 h1:BACLhebsYdpQ7IROQ1AGPjrXcP5dF80U3gKoFzbaq/4= @@ -104,19 +207,86 @@ go.yaml.in/yaml/v2 v2.4.4 h1:tuyd0P+2Ont/d6e2rl3be67goVK4R6deVxCUX5vyPaQ= go.yaml.in/yaml/v2 v2.4.4/go.mod h1:gMZqIpDtDqOfM0uNfy0SkpRhvUryYH0Z6wdMYcacYXQ= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= +golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/exp v0.0.0-20260611194520-c48552f49976 h1:X8Hz2ImujgbmetVuW+w2YkyZChE3cBpZi2P158rTG9M= +golang.org/x/exp v0.0.0-20260611194520-c48552f49976/go.mod h1:vnf4pv9iKZXY58sQE1L86zmNWJ4159e1RkcWiLCkeEY= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= +golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= golang.org/x/net v0.57.0 h1:K5+3DljvIuDG9/Jv9rvyMywYNFCQ9RSUY6OOTTkT+tE= golang.org/x/net v0.57.0/go.mod h1:KpXc8iv+r3XplLAG/f7Jsf9RPszJzdR0f58q9vGOuEU= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.22.0 h1:SZjpbeLmrCk4xhRSZFNZW5gFUeCeFgjekvI/+gfScek= golang.org/x/sync v0.22.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.47.0 h1:o7XGOvZQCADBQQ4Y7VNq2dRWQR7JmOUW8Kxx4ZsNgWs= golang.org/x/sys v0.47.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= +golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= +golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/text v0.40.0 h1:Ub2Z6/xjgF1WrYQz2nuITOEegKFtiIy+rieRJ5lHZKs= golang.org/x/text v0.40.0/go.mod h1:hpnzDAfGV753zIKo+wk3u1bVKCGPbrnF7+7LBF/UHVY= golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/grpc v1.82.1 h1:NnAxzGRA0677vCa4BUkOAnO5+FfQqVl9iUXeD0IqcGE= +google.golang.org/grpc v1.82.1/go.mod h1:yzTZ1TB1Z3SG+LIYaI+WiE8D5+PZ3ArnrSp8zF3+/ZA= google.golang.org/protobuf v1.36.12-0.20260116114154-8c4c4ae446ca h1:/ro7D0tSP+jEnQPzy9e1r5L6mAcEShGlE5kFsShX5O8= google.golang.org/protobuf v1.36.12-0.20260116114154-8c4c4ae446ca/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/comp/core/config/go.mod b/comp/core/config/go.mod index dea8f3735c4b..e47110f3338e 100644 --- a/comp/core/config/go.mod +++ b/comp/core/config/go.mod @@ -152,6 +152,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -180,6 +181,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/comp/core/configstreamconsumer/def/go.mod b/comp/core/configstreamconsumer/def/go.mod index 973388cd3b6a..99fdc091c637 100644 --- a/comp/core/configstreamconsumer/def/go.mod +++ b/comp/core/configstreamconsumer/def/go.mod @@ -81,6 +81,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -109,6 +110,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/comp/core/configsync/go.mod b/comp/core/configsync/go.mod index 6ad383a2c986..99042d239767 100644 --- a/comp/core/configsync/go.mod +++ b/comp/core/configsync/go.mod @@ -164,6 +164,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -192,6 +193,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/comp/core/delegatedauth/api/cloudauth/aws/go.mod b/comp/core/delegatedauth/api/cloudauth/aws/go.mod index 31e75549ef9a..3fd1dee11301 100644 --- a/comp/core/delegatedauth/api/cloudauth/aws/go.mod +++ b/comp/core/delegatedauth/api/cloudauth/aws/go.mod @@ -145,6 +145,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../../../pkg/collector/check/defaults @@ -173,6 +174,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../../../pkg/network/payload diff --git a/comp/core/delegatedauth/go.mod b/comp/core/delegatedauth/go.mod index 075af43fd0ad..85157bc8b932 100644 --- a/comp/core/delegatedauth/go.mod +++ b/comp/core/delegatedauth/go.mod @@ -161,6 +161,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -189,6 +190,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/comp/core/flare/builder/go.mod b/comp/core/flare/builder/go.mod index df68b3670e50..80c039f2cdea 100644 --- a/comp/core/flare/builder/go.mod +++ b/comp/core/flare/builder/go.mod @@ -81,6 +81,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -109,6 +110,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/comp/core/flare/types/go.mod b/comp/core/flare/types/go.mod index 22fc97a48f3e..d9d6cd43f58a 100644 --- a/comp/core/flare/types/go.mod +++ b/comp/core/flare/types/go.mod @@ -96,6 +96,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -124,6 +125,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/comp/core/hostname/hostnameinterface/def/go.mod b/comp/core/hostname/hostnameinterface/def/go.mod index 5d519a612a4c..ed5f9174b185 100644 --- a/comp/core/hostname/hostnameinterface/def/go.mod +++ b/comp/core/hostname/hostnameinterface/def/go.mod @@ -81,6 +81,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../../pkg/collector/check/defaults @@ -109,6 +110,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../../pkg/network/payload diff --git a/comp/core/hostname/hostnameinterface/go.mod b/comp/core/hostname/hostnameinterface/go.mod index a19e7b601933..efc8e31ebdf6 100644 --- a/comp/core/hostname/hostnameinterface/go.mod +++ b/comp/core/hostname/hostnameinterface/go.mod @@ -81,6 +81,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -109,6 +110,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/comp/core/hostname/hostnameinterface/mock/go.mod b/comp/core/hostname/hostnameinterface/mock/go.mod index 69373c9d68ce..3070ded49d29 100644 --- a/comp/core/hostname/hostnameinterface/mock/go.mod +++ b/comp/core/hostname/hostnameinterface/mock/go.mod @@ -103,6 +103,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../../pkg/collector/check/defaults @@ -131,6 +132,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../../pkg/network/payload diff --git a/comp/core/ipc/def/go.mod b/comp/core/ipc/def/go.mod index 1f28b9becdf7..17bc22fb201b 100644 --- a/comp/core/ipc/def/go.mod +++ b/comp/core/ipc/def/go.mod @@ -81,6 +81,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -109,6 +110,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/comp/core/ipc/httphelpers/go.mod b/comp/core/ipc/httphelpers/go.mod index 5a5606443f41..52436c47295a 100644 --- a/comp/core/ipc/httphelpers/go.mod +++ b/comp/core/ipc/httphelpers/go.mod @@ -162,6 +162,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -190,6 +191,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/comp/core/ipc/impl/go.mod b/comp/core/ipc/impl/go.mod index 62097da500eb..a48b54bdd0fc 100644 --- a/comp/core/ipc/impl/go.mod +++ b/comp/core/ipc/impl/go.mod @@ -162,6 +162,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -190,6 +191,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/comp/core/ipc/mock/go.mod b/comp/core/ipc/mock/go.mod index 302544b6d209..63f787be7821 100644 --- a/comp/core/ipc/mock/go.mod +++ b/comp/core/ipc/mock/go.mod @@ -160,6 +160,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -188,6 +189,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/comp/core/log/def/go.mod b/comp/core/log/def/go.mod index 34cd2c26e075..a0d9cdc5624e 100644 --- a/comp/core/log/def/go.mod +++ b/comp/core/log/def/go.mod @@ -92,6 +92,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -120,6 +121,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/comp/core/log/fx/go.mod b/comp/core/log/fx/go.mod index ae7603a38e46..d84b018015ee 100644 --- a/comp/core/log/fx/go.mod +++ b/comp/core/log/fx/go.mod @@ -156,6 +156,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -184,6 +185,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/comp/core/log/impl-trace/go.mod b/comp/core/log/impl-trace/go.mod index 59b514fe16f8..47b9cad7baf9 100644 --- a/comp/core/log/impl-trace/go.mod +++ b/comp/core/log/impl-trace/go.mod @@ -156,6 +156,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -184,6 +185,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/comp/core/log/impl/go.mod b/comp/core/log/impl/go.mod index d1e3013641a8..8a1e6755bea8 100644 --- a/comp/core/log/impl/go.mod +++ b/comp/core/log/impl/go.mod @@ -155,6 +155,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -183,6 +184,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/comp/core/log/mock/go.mod b/comp/core/log/mock/go.mod index fcf3e2ae41fa..014fe2b6e589 100644 --- a/comp/core/log/mock/go.mod +++ b/comp/core/log/mock/go.mod @@ -95,6 +95,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -123,6 +124,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/comp/core/secrets/def/go.mod b/comp/core/secrets/def/go.mod index be3e1a7bb125..2535137e759c 100644 --- a/comp/core/secrets/def/go.mod +++ b/comp/core/secrets/def/go.mod @@ -81,6 +81,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -109,6 +110,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/comp/core/secrets/fx/go.mod b/comp/core/secrets/fx/go.mod index 5dce71e081a1..703165c2e590 100644 --- a/comp/core/secrets/fx/go.mod +++ b/comp/core/secrets/fx/go.mod @@ -172,6 +172,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -200,6 +201,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/comp/core/secrets/impl/go.mod b/comp/core/secrets/impl/go.mod index 9dea6dbb8a87..9c9864da1431 100644 --- a/comp/core/secrets/impl/go.mod +++ b/comp/core/secrets/impl/go.mod @@ -168,6 +168,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -196,6 +197,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/comp/core/secrets/mock/go.mod b/comp/core/secrets/mock/go.mod index 20cf145349cb..b5912560ba18 100644 --- a/comp/core/secrets/mock/go.mod +++ b/comp/core/secrets/mock/go.mod @@ -87,6 +87,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -115,6 +116,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/comp/core/secrets/noop-impl/go.mod b/comp/core/secrets/noop-impl/go.mod index b3b9c8107f99..1a1b5893a3d1 100644 --- a/comp/core/secrets/noop-impl/go.mod +++ b/comp/core/secrets/noop-impl/go.mod @@ -104,6 +104,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -132,6 +133,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/comp/core/secrets/utils/go.mod b/comp/core/secrets/utils/go.mod index 4d5f1d7b7def..138335b90c4d 100644 --- a/comp/core/secrets/utils/go.mod +++ b/comp/core/secrets/utils/go.mod @@ -95,6 +95,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -123,6 +124,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/comp/core/status/go.mod b/comp/core/status/go.mod index dbc44ba23e4a..c6b4a9bb7ab4 100644 --- a/comp/core/status/go.mod +++ b/comp/core/status/go.mod @@ -106,6 +106,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -134,6 +135,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/comp/core/status/statusimpl/go.mod b/comp/core/status/statusimpl/go.mod index 6c29cd794aa8..c44157f2c544 100644 --- a/comp/core/status/statusimpl/go.mod +++ b/comp/core/status/statusimpl/go.mod @@ -163,6 +163,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -191,6 +192,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/comp/core/tagger/def/go.mod b/comp/core/tagger/def/go.mod index f9549043eaa6..c480aad51b96 100644 --- a/comp/core/tagger/def/go.mod +++ b/comp/core/tagger/def/go.mod @@ -160,6 +160,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -188,6 +189,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/comp/core/tagger/fx-remote/go.mod b/comp/core/tagger/fx-remote/go.mod index 6b84c34dc6ce..814ae81c505b 100644 --- a/comp/core/tagger/fx-remote/go.mod +++ b/comp/core/tagger/fx-remote/go.mod @@ -212,6 +212,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -240,6 +241,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/comp/core/tagger/generic_store/go.mod b/comp/core/tagger/generic_store/go.mod index 9d9d08605cb6..8208cbcee072 100644 --- a/comp/core/tagger/generic_store/go.mod +++ b/comp/core/tagger/generic_store/go.mod @@ -94,6 +94,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -122,6 +123,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/comp/core/tagger/impl-remote/go.mod b/comp/core/tagger/impl-remote/go.mod index 88d783189f52..39d6ad7a2af6 100644 --- a/comp/core/tagger/impl-remote/go.mod +++ b/comp/core/tagger/impl-remote/go.mod @@ -217,6 +217,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -245,6 +246,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/comp/core/tagger/origindetection/go.mod b/comp/core/tagger/origindetection/go.mod index 3ef6e4b76442..0db3f68301eb 100644 --- a/comp/core/tagger/origindetection/go.mod +++ b/comp/core/tagger/origindetection/go.mod @@ -92,6 +92,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -120,6 +121,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/comp/core/tagger/subscriber/go.mod b/comp/core/tagger/subscriber/go.mod index 386f587772ab..2d8e9f85f4a6 100644 --- a/comp/core/tagger/subscriber/go.mod +++ b/comp/core/tagger/subscriber/go.mod @@ -124,6 +124,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -152,6 +153,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/comp/core/tagger/tags/go.mod b/comp/core/tagger/tags/go.mod index f2813c1c5533..6f5c8f2e8c78 100644 --- a/comp/core/tagger/tags/go.mod +++ b/comp/core/tagger/tags/go.mod @@ -81,6 +81,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -109,6 +110,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/comp/core/tagger/telemetry/go.mod b/comp/core/tagger/telemetry/go.mod index cda04165778d..f1e049d14a41 100644 --- a/comp/core/tagger/telemetry/go.mod +++ b/comp/core/tagger/telemetry/go.mod @@ -101,6 +101,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -129,6 +130,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/comp/core/tagger/types/go.mod b/comp/core/tagger/types/go.mod index ab50003c62ea..66708a49bace 100644 --- a/comp/core/tagger/types/go.mod +++ b/comp/core/tagger/types/go.mod @@ -94,6 +94,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -122,6 +123,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/comp/core/tagger/utils/go.mod b/comp/core/tagger/utils/go.mod index f2a11f812194..9d205acf591e 100644 --- a/comp/core/tagger/utils/go.mod +++ b/comp/core/tagger/utils/go.mod @@ -92,6 +92,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -120,6 +121,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/comp/core/telemetry/go.mod b/comp/core/telemetry/go.mod index 112e8638b745..bd0bfb73061a 100644 --- a/comp/core/telemetry/go.mod +++ b/comp/core/telemetry/go.mod @@ -114,6 +114,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -142,6 +143,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/comp/def/go.mod b/comp/def/go.mod index a22d7b73d41d..d83ab913d370 100644 --- a/comp/def/go.mod +++ b/comp/def/go.mod @@ -92,6 +92,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../pkg/collector/check/defaults @@ -120,6 +121,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../pkg/network/payload diff --git a/comp/forwarder/defaultforwarder/go.mod b/comp/forwarder/defaultforwarder/go.mod index f5a83c1530d7..783e0ec7cfae 100644 --- a/comp/forwarder/defaultforwarder/go.mod +++ b/comp/forwarder/defaultforwarder/go.mod @@ -181,6 +181,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -209,6 +210,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/comp/forwarder/orchestrator/orchestratorinterface/go.mod b/comp/forwarder/orchestrator/orchestratorinterface/go.mod index af0c9c655fd2..36ffe34e7516 100644 --- a/comp/forwarder/orchestrator/orchestratorinterface/go.mod +++ b/comp/forwarder/orchestrator/orchestratorinterface/go.mod @@ -168,6 +168,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -196,6 +197,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/comp/logs-library/go.mod b/comp/logs-library/go.mod index 5a350e1846b7..55e4ed3c8139 100644 --- a/comp/logs-library/go.mod +++ b/comp/logs-library/go.mod @@ -1,6 +1,6 @@ module github.com/DataDog/datadog-agent/comp/logs-library -go 1.25.0 +go 1.25.4 require ( github.com/DataDog/agent-payload/v5 v5.0.205 @@ -29,7 +29,9 @@ require ( github.com/DataDog/datadog-agent/pkg/util/startstop v0.0.0-00010101000000-000000000000 github.com/DataDog/datadog-agent/pkg/version v0.75.4 github.com/benbjohnson/clock v1.3.5 + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0 github.com/stretchr/testify v1.11.1 + go.opentelemetry.io/collector/pdata v1.62.0 go.uber.org/atomic v1.11.0 golang.org/x/net v0.57.0 ) @@ -54,6 +56,7 @@ require ( github.com/DataDog/datadog-agent/pkg/fips v0.75.4 // indirect github.com/DataDog/datadog-agent/pkg/logs/status/utils v0.75.4 // indirect github.com/DataDog/datadog-agent/pkg/logs/types v0.75.4 // indirect + github.com/DataDog/datadog-agent/pkg/logs/vrl v0.0.0-00010101000000-000000000000 // indirect github.com/DataDog/datadog-agent/pkg/template v0.75.4 // indirect github.com/DataDog/datadog-agent/pkg/util/defaultpaths v0.64.0-devel // indirect github.com/DataDog/datadog-agent/pkg/util/executable v0.75.4 // indirect @@ -64,27 +67,46 @@ require ( github.com/DataDog/datadog-agent/pkg/util/statstracker v0.75.4 // indirect github.com/DataDog/datadog-agent/pkg/util/system v0.75.4 // indirect github.com/DataDog/datadog-agent/pkg/util/winutil v0.75.4 // indirect + github.com/DataDog/fastjq v0.0.0-20260506145947-c3336f252fa2 // indirect github.com/DataDog/go-acl v1.0.1 // indirect github.com/DataDog/zstd v1.5.8-0.20260421145859-31a7e515a571 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect + github.com/alecthomas/participle/v2 v2.1.4 // indirect + github.com/antchfx/xmlquery v1.5.1 // indirect + github.com/antchfx/xpath v1.3.6 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/dustin/go-humanize v1.0.1 // indirect github.com/ebitengine/purego v0.10.0 // indirect + github.com/elastic/go-grok v0.3.1 // indirect + github.com/elastic/lunes v0.2.2 // indirect github.com/fatih/color v1.19.0 // indirect github.com/go-ole/go-ole v1.3.0 // indirect github.com/go-viper/mapstructure/v2 v2.5.0 // indirect + github.com/gobwas/glob v0.2.3 // indirect + github.com/goccy/go-json v0.10.6 // indirect github.com/gofrs/flock v0.13.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect + github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/hashicorp/go-version v1.9.0 // indirect + github.com/hashicorp/golang-lru v1.0.2 // indirect + github.com/iancoleman/strcase v0.3.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/klauspost/cpuid/v2 v2.3.0 // indirect github.com/lufia/plan9stats v0.0.0-20260330125221-c963978e514e // indirect + github.com/magefile/mage v1.15.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.22 // indirect github.com/mdlayher/socket v0.6.0 // indirect github.com/mdlayher/vsock v1.3.0 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.156.0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect github.com/prometheus/client_golang v1.23.3-0.20251103151724-a5ae20370e5e // indirect @@ -97,17 +119,29 @@ require ( github.com/spf13/pflag v1.0.10 // indirect github.com/tklauser/go-sysconf v0.3.16 // indirect github.com/tklauser/numcpus v0.11.0 // indirect + github.com/twmb/murmur3 v1.1.8 // indirect + github.com/ua-parser/uap-go v0.0.0-20251207011819-db9adb27a0b8 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect + github.com/zeebo/xxh3 v1.1.0 // indirect + go.opentelemetry.io/collector/client v1.62.0 // indirect + go.opentelemetry.io/collector/component v1.62.0 // indirect + go.opentelemetry.io/collector/featuregate v1.62.0 // indirect + go.opentelemetry.io/collector/pdata/pprofile v0.156.0 // indirect + go.opentelemetry.io/otel v1.44.1-0.20260622141720-fbe3d073ba93 // indirect + go.opentelemetry.io/otel/metric v1.44.1-0.20260622141720-fbe3d073ba93 // indirect + go.opentelemetry.io/otel/trace v1.44.1-0.20260622141720-fbe3d073ba93 // indirect go.uber.org/dig v1.19.0 // indirect go.uber.org/fx v1.24.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.28.0 // indirect go.yaml.in/yaml/v2 v2.4.4 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect + golang.org/x/exp v0.0.0-20260611194520-c48552f49976 // indirect golang.org/x/sync v0.22.0 // indirect golang.org/x/sys v0.47.0 // indirect golang.org/x/text v0.40.0 // indirect golang.org/x/time v0.15.0 // indirect + google.golang.org/grpc v1.82.1 // indirect google.golang.org/protobuf v1.36.12-0.20260116114154-8c4c4ae446ca // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) @@ -191,6 +225,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../pkg/collector/check/defaults @@ -219,6 +254,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../pkg/network/payload diff --git a/comp/logs-library/go.sum b/comp/logs-library/go.sum index f6834d162a64..720619fae793 100644 --- a/comp/logs-library/go.sum +++ b/comp/logs-library/go.sum @@ -1,11 +1,23 @@ github.com/DataDog/agent-payload/v5 v5.0.205 h1:7+ZNser6vX1ptlZWO1UnYQ1trKoYmYFMvt1/ZIw3iD0= github.com/DataDog/agent-payload/v5 v5.0.205/go.mod h1:GyA1vuCeRywrNNCbYeR0cOYKE8QkOVNAFDqsH8VNF5M= +github.com/DataDog/fastjq v0.0.0-20260506145947-c3336f252fa2 h1:a9xjjGg5UQzUd+yliPDF9e4wQA9qq9PKT+DRDUaonOM= +github.com/DataDog/fastjq v0.0.0-20260506145947-c3336f252fa2/go.mod h1:XbWpLvPZo0LbxPhXTMIXSB98lFwfF9MnkT77iRHTXMY= github.com/DataDog/go-acl v1.0.1 h1:uRbp98YmlVZYqNNyTBFNI3Y6bnziBLyCIR4nRu0bIpU= github.com/DataDog/go-acl v1.0.1/go.mod h1:YJx333qSb3GUqCLIbqKeGaZS2pUYh2IYGI7+FsX18CU= github.com/DataDog/zstd v1.5.8-0.20260421145859-31a7e515a571 h1:zDAogP70WYpLD6MiIjQ9tHZYmkfbFcsfGb26CMf99To= github.com/DataDog/zstd v1.5.8-0.20260421145859-31a7e515a571/go.mod h1:oyU0k4j1rV2Cxqy/hdGZzmVg3nJtHahZBImIK9ejcDA= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= +github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0= +github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k= +github.com/alecthomas/participle/v2 v2.1.4 h1:W/H79S8Sat/krZ3el6sQMvMaahJ+XcM9WSI2naI7w2U= +github.com/alecthomas/participle/v2 v2.1.4/go.mod h1:8tqVbpTX20Ru4NfYQgZf4mP18eXPTBViyMWiArNEgGI= +github.com/alecthomas/repr v0.5.2 h1:SU73FTI9D1P5UNtvseffFSGmdNci/O6RsqzeXJtP0Qs= +github.com/alecthomas/repr v0.5.2/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= +github.com/antchfx/xmlquery v1.5.1 h1:T9I4Ns1EXiWHy0IqKupGhnfTQtJwlGrpXtauYOoNv78= +github.com/antchfx/xmlquery v1.5.1/go.mod h1:bVqnl7TaDXSReKINrhZz+2E/PbCu2tUahb+wZ7WZNT8= +github.com/antchfx/xpath v1.3.6 h1:s0y+ElRRtTQdfHP609qFu0+c6bglDv20pqOViQjjdPI= +github.com/antchfx/xpath v1.3.6/go.mod h1:i54GszH55fYfBmoZXapTHN8T8tkcHfRgLyVwwqzXNcs= github.com/benbjohnson/clock v1.3.5 h1:VvXlSJBzZpA/zum6Sj74hxwYI2DIxRWuNIoXAzHZz5o= github.com/benbjohnson/clock v1.3.5/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= @@ -13,33 +25,66 @@ github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6r github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= github.com/ebitengine/purego v0.10.0 h1:QIw4xfpWT6GWTzaW5XEKy3HXoqrJGx1ijYHzTF0/ISU= github.com/ebitengine/purego v0.10.0/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= +github.com/elastic/go-grok v0.3.1 h1:WEhUxe2KrwycMnlvMimJXvzRa7DoByJB4PVUIE1ZD/U= +github.com/elastic/go-grok v0.3.1/go.mod h1:n38ls8ZgOboZRgKcjMY8eFeZFMmcL9n2lP0iHhIDk64= +github.com/elastic/lunes v0.2.2 h1:dZFEaebNg9l+mzvOQN6Nd/c9y6y8rUe3tBWsTgvM08U= +github.com/elastic/lunes v0.2.2/go.mod h1:u3W/BdONWTrh0JjNZ21C907dDc+cUZttZrGa625nf2k= github.com/fatih/color v1.19.0 h1:Zp3PiM21/9Ld6FzSKyL5c/BULoe/ONr9KlbYVOfG8+w= github.com/fatih/color v1.19.0/go.mod h1:zNk67I0ZUT1bEGsSGyCZYZNrHuTkJJB+r6Q9VuMi0LE= github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= +github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= +github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= github.com/go-viper/mapstructure/v2 v2.5.0 h1:vM5IJoUAy3d7zRSVtIwQgBj7BiWtMPfmPEgAXnvj1Ro= github.com/go-viper/mapstructure/v2 v2.5.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= +github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= +github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= +github.com/goccy/go-json v0.10.6 h1:p8HrPJzOakx/mn/bQtjgNjdTcN+/S6FcG2CTtQOrHVU= +github.com/goccy/go-json v0.10.6/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= github.com/gofrs/flock v0.13.0 h1:95JolYOvGMqeH31+FC7D2+uULf6mG61mEZ/A8dRYMzw= github.com/gofrs/flock v0.13.0/go.mod h1:jxeyy9R1auM5S6JYDBhDt+E2TCo7DkratH4Pgi8P+Z0= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 h1:f+oWsMOmNPc8JmEHVZIycC7hBoQxHH9pNKQORJNozsQ= +github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUvekVysuuOpQKo3191zZyTpiI6se1N1ULghS0sw= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/hashicorp/go-version v1.9.0 h1:CeOIz6k+LoN3qX9Z0tyQrPtiB1DFYRPfCIBtaXPSCnA= +github.com/hashicorp/go-version v1.9.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= +github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= +github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= +github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= +github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.19.0 h1:sXLILfc9jV2QYWkzFOPWStmcUVH2RHEB1JCdY2oVvCQ= github.com/klauspost/compress v1.19.0/go.mod h1:cwPg85FWrGar70rWktvGQj8/hthj3wpl0PGDogxkrSQ= +github.com/klauspost/cpuid/v2 v2.3.0 h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzhA9Y= +github.com/klauspost/cpuid/v2 v2.3.0/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -48,6 +93,8 @@ github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0 github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/lufia/plan9stats v0.0.0-20260330125221-c963978e514e h1:Q6MvJtQK/iRcRtzAscm/zF23XxJlbECiGPyRicsX+Ak= github.com/lufia/plan9stats v0.0.0-20260330125221-c963978e514e/go.mod h1:autxFIvghDt3jPTLoqZ9OZ7s9qTGNAWmYCjVFWPX/zg= +github.com/magefile/mage v1.15.0 h1:BvGheCMAsG3bWUDbZ8AyXXpCNwU9u5CB6sM+HNb9HYg= +github.com/magefile/mage v1.15.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A= github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= github.com/mattn/go-isatty v0.0.22 h1:j8l17JJ9i6VGPUFUYoTUKPSgKe/83EYU2zBC7YNKMw4= @@ -56,10 +103,21 @@ github.com/mdlayher/socket v0.6.0 h1:ScZPaAGyO1icQnbFrhPM8mnXyMu9qukC1K4ZoM2IQKU github.com/mdlayher/socket v0.6.0/go.mod h1:q7vozUAnxSqnjHc12Fik5yUKIzfZ8ITCfMkhOtE9z18= github.com/mdlayher/vsock v1.3.0 h1:bqQfZ1OznI03y6YiXp2sze05RVdzLn/zsfjnjd4+ivI= github.com/mdlayher/vsock v1.3.0/go.mod h1:WsuksavOvwCnV5UqGHUkvAvCy+Dqy81y4goKQTzxxNY= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee h1:W5t00kpgFdJifH4BDsTlE89Zl93FEloxaWZfGcifgq8= +github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw= github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.156.0 h1:wca5xIy5I/8CAylZYgOYzj5P5JAAicBA8uNtiRNh2Zo= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.156.0/go.mod h1:CaT/YS8vvoNgsLewbtwDpS0mAgsHXNXceSPzlP+TeJI= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0 h1:ESNQwLZhQlKcbCzGfFNJu3MkNur35dVBbf7sE0MLDdk= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0/go.mod h1:KW8gom6sRRy60kO9SBSzBy2FGCvfgP7C3cprTqthpaA= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt9k/+g42oCprj/FisM4qX9L3sZB3upGN2ZU= @@ -84,16 +142,61 @@ github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiT github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/tklauser/go-sysconf v0.3.16 h1:frioLaCQSsF5Cy1jgRBrzr6t502KIIwQ0MArYICU0nA= github.com/tklauser/go-sysconf v0.3.16/go.mod h1:/qNL9xxDhc7tx3HSRsLWNnuzbVfh3e7gh/BmM179nYI= github.com/tklauser/numcpus v0.11.0 h1:nSTwhKH5e1dMNsCdVBukSZrURJRoHbSEQjdEbY+9RXw= github.com/tklauser/numcpus v0.11.0/go.mod h1:z+LwcLq54uWZTX0u/bGobaV34u6V7KNlTZejzM6/3MQ= +github.com/twmb/murmur3 v1.1.8 h1:8Yt9taO/WN3l08xErzjeschgZU2QSrwm1kclYq+0aRg= +github.com/twmb/murmur3 v1.1.8/go.mod h1:Qq/R7NUyOfr65zD+6Q5IHKsJLwP7exErjN6lyyq3OSQ= +github.com/ua-parser/uap-go v0.0.0-20251207011819-db9adb27a0b8 h1:yS0rzVnj7Z/ZeHzvv5erQbO2b8gyTL4CeMNodl9SJMQ= +github.com/ua-parser/uap-go v0.0.0-20251207011819-db9adb27a0b8/go.mod h1:gwANdYmo9R8LLwGnyDFWK2PMsaXXX2HhAvCnb/UhZsM= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= +github.com/zeebo/assert v1.3.0 h1:g7C04CbJuIDKNPFHmsk4hwZDO5O+kntRxzaUoNXj+IQ= +github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= +github.com/zeebo/xxh3 v1.1.0 h1:s7DLGDK45Dyfg7++yxI0khrfwq9661w9EN78eP/UZVs= +github.com/zeebo/xxh3 v1.1.0/go.mod h1:IisAie1LELR4xhVinxWS5+zf1lA4p0MW4T+w+W07F5s= +go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= +go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= +go.opentelemetry.io/collector/client v1.62.0 h1:Vud5nn4gX2TzMnHpNhuUhvAi4GGcO0RsaId0dftHAjM= +go.opentelemetry.io/collector/client v1.62.0/go.mod h1:iao8KfxMeND0zdp+PcHGPY9r1BDgS+OppY7RKLlUeUU= +go.opentelemetry.io/collector/component v1.62.0 h1:F1MHUlUEjSJgwcumsCbbH2rRmTK4dC8m/ipp9v4vFh0= +go.opentelemetry.io/collector/component v1.62.0/go.mod h1:NqdVWse4diWnlqh5WurI2KncJuBXe1zzYtxuC9Mmew0= +go.opentelemetry.io/collector/component/componenttest v0.156.0 h1:IV7xYP57kkKoBk7o9dYvToeotZ369A6/V+QIlLgnsEc= +go.opentelemetry.io/collector/component/componenttest v0.156.0/go.mod h1:YL7ByaKwuSuB+eBtm56awLXFlKJ7KI6jfrsjZd0uv8Y= +go.opentelemetry.io/collector/consumer v1.62.0 h1:nJzGs8soiciZvGhiA4OYwPRRCrTsXnNHrmzi/jaT3ck= +go.opentelemetry.io/collector/consumer v1.62.0/go.mod h1:uNbRHJ9LqgHxcWdLTvRTO4K3SSGZop1qlHKfV5lUvGg= +go.opentelemetry.io/collector/featuregate v1.62.0 h1:pYY7RlulSCTOS9mFWxasMLwYJCfNXHtnOkZlv3jg/V4= +go.opentelemetry.io/collector/featuregate v1.62.0/go.mod h1:4ga1QBMPEejXXmpyJS8lmaRpknJ3Lb9Bvk6e420bUFU= +go.opentelemetry.io/collector/internal/testutil v0.156.0 h1:Nu02vhHA2UQ3Yjyjisk3N24HHxwvw7PQiTz9O1PuiUY= +go.opentelemetry.io/collector/internal/testutil v0.156.0/go.mod h1:Jkjs6rkqs973LqgZ0Fe3zrokQRKULYXPIf4HuqStiEE= +go.opentelemetry.io/collector/pdata v1.62.0 h1:xGdwl2Cs5Rq5nKs0nYvAxm3Qq20HcySVAmUElATS8Es= +go.opentelemetry.io/collector/pdata v1.62.0/go.mod h1:WFy5R6XGpz2Q4MaekeEm+qc4GY5V3+BhQIwGPkp+fj0= +go.opentelemetry.io/collector/pdata/pprofile v0.156.0 h1:TnQzA2d5iMGH5//mGLqPjwdYqsFD/A7o2WgDdppxdVM= +go.opentelemetry.io/collector/pdata/pprofile v0.156.0/go.mod h1:3dtjs/mliblJJCCTXUE0AkpBNfBEybPruj3ml6WCOoI= +go.opentelemetry.io/otel v1.44.1-0.20260622141720-fbe3d073ba93 h1:r3rusw/U3IyJ0+r6xWXv1VF8TTUGVIAnK8tuzf/8Re0= +go.opentelemetry.io/otel v1.44.1-0.20260622141720-fbe3d073ba93/go.mod h1:BMgjTHL9WPRlRjL2oZCBTL4whCGtXch2H4BhOPIAyYc= +go.opentelemetry.io/otel/metric v1.44.1-0.20260622141720-fbe3d073ba93 h1:DCOdBzLW6tMYSutG82cKWgIX9JWNFixROrcgKm7Dn+Q= +go.opentelemetry.io/otel/metric v1.44.1-0.20260622141720-fbe3d073ba93/go.mod h1:8O7hanEPBNgEMmybD3s2VBKcgWOCsA6tzHBPODAiquo= +go.opentelemetry.io/otel/sdk v1.44.0 h1:nHYwb9lK+fJPU/dnT6s7W7Z8itMWyqrnVfbheVYrZ58= +go.opentelemetry.io/otel/sdk v1.44.0/go.mod h1:Osuydd3Se74nqjAKxid74N5eC+jfEqfTegHRnq58oK0= +go.opentelemetry.io/otel/sdk/metric v1.44.1-0.20260622141720-fbe3d073ba93 h1:BoVal+uHGOzlFZvHGq8bNR677inewlKioUjJPdPPCBE= +go.opentelemetry.io/otel/sdk/metric v1.44.1-0.20260622141720-fbe3d073ba93/go.mod h1:xZjeGP2g1Hxokmw5N6WDyiJb4OOKitlYGqGiwgu4CjM= +go.opentelemetry.io/otel/trace v1.44.1-0.20260622141720-fbe3d073ba93 h1:dNiK0YMSSGzwwgfNXkgBGmy33HyfUXNqKu9wBPafZhw= +go.opentelemetry.io/otel/trace v1.44.1-0.20260622141720-fbe3d073ba93/go.mod h1:oLl1jrMQAVo6v3GAggN+1VH9VIz9iUSvW53sW1Q8PIE= +go.opentelemetry.io/proto/slim/otlp v1.10.0 h1:iR97Vs/ZDR+y9TfuP9b1XBtdPWeC+OMslIBmhcLU7jM= +go.opentelemetry.io/proto/slim/otlp v1.10.0/go.mod h1:lV9250stpjYLPNA5viFabIgP2QlUGRT1GdTgAf8SIUk= +go.opentelemetry.io/proto/slim/otlp/collector/profiles/v1development v0.3.0 h1:RUF5rO0hAlgiJt1fzQVzcVs3vZVNHIcMLgOgG4rWNcQ= +go.opentelemetry.io/proto/slim/otlp/collector/profiles/v1development v0.3.0/go.mod h1:I89cynRj8y+383o7tEQVg2SVA6SRgDVIouWPUVXjx0U= +go.opentelemetry.io/proto/slim/otlp/profiles/v1development v0.3.0 h1:CQvJSldHRUN6Z8jsUeYv8J0lXRvygALXIzsmAeCcZE0= +go.opentelemetry.io/proto/slim/otlp/profiles/v1development v0.3.0/go.mod h1:xSQ+mEfJe/GjK1LXEyVOoSI1N9JV9ZI923X5kup43W4= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= go.uber.org/dig v1.19.0 h1:BACLhebsYdpQ7IROQ1AGPjrXcP5dF80U3gKoFzbaq/4= @@ -113,29 +216,81 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= +golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/exp v0.0.0-20260611194520-c48552f49976 h1:X8Hz2ImujgbmetVuW+w2YkyZChE3cBpZi2P158rTG9M= +golang.org/x/exp v0.0.0-20260611194520-c48552f49976/go.mod h1:vnf4pv9iKZXY58sQE1L86zmNWJ4159e1RkcWiLCkeEY= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= +golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= golang.org/x/net v0.57.0 h1:K5+3DljvIuDG9/Jv9rvyMywYNFCQ9RSUY6OOTTkT+tE= golang.org/x/net v0.57.0/go.mod h1:KpXc8iv+r3XplLAG/f7Jsf9RPszJzdR0f58q9vGOuEU= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.22.0 h1:SZjpbeLmrCk4xhRSZFNZW5gFUeCeFgjekvI/+gfScek= golang.org/x/sync v0.22.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.47.0 h1:o7XGOvZQCADBQQ4Y7VNq2dRWQR7JmOUW8Kxx4ZsNgWs= golang.org/x/sys v0.47.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= +golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= +golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/text v0.40.0 h1:Ub2Z6/xjgF1WrYQz2nuITOEegKFtiIy+rieRJ5lHZKs= golang.org/x/text v0.40.0/go.mod h1:hpnzDAfGV753zIKo+wk3u1bVKCGPbrnF7+7LBF/UHVY= golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= @@ -144,10 +299,16 @@ golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGm golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/grpc v1.82.1 h1:NnAxzGRA0677vCa4BUkOAnO5+FfQqVl9iUXeD0IqcGE= +google.golang.org/grpc v1.82.1/go.mod h1:yzTZ1TB1Z3SG+LIYaI+WiE8D5+PZ3ArnrSp8zF3+/ZA= google.golang.org/protobuf v1.36.12-0.20260116114154-8c4c4ae446ca h1:/ro7D0tSP+jEnQPzy9e1r5L6mAcEShGlE5kFsShX5O8= google.golang.org/protobuf v1.36.12-0.20260116114154-8c4c4ae446ca/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/comp/logs/agent/config/go.mod b/comp/logs/agent/config/go.mod index 6f079d2b5cab..c898ed786817 100644 --- a/comp/logs/agent/config/go.mod +++ b/comp/logs/agent/config/go.mod @@ -1,6 +1,6 @@ module github.com/DataDog/datadog-agent/comp/logs/agent/config -go 1.25.0 +go 1.25.4 require ( github.com/DataDog/datadog-agent/comp/core/config v0.64.0-devel @@ -10,11 +10,16 @@ require ( github.com/DataDog/datadog-agent/pkg/config/structure v0.77.0-devel.0.20260211235139-a5361978c2b6 github.com/DataDog/datadog-agent/pkg/config/utils v0.75.4 github.com/DataDog/datadog-agent/pkg/logs/types v0.75.4 + github.com/DataDog/datadog-agent/pkg/logs/vrl v0.0.0-00010101000000-000000000000 github.com/DataDog/datadog-agent/pkg/util/log v0.75.4 github.com/DataDog/datadog-agent/pkg/util/pointer v0.75.4 github.com/DataDog/datadog-agent/pkg/util/scrubber v0.75.4 + github.com/DataDog/fastjq v0.0.0-20260506145947-c3336f252fa2 + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0 github.com/stretchr/testify v1.11.1 + go.opentelemetry.io/collector/component v1.62.0 go.uber.org/atomic v1.11.0 + go.uber.org/zap v1.28.0 go.yaml.in/yaml/v3 v3.0.4 ) @@ -46,16 +51,36 @@ require ( github.com/DataDog/datadog-agent/pkg/version v0.75.4 // indirect github.com/DataDog/go-acl v1.0.1 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect + github.com/alecthomas/participle/v2 v2.1.4 // indirect + github.com/alecthomas/repr v0.5.2 // indirect + github.com/antchfx/xmlquery v1.5.1 // indirect + github.com/antchfx/xpath v1.3.6 // indirect + github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/ebitengine/purego v0.10.0 // indirect + github.com/elastic/go-grok v0.3.1 // indirect + github.com/elastic/lunes v0.2.2 // indirect github.com/go-ole/go-ole v1.3.0 // indirect github.com/go-viper/mapstructure/v2 v2.5.0 // indirect + github.com/gobwas/glob v0.2.3 // indirect + github.com/goccy/go-json v0.10.6 // indirect github.com/gofrs/flock v0.13.0 // indirect + github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/hashicorp/go-version v1.9.0 // indirect + github.com/hashicorp/golang-lru v1.0.2 // indirect + github.com/iancoleman/strcase v0.3.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/klauspost/cpuid/v2 v2.3.0 // indirect github.com/lufia/plan9stats v0.0.0-20260330125221-c963978e514e // indirect + github.com/magefile/mage v1.15.0 // indirect github.com/mdlayher/socket v0.6.0 // indirect github.com/mdlayher/vsock v1.3.0 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.156.0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect github.com/shirou/gopsutil/v4 v4.26.6 // indirect @@ -64,17 +89,29 @@ require ( github.com/spf13/pflag v1.0.10 // indirect github.com/tklauser/go-sysconf v0.3.16 // indirect github.com/tklauser/numcpus v0.11.0 // indirect + github.com/twmb/murmur3 v1.1.8 // indirect + github.com/ua-parser/uap-go v0.0.0-20251207011819-db9adb27a0b8 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect + github.com/zeebo/xxh3 v1.1.0 // indirect + go.opentelemetry.io/collector/client v1.62.0 // indirect + go.opentelemetry.io/collector/featuregate v1.62.0 // indirect + go.opentelemetry.io/collector/pdata v1.62.0 // indirect + go.opentelemetry.io/collector/pdata/pprofile v0.156.0 // indirect + go.opentelemetry.io/otel v1.44.1-0.20260622141720-fbe3d073ba93 // indirect + go.opentelemetry.io/otel/metric v1.44.1-0.20260622141720-fbe3d073ba93 // indirect + go.opentelemetry.io/otel/sdk/metric v1.44.1-0.20260622141720-fbe3d073ba93 // indirect + go.opentelemetry.io/otel/trace v1.44.1-0.20260622141720-fbe3d073ba93 // indirect go.uber.org/dig v1.19.0 // indirect go.uber.org/fx v1.24.0 // indirect go.uber.org/multierr v1.11.0 // indirect - go.uber.org/zap v1.28.0 // indirect go.yaml.in/yaml/v2 v2.4.4 // indirect + golang.org/x/exp v0.0.0-20260611194520-c48552f49976 // indirect golang.org/x/net v0.57.0 // indirect golang.org/x/sync v0.22.0 // indirect golang.org/x/sys v0.47.0 // indirect golang.org/x/text v0.40.0 // indirect golang.org/x/time v0.15.0 // indirect + google.golang.org/grpc v1.82.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) @@ -157,6 +194,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -185,6 +223,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/comp/logs/agent/config/go.sum b/comp/logs/agent/config/go.sum index f817a0606f37..52fe7f9eea4b 100644 --- a/comp/logs/agent/config/go.sum +++ b/comp/logs/agent/config/go.sum @@ -1,37 +1,97 @@ +github.com/DataDog/fastjq v0.0.0-20260506145947-c3336f252fa2 h1:a9xjjGg5UQzUd+yliPDF9e4wQA9qq9PKT+DRDUaonOM= +github.com/DataDog/fastjq v0.0.0-20260506145947-c3336f252fa2/go.mod h1:XbWpLvPZo0LbxPhXTMIXSB98lFwfF9MnkT77iRHTXMY= github.com/DataDog/go-acl v1.0.1 h1:uRbp98YmlVZYqNNyTBFNI3Y6bnziBLyCIR4nRu0bIpU= github.com/DataDog/go-acl v1.0.1/go.mod h1:YJx333qSb3GUqCLIbqKeGaZS2pUYh2IYGI7+FsX18CU= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= +github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0= +github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k= +github.com/alecthomas/participle/v2 v2.1.4 h1:W/H79S8Sat/krZ3el6sQMvMaahJ+XcM9WSI2naI7w2U= +github.com/alecthomas/participle/v2 v2.1.4/go.mod h1:8tqVbpTX20Ru4NfYQgZf4mP18eXPTBViyMWiArNEgGI= +github.com/alecthomas/repr v0.5.2 h1:SU73FTI9D1P5UNtvseffFSGmdNci/O6RsqzeXJtP0Qs= +github.com/alecthomas/repr v0.5.2/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= +github.com/antchfx/xmlquery v1.5.1 h1:T9I4Ns1EXiWHy0IqKupGhnfTQtJwlGrpXtauYOoNv78= +github.com/antchfx/xmlquery v1.5.1/go.mod h1:bVqnl7TaDXSReKINrhZz+2E/PbCu2tUahb+wZ7WZNT8= +github.com/antchfx/xpath v1.3.6 h1:s0y+ElRRtTQdfHP609qFu0+c6bglDv20pqOViQjjdPI= +github.com/antchfx/xpath v1.3.6/go.mod h1:i54GszH55fYfBmoZXapTHN8T8tkcHfRgLyVwwqzXNcs= +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/ebitengine/purego v0.10.0 h1:QIw4xfpWT6GWTzaW5XEKy3HXoqrJGx1ijYHzTF0/ISU= github.com/ebitengine/purego v0.10.0/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= +github.com/elastic/go-grok v0.3.1 h1:WEhUxe2KrwycMnlvMimJXvzRa7DoByJB4PVUIE1ZD/U= +github.com/elastic/go-grok v0.3.1/go.mod h1:n38ls8ZgOboZRgKcjMY8eFeZFMmcL9n2lP0iHhIDk64= +github.com/elastic/lunes v0.2.2 h1:dZFEaebNg9l+mzvOQN6Nd/c9y6y8rUe3tBWsTgvM08U= +github.com/elastic/lunes v0.2.2/go.mod h1:u3W/BdONWTrh0JjNZ21C907dDc+cUZttZrGa625nf2k= github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= +github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= +github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= github.com/go-viper/mapstructure/v2 v2.5.0 h1:vM5IJoUAy3d7zRSVtIwQgBj7BiWtMPfmPEgAXnvj1Ro= github.com/go-viper/mapstructure/v2 v2.5.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= +github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= +github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= +github.com/goccy/go-json v0.10.6 h1:p8HrPJzOakx/mn/bQtjgNjdTcN+/S6FcG2CTtQOrHVU= +github.com/goccy/go-json v0.10.6/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= github.com/gofrs/flock v0.13.0 h1:95JolYOvGMqeH31+FC7D2+uULf6mG61mEZ/A8dRYMzw= github.com/gofrs/flock v0.13.0/go.mod h1:jxeyy9R1auM5S6JYDBhDt+E2TCo7DkratH4Pgi8P+Z0= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 h1:f+oWsMOmNPc8JmEHVZIycC7hBoQxHH9pNKQORJNozsQ= +github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUvekVysuuOpQKo3191zZyTpiI6se1N1ULghS0sw= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/hashicorp/go-version v1.9.0 h1:CeOIz6k+LoN3qX9Z0tyQrPtiB1DFYRPfCIBtaXPSCnA= +github.com/hashicorp/go-version v1.9.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= +github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= +github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= +github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= +github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/klauspost/cpuid/v2 v2.3.0 h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzhA9Y= +github.com/klauspost/cpuid/v2 v2.3.0/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/lufia/plan9stats v0.0.0-20260330125221-c963978e514e h1:Q6MvJtQK/iRcRtzAscm/zF23XxJlbECiGPyRicsX+Ak= github.com/lufia/plan9stats v0.0.0-20260330125221-c963978e514e/go.mod h1:autxFIvghDt3jPTLoqZ9OZ7s9qTGNAWmYCjVFWPX/zg= +github.com/magefile/mage v1.15.0 h1:BvGheCMAsG3bWUDbZ8AyXXpCNwU9u5CB6sM+HNb9HYg= +github.com/magefile/mage v1.15.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A= github.com/mdlayher/socket v0.6.0 h1:ScZPaAGyO1icQnbFrhPM8mnXyMu9qukC1K4ZoM2IQKU= github.com/mdlayher/socket v0.6.0/go.mod h1:q7vozUAnxSqnjHc12Fik5yUKIzfZ8ITCfMkhOtE9z18= github.com/mdlayher/vsock v1.3.0 h1:bqQfZ1OznI03y6YiXp2sze05RVdzLn/zsfjnjd4+ivI= github.com/mdlayher/vsock v1.3.0/go.mod h1:WsuksavOvwCnV5UqGHUkvAvCy+Dqy81y4goKQTzxxNY= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee h1:W5t00kpgFdJifH4BDsTlE89Zl93FEloxaWZfGcifgq8= +github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw= github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.156.0 h1:wca5xIy5I/8CAylZYgOYzj5P5JAAicBA8uNtiRNh2Zo= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.156.0/go.mod h1:CaT/YS8vvoNgsLewbtwDpS0mAgsHXNXceSPzlP+TeJI= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0 h1:ESNQwLZhQlKcbCzGfFNJu3MkNur35dVBbf7sE0MLDdk= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0/go.mod h1:KW8gom6sRRy60kO9SBSzBy2FGCvfgP7C3cprTqthpaA= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt9k/+g42oCprj/FisM4qX9L3sZB3upGN2ZU= @@ -48,14 +108,59 @@ github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiT github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/tklauser/go-sysconf v0.3.16 h1:frioLaCQSsF5Cy1jgRBrzr6t502KIIwQ0MArYICU0nA= github.com/tklauser/go-sysconf v0.3.16/go.mod h1:/qNL9xxDhc7tx3HSRsLWNnuzbVfh3e7gh/BmM179nYI= github.com/tklauser/numcpus v0.11.0 h1:nSTwhKH5e1dMNsCdVBukSZrURJRoHbSEQjdEbY+9RXw= github.com/tklauser/numcpus v0.11.0/go.mod h1:z+LwcLq54uWZTX0u/bGobaV34u6V7KNlTZejzM6/3MQ= +github.com/twmb/murmur3 v1.1.8 h1:8Yt9taO/WN3l08xErzjeschgZU2QSrwm1kclYq+0aRg= +github.com/twmb/murmur3 v1.1.8/go.mod h1:Qq/R7NUyOfr65zD+6Q5IHKsJLwP7exErjN6lyyq3OSQ= +github.com/ua-parser/uap-go v0.0.0-20251207011819-db9adb27a0b8 h1:yS0rzVnj7Z/ZeHzvv5erQbO2b8gyTL4CeMNodl9SJMQ= +github.com/ua-parser/uap-go v0.0.0-20251207011819-db9adb27a0b8/go.mod h1:gwANdYmo9R8LLwGnyDFWK2PMsaXXX2HhAvCnb/UhZsM= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= +github.com/zeebo/assert v1.3.0 h1:g7C04CbJuIDKNPFHmsk4hwZDO5O+kntRxzaUoNXj+IQ= +github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= +github.com/zeebo/xxh3 v1.1.0 h1:s7DLGDK45Dyfg7++yxI0khrfwq9661w9EN78eP/UZVs= +github.com/zeebo/xxh3 v1.1.0/go.mod h1:IisAie1LELR4xhVinxWS5+zf1lA4p0MW4T+w+W07F5s= +go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= +go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= +go.opentelemetry.io/collector/client v1.62.0 h1:Vud5nn4gX2TzMnHpNhuUhvAi4GGcO0RsaId0dftHAjM= +go.opentelemetry.io/collector/client v1.62.0/go.mod h1:iao8KfxMeND0zdp+PcHGPY9r1BDgS+OppY7RKLlUeUU= +go.opentelemetry.io/collector/component v1.62.0 h1:F1MHUlUEjSJgwcumsCbbH2rRmTK4dC8m/ipp9v4vFh0= +go.opentelemetry.io/collector/component v1.62.0/go.mod h1:NqdVWse4diWnlqh5WurI2KncJuBXe1zzYtxuC9Mmew0= +go.opentelemetry.io/collector/component/componenttest v0.156.0 h1:IV7xYP57kkKoBk7o9dYvToeotZ369A6/V+QIlLgnsEc= +go.opentelemetry.io/collector/component/componenttest v0.156.0/go.mod h1:YL7ByaKwuSuB+eBtm56awLXFlKJ7KI6jfrsjZd0uv8Y= +go.opentelemetry.io/collector/consumer v1.62.0 h1:nJzGs8soiciZvGhiA4OYwPRRCrTsXnNHrmzi/jaT3ck= +go.opentelemetry.io/collector/consumer v1.62.0/go.mod h1:uNbRHJ9LqgHxcWdLTvRTO4K3SSGZop1qlHKfV5lUvGg= +go.opentelemetry.io/collector/featuregate v1.62.0 h1:pYY7RlulSCTOS9mFWxasMLwYJCfNXHtnOkZlv3jg/V4= +go.opentelemetry.io/collector/featuregate v1.62.0/go.mod h1:4ga1QBMPEejXXmpyJS8lmaRpknJ3Lb9Bvk6e420bUFU= +go.opentelemetry.io/collector/internal/testutil v0.156.0 h1:Nu02vhHA2UQ3Yjyjisk3N24HHxwvw7PQiTz9O1PuiUY= +go.opentelemetry.io/collector/internal/testutil v0.156.0/go.mod h1:Jkjs6rkqs973LqgZ0Fe3zrokQRKULYXPIf4HuqStiEE= +go.opentelemetry.io/collector/pdata v1.62.0 h1:xGdwl2Cs5Rq5nKs0nYvAxm3Qq20HcySVAmUElATS8Es= +go.opentelemetry.io/collector/pdata v1.62.0/go.mod h1:WFy5R6XGpz2Q4MaekeEm+qc4GY5V3+BhQIwGPkp+fj0= +go.opentelemetry.io/collector/pdata/pprofile v0.156.0 h1:TnQzA2d5iMGH5//mGLqPjwdYqsFD/A7o2WgDdppxdVM= +go.opentelemetry.io/collector/pdata/pprofile v0.156.0/go.mod h1:3dtjs/mliblJJCCTXUE0AkpBNfBEybPruj3ml6WCOoI= +go.opentelemetry.io/otel v1.44.1-0.20260622141720-fbe3d073ba93 h1:r3rusw/U3IyJ0+r6xWXv1VF8TTUGVIAnK8tuzf/8Re0= +go.opentelemetry.io/otel v1.44.1-0.20260622141720-fbe3d073ba93/go.mod h1:BMgjTHL9WPRlRjL2oZCBTL4whCGtXch2H4BhOPIAyYc= +go.opentelemetry.io/otel/metric v1.44.1-0.20260622141720-fbe3d073ba93 h1:DCOdBzLW6tMYSutG82cKWgIX9JWNFixROrcgKm7Dn+Q= +go.opentelemetry.io/otel/metric v1.44.1-0.20260622141720-fbe3d073ba93/go.mod h1:8O7hanEPBNgEMmybD3s2VBKcgWOCsA6tzHBPODAiquo= +go.opentelemetry.io/otel/sdk v1.44.0 h1:nHYwb9lK+fJPU/dnT6s7W7Z8itMWyqrnVfbheVYrZ58= +go.opentelemetry.io/otel/sdk v1.44.0/go.mod h1:Osuydd3Se74nqjAKxid74N5eC+jfEqfTegHRnq58oK0= +go.opentelemetry.io/otel/sdk/metric v1.44.1-0.20260622141720-fbe3d073ba93 h1:BoVal+uHGOzlFZvHGq8bNR677inewlKioUjJPdPPCBE= +go.opentelemetry.io/otel/sdk/metric v1.44.1-0.20260622141720-fbe3d073ba93/go.mod h1:xZjeGP2g1Hxokmw5N6WDyiJb4OOKitlYGqGiwgu4CjM= +go.opentelemetry.io/otel/trace v1.44.1-0.20260622141720-fbe3d073ba93 h1:dNiK0YMSSGzwwgfNXkgBGmy33HyfUXNqKu9wBPafZhw= +go.opentelemetry.io/otel/trace v1.44.1-0.20260622141720-fbe3d073ba93/go.mod h1:oLl1jrMQAVo6v3GAggN+1VH9VIz9iUSvW53sW1Q8PIE= +go.opentelemetry.io/proto/slim/otlp v1.10.0 h1:iR97Vs/ZDR+y9TfuP9b1XBtdPWeC+OMslIBmhcLU7jM= +go.opentelemetry.io/proto/slim/otlp v1.10.0/go.mod h1:lV9250stpjYLPNA5viFabIgP2QlUGRT1GdTgAf8SIUk= +go.opentelemetry.io/proto/slim/otlp/collector/profiles/v1development v0.3.0 h1:RUF5rO0hAlgiJt1fzQVzcVs3vZVNHIcMLgOgG4rWNcQ= +go.opentelemetry.io/proto/slim/otlp/collector/profiles/v1development v0.3.0/go.mod h1:I89cynRj8y+383o7tEQVg2SVA6SRgDVIouWPUVXjx0U= +go.opentelemetry.io/proto/slim/otlp/profiles/v1development v0.3.0 h1:CQvJSldHRUN6Z8jsUeYv8J0lXRvygALXIzsmAeCcZE0= +go.opentelemetry.io/proto/slim/otlp/profiles/v1development v0.3.0/go.mod h1:xSQ+mEfJe/GjK1LXEyVOoSI1N9JV9ZI923X5kup43W4= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= go.uber.org/dig v1.19.0 h1:BACLhebsYdpQ7IROQ1AGPjrXcP5dF80U3gKoFzbaq/4= @@ -72,19 +177,88 @@ go.yaml.in/yaml/v2 v2.4.4 h1:tuyd0P+2Ont/d6e2rl3be67goVK4R6deVxCUX5vyPaQ= go.yaml.in/yaml/v2 v2.4.4/go.mod h1:gMZqIpDtDqOfM0uNfy0SkpRhvUryYH0Z6wdMYcacYXQ= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= +golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/exp v0.0.0-20260611194520-c48552f49976 h1:X8Hz2ImujgbmetVuW+w2YkyZChE3cBpZi2P158rTG9M= +golang.org/x/exp v0.0.0-20260611194520-c48552f49976/go.mod h1:vnf4pv9iKZXY58sQE1L86zmNWJ4159e1RkcWiLCkeEY= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= +golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= golang.org/x/net v0.57.0 h1:K5+3DljvIuDG9/Jv9rvyMywYNFCQ9RSUY6OOTTkT+tE= golang.org/x/net v0.57.0/go.mod h1:KpXc8iv+r3XplLAG/f7Jsf9RPszJzdR0f58q9vGOuEU= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.22.0 h1:SZjpbeLmrCk4xhRSZFNZW5gFUeCeFgjekvI/+gfScek= golang.org/x/sync v0.22.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.47.0 h1:o7XGOvZQCADBQQ4Y7VNq2dRWQR7JmOUW8Kxx4ZsNgWs= golang.org/x/sys v0.47.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= +golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= +golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/text v0.40.0 h1:Ub2Z6/xjgF1WrYQz2nuITOEegKFtiIy+rieRJ5lHZKs= golang.org/x/text v0.40.0/go.mod h1:hpnzDAfGV753zIKo+wk3u1bVKCGPbrnF7+7LBF/UHVY= golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/grpc v1.82.1 h1:NnAxzGRA0677vCa4BUkOAnO5+FfQqVl9iUXeD0IqcGE= +google.golang.org/grpc v1.82.1/go.mod h1:yzTZ1TB1Z3SG+LIYaI+WiE8D5+PZ3ArnrSp8zF3+/ZA= +google.golang.org/protobuf v1.36.12-0.20260116114154-8c4c4ae446ca h1:/ro7D0tSP+jEnQPzy9e1r5L6mAcEShGlE5kFsShX5O8= +google.golang.org/protobuf v1.36.12-0.20260116114154-8c4c4ae446ca/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/comp/netflow/payload/go.mod b/comp/netflow/payload/go.mod index 0e7db89862ee..4939c4416a60 100644 --- a/comp/netflow/payload/go.mod +++ b/comp/netflow/payload/go.mod @@ -81,6 +81,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -109,6 +110,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/comp/otelcol/collector-contrib/def/go.mod b/comp/otelcol/collector-contrib/def/go.mod index fe3c6efe75b3..6451284e38f2 100644 --- a/comp/otelcol/collector-contrib/def/go.mod +++ b/comp/otelcol/collector-contrib/def/go.mod @@ -197,6 +197,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -225,6 +226,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/comp/otelcol/collector-contrib/impl/go.mod b/comp/otelcol/collector-contrib/impl/go.mod index 711108fff05b..de1a17b4d2dc 100644 --- a/comp/otelcol/collector-contrib/impl/go.mod +++ b/comp/otelcol/collector-contrib/impl/go.mod @@ -107,6 +107,7 @@ require ( github.com/DataDog/datadog-agent/pkg/config/utils v0.80.4 // indirect github.com/DataDog/datadog-agent/pkg/fips v0.80.4 // indirect github.com/DataDog/datadog-agent/pkg/logs/types v0.80.2 // indirect + github.com/DataDog/datadog-agent/pkg/logs/vrl v0.0.0-00010101000000-000000000000 // indirect github.com/DataDog/datadog-agent/pkg/metrics v0.80.4 // indirect github.com/DataDog/datadog-agent/pkg/opentelemetry-mapping-go/inframetadata v0.82.0-devel.0.20260617134427-74e6d071eaae // indirect github.com/DataDog/datadog-agent/pkg/opentelemetry-mapping-go/otlp/attributes v0.82.0-devel.0.20260617134427-74e6d071eaae // indirect @@ -141,6 +142,7 @@ require ( github.com/DataDog/datadog-agent/pkg/util/winutil v0.82.0-devel.0.20260624113434-509b872045c2 // indirect github.com/DataDog/datadog-agent/pkg/version v0.80.4 // indirect github.com/DataDog/datadog-api-client-go/v2 v2.62.0 // indirect + github.com/DataDog/fastjq v0.0.0-20260506145947-c3336f252fa2 // indirect github.com/DataDog/go-acl v1.0.1 // indirect github.com/DataDog/gohai v0.0.0-20230524154621-4316413895ee // indirect github.com/DataDog/mmh3 v0.0.0-20210722141835-012dc69a9e49 // indirect @@ -152,7 +154,6 @@ require ( github.com/Microsoft/go-winio v0.6.2 // indirect github.com/Showmax/go-fqdn v1.0.0 // indirect github.com/alecthomas/participle/v2 v2.1.4 // indirect - github.com/alecthomas/repr v0.5.2 // indirect github.com/alecthomas/units v0.0.0-20240927000941-0f3dac36c52b // indirect github.com/antchfx/xmlquery v1.5.1 // indirect github.com/antchfx/xpath v1.3.6 // indirect @@ -626,6 +627,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -654,6 +656,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/comp/otelcol/collector-contrib/impl/go.sum b/comp/otelcol/collector-contrib/impl/go.sum index e64be389a9d0..4ca4c2276081 100644 --- a/comp/otelcol/collector-contrib/impl/go.sum +++ b/comp/otelcol/collector-contrib/impl/go.sum @@ -40,6 +40,8 @@ github.com/DataDog/agent-payload/v5 v5.0.205/go.mod h1:GyA1vuCeRywrNNCbYeR0cOYKE github.com/DataDog/datadog-api-client-go/v2 v2.62.0 h1:AIe01Tyl5Y+kHCJskB4Vkw6ANjHcD45bfbi//ICmAaU= github.com/DataDog/datadog-api-client-go/v2 v2.62.0/go.mod h1:d3tOEgUd2kfsr9uuHQdY+nXrWp4uikgTgVCPdKNK30U= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= +github.com/DataDog/fastjq v0.0.0-20260506145947-c3336f252fa2 h1:a9xjjGg5UQzUd+yliPDF9e4wQA9qq9PKT+DRDUaonOM= +github.com/DataDog/fastjq v0.0.0-20260506145947-c3336f252fa2/go.mod h1:XbWpLvPZo0LbxPhXTMIXSB98lFwfF9MnkT77iRHTXMY= github.com/DataDog/go-acl v1.0.1 h1:uRbp98YmlVZYqNNyTBFNI3Y6bnziBLyCIR4nRu0bIpU= github.com/DataDog/go-acl v1.0.1/go.mod h1:YJx333qSb3GUqCLIbqKeGaZS2pUYh2IYGI7+FsX18CU= github.com/DataDog/gohai v0.0.0-20230524154621-4316413895ee h1:tXibLZk3G6HncIFJKaNItsdzcrk4YqILNDZlXPTNt4k= diff --git a/comp/otelcol/converter/def/go.mod b/comp/otelcol/converter/def/go.mod index 622c16b1df32..1d64c3614e89 100644 --- a/comp/otelcol/converter/def/go.mod +++ b/comp/otelcol/converter/def/go.mod @@ -101,6 +101,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -129,6 +130,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/comp/otelcol/converter/impl/go.mod b/comp/otelcol/converter/impl/go.mod index 864308332bac..eecade1e0615 100644 --- a/comp/otelcol/converter/impl/go.mod +++ b/comp/otelcol/converter/impl/go.mod @@ -171,6 +171,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -199,6 +200,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/comp/otelcol/ddflareextension/def/go.mod b/comp/otelcol/ddflareextension/def/go.mod index e5f334362aa1..2786150da90c 100644 --- a/comp/otelcol/ddflareextension/def/go.mod +++ b/comp/otelcol/ddflareextension/def/go.mod @@ -103,6 +103,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -131,6 +132,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/comp/otelcol/ddflareextension/impl/go.mod b/comp/otelcol/ddflareextension/impl/go.mod index 22e0e7d85701..d4d196891442 100644 --- a/comp/otelcol/ddflareextension/impl/go.mod +++ b/comp/otelcol/ddflareextension/impl/go.mod @@ -53,6 +53,11 @@ require ( go.yaml.in/yaml/v2 v2.4.4 ) +require ( + github.com/DataDog/datadog-agent/pkg/logs/vrl v0.0.0-00010101000000-000000000000 // indirect + github.com/DataDog/fastjq v0.0.0-20260506145947-c3336f252fa2 // indirect +) + require ( cloud.google.com/go/auth v0.20.0 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect @@ -182,7 +187,6 @@ require ( github.com/Masterminds/semver/v3 v3.5.0 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect github.com/alecthomas/participle/v2 v2.1.4 // indirect - github.com/alecthomas/repr v0.5.2 // indirect github.com/alecthomas/units v0.0.0-20240927000941-0f3dac36c52b // indirect github.com/antchfx/xmlquery v1.5.1 // indirect github.com/antchfx/xpath v1.3.6 // indirect @@ -603,6 +607,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -631,6 +636,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/comp/otelcol/ddflareextension/impl/go.sum b/comp/otelcol/ddflareextension/impl/go.sum index 93b03ba78ca7..9759d58809ee 100644 --- a/comp/otelcol/ddflareextension/impl/go.sum +++ b/comp/otelcol/ddflareextension/impl/go.sum @@ -42,6 +42,8 @@ github.com/DataDog/datadog-api-client-go/v2 v2.62.0/go.mod h1:d3tOEgUd2kfsr9uuHQ github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/DataDog/datadog-go/v5 v5.9.0 h1:0rhs5wBov9Iz+xLXLk4maaReHvOANM1ijSm2IKWtKFs= github.com/DataDog/datadog-go/v5 v5.9.0/go.mod h1:2SBt8zJu6r7sRQHZFMQ8oCukWTKj0ymwulmNgQzJ1JM= +github.com/DataDog/fastjq v0.0.0-20260506145947-c3336f252fa2 h1:a9xjjGg5UQzUd+yliPDF9e4wQA9qq9PKT+DRDUaonOM= +github.com/DataDog/fastjq v0.0.0-20260506145947-c3336f252fa2/go.mod h1:XbWpLvPZo0LbxPhXTMIXSB98lFwfF9MnkT77iRHTXMY= github.com/DataDog/go-acl v1.0.1 h1:uRbp98YmlVZYqNNyTBFNI3Y6bnziBLyCIR4nRu0bIpU= github.com/DataDog/go-acl v1.0.1/go.mod h1:YJx333qSb3GUqCLIbqKeGaZS2pUYh2IYGI7+FsX18CU= github.com/DataDog/go-sqllexer v0.2.4 h1:Ah9v8g5KX8vNV7q3t6YoA3fW4F/1OvZh/JbyfPcaySA= diff --git a/comp/otelcol/ddflareextension/types/go.mod b/comp/otelcol/ddflareextension/types/go.mod index adc32898c98d..43b87dbe5380 100644 --- a/comp/otelcol/ddflareextension/types/go.mod +++ b/comp/otelcol/ddflareextension/types/go.mod @@ -81,6 +81,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -109,6 +110,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/comp/otelcol/ddprofilingextension/def/go.mod b/comp/otelcol/ddprofilingextension/def/go.mod index f30d0eb7fd86..2d6807c6f25d 100644 --- a/comp/otelcol/ddprofilingextension/def/go.mod +++ b/comp/otelcol/ddprofilingextension/def/go.mod @@ -103,6 +103,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -131,6 +132,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/comp/otelcol/ddprofilingextension/impl/go.mod b/comp/otelcol/ddprofilingextension/impl/go.mod index 6eb4d40b95ab..1a1e8bc75b00 100644 --- a/comp/otelcol/ddprofilingextension/impl/go.mod +++ b/comp/otelcol/ddprofilingextension/impl/go.mod @@ -228,6 +228,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -256,6 +257,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/comp/otelcol/logsagentpipeline/go.mod b/comp/otelcol/logsagentpipeline/go.mod index 7c260e32f8ec..996014337686 100644 --- a/comp/otelcol/logsagentpipeline/go.mod +++ b/comp/otelcol/logsagentpipeline/go.mod @@ -1,6 +1,6 @@ module github.com/DataDog/datadog-agent/comp/otelcol/logsagentpipeline -go 1.25.0 +go 1.25.4 require ( github.com/DataDog/datadog-agent/comp/core/config v0.64.1 @@ -49,6 +49,7 @@ require ( github.com/DataDog/datadog-agent/pkg/fips v0.78.1 // indirect github.com/DataDog/datadog-agent/pkg/logs/status/utils v0.78.1 // indirect github.com/DataDog/datadog-agent/pkg/logs/types v0.78.1 // indirect + github.com/DataDog/datadog-agent/pkg/logs/vrl v0.0.0-00010101000000-000000000000 // indirect github.com/DataDog/datadog-agent/pkg/template v0.78.1 // indirect github.com/DataDog/datadog-agent/pkg/util/backoff v0.78.1 // indirect github.com/DataDog/datadog-agent/pkg/util/compression v0.64.0-rc.3 // indirect @@ -64,28 +65,48 @@ require ( github.com/DataDog/datadog-agent/pkg/util/system v0.78.1 // indirect github.com/DataDog/datadog-agent/pkg/util/winutil v0.78.1 // indirect github.com/DataDog/datadog-agent/pkg/version v0.78.1 // indirect + github.com/DataDog/fastjq v0.0.0-20260506145947-c3336f252fa2 // indirect github.com/DataDog/go-acl v1.0.1 // indirect github.com/DataDog/zstd v1.5.8-0.20260421145859-31a7e515a571 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect + github.com/alecthomas/participle/v2 v2.1.4 // indirect + github.com/antchfx/xmlquery v1.5.1 // indirect + github.com/antchfx/xpath v1.3.6 // indirect github.com/benbjohnson/clock v1.3.5 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/dustin/go-humanize v1.0.1 // indirect github.com/ebitengine/purego v0.10.0 // indirect + github.com/elastic/go-grok v0.3.1 // indirect + github.com/elastic/lunes v0.2.2 // indirect github.com/fatih/color v1.19.0 // indirect github.com/go-ole/go-ole v1.3.0 // indirect github.com/go-viper/mapstructure/v2 v2.5.0 // indirect + github.com/gobwas/glob v0.2.3 // indirect + github.com/goccy/go-json v0.10.6 // indirect github.com/gofrs/flock v0.13.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect + github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/hashicorp/go-version v1.9.0 // indirect + github.com/hashicorp/golang-lru v1.0.2 // indirect + github.com/iancoleman/strcase v0.3.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/klauspost/cpuid/v2 v2.3.0 // indirect github.com/lufia/plan9stats v0.0.0-20260330125221-c963978e514e // indirect + github.com/magefile/mage v1.15.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.22 // indirect github.com/mdlayher/socket v0.6.0 // indirect github.com/mdlayher/vsock v1.3.0 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.156.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect github.com/prometheus/client_golang v1.23.3-0.20251103151724-a5ae20370e5e // indirect @@ -98,17 +119,30 @@ require ( github.com/spf13/pflag v1.0.10 // indirect github.com/tklauser/go-sysconf v0.3.16 // indirect github.com/tklauser/numcpus v0.11.0 // indirect + github.com/twmb/murmur3 v1.1.8 // indirect + github.com/ua-parser/uap-go v0.0.0-20251207011819-db9adb27a0b8 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect + github.com/zeebo/xxh3 v1.1.0 // indirect + go.opentelemetry.io/collector/client v1.62.0 // indirect + go.opentelemetry.io/collector/component v1.62.0 // indirect + go.opentelemetry.io/collector/featuregate v1.62.0 // indirect + go.opentelemetry.io/collector/pdata v1.62.0 // indirect + go.opentelemetry.io/collector/pdata/pprofile v0.156.0 // indirect + go.opentelemetry.io/otel v1.44.1-0.20260622141720-fbe3d073ba93 // indirect + go.opentelemetry.io/otel/metric v1.44.1-0.20260622141720-fbe3d073ba93 // indirect + go.opentelemetry.io/otel/trace v1.44.1-0.20260622141720-fbe3d073ba93 // indirect go.uber.org/atomic v1.11.0 // indirect go.uber.org/dig v1.19.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.4 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect + golang.org/x/exp v0.0.0-20260611194520-c48552f49976 // indirect golang.org/x/net v0.57.0 // indirect golang.org/x/sync v0.22.0 // indirect golang.org/x/sys v0.47.0 // indirect golang.org/x/text v0.40.0 // indirect golang.org/x/time v0.15.0 // indirect + google.golang.org/grpc v1.82.1 // indirect google.golang.org/protobuf v1.36.12-0.20260116114154-8c4c4ae446ca // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) @@ -192,6 +226,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -220,6 +255,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/comp/otelcol/logsagentpipeline/go.sum b/comp/otelcol/logsagentpipeline/go.sum index f6834d162a64..720619fae793 100644 --- a/comp/otelcol/logsagentpipeline/go.sum +++ b/comp/otelcol/logsagentpipeline/go.sum @@ -1,11 +1,23 @@ github.com/DataDog/agent-payload/v5 v5.0.205 h1:7+ZNser6vX1ptlZWO1UnYQ1trKoYmYFMvt1/ZIw3iD0= github.com/DataDog/agent-payload/v5 v5.0.205/go.mod h1:GyA1vuCeRywrNNCbYeR0cOYKE8QkOVNAFDqsH8VNF5M= +github.com/DataDog/fastjq v0.0.0-20260506145947-c3336f252fa2 h1:a9xjjGg5UQzUd+yliPDF9e4wQA9qq9PKT+DRDUaonOM= +github.com/DataDog/fastjq v0.0.0-20260506145947-c3336f252fa2/go.mod h1:XbWpLvPZo0LbxPhXTMIXSB98lFwfF9MnkT77iRHTXMY= github.com/DataDog/go-acl v1.0.1 h1:uRbp98YmlVZYqNNyTBFNI3Y6bnziBLyCIR4nRu0bIpU= github.com/DataDog/go-acl v1.0.1/go.mod h1:YJx333qSb3GUqCLIbqKeGaZS2pUYh2IYGI7+FsX18CU= github.com/DataDog/zstd v1.5.8-0.20260421145859-31a7e515a571 h1:zDAogP70WYpLD6MiIjQ9tHZYmkfbFcsfGb26CMf99To= github.com/DataDog/zstd v1.5.8-0.20260421145859-31a7e515a571/go.mod h1:oyU0k4j1rV2Cxqy/hdGZzmVg3nJtHahZBImIK9ejcDA= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= +github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0= +github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k= +github.com/alecthomas/participle/v2 v2.1.4 h1:W/H79S8Sat/krZ3el6sQMvMaahJ+XcM9WSI2naI7w2U= +github.com/alecthomas/participle/v2 v2.1.4/go.mod h1:8tqVbpTX20Ru4NfYQgZf4mP18eXPTBViyMWiArNEgGI= +github.com/alecthomas/repr v0.5.2 h1:SU73FTI9D1P5UNtvseffFSGmdNci/O6RsqzeXJtP0Qs= +github.com/alecthomas/repr v0.5.2/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= +github.com/antchfx/xmlquery v1.5.1 h1:T9I4Ns1EXiWHy0IqKupGhnfTQtJwlGrpXtauYOoNv78= +github.com/antchfx/xmlquery v1.5.1/go.mod h1:bVqnl7TaDXSReKINrhZz+2E/PbCu2tUahb+wZ7WZNT8= +github.com/antchfx/xpath v1.3.6 h1:s0y+ElRRtTQdfHP609qFu0+c6bglDv20pqOViQjjdPI= +github.com/antchfx/xpath v1.3.6/go.mod h1:i54GszH55fYfBmoZXapTHN8T8tkcHfRgLyVwwqzXNcs= github.com/benbjohnson/clock v1.3.5 h1:VvXlSJBzZpA/zum6Sj74hxwYI2DIxRWuNIoXAzHZz5o= github.com/benbjohnson/clock v1.3.5/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= @@ -13,33 +25,66 @@ github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6r github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= github.com/ebitengine/purego v0.10.0 h1:QIw4xfpWT6GWTzaW5XEKy3HXoqrJGx1ijYHzTF0/ISU= github.com/ebitengine/purego v0.10.0/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= +github.com/elastic/go-grok v0.3.1 h1:WEhUxe2KrwycMnlvMimJXvzRa7DoByJB4PVUIE1ZD/U= +github.com/elastic/go-grok v0.3.1/go.mod h1:n38ls8ZgOboZRgKcjMY8eFeZFMmcL9n2lP0iHhIDk64= +github.com/elastic/lunes v0.2.2 h1:dZFEaebNg9l+mzvOQN6Nd/c9y6y8rUe3tBWsTgvM08U= +github.com/elastic/lunes v0.2.2/go.mod h1:u3W/BdONWTrh0JjNZ21C907dDc+cUZttZrGa625nf2k= github.com/fatih/color v1.19.0 h1:Zp3PiM21/9Ld6FzSKyL5c/BULoe/ONr9KlbYVOfG8+w= github.com/fatih/color v1.19.0/go.mod h1:zNk67I0ZUT1bEGsSGyCZYZNrHuTkJJB+r6Q9VuMi0LE= github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= +github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= +github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= github.com/go-viper/mapstructure/v2 v2.5.0 h1:vM5IJoUAy3d7zRSVtIwQgBj7BiWtMPfmPEgAXnvj1Ro= github.com/go-viper/mapstructure/v2 v2.5.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= +github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= +github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= +github.com/goccy/go-json v0.10.6 h1:p8HrPJzOakx/mn/bQtjgNjdTcN+/S6FcG2CTtQOrHVU= +github.com/goccy/go-json v0.10.6/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= github.com/gofrs/flock v0.13.0 h1:95JolYOvGMqeH31+FC7D2+uULf6mG61mEZ/A8dRYMzw= github.com/gofrs/flock v0.13.0/go.mod h1:jxeyy9R1auM5S6JYDBhDt+E2TCo7DkratH4Pgi8P+Z0= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 h1:f+oWsMOmNPc8JmEHVZIycC7hBoQxHH9pNKQORJNozsQ= +github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUvekVysuuOpQKo3191zZyTpiI6se1N1ULghS0sw= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/hashicorp/go-version v1.9.0 h1:CeOIz6k+LoN3qX9Z0tyQrPtiB1DFYRPfCIBtaXPSCnA= +github.com/hashicorp/go-version v1.9.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= +github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= +github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= +github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= +github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.19.0 h1:sXLILfc9jV2QYWkzFOPWStmcUVH2RHEB1JCdY2oVvCQ= github.com/klauspost/compress v1.19.0/go.mod h1:cwPg85FWrGar70rWktvGQj8/hthj3wpl0PGDogxkrSQ= +github.com/klauspost/cpuid/v2 v2.3.0 h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzhA9Y= +github.com/klauspost/cpuid/v2 v2.3.0/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -48,6 +93,8 @@ github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0 github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/lufia/plan9stats v0.0.0-20260330125221-c963978e514e h1:Q6MvJtQK/iRcRtzAscm/zF23XxJlbECiGPyRicsX+Ak= github.com/lufia/plan9stats v0.0.0-20260330125221-c963978e514e/go.mod h1:autxFIvghDt3jPTLoqZ9OZ7s9qTGNAWmYCjVFWPX/zg= +github.com/magefile/mage v1.15.0 h1:BvGheCMAsG3bWUDbZ8AyXXpCNwU9u5CB6sM+HNb9HYg= +github.com/magefile/mage v1.15.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A= github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= github.com/mattn/go-isatty v0.0.22 h1:j8l17JJ9i6VGPUFUYoTUKPSgKe/83EYU2zBC7YNKMw4= @@ -56,10 +103,21 @@ github.com/mdlayher/socket v0.6.0 h1:ScZPaAGyO1icQnbFrhPM8mnXyMu9qukC1K4ZoM2IQKU github.com/mdlayher/socket v0.6.0/go.mod h1:q7vozUAnxSqnjHc12Fik5yUKIzfZ8ITCfMkhOtE9z18= github.com/mdlayher/vsock v1.3.0 h1:bqQfZ1OznI03y6YiXp2sze05RVdzLn/zsfjnjd4+ivI= github.com/mdlayher/vsock v1.3.0/go.mod h1:WsuksavOvwCnV5UqGHUkvAvCy+Dqy81y4goKQTzxxNY= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee h1:W5t00kpgFdJifH4BDsTlE89Zl93FEloxaWZfGcifgq8= +github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw= github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.156.0 h1:wca5xIy5I/8CAylZYgOYzj5P5JAAicBA8uNtiRNh2Zo= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.156.0/go.mod h1:CaT/YS8vvoNgsLewbtwDpS0mAgsHXNXceSPzlP+TeJI= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0 h1:ESNQwLZhQlKcbCzGfFNJu3MkNur35dVBbf7sE0MLDdk= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0/go.mod h1:KW8gom6sRRy60kO9SBSzBy2FGCvfgP7C3cprTqthpaA= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt9k/+g42oCprj/FisM4qX9L3sZB3upGN2ZU= @@ -84,16 +142,61 @@ github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiT github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/tklauser/go-sysconf v0.3.16 h1:frioLaCQSsF5Cy1jgRBrzr6t502KIIwQ0MArYICU0nA= github.com/tklauser/go-sysconf v0.3.16/go.mod h1:/qNL9xxDhc7tx3HSRsLWNnuzbVfh3e7gh/BmM179nYI= github.com/tklauser/numcpus v0.11.0 h1:nSTwhKH5e1dMNsCdVBukSZrURJRoHbSEQjdEbY+9RXw= github.com/tklauser/numcpus v0.11.0/go.mod h1:z+LwcLq54uWZTX0u/bGobaV34u6V7KNlTZejzM6/3MQ= +github.com/twmb/murmur3 v1.1.8 h1:8Yt9taO/WN3l08xErzjeschgZU2QSrwm1kclYq+0aRg= +github.com/twmb/murmur3 v1.1.8/go.mod h1:Qq/R7NUyOfr65zD+6Q5IHKsJLwP7exErjN6lyyq3OSQ= +github.com/ua-parser/uap-go v0.0.0-20251207011819-db9adb27a0b8 h1:yS0rzVnj7Z/ZeHzvv5erQbO2b8gyTL4CeMNodl9SJMQ= +github.com/ua-parser/uap-go v0.0.0-20251207011819-db9adb27a0b8/go.mod h1:gwANdYmo9R8LLwGnyDFWK2PMsaXXX2HhAvCnb/UhZsM= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= +github.com/zeebo/assert v1.3.0 h1:g7C04CbJuIDKNPFHmsk4hwZDO5O+kntRxzaUoNXj+IQ= +github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= +github.com/zeebo/xxh3 v1.1.0 h1:s7DLGDK45Dyfg7++yxI0khrfwq9661w9EN78eP/UZVs= +github.com/zeebo/xxh3 v1.1.0/go.mod h1:IisAie1LELR4xhVinxWS5+zf1lA4p0MW4T+w+W07F5s= +go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= +go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= +go.opentelemetry.io/collector/client v1.62.0 h1:Vud5nn4gX2TzMnHpNhuUhvAi4GGcO0RsaId0dftHAjM= +go.opentelemetry.io/collector/client v1.62.0/go.mod h1:iao8KfxMeND0zdp+PcHGPY9r1BDgS+OppY7RKLlUeUU= +go.opentelemetry.io/collector/component v1.62.0 h1:F1MHUlUEjSJgwcumsCbbH2rRmTK4dC8m/ipp9v4vFh0= +go.opentelemetry.io/collector/component v1.62.0/go.mod h1:NqdVWse4diWnlqh5WurI2KncJuBXe1zzYtxuC9Mmew0= +go.opentelemetry.io/collector/component/componenttest v0.156.0 h1:IV7xYP57kkKoBk7o9dYvToeotZ369A6/V+QIlLgnsEc= +go.opentelemetry.io/collector/component/componenttest v0.156.0/go.mod h1:YL7ByaKwuSuB+eBtm56awLXFlKJ7KI6jfrsjZd0uv8Y= +go.opentelemetry.io/collector/consumer v1.62.0 h1:nJzGs8soiciZvGhiA4OYwPRRCrTsXnNHrmzi/jaT3ck= +go.opentelemetry.io/collector/consumer v1.62.0/go.mod h1:uNbRHJ9LqgHxcWdLTvRTO4K3SSGZop1qlHKfV5lUvGg= +go.opentelemetry.io/collector/featuregate v1.62.0 h1:pYY7RlulSCTOS9mFWxasMLwYJCfNXHtnOkZlv3jg/V4= +go.opentelemetry.io/collector/featuregate v1.62.0/go.mod h1:4ga1QBMPEejXXmpyJS8lmaRpknJ3Lb9Bvk6e420bUFU= +go.opentelemetry.io/collector/internal/testutil v0.156.0 h1:Nu02vhHA2UQ3Yjyjisk3N24HHxwvw7PQiTz9O1PuiUY= +go.opentelemetry.io/collector/internal/testutil v0.156.0/go.mod h1:Jkjs6rkqs973LqgZ0Fe3zrokQRKULYXPIf4HuqStiEE= +go.opentelemetry.io/collector/pdata v1.62.0 h1:xGdwl2Cs5Rq5nKs0nYvAxm3Qq20HcySVAmUElATS8Es= +go.opentelemetry.io/collector/pdata v1.62.0/go.mod h1:WFy5R6XGpz2Q4MaekeEm+qc4GY5V3+BhQIwGPkp+fj0= +go.opentelemetry.io/collector/pdata/pprofile v0.156.0 h1:TnQzA2d5iMGH5//mGLqPjwdYqsFD/A7o2WgDdppxdVM= +go.opentelemetry.io/collector/pdata/pprofile v0.156.0/go.mod h1:3dtjs/mliblJJCCTXUE0AkpBNfBEybPruj3ml6WCOoI= +go.opentelemetry.io/otel v1.44.1-0.20260622141720-fbe3d073ba93 h1:r3rusw/U3IyJ0+r6xWXv1VF8TTUGVIAnK8tuzf/8Re0= +go.opentelemetry.io/otel v1.44.1-0.20260622141720-fbe3d073ba93/go.mod h1:BMgjTHL9WPRlRjL2oZCBTL4whCGtXch2H4BhOPIAyYc= +go.opentelemetry.io/otel/metric v1.44.1-0.20260622141720-fbe3d073ba93 h1:DCOdBzLW6tMYSutG82cKWgIX9JWNFixROrcgKm7Dn+Q= +go.opentelemetry.io/otel/metric v1.44.1-0.20260622141720-fbe3d073ba93/go.mod h1:8O7hanEPBNgEMmybD3s2VBKcgWOCsA6tzHBPODAiquo= +go.opentelemetry.io/otel/sdk v1.44.0 h1:nHYwb9lK+fJPU/dnT6s7W7Z8itMWyqrnVfbheVYrZ58= +go.opentelemetry.io/otel/sdk v1.44.0/go.mod h1:Osuydd3Se74nqjAKxid74N5eC+jfEqfTegHRnq58oK0= +go.opentelemetry.io/otel/sdk/metric v1.44.1-0.20260622141720-fbe3d073ba93 h1:BoVal+uHGOzlFZvHGq8bNR677inewlKioUjJPdPPCBE= +go.opentelemetry.io/otel/sdk/metric v1.44.1-0.20260622141720-fbe3d073ba93/go.mod h1:xZjeGP2g1Hxokmw5N6WDyiJb4OOKitlYGqGiwgu4CjM= +go.opentelemetry.io/otel/trace v1.44.1-0.20260622141720-fbe3d073ba93 h1:dNiK0YMSSGzwwgfNXkgBGmy33HyfUXNqKu9wBPafZhw= +go.opentelemetry.io/otel/trace v1.44.1-0.20260622141720-fbe3d073ba93/go.mod h1:oLl1jrMQAVo6v3GAggN+1VH9VIz9iUSvW53sW1Q8PIE= +go.opentelemetry.io/proto/slim/otlp v1.10.0 h1:iR97Vs/ZDR+y9TfuP9b1XBtdPWeC+OMslIBmhcLU7jM= +go.opentelemetry.io/proto/slim/otlp v1.10.0/go.mod h1:lV9250stpjYLPNA5viFabIgP2QlUGRT1GdTgAf8SIUk= +go.opentelemetry.io/proto/slim/otlp/collector/profiles/v1development v0.3.0 h1:RUF5rO0hAlgiJt1fzQVzcVs3vZVNHIcMLgOgG4rWNcQ= +go.opentelemetry.io/proto/slim/otlp/collector/profiles/v1development v0.3.0/go.mod h1:I89cynRj8y+383o7tEQVg2SVA6SRgDVIouWPUVXjx0U= +go.opentelemetry.io/proto/slim/otlp/profiles/v1development v0.3.0 h1:CQvJSldHRUN6Z8jsUeYv8J0lXRvygALXIzsmAeCcZE0= +go.opentelemetry.io/proto/slim/otlp/profiles/v1development v0.3.0/go.mod h1:xSQ+mEfJe/GjK1LXEyVOoSI1N9JV9ZI923X5kup43W4= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= go.uber.org/dig v1.19.0 h1:BACLhebsYdpQ7IROQ1AGPjrXcP5dF80U3gKoFzbaq/4= @@ -113,29 +216,81 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= +golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/exp v0.0.0-20260611194520-c48552f49976 h1:X8Hz2ImujgbmetVuW+w2YkyZChE3cBpZi2P158rTG9M= +golang.org/x/exp v0.0.0-20260611194520-c48552f49976/go.mod h1:vnf4pv9iKZXY58sQE1L86zmNWJ4159e1RkcWiLCkeEY= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= +golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= golang.org/x/net v0.57.0 h1:K5+3DljvIuDG9/Jv9rvyMywYNFCQ9RSUY6OOTTkT+tE= golang.org/x/net v0.57.0/go.mod h1:KpXc8iv+r3XplLAG/f7Jsf9RPszJzdR0f58q9vGOuEU= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.22.0 h1:SZjpbeLmrCk4xhRSZFNZW5gFUeCeFgjekvI/+gfScek= golang.org/x/sync v0.22.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.47.0 h1:o7XGOvZQCADBQQ4Y7VNq2dRWQR7JmOUW8Kxx4ZsNgWs= golang.org/x/sys v0.47.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= +golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= +golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/text v0.40.0 h1:Ub2Z6/xjgF1WrYQz2nuITOEegKFtiIy+rieRJ5lHZKs= golang.org/x/text v0.40.0/go.mod h1:hpnzDAfGV753zIKo+wk3u1bVKCGPbrnF7+7LBF/UHVY= golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= @@ -144,10 +299,16 @@ golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGm golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/grpc v1.82.1 h1:NnAxzGRA0677vCa4BUkOAnO5+FfQqVl9iUXeD0IqcGE= +google.golang.org/grpc v1.82.1/go.mod h1:yzTZ1TB1Z3SG+LIYaI+WiE8D5+PZ3ArnrSp8zF3+/ZA= google.golang.org/protobuf v1.36.12-0.20260116114154-8c4c4ae446ca h1:/ro7D0tSP+jEnQPzy9e1r5L6mAcEShGlE5kFsShX5O8= google.golang.org/protobuf v1.36.12-0.20260116114154-8c4c4ae446ca/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/comp/otelcol/logsagentpipeline/logsagentpipelineimpl/go.mod b/comp/otelcol/logsagentpipeline/logsagentpipelineimpl/go.mod index 9722aca37758..f551b1b924f7 100644 --- a/comp/otelcol/logsagentpipeline/logsagentpipelineimpl/go.mod +++ b/comp/otelcol/logsagentpipeline/logsagentpipelineimpl/go.mod @@ -1,6 +1,6 @@ module github.com/DataDog/datadog-agent/comp/otelcol/logsagentpipeline/logsagentpipelineimpl -go 1.25.0 +go 1.25.4 require ( github.com/DataDog/datadog-agent/comp/otelcol/logsagentpipeline v0.64.0-rc.12 @@ -43,6 +43,7 @@ require ( github.com/DataDog/datadog-agent/pkg/logs/status/statusinterface v0.78.1 // indirect github.com/DataDog/datadog-agent/pkg/logs/status/utils v0.78.1 // indirect github.com/DataDog/datadog-agent/pkg/logs/types v0.78.1 // indirect + github.com/DataDog/datadog-agent/pkg/logs/vrl v0.0.0-00010101000000-000000000000 // indirect github.com/DataDog/datadog-agent/pkg/template v0.78.1 // indirect github.com/DataDog/datadog-agent/pkg/util/backoff v0.78.1 // indirect github.com/DataDog/datadog-agent/pkg/util/compression v0.64.0-rc.3 // indirect @@ -60,27 +61,47 @@ require ( github.com/DataDog/datadog-agent/pkg/util/system v0.78.1 // indirect github.com/DataDog/datadog-agent/pkg/util/winutil v0.78.1 // indirect github.com/DataDog/datadog-agent/pkg/version v0.78.1 // indirect + github.com/DataDog/fastjq v0.0.0-20260506145947-c3336f252fa2 // indirect github.com/DataDog/go-acl v1.0.1 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect + github.com/alecthomas/participle/v2 v2.1.4 // indirect + github.com/antchfx/xmlquery v1.5.1 // indirect + github.com/antchfx/xpath v1.3.6 // indirect github.com/benbjohnson/clock v1.3.5 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/dustin/go-humanize v1.0.1 // indirect github.com/ebitengine/purego v0.10.0 // indirect + github.com/elastic/go-grok v0.3.1 // indirect + github.com/elastic/lunes v0.2.2 // indirect github.com/fatih/color v1.19.0 // indirect github.com/go-ole/go-ole v1.3.0 // indirect github.com/go-viper/mapstructure/v2 v2.5.0 // indirect + github.com/gobwas/glob v0.2.3 // indirect + github.com/goccy/go-json v0.10.6 // indirect github.com/gofrs/flock v0.13.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect + github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/hashicorp/go-version v1.9.0 // indirect + github.com/hashicorp/golang-lru v1.0.2 // indirect + github.com/iancoleman/strcase v0.3.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/klauspost/cpuid/v2 v2.3.0 // indirect github.com/lufia/plan9stats v0.0.0-20260330125221-c963978e514e // indirect + github.com/magefile/mage v1.15.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.22 // indirect github.com/mdlayher/socket v0.6.0 // indirect github.com/mdlayher/vsock v1.3.0 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.156.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect github.com/prometheus/client_golang v1.23.3-0.20251103151724-a5ae20370e5e // indirect @@ -94,7 +115,18 @@ require ( github.com/stretchr/testify v1.11.1 // indirect github.com/tklauser/go-sysconf v0.3.16 // indirect github.com/tklauser/numcpus v0.11.0 // indirect + github.com/twmb/murmur3 v1.1.8 // indirect + github.com/ua-parser/uap-go v0.0.0-20251207011819-db9adb27a0b8 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect + github.com/zeebo/xxh3 v1.1.0 // indirect + go.opentelemetry.io/collector/client v1.62.0 // indirect + go.opentelemetry.io/collector/component v1.62.0 // indirect + go.opentelemetry.io/collector/featuregate v1.62.0 // indirect + go.opentelemetry.io/collector/pdata v1.62.0 // indirect + go.opentelemetry.io/collector/pdata/pprofile v0.156.0 // indirect + go.opentelemetry.io/otel v1.44.1-0.20260622141720-fbe3d073ba93 // indirect + go.opentelemetry.io/otel/metric v1.44.1-0.20260622141720-fbe3d073ba93 // indirect + go.opentelemetry.io/otel/trace v1.44.1-0.20260622141720-fbe3d073ba93 // indirect go.uber.org/atomic v1.11.0 // indirect go.uber.org/dig v1.19.0 // indirect go.uber.org/fx v1.24.0 // indirect @@ -102,11 +134,13 @@ require ( go.uber.org/zap v1.28.0 // indirect go.yaml.in/yaml/v2 v2.4.4 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect + golang.org/x/exp v0.0.0-20260611194520-c48552f49976 // indirect golang.org/x/net v0.57.0 // indirect golang.org/x/sync v0.22.0 // indirect golang.org/x/sys v0.47.0 // indirect golang.org/x/text v0.40.0 // indirect golang.org/x/time v0.15.0 // indirect + google.golang.org/grpc v1.82.1 // indirect google.golang.org/protobuf v1.36.12-0.20260116114154-8c4c4ae446ca // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) @@ -190,6 +224,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -218,6 +253,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/comp/otelcol/logsagentpipeline/logsagentpipelineimpl/go.sum b/comp/otelcol/logsagentpipeline/logsagentpipelineimpl/go.sum index f6834d162a64..720619fae793 100644 --- a/comp/otelcol/logsagentpipeline/logsagentpipelineimpl/go.sum +++ b/comp/otelcol/logsagentpipeline/logsagentpipelineimpl/go.sum @@ -1,11 +1,23 @@ github.com/DataDog/agent-payload/v5 v5.0.205 h1:7+ZNser6vX1ptlZWO1UnYQ1trKoYmYFMvt1/ZIw3iD0= github.com/DataDog/agent-payload/v5 v5.0.205/go.mod h1:GyA1vuCeRywrNNCbYeR0cOYKE8QkOVNAFDqsH8VNF5M= +github.com/DataDog/fastjq v0.0.0-20260506145947-c3336f252fa2 h1:a9xjjGg5UQzUd+yliPDF9e4wQA9qq9PKT+DRDUaonOM= +github.com/DataDog/fastjq v0.0.0-20260506145947-c3336f252fa2/go.mod h1:XbWpLvPZo0LbxPhXTMIXSB98lFwfF9MnkT77iRHTXMY= github.com/DataDog/go-acl v1.0.1 h1:uRbp98YmlVZYqNNyTBFNI3Y6bnziBLyCIR4nRu0bIpU= github.com/DataDog/go-acl v1.0.1/go.mod h1:YJx333qSb3GUqCLIbqKeGaZS2pUYh2IYGI7+FsX18CU= github.com/DataDog/zstd v1.5.8-0.20260421145859-31a7e515a571 h1:zDAogP70WYpLD6MiIjQ9tHZYmkfbFcsfGb26CMf99To= github.com/DataDog/zstd v1.5.8-0.20260421145859-31a7e515a571/go.mod h1:oyU0k4j1rV2Cxqy/hdGZzmVg3nJtHahZBImIK9ejcDA= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= +github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0= +github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k= +github.com/alecthomas/participle/v2 v2.1.4 h1:W/H79S8Sat/krZ3el6sQMvMaahJ+XcM9WSI2naI7w2U= +github.com/alecthomas/participle/v2 v2.1.4/go.mod h1:8tqVbpTX20Ru4NfYQgZf4mP18eXPTBViyMWiArNEgGI= +github.com/alecthomas/repr v0.5.2 h1:SU73FTI9D1P5UNtvseffFSGmdNci/O6RsqzeXJtP0Qs= +github.com/alecthomas/repr v0.5.2/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= +github.com/antchfx/xmlquery v1.5.1 h1:T9I4Ns1EXiWHy0IqKupGhnfTQtJwlGrpXtauYOoNv78= +github.com/antchfx/xmlquery v1.5.1/go.mod h1:bVqnl7TaDXSReKINrhZz+2E/PbCu2tUahb+wZ7WZNT8= +github.com/antchfx/xpath v1.3.6 h1:s0y+ElRRtTQdfHP609qFu0+c6bglDv20pqOViQjjdPI= +github.com/antchfx/xpath v1.3.6/go.mod h1:i54GszH55fYfBmoZXapTHN8T8tkcHfRgLyVwwqzXNcs= github.com/benbjohnson/clock v1.3.5 h1:VvXlSJBzZpA/zum6Sj74hxwYI2DIxRWuNIoXAzHZz5o= github.com/benbjohnson/clock v1.3.5/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= @@ -13,33 +25,66 @@ github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6r github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= github.com/ebitengine/purego v0.10.0 h1:QIw4xfpWT6GWTzaW5XEKy3HXoqrJGx1ijYHzTF0/ISU= github.com/ebitengine/purego v0.10.0/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= +github.com/elastic/go-grok v0.3.1 h1:WEhUxe2KrwycMnlvMimJXvzRa7DoByJB4PVUIE1ZD/U= +github.com/elastic/go-grok v0.3.1/go.mod h1:n38ls8ZgOboZRgKcjMY8eFeZFMmcL9n2lP0iHhIDk64= +github.com/elastic/lunes v0.2.2 h1:dZFEaebNg9l+mzvOQN6Nd/c9y6y8rUe3tBWsTgvM08U= +github.com/elastic/lunes v0.2.2/go.mod h1:u3W/BdONWTrh0JjNZ21C907dDc+cUZttZrGa625nf2k= github.com/fatih/color v1.19.0 h1:Zp3PiM21/9Ld6FzSKyL5c/BULoe/ONr9KlbYVOfG8+w= github.com/fatih/color v1.19.0/go.mod h1:zNk67I0ZUT1bEGsSGyCZYZNrHuTkJJB+r6Q9VuMi0LE= github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= +github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= +github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= github.com/go-viper/mapstructure/v2 v2.5.0 h1:vM5IJoUAy3d7zRSVtIwQgBj7BiWtMPfmPEgAXnvj1Ro= github.com/go-viper/mapstructure/v2 v2.5.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= +github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= +github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= +github.com/goccy/go-json v0.10.6 h1:p8HrPJzOakx/mn/bQtjgNjdTcN+/S6FcG2CTtQOrHVU= +github.com/goccy/go-json v0.10.6/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= github.com/gofrs/flock v0.13.0 h1:95JolYOvGMqeH31+FC7D2+uULf6mG61mEZ/A8dRYMzw= github.com/gofrs/flock v0.13.0/go.mod h1:jxeyy9R1auM5S6JYDBhDt+E2TCo7DkratH4Pgi8P+Z0= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 h1:f+oWsMOmNPc8JmEHVZIycC7hBoQxHH9pNKQORJNozsQ= +github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUvekVysuuOpQKo3191zZyTpiI6se1N1ULghS0sw= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/hashicorp/go-version v1.9.0 h1:CeOIz6k+LoN3qX9Z0tyQrPtiB1DFYRPfCIBtaXPSCnA= +github.com/hashicorp/go-version v1.9.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= +github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= +github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= +github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= +github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.19.0 h1:sXLILfc9jV2QYWkzFOPWStmcUVH2RHEB1JCdY2oVvCQ= github.com/klauspost/compress v1.19.0/go.mod h1:cwPg85FWrGar70rWktvGQj8/hthj3wpl0PGDogxkrSQ= +github.com/klauspost/cpuid/v2 v2.3.0 h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzhA9Y= +github.com/klauspost/cpuid/v2 v2.3.0/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -48,6 +93,8 @@ github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0 github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/lufia/plan9stats v0.0.0-20260330125221-c963978e514e h1:Q6MvJtQK/iRcRtzAscm/zF23XxJlbECiGPyRicsX+Ak= github.com/lufia/plan9stats v0.0.0-20260330125221-c963978e514e/go.mod h1:autxFIvghDt3jPTLoqZ9OZ7s9qTGNAWmYCjVFWPX/zg= +github.com/magefile/mage v1.15.0 h1:BvGheCMAsG3bWUDbZ8AyXXpCNwU9u5CB6sM+HNb9HYg= +github.com/magefile/mage v1.15.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A= github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= github.com/mattn/go-isatty v0.0.22 h1:j8l17JJ9i6VGPUFUYoTUKPSgKe/83EYU2zBC7YNKMw4= @@ -56,10 +103,21 @@ github.com/mdlayher/socket v0.6.0 h1:ScZPaAGyO1icQnbFrhPM8mnXyMu9qukC1K4ZoM2IQKU github.com/mdlayher/socket v0.6.0/go.mod h1:q7vozUAnxSqnjHc12Fik5yUKIzfZ8ITCfMkhOtE9z18= github.com/mdlayher/vsock v1.3.0 h1:bqQfZ1OznI03y6YiXp2sze05RVdzLn/zsfjnjd4+ivI= github.com/mdlayher/vsock v1.3.0/go.mod h1:WsuksavOvwCnV5UqGHUkvAvCy+Dqy81y4goKQTzxxNY= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee h1:W5t00kpgFdJifH4BDsTlE89Zl93FEloxaWZfGcifgq8= +github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw= github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.156.0 h1:wca5xIy5I/8CAylZYgOYzj5P5JAAicBA8uNtiRNh2Zo= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.156.0/go.mod h1:CaT/YS8vvoNgsLewbtwDpS0mAgsHXNXceSPzlP+TeJI= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0 h1:ESNQwLZhQlKcbCzGfFNJu3MkNur35dVBbf7sE0MLDdk= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0/go.mod h1:KW8gom6sRRy60kO9SBSzBy2FGCvfgP7C3cprTqthpaA= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt9k/+g42oCprj/FisM4qX9L3sZB3upGN2ZU= @@ -84,16 +142,61 @@ github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiT github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/tklauser/go-sysconf v0.3.16 h1:frioLaCQSsF5Cy1jgRBrzr6t502KIIwQ0MArYICU0nA= github.com/tklauser/go-sysconf v0.3.16/go.mod h1:/qNL9xxDhc7tx3HSRsLWNnuzbVfh3e7gh/BmM179nYI= github.com/tklauser/numcpus v0.11.0 h1:nSTwhKH5e1dMNsCdVBukSZrURJRoHbSEQjdEbY+9RXw= github.com/tklauser/numcpus v0.11.0/go.mod h1:z+LwcLq54uWZTX0u/bGobaV34u6V7KNlTZejzM6/3MQ= +github.com/twmb/murmur3 v1.1.8 h1:8Yt9taO/WN3l08xErzjeschgZU2QSrwm1kclYq+0aRg= +github.com/twmb/murmur3 v1.1.8/go.mod h1:Qq/R7NUyOfr65zD+6Q5IHKsJLwP7exErjN6lyyq3OSQ= +github.com/ua-parser/uap-go v0.0.0-20251207011819-db9adb27a0b8 h1:yS0rzVnj7Z/ZeHzvv5erQbO2b8gyTL4CeMNodl9SJMQ= +github.com/ua-parser/uap-go v0.0.0-20251207011819-db9adb27a0b8/go.mod h1:gwANdYmo9R8LLwGnyDFWK2PMsaXXX2HhAvCnb/UhZsM= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= +github.com/zeebo/assert v1.3.0 h1:g7C04CbJuIDKNPFHmsk4hwZDO5O+kntRxzaUoNXj+IQ= +github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= +github.com/zeebo/xxh3 v1.1.0 h1:s7DLGDK45Dyfg7++yxI0khrfwq9661w9EN78eP/UZVs= +github.com/zeebo/xxh3 v1.1.0/go.mod h1:IisAie1LELR4xhVinxWS5+zf1lA4p0MW4T+w+W07F5s= +go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= +go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= +go.opentelemetry.io/collector/client v1.62.0 h1:Vud5nn4gX2TzMnHpNhuUhvAi4GGcO0RsaId0dftHAjM= +go.opentelemetry.io/collector/client v1.62.0/go.mod h1:iao8KfxMeND0zdp+PcHGPY9r1BDgS+OppY7RKLlUeUU= +go.opentelemetry.io/collector/component v1.62.0 h1:F1MHUlUEjSJgwcumsCbbH2rRmTK4dC8m/ipp9v4vFh0= +go.opentelemetry.io/collector/component v1.62.0/go.mod h1:NqdVWse4diWnlqh5WurI2KncJuBXe1zzYtxuC9Mmew0= +go.opentelemetry.io/collector/component/componenttest v0.156.0 h1:IV7xYP57kkKoBk7o9dYvToeotZ369A6/V+QIlLgnsEc= +go.opentelemetry.io/collector/component/componenttest v0.156.0/go.mod h1:YL7ByaKwuSuB+eBtm56awLXFlKJ7KI6jfrsjZd0uv8Y= +go.opentelemetry.io/collector/consumer v1.62.0 h1:nJzGs8soiciZvGhiA4OYwPRRCrTsXnNHrmzi/jaT3ck= +go.opentelemetry.io/collector/consumer v1.62.0/go.mod h1:uNbRHJ9LqgHxcWdLTvRTO4K3SSGZop1qlHKfV5lUvGg= +go.opentelemetry.io/collector/featuregate v1.62.0 h1:pYY7RlulSCTOS9mFWxasMLwYJCfNXHtnOkZlv3jg/V4= +go.opentelemetry.io/collector/featuregate v1.62.0/go.mod h1:4ga1QBMPEejXXmpyJS8lmaRpknJ3Lb9Bvk6e420bUFU= +go.opentelemetry.io/collector/internal/testutil v0.156.0 h1:Nu02vhHA2UQ3Yjyjisk3N24HHxwvw7PQiTz9O1PuiUY= +go.opentelemetry.io/collector/internal/testutil v0.156.0/go.mod h1:Jkjs6rkqs973LqgZ0Fe3zrokQRKULYXPIf4HuqStiEE= +go.opentelemetry.io/collector/pdata v1.62.0 h1:xGdwl2Cs5Rq5nKs0nYvAxm3Qq20HcySVAmUElATS8Es= +go.opentelemetry.io/collector/pdata v1.62.0/go.mod h1:WFy5R6XGpz2Q4MaekeEm+qc4GY5V3+BhQIwGPkp+fj0= +go.opentelemetry.io/collector/pdata/pprofile v0.156.0 h1:TnQzA2d5iMGH5//mGLqPjwdYqsFD/A7o2WgDdppxdVM= +go.opentelemetry.io/collector/pdata/pprofile v0.156.0/go.mod h1:3dtjs/mliblJJCCTXUE0AkpBNfBEybPruj3ml6WCOoI= +go.opentelemetry.io/otel v1.44.1-0.20260622141720-fbe3d073ba93 h1:r3rusw/U3IyJ0+r6xWXv1VF8TTUGVIAnK8tuzf/8Re0= +go.opentelemetry.io/otel v1.44.1-0.20260622141720-fbe3d073ba93/go.mod h1:BMgjTHL9WPRlRjL2oZCBTL4whCGtXch2H4BhOPIAyYc= +go.opentelemetry.io/otel/metric v1.44.1-0.20260622141720-fbe3d073ba93 h1:DCOdBzLW6tMYSutG82cKWgIX9JWNFixROrcgKm7Dn+Q= +go.opentelemetry.io/otel/metric v1.44.1-0.20260622141720-fbe3d073ba93/go.mod h1:8O7hanEPBNgEMmybD3s2VBKcgWOCsA6tzHBPODAiquo= +go.opentelemetry.io/otel/sdk v1.44.0 h1:nHYwb9lK+fJPU/dnT6s7W7Z8itMWyqrnVfbheVYrZ58= +go.opentelemetry.io/otel/sdk v1.44.0/go.mod h1:Osuydd3Se74nqjAKxid74N5eC+jfEqfTegHRnq58oK0= +go.opentelemetry.io/otel/sdk/metric v1.44.1-0.20260622141720-fbe3d073ba93 h1:BoVal+uHGOzlFZvHGq8bNR677inewlKioUjJPdPPCBE= +go.opentelemetry.io/otel/sdk/metric v1.44.1-0.20260622141720-fbe3d073ba93/go.mod h1:xZjeGP2g1Hxokmw5N6WDyiJb4OOKitlYGqGiwgu4CjM= +go.opentelemetry.io/otel/trace v1.44.1-0.20260622141720-fbe3d073ba93 h1:dNiK0YMSSGzwwgfNXkgBGmy33HyfUXNqKu9wBPafZhw= +go.opentelemetry.io/otel/trace v1.44.1-0.20260622141720-fbe3d073ba93/go.mod h1:oLl1jrMQAVo6v3GAggN+1VH9VIz9iUSvW53sW1Q8PIE= +go.opentelemetry.io/proto/slim/otlp v1.10.0 h1:iR97Vs/ZDR+y9TfuP9b1XBtdPWeC+OMslIBmhcLU7jM= +go.opentelemetry.io/proto/slim/otlp v1.10.0/go.mod h1:lV9250stpjYLPNA5viFabIgP2QlUGRT1GdTgAf8SIUk= +go.opentelemetry.io/proto/slim/otlp/collector/profiles/v1development v0.3.0 h1:RUF5rO0hAlgiJt1fzQVzcVs3vZVNHIcMLgOgG4rWNcQ= +go.opentelemetry.io/proto/slim/otlp/collector/profiles/v1development v0.3.0/go.mod h1:I89cynRj8y+383o7tEQVg2SVA6SRgDVIouWPUVXjx0U= +go.opentelemetry.io/proto/slim/otlp/profiles/v1development v0.3.0 h1:CQvJSldHRUN6Z8jsUeYv8J0lXRvygALXIzsmAeCcZE0= +go.opentelemetry.io/proto/slim/otlp/profiles/v1development v0.3.0/go.mod h1:xSQ+mEfJe/GjK1LXEyVOoSI1N9JV9ZI923X5kup43W4= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= go.uber.org/dig v1.19.0 h1:BACLhebsYdpQ7IROQ1AGPjrXcP5dF80U3gKoFzbaq/4= @@ -113,29 +216,81 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= +golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/exp v0.0.0-20260611194520-c48552f49976 h1:X8Hz2ImujgbmetVuW+w2YkyZChE3cBpZi2P158rTG9M= +golang.org/x/exp v0.0.0-20260611194520-c48552f49976/go.mod h1:vnf4pv9iKZXY58sQE1L86zmNWJ4159e1RkcWiLCkeEY= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= +golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= golang.org/x/net v0.57.0 h1:K5+3DljvIuDG9/Jv9rvyMywYNFCQ9RSUY6OOTTkT+tE= golang.org/x/net v0.57.0/go.mod h1:KpXc8iv+r3XplLAG/f7Jsf9RPszJzdR0f58q9vGOuEU= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.22.0 h1:SZjpbeLmrCk4xhRSZFNZW5gFUeCeFgjekvI/+gfScek= golang.org/x/sync v0.22.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.47.0 h1:o7XGOvZQCADBQQ4Y7VNq2dRWQR7JmOUW8Kxx4ZsNgWs= golang.org/x/sys v0.47.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= +golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= +golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/text v0.40.0 h1:Ub2Z6/xjgF1WrYQz2nuITOEegKFtiIy+rieRJ5lHZKs= golang.org/x/text v0.40.0/go.mod h1:hpnzDAfGV753zIKo+wk3u1bVKCGPbrnF7+7LBF/UHVY= golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= @@ -144,10 +299,16 @@ golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGm golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/grpc v1.82.1 h1:NnAxzGRA0677vCa4BUkOAnO5+FfQqVl9iUXeD0IqcGE= +google.golang.org/grpc v1.82.1/go.mod h1:yzTZ1TB1Z3SG+LIYaI+WiE8D5+PZ3ArnrSp8zF3+/ZA= google.golang.org/protobuf v1.36.12-0.20260116114154-8c4c4ae446ca h1:/ro7D0tSP+jEnQPzy9e1r5L6mAcEShGlE5kFsShX5O8= google.golang.org/protobuf v1.36.12-0.20260116114154-8c4c4ae446ca/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/comp/otelcol/otlp/components/connector/datadogconnector/go.mod b/comp/otelcol/otlp/components/connector/datadogconnector/go.mod index 413fe7e4386c..cfe33f0ac17f 100644 --- a/comp/otelcol/otlp/components/connector/datadogconnector/go.mod +++ b/comp/otelcol/otlp/components/connector/datadogconnector/go.mod @@ -248,6 +248,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../../../pkg/collector/check/defaults @@ -276,6 +277,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../../../pkg/network/payload diff --git a/comp/otelcol/otlp/components/exporter/datadogexporter/go.mod b/comp/otelcol/otlp/components/exporter/datadogexporter/go.mod index 9528fa1780ca..55200ef474d7 100644 --- a/comp/otelcol/otlp/components/exporter/datadogexporter/go.mod +++ b/comp/otelcol/otlp/components/exporter/datadogexporter/go.mod @@ -1,6 +1,6 @@ module github.com/DataDog/datadog-agent/comp/otelcol/otlp/components/exporter/datadogexporter -go 1.25.0 +go 1.25.4 require ( github.com/DataDog/datadog-agent/comp/core/telemetry v0.80.2 @@ -82,6 +82,7 @@ require ( github.com/DataDog/datadog-agent/pkg/logs/status/statusinterface v0.78.1 // indirect github.com/DataDog/datadog-agent/pkg/logs/status/utils v0.78.1 // indirect github.com/DataDog/datadog-agent/pkg/logs/types v0.80.2 // indirect + github.com/DataDog/datadog-agent/pkg/logs/vrl v0.0.0-00010101000000-000000000000 // indirect github.com/DataDog/datadog-agent/pkg/metrics v0.80.2 // indirect github.com/DataDog/datadog-agent/pkg/obfuscate v0.80.2 // indirect github.com/DataDog/datadog-agent/pkg/opentelemetry-mapping-go/otlp/logs v0.74.0-devel.0.20251125141836-2ae7a968751c // indirect @@ -121,6 +122,7 @@ require ( github.com/DataDog/datadog-agent/pkg/util/winutil v0.82.0-devel.0.20260624113434-509b872045c2 // indirect github.com/DataDog/datadog-agent/pkg/version v0.80.2 // indirect github.com/DataDog/datadog-api-client-go/v2 v2.62.0 // indirect + github.com/DataDog/fastjq v0.0.0-20260506145947-c3336f252fa2 // indirect github.com/DataDog/go-acl v1.0.1 // indirect github.com/DataDog/go-sqllexer v0.2.4 // indirect github.com/DataDog/go-tuf v1.1.1-0.5.2 // indirect @@ -129,6 +131,9 @@ require ( github.com/DataDog/zstd v1.5.8-0.20260421145859-31a7e515a571 // indirect github.com/DataDog/zstd_0 v0.0.0-20210310093942-586c1286621f // indirect github.com/Microsoft/go-winio v0.6.2 // indirect + github.com/alecthomas/participle/v2 v2.1.4 // indirect + github.com/antchfx/xmlquery v1.5.1 // indirect + github.com/antchfx/xpath v1.3.6 // indirect github.com/benbjohnson/clock v1.3.5 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/cenkalti/backoff/v7 v7.0.0 // indirect @@ -136,6 +141,8 @@ require ( github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/dustin/go-humanize v1.0.1 // indirect github.com/ebitengine/purego v0.10.0 // indirect + github.com/elastic/go-grok v0.3.1 // indirect + github.com/elastic/lunes v0.2.2 // indirect github.com/fatih/color v1.19.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/foxboron/go-tpm-keyfiles v0.0.0-20251226215517-609e4778396f // indirect @@ -148,18 +155,23 @@ require ( github.com/goccy/go-json v0.10.6 // indirect github.com/gofrs/flock v0.13.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect + github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect github.com/golang/snappy v1.0.0 // indirect github.com/google/go-tpm v0.9.8 // indirect github.com/google/uuid v1.6.0 // indirect github.com/hashicorp/go-version v1.9.0 // indirect + github.com/hashicorp/golang-lru v1.0.2 // indirect github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect + github.com/iancoleman/strcase v0.3.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/compress v1.19.0 // indirect + github.com/klauspost/cpuid/v2 v2.3.0 // indirect github.com/knadh/koanf/maps v0.1.2 // indirect github.com/knadh/koanf/providers/confmap v1.0.0 // indirect github.com/knadh/koanf/v2 v2.3.5 // indirect github.com/lufia/plan9stats v0.0.0-20260330125221-c963978e514e // indirect + github.com/magefile/mage v1.15.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.22 // indirect github.com/mdlayher/socket v0.6.0 // indirect @@ -170,6 +182,8 @@ require ( github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.156.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.156.0 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/pkg/sampling v0.156.0 // indirect github.com/outcaste-io/ristretto v0.2.3 // indirect @@ -196,7 +210,9 @@ require ( github.com/tklauser/go-sysconf v0.3.16 // indirect github.com/tklauser/numcpus v0.11.0 // indirect github.com/twmb/murmur3 v1.1.8 // indirect + github.com/ua-parser/uap-go v0.0.0-20251207011819-db9adb27a0b8 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect + github.com/zeebo/xxh3 v1.1.0 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/collector/client v1.62.0 // indirect go.opentelemetry.io/collector/component/componenttest v0.156.0 // indirect @@ -236,6 +252,7 @@ require ( go.yaml.in/yaml/v2 v2.4.4 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect golang.org/x/crypto v0.54.0 // indirect + golang.org/x/exp v0.0.0-20260611194520-c48552f49976 // indirect golang.org/x/net v0.57.0 // indirect golang.org/x/oauth2 v0.36.0 // indirect golang.org/x/sync v0.22.0 // indirect @@ -326,6 +343,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../../../pkg/collector/check/defaults @@ -354,6 +372,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../../../pkg/network/payload diff --git a/comp/otelcol/otlp/components/exporter/datadogexporter/go.sum b/comp/otelcol/otlp/components/exporter/datadogexporter/go.sum index eb9929b401ff..e129ff16bb95 100644 --- a/comp/otelcol/otlp/components/exporter/datadogexporter/go.sum +++ b/comp/otelcol/otlp/components/exporter/datadogexporter/go.sum @@ -4,6 +4,8 @@ github.com/DataDog/datadog-api-client-go/v2 v2.62.0 h1:AIe01Tyl5Y+kHCJskB4Vkw6AN github.com/DataDog/datadog-api-client-go/v2 v2.62.0/go.mod h1:d3tOEgUd2kfsr9uuHQdY+nXrWp4uikgTgVCPdKNK30U= github.com/DataDog/datadog-go/v5 v5.9.0 h1:0rhs5wBov9Iz+xLXLk4maaReHvOANM1ijSm2IKWtKFs= github.com/DataDog/datadog-go/v5 v5.9.0/go.mod h1:2SBt8zJu6r7sRQHZFMQ8oCukWTKj0ymwulmNgQzJ1JM= +github.com/DataDog/fastjq v0.0.0-20260506145947-c3336f252fa2 h1:a9xjjGg5UQzUd+yliPDF9e4wQA9qq9PKT+DRDUaonOM= +github.com/DataDog/fastjq v0.0.0-20260506145947-c3336f252fa2/go.mod h1:XbWpLvPZo0LbxPhXTMIXSB98lFwfF9MnkT77iRHTXMY= github.com/DataDog/go-acl v1.0.1 h1:uRbp98YmlVZYqNNyTBFNI3Y6bnziBLyCIR4nRu0bIpU= github.com/DataDog/go-acl v1.0.1/go.mod h1:YJx333qSb3GUqCLIbqKeGaZS2pUYh2IYGI7+FsX18CU= github.com/DataDog/go-sqllexer v0.2.4 h1:Ah9v8g5KX8vNV7q3t6YoA3fW4F/1OvZh/JbyfPcaySA= @@ -21,6 +23,16 @@ github.com/DataDog/zstd_0 v0.0.0-20210310093942-586c1286621f/go.mod h1:oXfOhM/Kr github.com/Microsoft/go-winio v0.5.0/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= +github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0= +github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k= +github.com/alecthomas/participle/v2 v2.1.4 h1:W/H79S8Sat/krZ3el6sQMvMaahJ+XcM9WSI2naI7w2U= +github.com/alecthomas/participle/v2 v2.1.4/go.mod h1:8tqVbpTX20Ru4NfYQgZf4mP18eXPTBViyMWiArNEgGI= +github.com/alecthomas/repr v0.5.2 h1:SU73FTI9D1P5UNtvseffFSGmdNci/O6RsqzeXJtP0Qs= +github.com/alecthomas/repr v0.5.2/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= +github.com/antchfx/xmlquery v1.5.1 h1:T9I4Ns1EXiWHy0IqKupGhnfTQtJwlGrpXtauYOoNv78= +github.com/antchfx/xmlquery v1.5.1/go.mod h1:bVqnl7TaDXSReKINrhZz+2E/PbCu2tUahb+wZ7WZNT8= +github.com/antchfx/xpath v1.3.6 h1:s0y+ElRRtTQdfHP609qFu0+c6bglDv20pqOViQjjdPI= +github.com/antchfx/xpath v1.3.6/go.mod h1:i54GszH55fYfBmoZXapTHN8T8tkcHfRgLyVwwqzXNcs= github.com/benbjohnson/clock v1.3.5 h1:VvXlSJBzZpA/zum6Sj74hxwYI2DIxRWuNIoXAzHZz5o= github.com/benbjohnson/clock v1.3.5/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= @@ -43,6 +55,10 @@ github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkp github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= github.com/ebitengine/purego v0.10.0 h1:QIw4xfpWT6GWTzaW5XEKy3HXoqrJGx1ijYHzTF0/ISU= github.com/ebitengine/purego v0.10.0/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= +github.com/elastic/go-grok v0.3.1 h1:WEhUxe2KrwycMnlvMimJXvzRa7DoByJB4PVUIE1ZD/U= +github.com/elastic/go-grok v0.3.1/go.mod h1:n38ls8ZgOboZRgKcjMY8eFeZFMmcL9n2lP0iHhIDk64= +github.com/elastic/lunes v0.2.2 h1:dZFEaebNg9l+mzvOQN6Nd/c9y6y8rUe3tBWsTgvM08U= +github.com/elastic/lunes v0.2.2/go.mod h1:u3W/BdONWTrh0JjNZ21C907dDc+cUZttZrGa625nf2k= github.com/fatih/color v1.19.0 h1:Zp3PiM21/9Ld6FzSKyL5c/BULoe/ONr9KlbYVOfG8+w= github.com/fatih/color v1.19.0/go.mod h1:zNk67I0ZUT1bEGsSGyCZYZNrHuTkJJB+r6Q9VuMi0LE= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= @@ -71,6 +87,9 @@ github.com/gofrs/flock v0.13.0 h1:95JolYOvGMqeH31+FC7D2+uULf6mG61mEZ/A8dRYMzw= github.com/gofrs/flock v0.13.0/go.mod h1:jxeyy9R1auM5S6JYDBhDt+E2TCo7DkratH4Pgi8P+Z0= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 h1:f+oWsMOmNPc8JmEHVZIycC7hBoQxHH9pNKQORJNozsQ= +github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUvekVysuuOpQKo3191zZyTpiI6se1N1ULghS0sw= github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/mock v1.7.0-rc.1 h1:YojYx61/OLFsiv6Rw1Z96LpldJIy31o+UHmwAUMJ6/U= github.com/golang/mock v1.7.0-rc.1/go.mod h1:s42URUywIqd+OcERslBJvOjepvNymP31m3q8d/GkuRs= @@ -80,6 +99,7 @@ github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6 github.com/golang/snappy v1.0.0 h1:Oy607GVXHs7RtbggtPBnr2RmDArIsAefDwvrdWvRhGs= github.com/golang/snappy v1.0.0/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/go-tpm v0.9.8 h1:slArAR9Ft+1ybZu0lBwpSmpwhRXaa85hWtMinMyRAWo= @@ -94,8 +114,14 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/hashicorp/go-version v1.9.0 h1:CeOIz6k+LoN3qX9Z0tyQrPtiB1DFYRPfCIBtaXPSCnA= github.com/hashicorp/go-version v1.9.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= +github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= +github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= +github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= +github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= +github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= @@ -104,6 +130,8 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.19.0 h1:sXLILfc9jV2QYWkzFOPWStmcUVH2RHEB1JCdY2oVvCQ= github.com/klauspost/compress v1.19.0/go.mod h1:cwPg85FWrGar70rWktvGQj8/hthj3wpl0PGDogxkrSQ= +github.com/klauspost/cpuid/v2 v2.3.0 h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzhA9Y= +github.com/klauspost/cpuid/v2 v2.3.0/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= github.com/knadh/koanf/maps v0.1.2 h1:RBfmAW5CnZT+PJ1CVc1QSJKf4Xu9kxfQgYVQSu8hpbo= github.com/knadh/koanf/maps v0.1.2/go.mod h1:npD/QZY3V6ghQDdcQzl1W4ICNVTkohC8E73eI2xW4yI= github.com/knadh/koanf/providers/confmap v1.0.0 h1:mHKLJTE7iXEys6deO5p6olAiZdG5zwp8Aebir+/EaRE= @@ -120,6 +148,8 @@ github.com/lightstep/go-expohisto v1.0.0 h1:UPtTS1rGdtehbbAF7o/dhkWLTDI73UifG8Lb github.com/lightstep/go-expohisto v1.0.0/go.mod h1:xDXD0++Mu2FOaItXtdDfksfgxfV0z1TMPa+e/EUd0cs= github.com/lufia/plan9stats v0.0.0-20260330125221-c963978e514e h1:Q6MvJtQK/iRcRtzAscm/zF23XxJlbECiGPyRicsX+Ak= github.com/lufia/plan9stats v0.0.0-20260330125221-c963978e514e/go.mod h1:autxFIvghDt3jPTLoqZ9OZ7s9qTGNAWmYCjVFWPX/zg= +github.com/magefile/mage v1.15.0 h1:BvGheCMAsG3bWUDbZ8AyXXpCNwU9u5CB6sM+HNb9HYg= +github.com/magefile/mage v1.15.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A= github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= github.com/mattn/go-isatty v0.0.22 h1:j8l17JJ9i6VGPUFUYoTUKPSgKe/83EYU2zBC7YNKMw4= @@ -146,6 +176,8 @@ github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.156.0/go.mod h1:CaT/YS8vvoNgsLewbtwDpS0mAgsHXNXceSPzlP+TeJI= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/datadog v0.156.0 h1:ZEw9DbPpK7r6iAL65Dj3IUCWdXF4FM8ZbGBPJa+f9GE= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/datadog v0.156.0/go.mod h1:pue+2b5alMlZ0IT1cRyCU8K6JljqtnrIyQH5EU/6eU8= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0 h1:ESNQwLZhQlKcbCzGfFNJu3MkNur35dVBbf7sE0MLDdk= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0/go.mod h1:KW8gom6sRRy60kO9SBSzBy2FGCvfgP7C3cprTqthpaA= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.156.0 h1:TaVowoyPtdhUwoQ1Q8BfKNfLR/o/uzQbqw1yXDDh+qU= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.156.0/go.mod h1:ctcl2y2QGid6re21XtVXie2vfndDeFBawU7xNLHj/nA= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.156.0 h1:K+3RiL9FC4/4xmZwgCY1Wg5fr4Wrf9OnYDf4F2tR5qY= @@ -224,6 +256,8 @@ github.com/tklauser/numcpus v0.11.0 h1:nSTwhKH5e1dMNsCdVBukSZrURJRoHbSEQjdEbY+9R github.com/tklauser/numcpus v0.11.0/go.mod h1:z+LwcLq54uWZTX0u/bGobaV34u6V7KNlTZejzM6/3MQ= github.com/twmb/murmur3 v1.1.8 h1:8Yt9taO/WN3l08xErzjeschgZU2QSrwm1kclYq+0aRg= github.com/twmb/murmur3 v1.1.8/go.mod h1:Qq/R7NUyOfr65zD+6Q5IHKsJLwP7exErjN6lyyq3OSQ= +github.com/ua-parser/uap-go v0.0.0-20251207011819-db9adb27a0b8 h1:yS0rzVnj7Z/ZeHzvv5erQbO2b8gyTL4CeMNodl9SJMQ= +github.com/ua-parser/uap-go v0.0.0-20251207011819-db9adb27a0b8/go.mod h1:gwANdYmo9R8LLwGnyDFWK2PMsaXXX2HhAvCnb/UhZsM= github.com/vmihailenco/msgpack/v5 v5.4.1 h1:cQriyiUvjTwOHg8QZaPihLWeRAAVoCpE00IUPn0Bjt8= github.com/vmihailenco/msgpack/v5 v5.4.1/go.mod h1:GaZTsDaehaPpQVyxrf5mtQlH+pc21PIudVV/E3rRQok= github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAhO7/IwNM9g= @@ -231,8 +265,13 @@ github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= +github.com/zeebo/assert v1.3.0 h1:g7C04CbJuIDKNPFHmsk4hwZDO5O+kntRxzaUoNXj+IQ= +github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= +github.com/zeebo/xxh3 v1.1.0 h1:s7DLGDK45Dyfg7++yxI0khrfwq9661w9EN78eP/UZVs= +github.com/zeebo/xxh3 v1.1.0/go.mod h1:IisAie1LELR4xhVinxWS5+zf1lA4p0MW4T+w+W07F5s= go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= go.opentelemetry.io/collector/client v1.62.0 h1:Vud5nn4gX2TzMnHpNhuUhvAi4GGcO0RsaId0dftHAjM= @@ -369,16 +408,36 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= +golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/crypto v0.54.0 h1:YLIA59K4fiNzHzjnZt2tUJQjQtUWfWbeHBqKtk3eScw= golang.org/x/crypto v0.54.0/go.mod h1:KWL8ny2AZdGR2cWmzeHrp2azQPGogOv+HeQaVEXC2dk= +golang.org/x/exp v0.0.0-20260611194520-c48552f49976 h1:X8Hz2ImujgbmetVuW+w2YkyZChE3cBpZi2P158rTG9M= +golang.org/x/exp v0.0.0-20260611194520-c48552f49976/go.mod h1:vnf4pv9iKZXY58sQE1L86zmNWJ4159e1RkcWiLCkeEY= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= +golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= golang.org/x/net v0.57.0 h1:K5+3DljvIuDG9/Jv9rvyMywYNFCQ9RSUY6OOTTkT+tE= golang.org/x/net v0.57.0/go.mod h1:KpXc8iv+r3XplLAG/f7Jsf9RPszJzdR0f58q9vGOuEU= golang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs= @@ -387,6 +446,12 @@ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.22.0 h1:SZjpbeLmrCk4xhRSZFNZW5gFUeCeFgjekvI/+gfScek= golang.org/x/sync v0.22.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -399,13 +464,37 @@ golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220627191245-f75cf1eec38b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.47.0 h1:o7XGOvZQCADBQQ4Y7VNq2dRWQR7JmOUW8Kxx4ZsNgWs= golang.org/x/sys v0.47.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= +golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= +golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/text v0.40.0 h1:Ub2Z6/xjgF1WrYQz2nuITOEegKFtiIy+rieRJ5lHZKs= golang.org/x/text v0.40.0/go.mod h1:hpnzDAfGV753zIKo+wk3u1bVKCGPbrnF7+7LBF/UHVY= golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= @@ -415,6 +504,10 @@ golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/comp/otelcol/otlp/components/exporter/logsagentexporter/go.mod b/comp/otelcol/otlp/components/exporter/logsagentexporter/go.mod index 6490f8d609a3..dca460942cd4 100644 --- a/comp/otelcol/otlp/components/exporter/logsagentexporter/go.mod +++ b/comp/otelcol/otlp/components/exporter/logsagentexporter/go.mod @@ -1,6 +1,6 @@ module github.com/DataDog/datadog-agent/comp/otelcol/otlp/components/exporter/logsagentexporter -go 1.25.0 +go 1.25.4 require ( github.com/DataDog/agent-payload/v5 v5.0.205 @@ -51,6 +51,7 @@ require ( github.com/DataDog/datadog-agent/pkg/fips v0.80.2 // indirect github.com/DataDog/datadog-agent/pkg/logs/status/utils v0.75.4 // indirect github.com/DataDog/datadog-agent/pkg/logs/types v0.80.2 // indirect + github.com/DataDog/datadog-agent/pkg/logs/vrl v0.0.0-00010101000000-000000000000 // indirect github.com/DataDog/datadog-agent/pkg/opentelemetry-mapping-go/otlp/metrics v0.82.0-devel.0.20260617134427-74e6d071eaae // indirect github.com/DataDog/datadog-agent/pkg/opentelemetry-mapping-go/otlp/rum v0.72.0-devel.0.20250907091827-dbb380833b5f // indirect github.com/DataDog/datadog-agent/pkg/orchestrator/model v0.80.2 // indirect @@ -71,18 +72,24 @@ require ( github.com/DataDog/datadog-agent/pkg/util/system v0.80.2 // indirect github.com/DataDog/datadog-agent/pkg/util/winutil v0.82.0-devel.0.20260624113434-509b872045c2 // indirect github.com/DataDog/datadog-api-client-go/v2 v2.62.0 // indirect + github.com/DataDog/fastjq v0.0.0-20260506145947-c3336f252fa2 // indirect github.com/DataDog/go-acl v1.0.1 // indirect github.com/DataDog/mmh3 v0.0.0-20210722141835-012dc69a9e49 // indirect github.com/DataDog/sketches-go v1.4.8 // indirect github.com/DataDog/zstd v1.5.8-0.20260421145859-31a7e515a571 // indirect github.com/DataDog/zstd_0 v0.0.0-20210310093942-586c1286621f // indirect github.com/Microsoft/go-winio v0.6.2 // indirect + github.com/alecthomas/participle/v2 v2.1.4 // indirect + github.com/antchfx/xmlquery v1.5.1 // indirect + github.com/antchfx/xpath v1.3.6 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/cenkalti/backoff/v7 v7.0.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/dustin/go-humanize v1.0.1 // indirect github.com/ebitengine/purego v0.10.0 // indirect + github.com/elastic/go-grok v0.3.1 // indirect + github.com/elastic/lunes v0.2.2 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/foxboron/go-tpm-keyfiles v0.0.0-20251226215517-609e4778396f // indirect github.com/fsnotify/fsnotify v1.10.1 // indirect @@ -94,17 +101,22 @@ require ( github.com/goccy/go-json v0.10.6 // indirect github.com/gofrs/flock v0.13.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect + github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect github.com/golang/snappy v1.0.0 // indirect github.com/google/go-tpm v0.9.8 // indirect github.com/google/uuid v1.6.0 // indirect github.com/hashicorp/go-version v1.9.0 // indirect + github.com/hashicorp/golang-lru v1.0.2 // indirect github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect + github.com/iancoleman/strcase v0.3.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/compress v1.19.0 // indirect + github.com/klauspost/cpuid/v2 v2.3.0 // indirect github.com/knadh/koanf/maps v0.1.2 // indirect github.com/knadh/koanf/providers/confmap v1.0.0 // indirect github.com/knadh/koanf/v2 v2.3.5 // indirect github.com/lufia/plan9stats v0.0.0-20260330125221-c963978e514e // indirect + github.com/magefile/mage v1.15.0 // indirect github.com/mdlayher/socket v0.6.0 // indirect github.com/mdlayher/vsock v1.3.0 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect @@ -113,6 +125,8 @@ require ( github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.156.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0 // indirect github.com/philhofer/fwd v1.2.0 // indirect github.com/pierrec/lz4/v4 v4.1.27 // indirect github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect @@ -129,7 +143,9 @@ require ( github.com/tklauser/go-sysconf v0.3.16 // indirect github.com/tklauser/numcpus v0.11.0 // indirect github.com/twmb/murmur3 v1.1.8 // indirect + github.com/ua-parser/uap-go v0.0.0-20251207011819-db9adb27a0b8 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect + github.com/zeebo/xxh3 v1.1.0 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/collector/client v1.62.0 // indirect go.opentelemetry.io/collector/component/componenttest v0.156.0 // indirect @@ -171,6 +187,7 @@ require ( go.yaml.in/yaml/v2 v2.4.4 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect golang.org/x/crypto v0.54.0 // indirect + golang.org/x/exp v0.0.0-20260611194520-c48552f49976 // indirect golang.org/x/net v0.57.0 // indirect golang.org/x/oauth2 v0.36.0 // indirect golang.org/x/sync v0.22.0 // indirect @@ -262,6 +279,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../../../pkg/collector/check/defaults @@ -290,6 +308,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../../../pkg/network/payload diff --git a/comp/otelcol/otlp/components/exporter/logsagentexporter/go.sum b/comp/otelcol/otlp/components/exporter/logsagentexporter/go.sum index 7df43ab75f85..4f6e17d42bc1 100644 --- a/comp/otelcol/otlp/components/exporter/logsagentexporter/go.sum +++ b/comp/otelcol/otlp/components/exporter/logsagentexporter/go.sum @@ -2,6 +2,8 @@ github.com/DataDog/agent-payload/v5 v5.0.205 h1:7+ZNser6vX1ptlZWO1UnYQ1trKoYmYFM github.com/DataDog/agent-payload/v5 v5.0.205/go.mod h1:GyA1vuCeRywrNNCbYeR0cOYKE8QkOVNAFDqsH8VNF5M= github.com/DataDog/datadog-api-client-go/v2 v2.62.0 h1:AIe01Tyl5Y+kHCJskB4Vkw6ANjHcD45bfbi//ICmAaU= github.com/DataDog/datadog-api-client-go/v2 v2.62.0/go.mod h1:d3tOEgUd2kfsr9uuHQdY+nXrWp4uikgTgVCPdKNK30U= +github.com/DataDog/fastjq v0.0.0-20260506145947-c3336f252fa2 h1:a9xjjGg5UQzUd+yliPDF9e4wQA9qq9PKT+DRDUaonOM= +github.com/DataDog/fastjq v0.0.0-20260506145947-c3336f252fa2/go.mod h1:XbWpLvPZo0LbxPhXTMIXSB98lFwfF9MnkT77iRHTXMY= github.com/DataDog/go-acl v1.0.1 h1:uRbp98YmlVZYqNNyTBFNI3Y6bnziBLyCIR4nRu0bIpU= github.com/DataDog/go-acl v1.0.1/go.mod h1:YJx333qSb3GUqCLIbqKeGaZS2pUYh2IYGI7+FsX18CU= github.com/DataDog/mmh3 v0.0.0-20210722141835-012dc69a9e49 h1:EbzDX8HPk5uE2FsJYxD74QmMw0/3CqSKhEr6teh0ncQ= @@ -14,6 +16,16 @@ github.com/DataDog/zstd_0 v0.0.0-20210310093942-586c1286621f h1:5Vuo4niPKFkfwW55 github.com/DataDog/zstd_0 v0.0.0-20210310093942-586c1286621f/go.mod h1:oXfOhM/Kr8OvqS6tVqJwxPBornV0yrx3bc+l0BDr7PQ= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= +github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0= +github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k= +github.com/alecthomas/participle/v2 v2.1.4 h1:W/H79S8Sat/krZ3el6sQMvMaahJ+XcM9WSI2naI7w2U= +github.com/alecthomas/participle/v2 v2.1.4/go.mod h1:8tqVbpTX20Ru4NfYQgZf4mP18eXPTBViyMWiArNEgGI= +github.com/alecthomas/repr v0.5.2 h1:SU73FTI9D1P5UNtvseffFSGmdNci/O6RsqzeXJtP0Qs= +github.com/alecthomas/repr v0.5.2/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= +github.com/antchfx/xmlquery v1.5.1 h1:T9I4Ns1EXiWHy0IqKupGhnfTQtJwlGrpXtauYOoNv78= +github.com/antchfx/xmlquery v1.5.1/go.mod h1:bVqnl7TaDXSReKINrhZz+2E/PbCu2tUahb+wZ7WZNT8= +github.com/antchfx/xpath v1.3.6 h1:s0y+ElRRtTQdfHP609qFu0+c6bglDv20pqOViQjjdPI= +github.com/antchfx/xpath v1.3.6/go.mod h1:i54GszH55fYfBmoZXapTHN8T8tkcHfRgLyVwwqzXNcs= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/cenkalti/backoff/v7 v7.0.0 h1:ZP+QAaaOnVUHo+ufFpZ835hbT3x2fy+h2lecVEosZ6A= @@ -28,6 +40,10 @@ github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkp github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= github.com/ebitengine/purego v0.10.0 h1:QIw4xfpWT6GWTzaW5XEKy3HXoqrJGx1ijYHzTF0/ISU= github.com/ebitengine/purego v0.10.0/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= +github.com/elastic/go-grok v0.3.1 h1:WEhUxe2KrwycMnlvMimJXvzRa7DoByJB4PVUIE1ZD/U= +github.com/elastic/go-grok v0.3.1/go.mod h1:n38ls8ZgOboZRgKcjMY8eFeZFMmcL9n2lP0iHhIDk64= +github.com/elastic/lunes v0.2.2 h1:dZFEaebNg9l+mzvOQN6Nd/c9y6y8rUe3tBWsTgvM08U= +github.com/elastic/lunes v0.2.2/go.mod h1:u3W/BdONWTrh0JjNZ21C907dDc+cUZttZrGa625nf2k= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/foxboron/go-tpm-keyfiles v0.0.0-20251226215517-609e4778396f h1:RJ+BDPLSHQO7cSjKBqjPJSbi1qfk9WcsjQDtZiw3dZw= @@ -54,10 +70,14 @@ github.com/gofrs/flock v0.13.0 h1:95JolYOvGMqeH31+FC7D2+uULf6mG61mEZ/A8dRYMzw= github.com/gofrs/flock v0.13.0/go.mod h1:jxeyy9R1auM5S6JYDBhDt+E2TCo7DkratH4Pgi8P+Z0= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 h1:f+oWsMOmNPc8JmEHVZIycC7hBoQxHH9pNKQORJNozsQ= +github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUvekVysuuOpQKo3191zZyTpiI6se1N1ULghS0sw= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/golang/snappy v1.0.0 h1:Oy607GVXHs7RtbggtPBnr2RmDArIsAefDwvrdWvRhGs= github.com/golang/snappy v1.0.0/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/go-tpm v0.9.8 h1:slArAR9Ft+1ybZu0lBwpSmpwhRXaa85hWtMinMyRAWo= @@ -71,8 +91,14 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/hashicorp/go-version v1.9.0 h1:CeOIz6k+LoN3qX9Z0tyQrPtiB1DFYRPfCIBtaXPSCnA= github.com/hashicorp/go-version v1.9.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= +github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= +github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= +github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= +github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= +github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= @@ -81,6 +107,8 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.19.0 h1:sXLILfc9jV2QYWkzFOPWStmcUVH2RHEB1JCdY2oVvCQ= github.com/klauspost/compress v1.19.0/go.mod h1:cwPg85FWrGar70rWktvGQj8/hthj3wpl0PGDogxkrSQ= +github.com/klauspost/cpuid/v2 v2.3.0 h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzhA9Y= +github.com/klauspost/cpuid/v2 v2.3.0/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= github.com/knadh/koanf/maps v0.1.2 h1:RBfmAW5CnZT+PJ1CVc1QSJKf4Xu9kxfQgYVQSu8hpbo= github.com/knadh/koanf/maps v0.1.2/go.mod h1:npD/QZY3V6ghQDdcQzl1W4ICNVTkohC8E73eI2xW4yI= github.com/knadh/koanf/providers/confmap v1.0.0 h1:mHKLJTE7iXEys6deO5p6olAiZdG5zwp8Aebir+/EaRE= @@ -95,6 +123,8 @@ github.com/lightstep/go-expohisto v1.0.0 h1:UPtTS1rGdtehbbAF7o/dhkWLTDI73UifG8Lb github.com/lightstep/go-expohisto v1.0.0/go.mod h1:xDXD0++Mu2FOaItXtdDfksfgxfV0z1TMPa+e/EUd0cs= github.com/lufia/plan9stats v0.0.0-20260330125221-c963978e514e h1:Q6MvJtQK/iRcRtzAscm/zF23XxJlbECiGPyRicsX+Ak= github.com/lufia/plan9stats v0.0.0-20260330125221-c963978e514e/go.mod h1:autxFIvghDt3jPTLoqZ9OZ7s9qTGNAWmYCjVFWPX/zg= +github.com/magefile/mage v1.15.0 h1:BvGheCMAsG3bWUDbZ8AyXXpCNwU9u5CB6sM+HNb9HYg= +github.com/magefile/mage v1.15.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A= github.com/mdlayher/socket v0.6.0 h1:ScZPaAGyO1icQnbFrhPM8mnXyMu9qukC1K4ZoM2IQKU= github.com/mdlayher/socket v0.6.0/go.mod h1:q7vozUAnxSqnjHc12Fik5yUKIzfZ8ITCfMkhOtE9z18= github.com/mdlayher/vsock v1.3.0 h1:bqQfZ1OznI03y6YiXp2sze05RVdzLn/zsfjnjd4+ivI= @@ -113,8 +143,12 @@ github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9 github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.156.0 h1:wca5xIy5I/8CAylZYgOYzj5P5JAAicBA8uNtiRNh2Zo= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.156.0/go.mod h1:CaT/YS8vvoNgsLewbtwDpS0mAgsHXNXceSPzlP+TeJI= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/datadog v0.156.0 h1:ZEw9DbPpK7r6iAL65Dj3IUCWdXF4FM8ZbGBPJa+f9GE= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/datadog v0.156.0/go.mod h1:pue+2b5alMlZ0IT1cRyCU8K6JljqtnrIyQH5EU/6eU8= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0 h1:ESNQwLZhQlKcbCzGfFNJu3MkNur35dVBbf7sE0MLDdk= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0/go.mod h1:KW8gom6sRRy60kO9SBSzBy2FGCvfgP7C3cprTqthpaA= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.156.0 h1:TaVowoyPtdhUwoQ1Q8BfKNfLR/o/uzQbqw1yXDDh+qU= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.156.0/go.mod h1:ctcl2y2QGid6re21XtVXie2vfndDeFBawU7xNLHj/nA= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.156.0 h1:K+3RiL9FC4/4xmZwgCY1Wg5fr4Wrf9OnYDf4F2tR5qY= @@ -164,14 +198,21 @@ github.com/tklauser/numcpus v0.11.0 h1:nSTwhKH5e1dMNsCdVBukSZrURJRoHbSEQjdEbY+9R github.com/tklauser/numcpus v0.11.0/go.mod h1:z+LwcLq54uWZTX0u/bGobaV34u6V7KNlTZejzM6/3MQ= github.com/twmb/murmur3 v1.1.8 h1:8Yt9taO/WN3l08xErzjeschgZU2QSrwm1kclYq+0aRg= github.com/twmb/murmur3 v1.1.8/go.mod h1:Qq/R7NUyOfr65zD+6Q5IHKsJLwP7exErjN6lyyq3OSQ= +github.com/ua-parser/uap-go v0.0.0-20251207011819-db9adb27a0b8 h1:yS0rzVnj7Z/ZeHzvv5erQbO2b8gyTL4CeMNodl9SJMQ= +github.com/ua-parser/uap-go v0.0.0-20251207011819-db9adb27a0b8/go.mod h1:gwANdYmo9R8LLwGnyDFWK2PMsaXXX2HhAvCnb/UhZsM= github.com/vmihailenco/msgpack/v5 v5.4.1 h1:cQriyiUvjTwOHg8QZaPihLWeRAAVoCpE00IUPn0Bjt8= github.com/vmihailenco/msgpack/v5 v5.4.1/go.mod h1:GaZTsDaehaPpQVyxrf5mtQlH+pc21PIudVV/E3rRQok= github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAhO7/IwNM9g= github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= +github.com/zeebo/assert v1.3.0 h1:g7C04CbJuIDKNPFHmsk4hwZDO5O+kntRxzaUoNXj+IQ= +github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= +github.com/zeebo/xxh3 v1.1.0 h1:s7DLGDK45Dyfg7++yxI0khrfwq9661w9EN78eP/UZVs= +github.com/zeebo/xxh3 v1.1.0/go.mod h1:IisAie1LELR4xhVinxWS5+zf1lA4p0MW4T+w+W07F5s= go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= go.opentelemetry.io/collector/client v1.62.0 h1:Vud5nn4gX2TzMnHpNhuUhvAi4GGcO0RsaId0dftHAjM= @@ -295,14 +336,34 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= +golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/crypto v0.54.0 h1:YLIA59K4fiNzHzjnZt2tUJQjQtUWfWbeHBqKtk3eScw= golang.org/x/crypto v0.54.0/go.mod h1:KWL8ny2AZdGR2cWmzeHrp2azQPGogOv+HeQaVEXC2dk= +golang.org/x/exp v0.0.0-20260611194520-c48552f49976 h1:X8Hz2ImujgbmetVuW+w2YkyZChE3cBpZi2P158rTG9M= +golang.org/x/exp v0.0.0-20260611194520-c48552f49976/go.mod h1:vnf4pv9iKZXY58sQE1L86zmNWJ4159e1RkcWiLCkeEY= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= +golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= golang.org/x/net v0.57.0 h1:K5+3DljvIuDG9/Jv9rvyMywYNFCQ9RSUY6OOTTkT+tE= golang.org/x/net v0.57.0/go.mod h1:KpXc8iv+r3XplLAG/f7Jsf9RPszJzdR0f58q9vGOuEU= golang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs= @@ -310,18 +371,50 @@ golang.org/x/oauth2 v0.36.0/go.mod h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7 golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.22.0 h1:SZjpbeLmrCk4xhRSZFNZW5gFUeCeFgjekvI/+gfScek= golang.org/x/sync v0.22.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.47.0 h1:o7XGOvZQCADBQQ4Y7VNq2dRWQR7JmOUW8Kxx4ZsNgWs= golang.org/x/sys v0.47.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= +golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= +golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/text v0.40.0 h1:Ub2Z6/xjgF1WrYQz2nuITOEegKFtiIy+rieRJ5lHZKs= golang.org/x/text v0.40.0/go.mod h1:hpnzDAfGV753zIKo+wk3u1bVKCGPbrnF7+7LBF/UHVY= golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= @@ -330,6 +423,10 @@ golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGm golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/comp/otelcol/otlp/components/exporter/serializerexporter/go.mod b/comp/otelcol/otlp/components/exporter/serializerexporter/go.mod index ce8b5f403bf1..520c81d6d926 100644 --- a/comp/otelcol/otlp/components/exporter/serializerexporter/go.mod +++ b/comp/otelcol/otlp/components/exporter/serializerexporter/go.mod @@ -1,6 +1,6 @@ module github.com/DataDog/datadog-agent/comp/otelcol/otlp/components/exporter/serializerexporter -go 1.25.0 +go 1.25.4 require ( github.com/DataDog/datadog-agent/comp/core/config v0.82.0-devel.0.20260624113434-509b872045c2 @@ -54,6 +54,27 @@ require ( google.golang.org/protobuf v1.36.12-0.20260116114154-8c4c4ae446ca ) +require ( + github.com/DataDog/datadog-agent/pkg/logs/vrl v0.0.0-00010101000000-000000000000 // indirect + github.com/DataDog/fastjq v0.0.0-20260506145947-c3336f252fa2 // indirect + github.com/alecthomas/participle/v2 v2.1.4 // indirect + github.com/antchfx/xmlquery v1.5.1 // indirect + github.com/antchfx/xpath v1.3.6 // indirect + github.com/elastic/go-grok v0.3.1 // indirect + github.com/elastic/lunes v0.2.2 // indirect + github.com/goccy/go-json v0.10.6 // indirect + github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect + github.com/hashicorp/golang-lru v1.0.2 // indirect + github.com/iancoleman/strcase v0.3.0 // indirect + github.com/klauspost/cpuid/v2 v2.3.0 // indirect + github.com/magefile/mage v1.15.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.156.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0 // indirect + github.com/ua-parser/uap-go v0.0.0-20251207011819-db9adb27a0b8 // indirect + github.com/zeebo/xxh3 v1.1.0 // indirect + golang.org/x/exp v0.0.0-20260611194520-c48552f49976 // indirect +) + require ( github.com/DataDog/agent-payload/v5 v5.0.205 // indirect github.com/DataDog/datadog-agent/comp/core/configstreamconsumer/def v0.0.0-00010101000000-000000000000 // indirect @@ -290,6 +311,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../../../pkg/collector/check/defaults @@ -318,6 +340,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../../../pkg/network/payload diff --git a/comp/otelcol/otlp/components/exporter/serializerexporter/go.sum b/comp/otelcol/otlp/components/exporter/serializerexporter/go.sum index 975ac1e2531d..0b7eb46fedee 100644 --- a/comp/otelcol/otlp/components/exporter/serializerexporter/go.sum +++ b/comp/otelcol/otlp/components/exporter/serializerexporter/go.sum @@ -1,5 +1,7 @@ github.com/DataDog/agent-payload/v5 v5.0.205 h1:7+ZNser6vX1ptlZWO1UnYQ1trKoYmYFMvt1/ZIw3iD0= github.com/DataDog/agent-payload/v5 v5.0.205/go.mod h1:GyA1vuCeRywrNNCbYeR0cOYKE8QkOVNAFDqsH8VNF5M= +github.com/DataDog/fastjq v0.0.0-20260506145947-c3336f252fa2 h1:a9xjjGg5UQzUd+yliPDF9e4wQA9qq9PKT+DRDUaonOM= +github.com/DataDog/fastjq v0.0.0-20260506145947-c3336f252fa2/go.mod h1:XbWpLvPZo0LbxPhXTMIXSB98lFwfF9MnkT77iRHTXMY= github.com/DataDog/go-acl v1.0.1 h1:uRbp98YmlVZYqNNyTBFNI3Y6bnziBLyCIR4nRu0bIpU= github.com/DataDog/go-acl v1.0.1/go.mod h1:YJx333qSb3GUqCLIbqKeGaZS2pUYh2IYGI7+FsX18CU= github.com/DataDog/mmh3 v0.0.0-20210722141835-012dc69a9e49 h1:EbzDX8HPk5uE2FsJYxD74QmMw0/3CqSKhEr6teh0ncQ= @@ -12,6 +14,16 @@ github.com/DataDog/zstd_0 v0.0.0-20210310093942-586c1286621f h1:5Vuo4niPKFkfwW55 github.com/DataDog/zstd_0 v0.0.0-20210310093942-586c1286621f/go.mod h1:oXfOhM/Kr8OvqS6tVqJwxPBornV0yrx3bc+l0BDr7PQ= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= +github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0= +github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k= +github.com/alecthomas/participle/v2 v2.1.4 h1:W/H79S8Sat/krZ3el6sQMvMaahJ+XcM9WSI2naI7w2U= +github.com/alecthomas/participle/v2 v2.1.4/go.mod h1:8tqVbpTX20Ru4NfYQgZf4mP18eXPTBViyMWiArNEgGI= +github.com/alecthomas/repr v0.5.2 h1:SU73FTI9D1P5UNtvseffFSGmdNci/O6RsqzeXJtP0Qs= +github.com/alecthomas/repr v0.5.2/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= +github.com/antchfx/xmlquery v1.5.1 h1:T9I4Ns1EXiWHy0IqKupGhnfTQtJwlGrpXtauYOoNv78= +github.com/antchfx/xmlquery v1.5.1/go.mod h1:bVqnl7TaDXSReKINrhZz+2E/PbCu2tUahb+wZ7WZNT8= +github.com/antchfx/xpath v1.3.6 h1:s0y+ElRRtTQdfHP609qFu0+c6bglDv20pqOViQjjdPI= +github.com/antchfx/xpath v1.3.6/go.mod h1:i54GszH55fYfBmoZXapTHN8T8tkcHfRgLyVwwqzXNcs= github.com/benbjohnson/clock v1.3.5 h1:VvXlSJBzZpA/zum6Sj74hxwYI2DIxRWuNIoXAzHZz5o= github.com/benbjohnson/clock v1.3.5/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= @@ -29,6 +41,10 @@ github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkp github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= github.com/ebitengine/purego v0.10.0 h1:QIw4xfpWT6GWTzaW5XEKy3HXoqrJGx1ijYHzTF0/ISU= github.com/ebitengine/purego v0.10.0/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= +github.com/elastic/go-grok v0.3.1 h1:WEhUxe2KrwycMnlvMimJXvzRa7DoByJB4PVUIE1ZD/U= +github.com/elastic/go-grok v0.3.1/go.mod h1:n38ls8ZgOboZRgKcjMY8eFeZFMmcL9n2lP0iHhIDk64= +github.com/elastic/lunes v0.2.2 h1:dZFEaebNg9l+mzvOQN6Nd/c9y6y8rUe3tBWsTgvM08U= +github.com/elastic/lunes v0.2.2/go.mod h1:u3W/BdONWTrh0JjNZ21C907dDc+cUZttZrGa625nf2k= github.com/fatih/color v1.19.0 h1:Zp3PiM21/9Ld6FzSKyL5c/BULoe/ONr9KlbYVOfG8+w= github.com/fatih/color v1.19.0/go.mod h1:zNk67I0ZUT1bEGsSGyCZYZNrHuTkJJB+r6Q9VuMi0LE= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= @@ -51,16 +67,22 @@ github.com/go-viper/mapstructure/v2 v2.5.0 h1:vM5IJoUAy3d7zRSVtIwQgBj7BiWtMPfmPE github.com/go-viper/mapstructure/v2 v2.5.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= +github.com/goccy/go-json v0.10.6 h1:p8HrPJzOakx/mn/bQtjgNjdTcN+/S6FcG2CTtQOrHVU= +github.com/goccy/go-json v0.10.6/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= github.com/gofrs/flock v0.13.0 h1:95JolYOvGMqeH31+FC7D2+uULf6mG61mEZ/A8dRYMzw= github.com/gofrs/flock v0.13.0/go.mod h1:jxeyy9R1auM5S6JYDBhDt+E2TCo7DkratH4Pgi8P+Z0= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 h1:f+oWsMOmNPc8JmEHVZIycC7hBoQxHH9pNKQORJNozsQ= +github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUvekVysuuOpQKo3191zZyTpiI6se1N1ULghS0sw= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/golang/snappy v1.0.0 h1:Oy607GVXHs7RtbggtPBnr2RmDArIsAefDwvrdWvRhGs= github.com/golang/snappy v1.0.0/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/go-tpm v0.9.8 h1:slArAR9Ft+1ybZu0lBwpSmpwhRXaa85hWtMinMyRAWo= @@ -75,8 +97,14 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/hashicorp/go-version v1.9.0 h1:CeOIz6k+LoN3qX9Z0tyQrPtiB1DFYRPfCIBtaXPSCnA= github.com/hashicorp/go-version v1.9.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= +github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= +github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= +github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= +github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= +github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= @@ -85,6 +113,8 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.19.0 h1:sXLILfc9jV2QYWkzFOPWStmcUVH2RHEB1JCdY2oVvCQ= github.com/klauspost/compress v1.19.0/go.mod h1:cwPg85FWrGar70rWktvGQj8/hthj3wpl0PGDogxkrSQ= +github.com/klauspost/cpuid/v2 v2.3.0 h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzhA9Y= +github.com/klauspost/cpuid/v2 v2.3.0/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= github.com/knadh/koanf/maps v0.1.2 h1:RBfmAW5CnZT+PJ1CVc1QSJKf4Xu9kxfQgYVQSu8hpbo= github.com/knadh/koanf/maps v0.1.2/go.mod h1:npD/QZY3V6ghQDdcQzl1W4ICNVTkohC8E73eI2xW4yI= github.com/knadh/koanf/providers/confmap v1.0.0 h1:mHKLJTE7iXEys6deO5p6olAiZdG5zwp8Aebir+/EaRE= @@ -101,6 +131,8 @@ github.com/lightstep/go-expohisto v1.0.0 h1:UPtTS1rGdtehbbAF7o/dhkWLTDI73UifG8Lb github.com/lightstep/go-expohisto v1.0.0/go.mod h1:xDXD0++Mu2FOaItXtdDfksfgxfV0z1TMPa+e/EUd0cs= github.com/lufia/plan9stats v0.0.0-20260330125221-c963978e514e h1:Q6MvJtQK/iRcRtzAscm/zF23XxJlbECiGPyRicsX+Ak= github.com/lufia/plan9stats v0.0.0-20260330125221-c963978e514e/go.mod h1:autxFIvghDt3jPTLoqZ9OZ7s9qTGNAWmYCjVFWPX/zg= +github.com/magefile/mage v1.15.0 h1:BvGheCMAsG3bWUDbZ8AyXXpCNwU9u5CB6sM+HNb9HYg= +github.com/magefile/mage v1.15.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A= github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= github.com/mattn/go-isatty v0.0.22 h1:j8l17JJ9i6VGPUFUYoTUKPSgKe/83EYU2zBC7YNKMw4= @@ -127,6 +159,8 @@ github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.156.0/go.mod h1:CaT/YS8vvoNgsLewbtwDpS0mAgsHXNXceSPzlP+TeJI= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/datadog v0.156.0 h1:ZEw9DbPpK7r6iAL65Dj3IUCWdXF4FM8ZbGBPJa+f9GE= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/datadog v0.156.0/go.mod h1:pue+2b5alMlZ0IT1cRyCU8K6JljqtnrIyQH5EU/6eU8= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0 h1:ESNQwLZhQlKcbCzGfFNJu3MkNur35dVBbf7sE0MLDdk= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0/go.mod h1:KW8gom6sRRy60kO9SBSzBy2FGCvfgP7C3cprTqthpaA= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.156.0 h1:TaVowoyPtdhUwoQ1Q8BfKNfLR/o/uzQbqw1yXDDh+qU= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.156.0/go.mod h1:ctcl2y2QGid6re21XtVXie2vfndDeFBawU7xNLHj/nA= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.156.0 h1:K+3RiL9FC4/4xmZwgCY1Wg5fr4Wrf9OnYDf4F2tR5qY= @@ -188,14 +222,21 @@ github.com/tklauser/numcpus v0.11.0 h1:nSTwhKH5e1dMNsCdVBukSZrURJRoHbSEQjdEbY+9R github.com/tklauser/numcpus v0.11.0/go.mod h1:z+LwcLq54uWZTX0u/bGobaV34u6V7KNlTZejzM6/3MQ= github.com/twmb/murmur3 v1.1.8 h1:8Yt9taO/WN3l08xErzjeschgZU2QSrwm1kclYq+0aRg= github.com/twmb/murmur3 v1.1.8/go.mod h1:Qq/R7NUyOfr65zD+6Q5IHKsJLwP7exErjN6lyyq3OSQ= +github.com/ua-parser/uap-go v0.0.0-20251207011819-db9adb27a0b8 h1:yS0rzVnj7Z/ZeHzvv5erQbO2b8gyTL4CeMNodl9SJMQ= +github.com/ua-parser/uap-go v0.0.0-20251207011819-db9adb27a0b8/go.mod h1:gwANdYmo9R8LLwGnyDFWK2PMsaXXX2HhAvCnb/UhZsM= github.com/vmihailenco/msgpack/v5 v5.4.1 h1:cQriyiUvjTwOHg8QZaPihLWeRAAVoCpE00IUPn0Bjt8= github.com/vmihailenco/msgpack/v5 v5.4.1/go.mod h1:GaZTsDaehaPpQVyxrf5mtQlH+pc21PIudVV/E3rRQok= github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAhO7/IwNM9g= github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= +github.com/zeebo/assert v1.3.0 h1:g7C04CbJuIDKNPFHmsk4hwZDO5O+kntRxzaUoNXj+IQ= +github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= +github.com/zeebo/xxh3 v1.1.0 h1:s7DLGDK45Dyfg7++yxI0khrfwq9661w9EN78eP/UZVs= +github.com/zeebo/xxh3 v1.1.0/go.mod h1:IisAie1LELR4xhVinxWS5+zf1lA4p0MW4T+w+W07F5s= go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= go.opentelemetry.io/collector/client v1.62.0 h1:Vud5nn4gX2TzMnHpNhuUhvAi4GGcO0RsaId0dftHAjM= @@ -319,31 +360,83 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= +golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/crypto v0.54.0 h1:YLIA59K4fiNzHzjnZt2tUJQjQtUWfWbeHBqKtk3eScw= golang.org/x/crypto v0.54.0/go.mod h1:KWL8ny2AZdGR2cWmzeHrp2azQPGogOv+HeQaVEXC2dk= +golang.org/x/exp v0.0.0-20260611194520-c48552f49976 h1:X8Hz2ImujgbmetVuW+w2YkyZChE3cBpZi2P158rTG9M= +golang.org/x/exp v0.0.0-20260611194520-c48552f49976/go.mod h1:vnf4pv9iKZXY58sQE1L86zmNWJ4159e1RkcWiLCkeEY= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= +golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= golang.org/x/net v0.57.0 h1:K5+3DljvIuDG9/Jv9rvyMywYNFCQ9RSUY6OOTTkT+tE= golang.org/x/net v0.57.0/go.mod h1:KpXc8iv+r3XplLAG/f7Jsf9RPszJzdR0f58q9vGOuEU= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.22.0 h1:SZjpbeLmrCk4xhRSZFNZW5gFUeCeFgjekvI/+gfScek= golang.org/x/sync v0.22.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.47.0 h1:o7XGOvZQCADBQQ4Y7VNq2dRWQR7JmOUW8Kxx4ZsNgWs= golang.org/x/sys v0.47.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= +golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= +golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/text v0.40.0 h1:Ub2Z6/xjgF1WrYQz2nuITOEegKFtiIy+rieRJ5lHZKs= golang.org/x/text v0.40.0/go.mod h1:hpnzDAfGV753zIKo+wk3u1bVKCGPbrnF7+7LBF/UHVY= golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= @@ -352,6 +445,10 @@ golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGm golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/comp/otelcol/otlp/components/metricsclient/go.mod b/comp/otelcol/otlp/components/metricsclient/go.mod index 73ad4eb4a949..c9c23adbda58 100644 --- a/comp/otelcol/otlp/components/metricsclient/go.mod +++ b/comp/otelcol/otlp/components/metricsclient/go.mod @@ -107,6 +107,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../../pkg/collector/check/defaults @@ -135,6 +136,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../../pkg/network/payload diff --git a/comp/otelcol/otlp/components/processor/infraattributesprocessor/go.mod b/comp/otelcol/otlp/components/processor/infraattributesprocessor/go.mod index c69c64fe00f0..6b0bf987c57b 100644 --- a/comp/otelcol/otlp/components/processor/infraattributesprocessor/go.mod +++ b/comp/otelcol/otlp/components/processor/infraattributesprocessor/go.mod @@ -256,6 +256,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../../../pkg/collector/check/defaults @@ -284,6 +285,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../../../pkg/network/payload diff --git a/comp/otelcol/otlp/testutil/go.mod b/comp/otelcol/otlp/testutil/go.mod index 775ac98742a8..fcdb68ed0c84 100644 --- a/comp/otelcol/otlp/testutil/go.mod +++ b/comp/otelcol/otlp/testutil/go.mod @@ -157,6 +157,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -185,6 +186,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/comp/otelcol/status/def/go.mod b/comp/otelcol/status/def/go.mod index 21a07751d824..0776bddd5299 100644 --- a/comp/otelcol/status/def/go.mod +++ b/comp/otelcol/status/def/go.mod @@ -81,6 +81,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -109,6 +110,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/comp/otelcol/status/impl/go.mod b/comp/otelcol/status/impl/go.mod index 39aea249d130..f50909011a66 100644 --- a/comp/otelcol/status/impl/go.mod +++ b/comp/otelcol/status/impl/go.mod @@ -186,6 +186,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -214,6 +215,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/comp/serializer/logscompression/go.mod b/comp/serializer/logscompression/go.mod index f9001374f27c..73973aeb8ac4 100644 --- a/comp/serializer/logscompression/go.mod +++ b/comp/serializer/logscompression/go.mod @@ -155,6 +155,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -183,6 +184,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/comp/serializer/metricscompression/go.mod b/comp/serializer/metricscompression/go.mod index c8dd61855d3c..d8da3c327a4b 100644 --- a/comp/serializer/metricscompression/go.mod +++ b/comp/serializer/metricscompression/go.mod @@ -155,6 +155,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -183,6 +184,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/comp/trace/agent/def/go.mod b/comp/trace/agent/def/go.mod index cce8089c1cc4..3bc871dd8794 100644 --- a/comp/trace/agent/def/go.mod +++ b/comp/trace/agent/def/go.mod @@ -109,6 +109,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -137,6 +138,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/comp/trace/compression/def/go.mod b/comp/trace/compression/def/go.mod index c12c1bf29beb..e13d13126cb0 100644 --- a/comp/trace/compression/def/go.mod +++ b/comp/trace/compression/def/go.mod @@ -81,6 +81,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/agent/def => ../../../../comp/trace/agent/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -109,6 +110,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/comp/trace/compression/impl-gzip/go.mod b/comp/trace/compression/impl-gzip/go.mod index 0896aaf0f1ea..c4284807a814 100644 --- a/comp/trace/compression/impl-gzip/go.mod +++ b/comp/trace/compression/impl-gzip/go.mod @@ -83,6 +83,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/agent/def => ../../../../comp/trace/agent/def github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -111,6 +112,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/comp/trace/compression/impl-zstd/go.mod b/comp/trace/compression/impl-zstd/go.mod index f56f5cf57c99..307f5063b967 100644 --- a/comp/trace/compression/impl-zstd/go.mod +++ b/comp/trace/compression/impl-zstd/go.mod @@ -86,6 +86,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/agent/def => ../../../../comp/trace/agent/def github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -114,6 +115,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/deps/go.MODULE.bazel b/deps/go.MODULE.bazel index 4eb5c1b6c3a3..10cad8bf4dc9 100644 --- a/deps/go.MODULE.bazel +++ b/deps/go.MODULE.bazel @@ -149,6 +149,7 @@ use_repo( "com_github_bhmj_jsonslice", "com_github_blabber_go_freebsd_sysctl", "com_github_bmatcuk_doublestar_v4", + "com_github_cenkalti_backoff_v4", "com_github_cenkalti_backoff_v7", "com_github_cespare_xxhash_v2", "com_github_charlievieth_strcase", @@ -177,6 +178,7 @@ use_repo( "com_github_datadog_dd_trace_go_v2", "com_github_datadog_ddtrivy", "com_github_datadog_ebpf_manager", + "com_github_datadog_fastjq", "com_github_datadog_go_acl", "com_github_datadog_go_sqllexer", "com_github_datadog_go_tuf", @@ -195,6 +197,7 @@ use_repo( "com_github_elastic_go_freelru", "com_github_elastic_go_libaudit_v2", "com_github_elastic_go_seccomp_bpf", + "com_github_elastic_lunes", "com_github_envoyproxy_gateway", "com_github_envoyproxy_go_control_plane_envoy", "com_github_evanphx_json_patch_v5", @@ -303,6 +306,8 @@ use_repo( "com_github_open_telemetry_opentelemetry_collector_contrib_extension_pprofextension", "com_github_open_telemetry_opentelemetry_collector_contrib_extension_storage_filestorage", "com_github_open_telemetry_opentelemetry_collector_contrib_pkg_datadog", + "com_github_open_telemetry_opentelemetry_collector_contrib_pkg_golden", + "com_github_open_telemetry_opentelemetry_collector_contrib_pkg_ottl", "com_github_open_telemetry_opentelemetry_collector_contrib_pkg_pdatatest", "com_github_open_telemetry_opentelemetry_collector_contrib_pkg_resourcetotelemetry", "com_github_open_telemetry_opentelemetry_collector_contrib_pkg_sampling", @@ -389,6 +394,7 @@ use_repo( "com_github_stretchr_testify", "com_github_swaggest_jsonschema_go", "com_github_syndtr_gocapability", + "com_github_testcontainers_testcontainers_go", "com_github_tinylib_msgp", "com_github_twmb_franz_go", "com_github_twmb_franz_go_pkg_kadm", @@ -444,6 +450,7 @@ use_repo( "io_k8s_sigs_karpenter", "io_k8s_sigs_yaml", "io_k8s_utils", + "io_opentelemetry_go_collector_client", "io_opentelemetry_go_collector_component", "io_opentelemetry_go_collector_component_componentstatus", "io_opentelemetry_go_collector_component_componenttest", @@ -492,6 +499,7 @@ use_repo( "io_opentelemetry_go_collector_receiver", "io_opentelemetry_go_collector_receiver_nopreceiver", "io_opentelemetry_go_collector_receiver_otlpreceiver", + "io_opentelemetry_go_collector_receiver_receivertest", "io_opentelemetry_go_collector_receiver_xreceiver", "io_opentelemetry_go_collector_service", "io_opentelemetry_go_contrib_instrumentation_runtime", diff --git a/go.mod b/go.mod index 67434237a8b4..ab0f46c90ea5 100644 --- a/go.mod +++ b/go.mod @@ -555,6 +555,7 @@ require ( github.com/DataDog/datadog-agent/pkg/config/helper v0.80.4 // indirect github.com/DataDog/datadog-agent/pkg/config/nodetreemodel v0.80.4 // indirect github.com/DataDog/datadog-agent/pkg/logs/status/statusinterface v0.78.1 // indirect + github.com/DataDog/datadog-agent/pkg/logs/vrl v0.0.0-00010101000000-000000000000 // indirect github.com/DataDog/datadog-agent/pkg/opentelemetry-mapping-go/inframetadata v0.82.0-devel.0.20260617134427-74e6d071eaae // indirect github.com/DataDog/datadog-agent/pkg/opentelemetry-mapping-go/otlp/logs v0.74.0-devel.0.20251125141836-2ae7a968751c // indirect github.com/DataDog/datadog-agent/pkg/opentelemetry-mapping-go/otlp/metrics v0.82.0-devel.0.20260617134427-74e6d071eaae // indirect @@ -565,6 +566,7 @@ require ( github.com/DataDog/datadog-agent/pkg/util/buf v0.80.4 // indirect github.com/DataDog/datadog-agent/pkg/util/statstracker v0.78.1 // indirect github.com/DataDog/datadog-go v3.2.0+incompatible // indirect + github.com/DataDog/fastjq v0.0.0-20260506145947-c3336f252fa2 // indirect github.com/DataDog/go-libddwaf/v4 v4.10.0 // indirect github.com/DataDog/go-runtime-metrics-internal v0.0.4-0.20260217080614-b0f4edc38a6d // indirect github.com/DataDog/go-tuf v1.1.1-0.5.2 // indirect @@ -1290,6 +1292,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ./comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ./comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ./comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ./otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ./pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ./pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ./pkg/collector/check/defaults @@ -1318,6 +1321,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ./pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ./pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ./pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ./pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ./pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ./pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ./pkg/network/payload diff --git a/go.sum b/go.sum index ccad1e4aceff..4cc8abb25c0c 100644 --- a/go.sum +++ b/go.sum @@ -2551,6 +2551,8 @@ github.com/DataDog/ddtrivy v0.0.0-20260519164847-bf6bcaf2f9b7 h1:N9Ufc+tRU6BaVpx github.com/DataDog/ddtrivy v0.0.0-20260519164847-bf6bcaf2f9b7/go.mod h1:cy6fMTy/g9yD4GxWUXTTDzKKJE9ZbONxcwiQfpPrv/M= github.com/DataDog/ebpf-manager v0.8.0 h1:4L0PqS63shWA/WtSW+ShFthlnOJBuWgWNsLVezHYM6I= github.com/DataDog/ebpf-manager v0.8.0/go.mod h1:RiD34iatXndGN5PVbDuG8NuGdzlRjqSxXPvAeX9gyh8= +github.com/DataDog/fastjq v0.0.0-20260506145947-c3336f252fa2 h1:a9xjjGg5UQzUd+yliPDF9e4wQA9qq9PKT+DRDUaonOM= +github.com/DataDog/fastjq v0.0.0-20260506145947-c3336f252fa2/go.mod h1:XbWpLvPZo0LbxPhXTMIXSB98lFwfF9MnkT77iRHTXMY= github.com/DataDog/go-acl v1.0.1 h1:uRbp98YmlVZYqNNyTBFNI3Y6bnziBLyCIR4nRu0bIpU= github.com/DataDog/go-acl v1.0.1/go.mod h1:YJx333qSb3GUqCLIbqKeGaZS2pUYh2IYGI7+FsX18CU= github.com/DataDog/go-cmp v0.0.0-20250605161605-8f326bf2ab9d h1:ErpIQikDqtpE21afk2ExlJn0wg7gGWyUVu/RY4rBlMI= diff --git a/internal/qbranch/anomalydetection-testbench/go.mod b/internal/qbranch/anomalydetection-testbench/go.mod index 703bad3ff49a..185f88007269 100644 --- a/internal/qbranch/anomalydetection-testbench/go.mod +++ b/internal/qbranch/anomalydetection-testbench/go.mod @@ -66,6 +66,7 @@ require ( github.com/DataDog/datadog-agent/pkg/logs/sources v0.78.1 // indirect github.com/DataDog/datadog-agent/pkg/logs/status/utils v0.78.1 // indirect github.com/DataDog/datadog-agent/pkg/logs/types v0.80.2 // indirect + github.com/DataDog/datadog-agent/pkg/logs/vrl v0.0.0-00010101000000-000000000000 // indirect github.com/DataDog/datadog-agent/pkg/proto v0.80.2 // indirect github.com/DataDog/datadog-agent/pkg/remoteconfig/state v0.80.2 // indirect github.com/DataDog/datadog-agent/pkg/tagger/types v0.80.4 // indirect @@ -86,12 +87,16 @@ require ( github.com/DataDog/datadog-agent/pkg/util/system v0.80.4 // indirect github.com/DataDog/datadog-agent/pkg/util/winutil v0.82.0-devel.0.20260624113434-509b872045c2 // indirect github.com/DataDog/datadog-agent/pkg/version v0.81.0-devel.0.20260603133502-a41610237dba // indirect + github.com/DataDog/fastjq v0.0.0-20260506145947-c3336f252fa2 // indirect github.com/DataDog/go-acl v1.0.1 // indirect github.com/DataDog/go-tuf v1.1.1-0.5.2 // indirect github.com/DataDog/zstd v1.5.8-0.20260421145859-31a7e515a571 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect github.com/acobaugh/osrelease v0.1.0 // indirect + github.com/alecthomas/participle/v2 v2.1.4 // indirect github.com/andybalholm/brotli v1.2.1 // indirect + github.com/antchfx/xmlquery v1.5.1 // indirect + github.com/antchfx/xpath v1.3.6 // indirect github.com/apache/thrift v0.23.1-0.20260429145742-d2acd3c49e58 // indirect github.com/aws/aws-sdk-go-v2 v1.43.0 // indirect github.com/aws/aws-sdk-go-v2/credentials v1.19.30 // indirect @@ -104,19 +109,27 @@ require ( github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/dustin/go-humanize v1.0.1 // indirect github.com/ebitengine/purego v0.10.0 // indirect + github.com/elastic/go-grok v0.3.1 // indirect + github.com/elastic/lunes v0.2.2 // indirect github.com/fatih/color v1.19.0 // indirect github.com/go-ole/go-ole v1.3.0 // indirect github.com/go-viper/mapstructure/v2 v2.5.0 // indirect + github.com/gobwas/glob v0.2.3 // indirect github.com/goccy/go-json v0.10.6 // indirect github.com/gofrs/flock v0.13.0 // indirect + github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect github.com/google/flatbuffers v25.12.19+incompatible // indirect github.com/google/uuid v1.6.0 // indirect + github.com/hashicorp/go-version v1.9.0 // indirect + github.com/hashicorp/golang-lru v1.0.2 // indirect + github.com/iancoleman/strcase v0.3.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jsimonetti/rtnetlink/v2 v2.0.3 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/compress v1.19.0 // indirect github.com/klauspost/cpuid/v2 v2.3.0 // indirect github.com/lufia/plan9stats v0.0.0-20260330125221-c963978e514e // indirect + github.com/magefile/mage v1.15.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.22 // indirect github.com/mdlayher/socket v0.6.0 // indirect @@ -126,6 +139,8 @@ require ( github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.156.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.1.1 // indirect github.com/philhofer/fwd v1.2.0 // indirect @@ -145,8 +160,17 @@ require ( github.com/tklauser/go-sysconf v0.3.16 // indirect github.com/tklauser/numcpus v0.11.0 // indirect github.com/twmb/murmur3 v1.1.8 // indirect + github.com/ua-parser/uap-go v0.0.0-20251207011819-db9adb27a0b8 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect github.com/zeebo/xxh3 v1.1.0 // indirect + go.opentelemetry.io/collector/client v1.62.0 // indirect + go.opentelemetry.io/collector/component v1.62.0 // indirect + go.opentelemetry.io/collector/featuregate v1.62.0 // indirect + go.opentelemetry.io/collector/pdata v1.62.0 // indirect + go.opentelemetry.io/collector/pdata/pprofile v0.156.0 // indirect + go.opentelemetry.io/otel v1.44.1-0.20260622141720-fbe3d073ba93 // indirect + go.opentelemetry.io/otel/metric v1.44.1-0.20260622141720-fbe3d073ba93 // indirect + go.opentelemetry.io/otel/trace v1.44.1-0.20260622141720-fbe3d073ba93 // indirect go.uber.org/atomic v1.11.0 // indirect go.uber.org/dig v1.19.0 // indirect go.uber.org/multierr v1.11.0 // indirect @@ -281,6 +305,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/internal/qbranch/anomalydetection-testbench/go.sum b/internal/qbranch/anomalydetection-testbench/go.sum index f0024468b527..45848443e239 100644 --- a/internal/qbranch/anomalydetection-testbench/go.sum +++ b/internal/qbranch/anomalydetection-testbench/go.sum @@ -4,6 +4,8 @@ github.com/DataDog/agent-payload/v5 v5.0.205 h1:7+ZNser6vX1ptlZWO1UnYQ1trKoYmYFM github.com/DataDog/agent-payload/v5 v5.0.205/go.mod h1:GyA1vuCeRywrNNCbYeR0cOYKE8QkOVNAFDqsH8VNF5M= github.com/DataDog/datadog-api-client-go/v2 v2.62.0 h1:AIe01Tyl5Y+kHCJskB4Vkw6ANjHcD45bfbi//ICmAaU= github.com/DataDog/datadog-api-client-go/v2 v2.62.0/go.mod h1:d3tOEgUd2kfsr9uuHQdY+nXrWp4uikgTgVCPdKNK30U= +github.com/DataDog/fastjq v0.0.0-20260506145947-c3336f252fa2 h1:a9xjjGg5UQzUd+yliPDF9e4wQA9qq9PKT+DRDUaonOM= +github.com/DataDog/fastjq v0.0.0-20260506145947-c3336f252fa2/go.mod h1:XbWpLvPZo0LbxPhXTMIXSB98lFwfF9MnkT77iRHTXMY= github.com/DataDog/go-acl v1.0.1 h1:uRbp98YmlVZYqNNyTBFNI3Y6bnziBLyCIR4nRu0bIpU= github.com/DataDog/go-acl v1.0.1/go.mod h1:YJx333qSb3GUqCLIbqKeGaZS2pUYh2IYGI7+FsX18CU= github.com/DataDog/go-tuf v1.1.1-0.5.2 h1:YWvghV4ZvrQsPcUw8IOUMSDpqc3W5ruOIC+KJxPknv0= @@ -14,8 +16,18 @@ github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERo github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/acobaugh/osrelease v0.1.0 h1:Yb59HQDGGNhCj4suHaFQQfBps5wyoKLSSX/J/+UifRE= github.com/acobaugh/osrelease v0.1.0/go.mod h1:4bFEs0MtgHNHBrmHCt67gNisnabCRAlzdVasCEGHTWY= +github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0= +github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k= +github.com/alecthomas/participle/v2 v2.1.4 h1:W/H79S8Sat/krZ3el6sQMvMaahJ+XcM9WSI2naI7w2U= +github.com/alecthomas/participle/v2 v2.1.4/go.mod h1:8tqVbpTX20Ru4NfYQgZf4mP18eXPTBViyMWiArNEgGI= +github.com/alecthomas/repr v0.5.2 h1:SU73FTI9D1P5UNtvseffFSGmdNci/O6RsqzeXJtP0Qs= +github.com/alecthomas/repr v0.5.2/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= github.com/andybalholm/brotli v1.2.1 h1:R+f5xP285VArJDRgowrfb9DqL18yVK0gKAW/F+eTWro= github.com/andybalholm/brotli v1.2.1/go.mod h1:rzTDkvFWvIrjDXZHkuS16NPggd91W3kUSvPlQ1pLaKY= +github.com/antchfx/xmlquery v1.5.1 h1:T9I4Ns1EXiWHy0IqKupGhnfTQtJwlGrpXtauYOoNv78= +github.com/antchfx/xmlquery v1.5.1/go.mod h1:bVqnl7TaDXSReKINrhZz+2E/PbCu2tUahb+wZ7WZNT8= +github.com/antchfx/xpath v1.3.6 h1:s0y+ElRRtTQdfHP609qFu0+c6bglDv20pqOViQjjdPI= +github.com/antchfx/xpath v1.3.6/go.mod h1:i54GszH55fYfBmoZXapTHN8T8tkcHfRgLyVwwqzXNcs= github.com/apache/arrow-go/v18 v18.6.0 h1:GX/Jyd3R7mCLiECAwY9FWbbaYblie2WXBSz4Sw8fNpM= github.com/apache/arrow-go/v18 v18.6.0/go.mod h1:gm3MiPpY82fLYK5VKPB3WoJbsiLVDfT7flD5/vHReKw= github.com/apache/thrift v0.23.1-0.20260429145742-d2acd3c49e58 h1:rDLE+tSW60VzRD7v5I+DU22Mjhmm+mfLc5Xl5dHkx6w= @@ -45,6 +57,10 @@ github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkp github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= github.com/ebitengine/purego v0.10.0 h1:QIw4xfpWT6GWTzaW5XEKy3HXoqrJGx1ijYHzTF0/ISU= github.com/ebitengine/purego v0.10.0/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= +github.com/elastic/go-grok v0.3.1 h1:WEhUxe2KrwycMnlvMimJXvzRa7DoByJB4PVUIE1ZD/U= +github.com/elastic/go-grok v0.3.1/go.mod h1:n38ls8ZgOboZRgKcjMY8eFeZFMmcL9n2lP0iHhIDk64= +github.com/elastic/lunes v0.2.2 h1:dZFEaebNg9l+mzvOQN6Nd/c9y6y8rUe3tBWsTgvM08U= +github.com/elastic/lunes v0.2.2/go.mod h1:u3W/BdONWTrh0JjNZ21C907dDc+cUZttZrGa625nf2k= github.com/fatih/color v1.19.0 h1:Zp3PiM21/9Ld6FzSKyL5c/BULoe/ONr9KlbYVOfG8+w= github.com/fatih/color v1.19.0/go.mod h1:zNk67I0ZUT1bEGsSGyCZYZNrHuTkJJB+r6Q9VuMi0LE= github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= @@ -60,14 +76,20 @@ github.com/go-quicktest/qt v1.101.1-0.20240301121107-c6c8733fa1e6 h1:teYtXy9B7y5 github.com/go-quicktest/qt v1.101.1-0.20240301121107-c6c8733fa1e6/go.mod h1:p4lGIVX+8Wa6ZPNDvqcxq36XpUDLh42FLetFU7odllI= github.com/go-viper/mapstructure/v2 v2.5.0 h1:vM5IJoUAy3d7zRSVtIwQgBj7BiWtMPfmPEgAXnvj1Ro= github.com/go-viper/mapstructure/v2 v2.5.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= +github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= +github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= github.com/goccy/go-json v0.10.6 h1:p8HrPJzOakx/mn/bQtjgNjdTcN+/S6FcG2CTtQOrHVU= github.com/goccy/go-json v0.10.6/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= github.com/gofrs/flock v0.13.0 h1:95JolYOvGMqeH31+FC7D2+uULf6mG61mEZ/A8dRYMzw= github.com/gofrs/flock v0.13.0/go.mod h1:jxeyy9R1auM5S6JYDBhDt+E2TCo7DkratH4Pgi8P+Z0= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 h1:f+oWsMOmNPc8JmEHVZIycC7hBoQxHH9pNKQORJNozsQ= +github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUvekVysuuOpQKo3191zZyTpiI6se1N1ULghS0sw= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/flatbuffers v25.12.19+incompatible h1:haMV2JRRJCe1998HeW/p0X9UaMTK6SDo0ffLn2+DbLs= github.com/google/flatbuffers v25.12.19+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= @@ -75,6 +97,14 @@ github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/hashicorp/go-version v1.9.0 h1:CeOIz6k+LoN3qX9Z0tyQrPtiB1DFYRPfCIBtaXPSCnA= +github.com/hashicorp/go-version v1.9.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= +github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= +github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= +github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= +github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jsimonetti/rtnetlink/v2 v2.0.3 h1:Jcp7GTnTPepoUAJ9+LhTa7ZiebvNS56T1GtlEUaPNFE= @@ -93,6 +123,8 @@ github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0 github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/lufia/plan9stats v0.0.0-20260330125221-c963978e514e h1:Q6MvJtQK/iRcRtzAscm/zF23XxJlbECiGPyRicsX+Ak= github.com/lufia/plan9stats v0.0.0-20260330125221-c963978e514e/go.mod h1:autxFIvghDt3jPTLoqZ9OZ7s9qTGNAWmYCjVFWPX/zg= +github.com/magefile/mage v1.15.0 h1:BvGheCMAsG3bWUDbZ8AyXXpCNwU9u5CB6sM+HNb9HYg= +github.com/magefile/mage v1.15.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A= github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= github.com/mattn/go-isatty v0.0.22 h1:j8l17JJ9i6VGPUFUYoTUKPSgKe/83EYU2zBC7YNKMw4= @@ -115,6 +147,10 @@ github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9 github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.156.0 h1:wca5xIy5I/8CAylZYgOYzj5P5JAAicBA8uNtiRNh2Zo= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.156.0/go.mod h1:CaT/YS8vvoNgsLewbtwDpS0mAgsHXNXceSPzlP+TeJI= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0 h1:ESNQwLZhQlKcbCzGfFNJu3MkNur35dVBbf7sE0MLDdk= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0/go.mod h1:KW8gom6sRRy60kO9SBSzBy2FGCvfgP7C3cprTqthpaA= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.1.1 h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJwooC2xJA040= @@ -164,8 +200,11 @@ github.com/tklauser/numcpus v0.11.0 h1:nSTwhKH5e1dMNsCdVBukSZrURJRoHbSEQjdEbY+9R github.com/tklauser/numcpus v0.11.0/go.mod h1:z+LwcLq54uWZTX0u/bGobaV34u6V7KNlTZejzM6/3MQ= github.com/twmb/murmur3 v1.1.8 h1:8Yt9taO/WN3l08xErzjeschgZU2QSrwm1kclYq+0aRg= github.com/twmb/murmur3 v1.1.8/go.mod h1:Qq/R7NUyOfr65zD+6Q5IHKsJLwP7exErjN6lyyq3OSQ= +github.com/ua-parser/uap-go v0.0.0-20251207011819-db9adb27a0b8 h1:yS0rzVnj7Z/ZeHzvv5erQbO2b8gyTL4CeMNodl9SJMQ= +github.com/ua-parser/uap-go v0.0.0-20251207011819-db9adb27a0b8/go.mod h1:gwANdYmo9R8LLwGnyDFWK2PMsaXXX2HhAvCnb/UhZsM= github.com/xyproto/randomstring v1.0.5 h1:YtlWPoRdgMu3NZtP45drfy1GKoojuR7hmRcnhZqKjWU= github.com/xyproto/randomstring v1.0.5/go.mod h1:rgmS5DeNXLivK7YprL0pY+lTuhNQW3iGxZ18UQApw/E= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= github.com/zeebo/assert v1.3.0 h1:g7C04CbJuIDKNPFHmsk4hwZDO5O+kntRxzaUoNXj+IQ= @@ -174,6 +213,23 @@ github.com/zeebo/xxh3 v1.1.0 h1:s7DLGDK45Dyfg7++yxI0khrfwq9661w9EN78eP/UZVs= github.com/zeebo/xxh3 v1.1.0/go.mod h1:IisAie1LELR4xhVinxWS5+zf1lA4p0MW4T+w+W07F5s= go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= +go.opentelemetry.io/collector v0.156.0 h1:uMODfblUCYr7J+97Rva2h8sXgoFr3a6UP4ro+5nvbcU= +go.opentelemetry.io/collector/client v1.62.0 h1:Vud5nn4gX2TzMnHpNhuUhvAi4GGcO0RsaId0dftHAjM= +go.opentelemetry.io/collector/client v1.62.0/go.mod h1:iao8KfxMeND0zdp+PcHGPY9r1BDgS+OppY7RKLlUeUU= +go.opentelemetry.io/collector/component v1.62.0 h1:F1MHUlUEjSJgwcumsCbbH2rRmTK4dC8m/ipp9v4vFh0= +go.opentelemetry.io/collector/component v1.62.0/go.mod h1:NqdVWse4diWnlqh5WurI2KncJuBXe1zzYtxuC9Mmew0= +go.opentelemetry.io/collector/component/componenttest v0.156.0 h1:IV7xYP57kkKoBk7o9dYvToeotZ369A6/V+QIlLgnsEc= +go.opentelemetry.io/collector/component/componenttest v0.156.0/go.mod h1:YL7ByaKwuSuB+eBtm56awLXFlKJ7KI6jfrsjZd0uv8Y= +go.opentelemetry.io/collector/consumer v1.62.0 h1:nJzGs8soiciZvGhiA4OYwPRRCrTsXnNHrmzi/jaT3ck= +go.opentelemetry.io/collector/consumer v1.62.0/go.mod h1:uNbRHJ9LqgHxcWdLTvRTO4K3SSGZop1qlHKfV5lUvGg= +go.opentelemetry.io/collector/featuregate v1.62.0 h1:pYY7RlulSCTOS9mFWxasMLwYJCfNXHtnOkZlv3jg/V4= +go.opentelemetry.io/collector/featuregate v1.62.0/go.mod h1:4ga1QBMPEejXXmpyJS8lmaRpknJ3Lb9Bvk6e420bUFU= +go.opentelemetry.io/collector/internal/testutil v0.156.0 h1:Nu02vhHA2UQ3Yjyjisk3N24HHxwvw7PQiTz9O1PuiUY= +go.opentelemetry.io/collector/internal/testutil v0.156.0/go.mod h1:Jkjs6rkqs973LqgZ0Fe3zrokQRKULYXPIf4HuqStiEE= +go.opentelemetry.io/collector/pdata v1.62.0 h1:xGdwl2Cs5Rq5nKs0nYvAxm3Qq20HcySVAmUElATS8Es= +go.opentelemetry.io/collector/pdata v1.62.0/go.mod h1:WFy5R6XGpz2Q4MaekeEm+qc4GY5V3+BhQIwGPkp+fj0= +go.opentelemetry.io/collector/pdata/pprofile v0.156.0 h1:TnQzA2d5iMGH5//mGLqPjwdYqsFD/A7o2WgDdppxdVM= +go.opentelemetry.io/collector/pdata/pprofile v0.156.0/go.mod h1:3dtjs/mliblJJCCTXUE0AkpBNfBEybPruj3ml6WCOoI= go.opentelemetry.io/otel v1.44.1-0.20260622141720-fbe3d073ba93 h1:r3rusw/U3IyJ0+r6xWXv1VF8TTUGVIAnK8tuzf/8Re0= go.opentelemetry.io/otel v1.44.1-0.20260622141720-fbe3d073ba93/go.mod h1:BMgjTHL9WPRlRjL2oZCBTL4whCGtXch2H4BhOPIAyYc= go.opentelemetry.io/otel/metric v1.44.1-0.20260622141720-fbe3d073ba93 h1:DCOdBzLW6tMYSutG82cKWgIX9JWNFixROrcgKm7Dn+Q= @@ -184,6 +240,12 @@ go.opentelemetry.io/otel/sdk/metric v1.44.1-0.20260622141720-fbe3d073ba93 h1:BoV go.opentelemetry.io/otel/sdk/metric v1.44.1-0.20260622141720-fbe3d073ba93/go.mod h1:xZjeGP2g1Hxokmw5N6WDyiJb4OOKitlYGqGiwgu4CjM= go.opentelemetry.io/otel/trace v1.44.1-0.20260622141720-fbe3d073ba93 h1:dNiK0YMSSGzwwgfNXkgBGmy33HyfUXNqKu9wBPafZhw= go.opentelemetry.io/otel/trace v1.44.1-0.20260622141720-fbe3d073ba93/go.mod h1:oLl1jrMQAVo6v3GAggN+1VH9VIz9iUSvW53sW1Q8PIE= +go.opentelemetry.io/proto/slim/otlp v1.10.0 h1:iR97Vs/ZDR+y9TfuP9b1XBtdPWeC+OMslIBmhcLU7jM= +go.opentelemetry.io/proto/slim/otlp v1.10.0/go.mod h1:lV9250stpjYLPNA5viFabIgP2QlUGRT1GdTgAf8SIUk= +go.opentelemetry.io/proto/slim/otlp/collector/profiles/v1development v0.3.0 h1:RUF5rO0hAlgiJt1fzQVzcVs3vZVNHIcMLgOgG4rWNcQ= +go.opentelemetry.io/proto/slim/otlp/collector/profiles/v1development v0.3.0/go.mod h1:I89cynRj8y+383o7tEQVg2SVA6SRgDVIouWPUVXjx0U= +go.opentelemetry.io/proto/slim/otlp/profiles/v1development v0.3.0 h1:CQvJSldHRUN6Z8jsUeYv8J0lXRvygALXIzsmAeCcZE0= +go.opentelemetry.io/proto/slim/otlp/profiles/v1development v0.3.0/go.mod h1:xSQ+mEfJe/GjK1LXEyVOoSI1N9JV9ZI923X5kup43W4= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= go.uber.org/dig v1.19.0 h1:BACLhebsYdpQ7IROQ1AGPjrXcP5dF80U3gKoFzbaq/4= @@ -200,25 +262,88 @@ go.yaml.in/yaml/v2 v2.4.4 h1:tuyd0P+2Ont/d6e2rl3be67goVK4R6deVxCUX5vyPaQ= go.yaml.in/yaml/v2 v2.4.4/go.mod h1:gMZqIpDtDqOfM0uNfy0SkpRhvUryYH0Z6wdMYcacYXQ= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= +golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/crypto v0.54.0 h1:YLIA59K4fiNzHzjnZt2tUJQjQtUWfWbeHBqKtk3eScw= golang.org/x/crypto v0.54.0/go.mod h1:KWL8ny2AZdGR2cWmzeHrp2azQPGogOv+HeQaVEXC2dk= golang.org/x/exp v0.0.0-20260611194520-c48552f49976 h1:X8Hz2ImujgbmetVuW+w2YkyZChE3cBpZi2P158rTG9M= golang.org/x/exp v0.0.0-20260611194520-c48552f49976/go.mod h1:vnf4pv9iKZXY58sQE1L86zmNWJ4159e1RkcWiLCkeEY= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= +golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= golang.org/x/net v0.57.0 h1:K5+3DljvIuDG9/Jv9rvyMywYNFCQ9RSUY6OOTTkT+tE= golang.org/x/net v0.57.0/go.mod h1:KpXc8iv+r3XplLAG/f7Jsf9RPszJzdR0f58q9vGOuEU= golang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs= golang.org/x/oauth2 v0.36.0/go.mod h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7Q= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.22.0 h1:SZjpbeLmrCk4xhRSZFNZW5gFUeCeFgjekvI/+gfScek= golang.org/x/sync v0.22.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.47.0 h1:o7XGOvZQCADBQQ4Y7VNq2dRWQR7JmOUW8Kxx4ZsNgWs= golang.org/x/sys v0.47.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= +golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= +golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/text v0.40.0 h1:Ub2Z6/xjgF1WrYQz2nuITOEegKFtiIy+rieRJ5lHZKs= golang.org/x/text v0.40.0/go.mod h1:hpnzDAfGV753zIKo+wk3u1bVKCGPbrnF7+7LBF/UHVY= golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= google.golang.org/genproto/googleapis/rpc v0.0.0-20260618152121-87f3d3e198d3 h1:phvBWCAQMGN1945mp5fjCXP6jEF0+a0+4TjokS4sxNY= diff --git a/otel-patches/coreinternal/go.mod b/otel-patches/coreinternal/go.mod index 7dbb854293ee..a5a13787fab5 100644 --- a/otel-patches/coreinternal/go.mod +++ b/otel-patches/coreinternal/go.mod @@ -26,7 +26,7 @@ require ( go.uber.org/multierr v1.11.0 go.uber.org/zap v1.28.0 golang.org/x/text v0.40.0 - google.golang.org/grpc v1.82.0 + google.golang.org/grpc v1.82.1 ) require ( @@ -87,6 +87,7 @@ require ( go.opentelemetry.io/otel/sdk v1.44.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.44.1-0.20260622141720-fbe3d073ba93 // indirect golang.org/x/crypto v0.54.0 // indirect + golang.org/x/net v0.57.0 // indirect golang.org/x/sys v0.47.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260618152121-87f3d3e198d3 // indirect google.golang.org/protobuf v1.36.12-0.20260116114154-8c4c4ae446ca // indirect diff --git a/otel-patches/coreinternal/go.sum b/otel-patches/coreinternal/go.sum index 0ff19e9ca0c8..d354744759b3 100644 --- a/otel-patches/coreinternal/go.sum +++ b/otel-patches/coreinternal/go.sum @@ -196,8 +196,8 @@ go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.54.0 h1:YLIA59K4fiNzHzjnZt2tUJQjQtUWfWbeHBqKtk3eScw= golang.org/x/crypto v0.54.0/go.mod h1:KWL8ny2AZdGR2cWmzeHrp2azQPGogOv+HeQaVEXC2dk= -golang.org/x/net v0.56.0 h1:Rw8j/hFzGvJUZwNBXnAtf5sVDVt+65SK2C7IxCxZt5o= -golang.org/x/net v0.56.0/go.mod h1:D3Ku6r+V6JROoZK144D2XfMHFcMq/0zSfLelVTCFKec= +golang.org/x/net v0.57.0 h1:K5+3DljvIuDG9/Jv9rvyMywYNFCQ9RSUY6OOTTkT+tE= +golang.org/x/net v0.57.0/go.mod h1:KpXc8iv+r3XplLAG/f7Jsf9RPszJzdR0f58q9vGOuEU= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -210,8 +210,8 @@ golang.org/x/text v0.40.0 h1:Ub2Z6/xjgF1WrYQz2nuITOEegKFtiIy+rieRJ5lHZKs= golang.org/x/text v0.40.0/go.mod h1:hpnzDAfGV753zIKo+wk3u1bVKCGPbrnF7+7LBF/UHVY= google.golang.org/genproto/googleapis/rpc v0.0.0-20260618152121-87f3d3e198d3 h1:phvBWCAQMGN1945mp5fjCXP6jEF0+a0+4TjokS4sxNY= google.golang.org/genproto/googleapis/rpc v0.0.0-20260618152121-87f3d3e198d3/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= -google.golang.org/grpc v1.82.0 h1:vguDnZUPjE26w09A63VoxZPnvPjB5Riyc0mkXPFmAIU= -google.golang.org/grpc v1.82.0/go.mod h1:yzTZ1TB1Z3SG+LIYaI+WiE8D5+PZ3ArnrSp8zF3+/ZA= +google.golang.org/grpc v1.82.1 h1:NnAxzGRA0677vCa4BUkOAnO5+FfQqVl9iUXeD0IqcGE= +google.golang.org/grpc v1.82.1/go.mod h1:yzTZ1TB1Z3SG+LIYaI+WiE8D5+PZ3ArnrSp8zF3+/ZA= google.golang.org/protobuf v1.36.12-0.20260116114154-8c4c4ae446ca h1:/ro7D0tSP+jEnQPzy9e1r5L6mAcEShGlE5kFsShX5O8= google.golang.org/protobuf v1.36.12-0.20260116114154-8c4c4ae446ca/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/pkg/aggregator/ckey/go.mod b/pkg/aggregator/ckey/go.mod index edfe2543cb62..e1f8f0161504 100644 --- a/pkg/aggregator/ckey/go.mod +++ b/pkg/aggregator/ckey/go.mod @@ -95,6 +95,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults github.com/DataDog/datadog-agent/pkg/config/basic => ../../../pkg/config/basic @@ -122,6 +123,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/api/go.mod b/pkg/api/go.mod index dd50b5999e35..ad88501c535c 100644 --- a/pkg/api/go.mod +++ b/pkg/api/go.mod @@ -143,6 +143,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../pkg/collector/check/defaults github.com/DataDog/datadog-agent/pkg/config/basic => ../../pkg/config/basic @@ -170,6 +171,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../pkg/network/payload diff --git a/pkg/collector/check/defaults/go.mod b/pkg/collector/check/defaults/go.mod index 2a07d83d6238..b47f5009feae 100644 --- a/pkg/collector/check/defaults/go.mod +++ b/pkg/collector/check/defaults/go.mod @@ -82,6 +82,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/config/basic => ../../../../pkg/config/basic @@ -109,6 +110,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/pkg/config/basic/go.mod b/pkg/config/basic/go.mod index 1290820b1183..6f6704169458 100644 --- a/pkg/config/basic/go.mod +++ b/pkg/config/basic/go.mod @@ -96,6 +96,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -123,6 +124,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/config/buildschema/go.mod b/pkg/config/buildschema/go.mod index 561f8b521a65..c49bbce5c40b 100644 --- a/pkg/config/buildschema/go.mod +++ b/pkg/config/buildschema/go.mod @@ -84,6 +84,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -111,6 +112,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/config/create/go.mod b/pkg/config/create/go.mod index c3d1e3c14ad9..090d34a33528 100644 --- a/pkg/config/create/go.mod +++ b/pkg/config/create/go.mod @@ -110,6 +110,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -137,6 +138,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/config/env/go.mod b/pkg/config/env/go.mod index 76feb72da0a2..544a3b89472e 100644 --- a/pkg/config/env/go.mod +++ b/pkg/config/env/go.mod @@ -120,6 +120,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -147,6 +148,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/config/helper/go.mod b/pkg/config/helper/go.mod index cda334c20bf6..ae5a9aadc0c1 100644 --- a/pkg/config/helper/go.mod +++ b/pkg/config/helper/go.mod @@ -109,6 +109,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -136,6 +137,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/config/mock/go.mod b/pkg/config/mock/go.mod index e70e84aae5cf..29733f75a22b 100644 --- a/pkg/config/mock/go.mod +++ b/pkg/config/mock/go.mod @@ -138,6 +138,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -165,6 +166,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/config/model/go.mod b/pkg/config/model/go.mod index 9b8d6f21af82..d32002c444c0 100644 --- a/pkg/config/model/go.mod +++ b/pkg/config/model/go.mod @@ -82,6 +82,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -109,6 +110,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/config/nodetreemodel/go.mod b/pkg/config/nodetreemodel/go.mod index 0c2a5d05ecd9..3ff8916edf2d 100644 --- a/pkg/config/nodetreemodel/go.mod +++ b/pkg/config/nodetreemodel/go.mod @@ -111,6 +111,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -138,6 +139,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/config/remote/go.mod b/pkg/config/remote/go.mod index 7a212e9d622a..6146a852d0cf 100644 --- a/pkg/config/remote/go.mod +++ b/pkg/config/remote/go.mod @@ -198,6 +198,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -225,6 +226,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/config/render_config/go.mod b/pkg/config/render_config/go.mod index a18ed5f65a82..1dc399a91071 100644 --- a/pkg/config/render_config/go.mod +++ b/pkg/config/render_config/go.mod @@ -93,6 +93,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -120,6 +121,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/config/schema/go.mod b/pkg/config/schema/go.mod index 99a3a40b9933..1bc42dfaa407 100644 --- a/pkg/config/schema/go.mod +++ b/pkg/config/schema/go.mod @@ -100,6 +100,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -127,6 +128,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/config/setup/go.mod b/pkg/config/setup/go.mod index cc70dd3a2398..2f697e8c24c8 100644 --- a/pkg/config/setup/go.mod +++ b/pkg/config/setup/go.mod @@ -142,6 +142,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -169,6 +170,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/config/structure/go.mod b/pkg/config/structure/go.mod index 74635ebca26f..0540455fc241 100644 --- a/pkg/config/structure/go.mod +++ b/pkg/config/structure/go.mod @@ -115,6 +115,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -142,6 +143,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/config/utils/go.mod b/pkg/config/utils/go.mod index 1893a46595fd..29616322a7b9 100644 --- a/pkg/config/utils/go.mod +++ b/pkg/config/utils/go.mod @@ -140,6 +140,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -167,6 +168,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/discovery/tracermetadata/model/go.mod b/pkg/discovery/tracermetadata/model/go.mod index 510af7e8f410..977857bbf58c 100644 --- a/pkg/discovery/tracermetadata/model/go.mod +++ b/pkg/discovery/tracermetadata/model/go.mod @@ -97,6 +97,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -124,6 +125,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/pkg/errors/go.mod b/pkg/errors/go.mod index bd659eba412d..e913ae36d6f0 100644 --- a/pkg/errors/go.mod +++ b/pkg/errors/go.mod @@ -93,6 +93,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../pkg/collector/check/defaults @@ -120,6 +121,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../pkg/network/payload diff --git a/pkg/fips/go.mod b/pkg/fips/go.mod index 911e26343821..b8ff5f0f45f5 100644 --- a/pkg/fips/go.mod +++ b/pkg/fips/go.mod @@ -82,6 +82,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../pkg/collector/check/defaults @@ -109,6 +110,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../pkg/network/payload diff --git a/pkg/gohai/go.mod b/pkg/gohai/go.mod index 43ef56a453dc..9aaae2913564 100644 --- a/pkg/gohai/go.mod +++ b/pkg/gohai/go.mod @@ -111,6 +111,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../pkg/collector/check/defaults @@ -138,6 +139,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../pkg/network/payload diff --git a/pkg/logs/message/go.mod b/pkg/logs/message/go.mod index de0d3bd3af52..50070850fcc3 100644 --- a/pkg/logs/message/go.mod +++ b/pkg/logs/message/go.mod @@ -1,6 +1,6 @@ module github.com/DataDog/datadog-agent/pkg/logs/message -go 1.25.0 +go 1.25.4 require ( github.com/DataDog/datadog-agent/comp/logs/agent/config v0.75.4 @@ -27,6 +27,7 @@ require ( github.com/DataDog/datadog-agent/pkg/config/utils v0.75.4 // indirect github.com/DataDog/datadog-agent/pkg/fips v0.75.4 // indirect github.com/DataDog/datadog-agent/pkg/logs/status/utils v0.75.4 // indirect + github.com/DataDog/datadog-agent/pkg/logs/vrl v0.0.0-00010101000000-000000000000 // indirect github.com/DataDog/datadog-agent/pkg/template v0.75.4 // indirect github.com/DataDog/datadog-agent/pkg/util/defaultpaths v0.64.0-devel // indirect github.com/DataDog/datadog-agent/pkg/util/executable v0.75.4 // indirect @@ -37,32 +38,68 @@ require ( github.com/DataDog/datadog-agent/pkg/util/system v0.75.4 // indirect github.com/DataDog/datadog-agent/pkg/util/winutil v0.75.4 // indirect github.com/DataDog/datadog-agent/pkg/version v0.75.4 // indirect + github.com/DataDog/fastjq v0.0.0-20260506145947-c3336f252fa2 // indirect github.com/DataDog/go-acl v1.0.1 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect + github.com/alecthomas/participle/v2 v2.1.4 // indirect + github.com/antchfx/xmlquery v1.5.1 // indirect + github.com/antchfx/xpath v1.3.6 // indirect + github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/ebitengine/purego v0.10.0 // indirect + github.com/elastic/go-grok v0.3.1 // indirect + github.com/elastic/lunes v0.2.2 // indirect github.com/go-ole/go-ole v1.3.0 // indirect github.com/go-viper/mapstructure/v2 v2.5.0 // indirect + github.com/gobwas/glob v0.2.3 // indirect + github.com/goccy/go-json v0.10.6 // indirect github.com/gofrs/flock v0.13.0 // indirect + github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/hashicorp/go-version v1.9.0 // indirect + github.com/hashicorp/golang-lru v1.0.2 // indirect + github.com/iancoleman/strcase v0.3.0 // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/klauspost/cpuid/v2 v2.3.0 // indirect github.com/lufia/plan9stats v0.0.0-20260330125221-c963978e514e // indirect + github.com/magefile/mage v1.15.0 // indirect github.com/mdlayher/socket v0.6.0 // indirect github.com/mdlayher/vsock v1.3.0 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.156.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect github.com/shirou/gopsutil/v4 v4.26.6 // indirect github.com/spf13/cast v1.10.0 // indirect github.com/tklauser/go-sysconf v0.3.16 // indirect github.com/tklauser/numcpus v0.11.0 // indirect + github.com/twmb/murmur3 v1.1.8 // indirect + github.com/ua-parser/uap-go v0.0.0-20251207011819-db9adb27a0b8 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect + github.com/zeebo/xxh3 v1.1.0 // indirect + go.opentelemetry.io/collector/client v1.62.0 // indirect + go.opentelemetry.io/collector/component v1.62.0 // indirect + go.opentelemetry.io/collector/featuregate v1.62.0 // indirect + go.opentelemetry.io/collector/pdata v1.62.0 // indirect + go.opentelemetry.io/collector/pdata/pprofile v0.156.0 // indirect + go.opentelemetry.io/otel v1.44.1-0.20260622141720-fbe3d073ba93 // indirect + go.opentelemetry.io/otel/metric v1.44.1-0.20260622141720-fbe3d073ba93 // indirect + go.opentelemetry.io/otel/trace v1.44.1-0.20260622141720-fbe3d073ba93 // indirect go.uber.org/atomic v1.11.0 // indirect + go.uber.org/multierr v1.11.0 // indirect + go.uber.org/zap v1.28.0 // indirect go.yaml.in/yaml/v2 v2.4.4 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect + golang.org/x/exp v0.0.0-20260611194520-c48552f49976 // indirect golang.org/x/net v0.57.0 // indirect golang.org/x/sync v0.22.0 // indirect golang.org/x/sys v0.47.0 // indirect golang.org/x/text v0.40.0 // indirect golang.org/x/time v0.15.0 // indirect + google.golang.org/grpc v1.82.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) @@ -146,6 +183,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -173,6 +211,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/logs/message/go.sum b/pkg/logs/message/go.sum index 6e6cfb0fa0f2..b077e104b1c8 100644 --- a/pkg/logs/message/go.sum +++ b/pkg/logs/message/go.sum @@ -1,36 +1,96 @@ +github.com/DataDog/fastjq v0.0.0-20260506145947-c3336f252fa2 h1:a9xjjGg5UQzUd+yliPDF9e4wQA9qq9PKT+DRDUaonOM= +github.com/DataDog/fastjq v0.0.0-20260506145947-c3336f252fa2/go.mod h1:XbWpLvPZo0LbxPhXTMIXSB98lFwfF9MnkT77iRHTXMY= github.com/DataDog/go-acl v1.0.1 h1:uRbp98YmlVZYqNNyTBFNI3Y6bnziBLyCIR4nRu0bIpU= github.com/DataDog/go-acl v1.0.1/go.mod h1:YJx333qSb3GUqCLIbqKeGaZS2pUYh2IYGI7+FsX18CU= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= +github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0= +github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k= +github.com/alecthomas/participle/v2 v2.1.4 h1:W/H79S8Sat/krZ3el6sQMvMaahJ+XcM9WSI2naI7w2U= +github.com/alecthomas/participle/v2 v2.1.4/go.mod h1:8tqVbpTX20Ru4NfYQgZf4mP18eXPTBViyMWiArNEgGI= +github.com/alecthomas/repr v0.5.2 h1:SU73FTI9D1P5UNtvseffFSGmdNci/O6RsqzeXJtP0Qs= +github.com/alecthomas/repr v0.5.2/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= +github.com/antchfx/xmlquery v1.5.1 h1:T9I4Ns1EXiWHy0IqKupGhnfTQtJwlGrpXtauYOoNv78= +github.com/antchfx/xmlquery v1.5.1/go.mod h1:bVqnl7TaDXSReKINrhZz+2E/PbCu2tUahb+wZ7WZNT8= +github.com/antchfx/xpath v1.3.6 h1:s0y+ElRRtTQdfHP609qFu0+c6bglDv20pqOViQjjdPI= +github.com/antchfx/xpath v1.3.6/go.mod h1:i54GszH55fYfBmoZXapTHN8T8tkcHfRgLyVwwqzXNcs= +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/ebitengine/purego v0.10.0 h1:QIw4xfpWT6GWTzaW5XEKy3HXoqrJGx1ijYHzTF0/ISU= github.com/ebitengine/purego v0.10.0/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= +github.com/elastic/go-grok v0.3.1 h1:WEhUxe2KrwycMnlvMimJXvzRa7DoByJB4PVUIE1ZD/U= +github.com/elastic/go-grok v0.3.1/go.mod h1:n38ls8ZgOboZRgKcjMY8eFeZFMmcL9n2lP0iHhIDk64= +github.com/elastic/lunes v0.2.2 h1:dZFEaebNg9l+mzvOQN6Nd/c9y6y8rUe3tBWsTgvM08U= +github.com/elastic/lunes v0.2.2/go.mod h1:u3W/BdONWTrh0JjNZ21C907dDc+cUZttZrGa625nf2k= github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= +github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= +github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= github.com/go-viper/mapstructure/v2 v2.5.0 h1:vM5IJoUAy3d7zRSVtIwQgBj7BiWtMPfmPEgAXnvj1Ro= github.com/go-viper/mapstructure/v2 v2.5.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= +github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= +github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= +github.com/goccy/go-json v0.10.6 h1:p8HrPJzOakx/mn/bQtjgNjdTcN+/S6FcG2CTtQOrHVU= +github.com/goccy/go-json v0.10.6/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= github.com/gofrs/flock v0.13.0 h1:95JolYOvGMqeH31+FC7D2+uULf6mG61mEZ/A8dRYMzw= github.com/gofrs/flock v0.13.0/go.mod h1:jxeyy9R1auM5S6JYDBhDt+E2TCo7DkratH4Pgi8P+Z0= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 h1:f+oWsMOmNPc8JmEHVZIycC7hBoQxHH9pNKQORJNozsQ= +github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUvekVysuuOpQKo3191zZyTpiI6se1N1ULghS0sw= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/hashicorp/go-version v1.9.0 h1:CeOIz6k+LoN3qX9Z0tyQrPtiB1DFYRPfCIBtaXPSCnA= +github.com/hashicorp/go-version v1.9.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= +github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= +github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= +github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= +github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/klauspost/cpuid/v2 v2.3.0 h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzhA9Y= +github.com/klauspost/cpuid/v2 v2.3.0/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/lufia/plan9stats v0.0.0-20260330125221-c963978e514e h1:Q6MvJtQK/iRcRtzAscm/zF23XxJlbECiGPyRicsX+Ak= github.com/lufia/plan9stats v0.0.0-20260330125221-c963978e514e/go.mod h1:autxFIvghDt3jPTLoqZ9OZ7s9qTGNAWmYCjVFWPX/zg= +github.com/magefile/mage v1.15.0 h1:BvGheCMAsG3bWUDbZ8AyXXpCNwU9u5CB6sM+HNb9HYg= +github.com/magefile/mage v1.15.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A= github.com/mdlayher/socket v0.6.0 h1:ScZPaAGyO1icQnbFrhPM8mnXyMu9qukC1K4ZoM2IQKU= github.com/mdlayher/socket v0.6.0/go.mod h1:q7vozUAnxSqnjHc12Fik5yUKIzfZ8ITCfMkhOtE9z18= github.com/mdlayher/vsock v1.3.0 h1:bqQfZ1OznI03y6YiXp2sze05RVdzLn/zsfjnjd4+ivI= github.com/mdlayher/vsock v1.3.0/go.mod h1:WsuksavOvwCnV5UqGHUkvAvCy+Dqy81y4goKQTzxxNY= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee h1:W5t00kpgFdJifH4BDsTlE89Zl93FEloxaWZfGcifgq8= +github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw= github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.156.0 h1:wca5xIy5I/8CAylZYgOYzj5P5JAAicBA8uNtiRNh2Zo= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.156.0/go.mod h1:CaT/YS8vvoNgsLewbtwDpS0mAgsHXNXceSPzlP+TeJI= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0 h1:ESNQwLZhQlKcbCzGfFNJu3MkNur35dVBbf7sE0MLDdk= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0/go.mod h1:KW8gom6sRRy60kO9SBSzBy2FGCvfgP7C3cprTqthpaA= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt9k/+g42oCprj/FisM4qX9L3sZB3upGN2ZU= @@ -45,20 +105,67 @@ github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU= github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4= github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/tklauser/go-sysconf v0.3.16 h1:frioLaCQSsF5Cy1jgRBrzr6t502KIIwQ0MArYICU0nA= github.com/tklauser/go-sysconf v0.3.16/go.mod h1:/qNL9xxDhc7tx3HSRsLWNnuzbVfh3e7gh/BmM179nYI= github.com/tklauser/numcpus v0.11.0 h1:nSTwhKH5e1dMNsCdVBukSZrURJRoHbSEQjdEbY+9RXw= github.com/tklauser/numcpus v0.11.0/go.mod h1:z+LwcLq54uWZTX0u/bGobaV34u6V7KNlTZejzM6/3MQ= +github.com/twmb/murmur3 v1.1.8 h1:8Yt9taO/WN3l08xErzjeschgZU2QSrwm1kclYq+0aRg= +github.com/twmb/murmur3 v1.1.8/go.mod h1:Qq/R7NUyOfr65zD+6Q5IHKsJLwP7exErjN6lyyq3OSQ= +github.com/ua-parser/uap-go v0.0.0-20251207011819-db9adb27a0b8 h1:yS0rzVnj7Z/ZeHzvv5erQbO2b8gyTL4CeMNodl9SJMQ= +github.com/ua-parser/uap-go v0.0.0-20251207011819-db9adb27a0b8/go.mod h1:gwANdYmo9R8LLwGnyDFWK2PMsaXXX2HhAvCnb/UhZsM= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= +github.com/zeebo/assert v1.3.0 h1:g7C04CbJuIDKNPFHmsk4hwZDO5O+kntRxzaUoNXj+IQ= +github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= +github.com/zeebo/xxh3 v1.1.0 h1:s7DLGDK45Dyfg7++yxI0khrfwq9661w9EN78eP/UZVs= +github.com/zeebo/xxh3 v1.1.0/go.mod h1:IisAie1LELR4xhVinxWS5+zf1lA4p0MW4T+w+W07F5s= +go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= +go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= +go.opentelemetry.io/collector/client v1.62.0 h1:Vud5nn4gX2TzMnHpNhuUhvAi4GGcO0RsaId0dftHAjM= +go.opentelemetry.io/collector/client v1.62.0/go.mod h1:iao8KfxMeND0zdp+PcHGPY9r1BDgS+OppY7RKLlUeUU= +go.opentelemetry.io/collector/component v1.62.0 h1:F1MHUlUEjSJgwcumsCbbH2rRmTK4dC8m/ipp9v4vFh0= +go.opentelemetry.io/collector/component v1.62.0/go.mod h1:NqdVWse4diWnlqh5WurI2KncJuBXe1zzYtxuC9Mmew0= +go.opentelemetry.io/collector/component/componenttest v0.156.0 h1:IV7xYP57kkKoBk7o9dYvToeotZ369A6/V+QIlLgnsEc= +go.opentelemetry.io/collector/component/componenttest v0.156.0/go.mod h1:YL7ByaKwuSuB+eBtm56awLXFlKJ7KI6jfrsjZd0uv8Y= +go.opentelemetry.io/collector/consumer v1.62.0 h1:nJzGs8soiciZvGhiA4OYwPRRCrTsXnNHrmzi/jaT3ck= +go.opentelemetry.io/collector/consumer v1.62.0/go.mod h1:uNbRHJ9LqgHxcWdLTvRTO4K3SSGZop1qlHKfV5lUvGg= +go.opentelemetry.io/collector/featuregate v1.62.0 h1:pYY7RlulSCTOS9mFWxasMLwYJCfNXHtnOkZlv3jg/V4= +go.opentelemetry.io/collector/featuregate v1.62.0/go.mod h1:4ga1QBMPEejXXmpyJS8lmaRpknJ3Lb9Bvk6e420bUFU= +go.opentelemetry.io/collector/internal/testutil v0.156.0 h1:Nu02vhHA2UQ3Yjyjisk3N24HHxwvw7PQiTz9O1PuiUY= +go.opentelemetry.io/collector/internal/testutil v0.156.0/go.mod h1:Jkjs6rkqs973LqgZ0Fe3zrokQRKULYXPIf4HuqStiEE= +go.opentelemetry.io/collector/pdata v1.62.0 h1:xGdwl2Cs5Rq5nKs0nYvAxm3Qq20HcySVAmUElATS8Es= +go.opentelemetry.io/collector/pdata v1.62.0/go.mod h1:WFy5R6XGpz2Q4MaekeEm+qc4GY5V3+BhQIwGPkp+fj0= +go.opentelemetry.io/collector/pdata/pprofile v0.156.0 h1:TnQzA2d5iMGH5//mGLqPjwdYqsFD/A7o2WgDdppxdVM= +go.opentelemetry.io/collector/pdata/pprofile v0.156.0/go.mod h1:3dtjs/mliblJJCCTXUE0AkpBNfBEybPruj3ml6WCOoI= +go.opentelemetry.io/otel v1.44.1-0.20260622141720-fbe3d073ba93 h1:r3rusw/U3IyJ0+r6xWXv1VF8TTUGVIAnK8tuzf/8Re0= +go.opentelemetry.io/otel v1.44.1-0.20260622141720-fbe3d073ba93/go.mod h1:BMgjTHL9WPRlRjL2oZCBTL4whCGtXch2H4BhOPIAyYc= +go.opentelemetry.io/otel/metric v1.44.1-0.20260622141720-fbe3d073ba93 h1:DCOdBzLW6tMYSutG82cKWgIX9JWNFixROrcgKm7Dn+Q= +go.opentelemetry.io/otel/metric v1.44.1-0.20260622141720-fbe3d073ba93/go.mod h1:8O7hanEPBNgEMmybD3s2VBKcgWOCsA6tzHBPODAiquo= +go.opentelemetry.io/otel/sdk v1.44.0 h1:nHYwb9lK+fJPU/dnT6s7W7Z8itMWyqrnVfbheVYrZ58= +go.opentelemetry.io/otel/sdk v1.44.0/go.mod h1:Osuydd3Se74nqjAKxid74N5eC+jfEqfTegHRnq58oK0= +go.opentelemetry.io/otel/sdk/metric v1.44.1-0.20260622141720-fbe3d073ba93 h1:BoVal+uHGOzlFZvHGq8bNR677inewlKioUjJPdPPCBE= +go.opentelemetry.io/otel/sdk/metric v1.44.1-0.20260622141720-fbe3d073ba93/go.mod h1:xZjeGP2g1Hxokmw5N6WDyiJb4OOKitlYGqGiwgu4CjM= +go.opentelemetry.io/otel/trace v1.44.1-0.20260622141720-fbe3d073ba93 h1:dNiK0YMSSGzwwgfNXkgBGmy33HyfUXNqKu9wBPafZhw= +go.opentelemetry.io/otel/trace v1.44.1-0.20260622141720-fbe3d073ba93/go.mod h1:oLl1jrMQAVo6v3GAggN+1VH9VIz9iUSvW53sW1Q8PIE= +go.opentelemetry.io/proto/slim/otlp v1.10.0 h1:iR97Vs/ZDR+y9TfuP9b1XBtdPWeC+OMslIBmhcLU7jM= +go.opentelemetry.io/proto/slim/otlp v1.10.0/go.mod h1:lV9250stpjYLPNA5viFabIgP2QlUGRT1GdTgAf8SIUk= +go.opentelemetry.io/proto/slim/otlp/collector/profiles/v1development v0.3.0 h1:RUF5rO0hAlgiJt1fzQVzcVs3vZVNHIcMLgOgG4rWNcQ= +go.opentelemetry.io/proto/slim/otlp/collector/profiles/v1development v0.3.0/go.mod h1:I89cynRj8y+383o7tEQVg2SVA6SRgDVIouWPUVXjx0U= +go.opentelemetry.io/proto/slim/otlp/profiles/v1development v0.3.0 h1:CQvJSldHRUN6Z8jsUeYv8J0lXRvygALXIzsmAeCcZE0= +go.opentelemetry.io/proto/slim/otlp/profiles/v1development v0.3.0/go.mod h1:xSQ+mEfJe/GjK1LXEyVOoSI1N9JV9ZI923X5kup43W4= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= go.uber.org/dig v1.19.0 h1:BACLhebsYdpQ7IROQ1AGPjrXcP5dF80U3gKoFzbaq/4= go.uber.org/dig v1.19.0/go.mod h1:Us0rSJiThwCv2GteUN0Q7OKvU7n5J4dxZ9JKUXozFdE= go.uber.org/fx v1.24.0 h1:wE8mruvpg2kiiL1Vqd0CC+tr0/24XIB10Iwp2lLWzkg= go.uber.org/fx v1.24.0/go.mod h1:AmDeGyS+ZARGKM4tlH4FY2Jr63VjbEDJHtqXTGP5hbo= +go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= +go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.28.0 h1:IZzaP1Fv73/T/pBMLk4VutPl36uNC+OSUh3JLG3FIjo= @@ -67,19 +174,88 @@ go.yaml.in/yaml/v2 v2.4.4 h1:tuyd0P+2Ont/d6e2rl3be67goVK4R6deVxCUX5vyPaQ= go.yaml.in/yaml/v2 v2.4.4/go.mod h1:gMZqIpDtDqOfM0uNfy0SkpRhvUryYH0Z6wdMYcacYXQ= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= +golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/exp v0.0.0-20260611194520-c48552f49976 h1:X8Hz2ImujgbmetVuW+w2YkyZChE3cBpZi2P158rTG9M= +golang.org/x/exp v0.0.0-20260611194520-c48552f49976/go.mod h1:vnf4pv9iKZXY58sQE1L86zmNWJ4159e1RkcWiLCkeEY= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= +golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= golang.org/x/net v0.57.0 h1:K5+3DljvIuDG9/Jv9rvyMywYNFCQ9RSUY6OOTTkT+tE= golang.org/x/net v0.57.0/go.mod h1:KpXc8iv+r3XplLAG/f7Jsf9RPszJzdR0f58q9vGOuEU= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.22.0 h1:SZjpbeLmrCk4xhRSZFNZW5gFUeCeFgjekvI/+gfScek= golang.org/x/sync v0.22.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.47.0 h1:o7XGOvZQCADBQQ4Y7VNq2dRWQR7JmOUW8Kxx4ZsNgWs= golang.org/x/sys v0.47.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= +golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= +golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/text v0.40.0 h1:Ub2Z6/xjgF1WrYQz2nuITOEegKFtiIy+rieRJ5lHZKs= golang.org/x/text v0.40.0/go.mod h1:hpnzDAfGV753zIKo+wk3u1bVKCGPbrnF7+7LBF/UHVY= golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/grpc v1.82.1 h1:NnAxzGRA0677vCa4BUkOAnO5+FfQqVl9iUXeD0IqcGE= +google.golang.org/grpc v1.82.1/go.mod h1:yzTZ1TB1Z3SG+LIYaI+WiE8D5+PZ3ArnrSp8zF3+/ZA= +google.golang.org/protobuf v1.36.12-0.20260116114154-8c4c4ae446ca h1:/ro7D0tSP+jEnQPzy9e1r5L6mAcEShGlE5kFsShX5O8= +google.golang.org/protobuf v1.36.12-0.20260116114154-8c4c4ae446ca/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/pkg/logs/sources/go.mod b/pkg/logs/sources/go.mod index 4a3361b839b9..e60a46ce84cd 100644 --- a/pkg/logs/sources/go.mod +++ b/pkg/logs/sources/go.mod @@ -1,6 +1,6 @@ module github.com/DataDog/datadog-agent/pkg/logs/sources -go 1.25.0 +go 1.25.4 require ( github.com/DataDog/datadog-agent/comp/logs/agent/config v0.75.4 @@ -27,6 +27,7 @@ require ( github.com/DataDog/datadog-agent/pkg/config/utils v0.75.4 // indirect github.com/DataDog/datadog-agent/pkg/fips v0.75.4 // indirect github.com/DataDog/datadog-agent/pkg/logs/types v0.75.4 // indirect + github.com/DataDog/datadog-agent/pkg/logs/vrl v0.0.0-00010101000000-000000000000 // indirect github.com/DataDog/datadog-agent/pkg/template v0.75.4 // indirect github.com/DataDog/datadog-agent/pkg/util/defaultpaths v0.64.0-devel // indirect github.com/DataDog/datadog-agent/pkg/util/executable v0.75.4 // indirect @@ -36,32 +37,68 @@ require ( github.com/DataDog/datadog-agent/pkg/util/system v0.75.4 // indirect github.com/DataDog/datadog-agent/pkg/util/winutil v0.75.4 // indirect github.com/DataDog/datadog-agent/pkg/version v0.75.4 // indirect + github.com/DataDog/fastjq v0.0.0-20260506145947-c3336f252fa2 // indirect github.com/DataDog/go-acl v1.0.1 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect + github.com/alecthomas/participle/v2 v2.1.4 // indirect + github.com/antchfx/xmlquery v1.5.1 // indirect + github.com/antchfx/xpath v1.3.6 // indirect + github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/ebitengine/purego v0.10.0 // indirect + github.com/elastic/go-grok v0.3.1 // indirect + github.com/elastic/lunes v0.2.2 // indirect github.com/go-ole/go-ole v1.3.0 // indirect github.com/go-viper/mapstructure/v2 v2.5.0 // indirect + github.com/gobwas/glob v0.2.3 // indirect + github.com/goccy/go-json v0.10.6 // indirect github.com/gofrs/flock v0.13.0 // indirect + github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/hashicorp/go-version v1.9.0 // indirect + github.com/hashicorp/golang-lru v1.0.2 // indirect + github.com/iancoleman/strcase v0.3.0 // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/klauspost/cpuid/v2 v2.3.0 // indirect github.com/lufia/plan9stats v0.0.0-20260330125221-c963978e514e // indirect + github.com/magefile/mage v1.15.0 // indirect github.com/mdlayher/socket v0.6.0 // indirect github.com/mdlayher/vsock v1.3.0 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.156.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect github.com/shirou/gopsutil/v4 v4.26.6 // indirect github.com/spf13/cast v1.10.0 // indirect github.com/tklauser/go-sysconf v0.3.16 // indirect github.com/tklauser/numcpus v0.11.0 // indirect + github.com/twmb/murmur3 v1.1.8 // indirect + github.com/ua-parser/uap-go v0.0.0-20251207011819-db9adb27a0b8 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect + github.com/zeebo/xxh3 v1.1.0 // indirect + go.opentelemetry.io/collector/client v1.62.0 // indirect + go.opentelemetry.io/collector/component v1.62.0 // indirect + go.opentelemetry.io/collector/featuregate v1.62.0 // indirect + go.opentelemetry.io/collector/pdata v1.62.0 // indirect + go.opentelemetry.io/collector/pdata/pprofile v0.156.0 // indirect + go.opentelemetry.io/otel v1.44.1-0.20260622141720-fbe3d073ba93 // indirect + go.opentelemetry.io/otel/metric v1.44.1-0.20260622141720-fbe3d073ba93 // indirect + go.opentelemetry.io/otel/trace v1.44.1-0.20260622141720-fbe3d073ba93 // indirect go.uber.org/atomic v1.11.0 // indirect + go.uber.org/multierr v1.11.0 // indirect + go.uber.org/zap v1.28.0 // indirect go.yaml.in/yaml/v2 v2.4.4 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect + golang.org/x/exp v0.0.0-20260611194520-c48552f49976 // indirect golang.org/x/net v0.57.0 // indirect golang.org/x/sync v0.22.0 // indirect golang.org/x/sys v0.47.0 // indirect golang.org/x/text v0.40.0 // indirect golang.org/x/time v0.15.0 // indirect + google.golang.org/grpc v1.82.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) @@ -145,6 +182,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -172,6 +210,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/logs/sources/go.sum b/pkg/logs/sources/go.sum index 6e6cfb0fa0f2..b077e104b1c8 100644 --- a/pkg/logs/sources/go.sum +++ b/pkg/logs/sources/go.sum @@ -1,36 +1,96 @@ +github.com/DataDog/fastjq v0.0.0-20260506145947-c3336f252fa2 h1:a9xjjGg5UQzUd+yliPDF9e4wQA9qq9PKT+DRDUaonOM= +github.com/DataDog/fastjq v0.0.0-20260506145947-c3336f252fa2/go.mod h1:XbWpLvPZo0LbxPhXTMIXSB98lFwfF9MnkT77iRHTXMY= github.com/DataDog/go-acl v1.0.1 h1:uRbp98YmlVZYqNNyTBFNI3Y6bnziBLyCIR4nRu0bIpU= github.com/DataDog/go-acl v1.0.1/go.mod h1:YJx333qSb3GUqCLIbqKeGaZS2pUYh2IYGI7+FsX18CU= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= +github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0= +github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k= +github.com/alecthomas/participle/v2 v2.1.4 h1:W/H79S8Sat/krZ3el6sQMvMaahJ+XcM9WSI2naI7w2U= +github.com/alecthomas/participle/v2 v2.1.4/go.mod h1:8tqVbpTX20Ru4NfYQgZf4mP18eXPTBViyMWiArNEgGI= +github.com/alecthomas/repr v0.5.2 h1:SU73FTI9D1P5UNtvseffFSGmdNci/O6RsqzeXJtP0Qs= +github.com/alecthomas/repr v0.5.2/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= +github.com/antchfx/xmlquery v1.5.1 h1:T9I4Ns1EXiWHy0IqKupGhnfTQtJwlGrpXtauYOoNv78= +github.com/antchfx/xmlquery v1.5.1/go.mod h1:bVqnl7TaDXSReKINrhZz+2E/PbCu2tUahb+wZ7WZNT8= +github.com/antchfx/xpath v1.3.6 h1:s0y+ElRRtTQdfHP609qFu0+c6bglDv20pqOViQjjdPI= +github.com/antchfx/xpath v1.3.6/go.mod h1:i54GszH55fYfBmoZXapTHN8T8tkcHfRgLyVwwqzXNcs= +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/ebitengine/purego v0.10.0 h1:QIw4xfpWT6GWTzaW5XEKy3HXoqrJGx1ijYHzTF0/ISU= github.com/ebitengine/purego v0.10.0/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= +github.com/elastic/go-grok v0.3.1 h1:WEhUxe2KrwycMnlvMimJXvzRa7DoByJB4PVUIE1ZD/U= +github.com/elastic/go-grok v0.3.1/go.mod h1:n38ls8ZgOboZRgKcjMY8eFeZFMmcL9n2lP0iHhIDk64= +github.com/elastic/lunes v0.2.2 h1:dZFEaebNg9l+mzvOQN6Nd/c9y6y8rUe3tBWsTgvM08U= +github.com/elastic/lunes v0.2.2/go.mod h1:u3W/BdONWTrh0JjNZ21C907dDc+cUZttZrGa625nf2k= github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= +github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= +github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= github.com/go-viper/mapstructure/v2 v2.5.0 h1:vM5IJoUAy3d7zRSVtIwQgBj7BiWtMPfmPEgAXnvj1Ro= github.com/go-viper/mapstructure/v2 v2.5.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= +github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= +github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= +github.com/goccy/go-json v0.10.6 h1:p8HrPJzOakx/mn/bQtjgNjdTcN+/S6FcG2CTtQOrHVU= +github.com/goccy/go-json v0.10.6/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= github.com/gofrs/flock v0.13.0 h1:95JolYOvGMqeH31+FC7D2+uULf6mG61mEZ/A8dRYMzw= github.com/gofrs/flock v0.13.0/go.mod h1:jxeyy9R1auM5S6JYDBhDt+E2TCo7DkratH4Pgi8P+Z0= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 h1:f+oWsMOmNPc8JmEHVZIycC7hBoQxHH9pNKQORJNozsQ= +github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUvekVysuuOpQKo3191zZyTpiI6se1N1ULghS0sw= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/hashicorp/go-version v1.9.0 h1:CeOIz6k+LoN3qX9Z0tyQrPtiB1DFYRPfCIBtaXPSCnA= +github.com/hashicorp/go-version v1.9.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= +github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= +github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= +github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= +github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/klauspost/cpuid/v2 v2.3.0 h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzhA9Y= +github.com/klauspost/cpuid/v2 v2.3.0/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/lufia/plan9stats v0.0.0-20260330125221-c963978e514e h1:Q6MvJtQK/iRcRtzAscm/zF23XxJlbECiGPyRicsX+Ak= github.com/lufia/plan9stats v0.0.0-20260330125221-c963978e514e/go.mod h1:autxFIvghDt3jPTLoqZ9OZ7s9qTGNAWmYCjVFWPX/zg= +github.com/magefile/mage v1.15.0 h1:BvGheCMAsG3bWUDbZ8AyXXpCNwU9u5CB6sM+HNb9HYg= +github.com/magefile/mage v1.15.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A= github.com/mdlayher/socket v0.6.0 h1:ScZPaAGyO1icQnbFrhPM8mnXyMu9qukC1K4ZoM2IQKU= github.com/mdlayher/socket v0.6.0/go.mod h1:q7vozUAnxSqnjHc12Fik5yUKIzfZ8ITCfMkhOtE9z18= github.com/mdlayher/vsock v1.3.0 h1:bqQfZ1OznI03y6YiXp2sze05RVdzLn/zsfjnjd4+ivI= github.com/mdlayher/vsock v1.3.0/go.mod h1:WsuksavOvwCnV5UqGHUkvAvCy+Dqy81y4goKQTzxxNY= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee h1:W5t00kpgFdJifH4BDsTlE89Zl93FEloxaWZfGcifgq8= +github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw= github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.156.0 h1:wca5xIy5I/8CAylZYgOYzj5P5JAAicBA8uNtiRNh2Zo= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.156.0/go.mod h1:CaT/YS8vvoNgsLewbtwDpS0mAgsHXNXceSPzlP+TeJI= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0 h1:ESNQwLZhQlKcbCzGfFNJu3MkNur35dVBbf7sE0MLDdk= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0/go.mod h1:KW8gom6sRRy60kO9SBSzBy2FGCvfgP7C3cprTqthpaA= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt9k/+g42oCprj/FisM4qX9L3sZB3upGN2ZU= @@ -45,20 +105,67 @@ github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU= github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4= github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/tklauser/go-sysconf v0.3.16 h1:frioLaCQSsF5Cy1jgRBrzr6t502KIIwQ0MArYICU0nA= github.com/tklauser/go-sysconf v0.3.16/go.mod h1:/qNL9xxDhc7tx3HSRsLWNnuzbVfh3e7gh/BmM179nYI= github.com/tklauser/numcpus v0.11.0 h1:nSTwhKH5e1dMNsCdVBukSZrURJRoHbSEQjdEbY+9RXw= github.com/tklauser/numcpus v0.11.0/go.mod h1:z+LwcLq54uWZTX0u/bGobaV34u6V7KNlTZejzM6/3MQ= +github.com/twmb/murmur3 v1.1.8 h1:8Yt9taO/WN3l08xErzjeschgZU2QSrwm1kclYq+0aRg= +github.com/twmb/murmur3 v1.1.8/go.mod h1:Qq/R7NUyOfr65zD+6Q5IHKsJLwP7exErjN6lyyq3OSQ= +github.com/ua-parser/uap-go v0.0.0-20251207011819-db9adb27a0b8 h1:yS0rzVnj7Z/ZeHzvv5erQbO2b8gyTL4CeMNodl9SJMQ= +github.com/ua-parser/uap-go v0.0.0-20251207011819-db9adb27a0b8/go.mod h1:gwANdYmo9R8LLwGnyDFWK2PMsaXXX2HhAvCnb/UhZsM= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= +github.com/zeebo/assert v1.3.0 h1:g7C04CbJuIDKNPFHmsk4hwZDO5O+kntRxzaUoNXj+IQ= +github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= +github.com/zeebo/xxh3 v1.1.0 h1:s7DLGDK45Dyfg7++yxI0khrfwq9661w9EN78eP/UZVs= +github.com/zeebo/xxh3 v1.1.0/go.mod h1:IisAie1LELR4xhVinxWS5+zf1lA4p0MW4T+w+W07F5s= +go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= +go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= +go.opentelemetry.io/collector/client v1.62.0 h1:Vud5nn4gX2TzMnHpNhuUhvAi4GGcO0RsaId0dftHAjM= +go.opentelemetry.io/collector/client v1.62.0/go.mod h1:iao8KfxMeND0zdp+PcHGPY9r1BDgS+OppY7RKLlUeUU= +go.opentelemetry.io/collector/component v1.62.0 h1:F1MHUlUEjSJgwcumsCbbH2rRmTK4dC8m/ipp9v4vFh0= +go.opentelemetry.io/collector/component v1.62.0/go.mod h1:NqdVWse4diWnlqh5WurI2KncJuBXe1zzYtxuC9Mmew0= +go.opentelemetry.io/collector/component/componenttest v0.156.0 h1:IV7xYP57kkKoBk7o9dYvToeotZ369A6/V+QIlLgnsEc= +go.opentelemetry.io/collector/component/componenttest v0.156.0/go.mod h1:YL7ByaKwuSuB+eBtm56awLXFlKJ7KI6jfrsjZd0uv8Y= +go.opentelemetry.io/collector/consumer v1.62.0 h1:nJzGs8soiciZvGhiA4OYwPRRCrTsXnNHrmzi/jaT3ck= +go.opentelemetry.io/collector/consumer v1.62.0/go.mod h1:uNbRHJ9LqgHxcWdLTvRTO4K3SSGZop1qlHKfV5lUvGg= +go.opentelemetry.io/collector/featuregate v1.62.0 h1:pYY7RlulSCTOS9mFWxasMLwYJCfNXHtnOkZlv3jg/V4= +go.opentelemetry.io/collector/featuregate v1.62.0/go.mod h1:4ga1QBMPEejXXmpyJS8lmaRpknJ3Lb9Bvk6e420bUFU= +go.opentelemetry.io/collector/internal/testutil v0.156.0 h1:Nu02vhHA2UQ3Yjyjisk3N24HHxwvw7PQiTz9O1PuiUY= +go.opentelemetry.io/collector/internal/testutil v0.156.0/go.mod h1:Jkjs6rkqs973LqgZ0Fe3zrokQRKULYXPIf4HuqStiEE= +go.opentelemetry.io/collector/pdata v1.62.0 h1:xGdwl2Cs5Rq5nKs0nYvAxm3Qq20HcySVAmUElATS8Es= +go.opentelemetry.io/collector/pdata v1.62.0/go.mod h1:WFy5R6XGpz2Q4MaekeEm+qc4GY5V3+BhQIwGPkp+fj0= +go.opentelemetry.io/collector/pdata/pprofile v0.156.0 h1:TnQzA2d5iMGH5//mGLqPjwdYqsFD/A7o2WgDdppxdVM= +go.opentelemetry.io/collector/pdata/pprofile v0.156.0/go.mod h1:3dtjs/mliblJJCCTXUE0AkpBNfBEybPruj3ml6WCOoI= +go.opentelemetry.io/otel v1.44.1-0.20260622141720-fbe3d073ba93 h1:r3rusw/U3IyJ0+r6xWXv1VF8TTUGVIAnK8tuzf/8Re0= +go.opentelemetry.io/otel v1.44.1-0.20260622141720-fbe3d073ba93/go.mod h1:BMgjTHL9WPRlRjL2oZCBTL4whCGtXch2H4BhOPIAyYc= +go.opentelemetry.io/otel/metric v1.44.1-0.20260622141720-fbe3d073ba93 h1:DCOdBzLW6tMYSutG82cKWgIX9JWNFixROrcgKm7Dn+Q= +go.opentelemetry.io/otel/metric v1.44.1-0.20260622141720-fbe3d073ba93/go.mod h1:8O7hanEPBNgEMmybD3s2VBKcgWOCsA6tzHBPODAiquo= +go.opentelemetry.io/otel/sdk v1.44.0 h1:nHYwb9lK+fJPU/dnT6s7W7Z8itMWyqrnVfbheVYrZ58= +go.opentelemetry.io/otel/sdk v1.44.0/go.mod h1:Osuydd3Se74nqjAKxid74N5eC+jfEqfTegHRnq58oK0= +go.opentelemetry.io/otel/sdk/metric v1.44.1-0.20260622141720-fbe3d073ba93 h1:BoVal+uHGOzlFZvHGq8bNR677inewlKioUjJPdPPCBE= +go.opentelemetry.io/otel/sdk/metric v1.44.1-0.20260622141720-fbe3d073ba93/go.mod h1:xZjeGP2g1Hxokmw5N6WDyiJb4OOKitlYGqGiwgu4CjM= +go.opentelemetry.io/otel/trace v1.44.1-0.20260622141720-fbe3d073ba93 h1:dNiK0YMSSGzwwgfNXkgBGmy33HyfUXNqKu9wBPafZhw= +go.opentelemetry.io/otel/trace v1.44.1-0.20260622141720-fbe3d073ba93/go.mod h1:oLl1jrMQAVo6v3GAggN+1VH9VIz9iUSvW53sW1Q8PIE= +go.opentelemetry.io/proto/slim/otlp v1.10.0 h1:iR97Vs/ZDR+y9TfuP9b1XBtdPWeC+OMslIBmhcLU7jM= +go.opentelemetry.io/proto/slim/otlp v1.10.0/go.mod h1:lV9250stpjYLPNA5viFabIgP2QlUGRT1GdTgAf8SIUk= +go.opentelemetry.io/proto/slim/otlp/collector/profiles/v1development v0.3.0 h1:RUF5rO0hAlgiJt1fzQVzcVs3vZVNHIcMLgOgG4rWNcQ= +go.opentelemetry.io/proto/slim/otlp/collector/profiles/v1development v0.3.0/go.mod h1:I89cynRj8y+383o7tEQVg2SVA6SRgDVIouWPUVXjx0U= +go.opentelemetry.io/proto/slim/otlp/profiles/v1development v0.3.0 h1:CQvJSldHRUN6Z8jsUeYv8J0lXRvygALXIzsmAeCcZE0= +go.opentelemetry.io/proto/slim/otlp/profiles/v1development v0.3.0/go.mod h1:xSQ+mEfJe/GjK1LXEyVOoSI1N9JV9ZI923X5kup43W4= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= go.uber.org/dig v1.19.0 h1:BACLhebsYdpQ7IROQ1AGPjrXcP5dF80U3gKoFzbaq/4= go.uber.org/dig v1.19.0/go.mod h1:Us0rSJiThwCv2GteUN0Q7OKvU7n5J4dxZ9JKUXozFdE= go.uber.org/fx v1.24.0 h1:wE8mruvpg2kiiL1Vqd0CC+tr0/24XIB10Iwp2lLWzkg= go.uber.org/fx v1.24.0/go.mod h1:AmDeGyS+ZARGKM4tlH4FY2Jr63VjbEDJHtqXTGP5hbo= +go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= +go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.28.0 h1:IZzaP1Fv73/T/pBMLk4VutPl36uNC+OSUh3JLG3FIjo= @@ -67,19 +174,88 @@ go.yaml.in/yaml/v2 v2.4.4 h1:tuyd0P+2Ont/d6e2rl3be67goVK4R6deVxCUX5vyPaQ= go.yaml.in/yaml/v2 v2.4.4/go.mod h1:gMZqIpDtDqOfM0uNfy0SkpRhvUryYH0Z6wdMYcacYXQ= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= +golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/exp v0.0.0-20260611194520-c48552f49976 h1:X8Hz2ImujgbmetVuW+w2YkyZChE3cBpZi2P158rTG9M= +golang.org/x/exp v0.0.0-20260611194520-c48552f49976/go.mod h1:vnf4pv9iKZXY58sQE1L86zmNWJ4159e1RkcWiLCkeEY= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= +golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= golang.org/x/net v0.57.0 h1:K5+3DljvIuDG9/Jv9rvyMywYNFCQ9RSUY6OOTTkT+tE= golang.org/x/net v0.57.0/go.mod h1:KpXc8iv+r3XplLAG/f7Jsf9RPszJzdR0f58q9vGOuEU= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.22.0 h1:SZjpbeLmrCk4xhRSZFNZW5gFUeCeFgjekvI/+gfScek= golang.org/x/sync v0.22.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.47.0 h1:o7XGOvZQCADBQQ4Y7VNq2dRWQR7JmOUW8Kxx4ZsNgWs= golang.org/x/sys v0.47.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= +golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= +golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/text v0.40.0 h1:Ub2Z6/xjgF1WrYQz2nuITOEegKFtiIy+rieRJ5lHZKs= golang.org/x/text v0.40.0/go.mod h1:hpnzDAfGV753zIKo+wk3u1bVKCGPbrnF7+7LBF/UHVY= golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/grpc v1.82.1 h1:NnAxzGRA0677vCa4BUkOAnO5+FfQqVl9iUXeD0IqcGE= +google.golang.org/grpc v1.82.1/go.mod h1:yzTZ1TB1Z3SG+LIYaI+WiE8D5+PZ3ArnrSp8zF3+/ZA= +google.golang.org/protobuf v1.36.12-0.20260116114154-8c4c4ae446ca h1:/ro7D0tSP+jEnQPzy9e1r5L6mAcEShGlE5kFsShX5O8= +google.golang.org/protobuf v1.36.12-0.20260116114154-8c4c4ae446ca/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/pkg/logs/status/statusinterface/go.mod b/pkg/logs/status/statusinterface/go.mod index 45d674ed3142..6e188b6f6da1 100644 --- a/pkg/logs/status/statusinterface/go.mod +++ b/pkg/logs/status/statusinterface/go.mod @@ -82,6 +82,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -109,6 +110,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/pkg/logs/status/utils/go.mod b/pkg/logs/status/utils/go.mod index 3fd8aa2fc6c6..c2218ec3ac22 100644 --- a/pkg/logs/status/utils/go.mod +++ b/pkg/logs/status/utils/go.mod @@ -96,6 +96,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -123,6 +124,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/statusinterface => ../../../../pkg/logs/status/statusinterface github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/pkg/logs/types/go.mod b/pkg/logs/types/go.mod index 49af03d49a48..1924e6bfaacb 100644 --- a/pkg/logs/types/go.mod +++ b/pkg/logs/types/go.mod @@ -82,6 +82,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -109,6 +110,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/statusinterface => ../../../pkg/logs/status/statusinterface github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/logs/util/testutils/go.mod b/pkg/logs/util/testutils/go.mod index 707750495ec4..95d45d1c64bc 100644 --- a/pkg/logs/util/testutils/go.mod +++ b/pkg/logs/util/testutils/go.mod @@ -1,6 +1,6 @@ module github.com/DataDog/datadog-agent/pkg/logs/util/testutils -go 1.25.0 +go 1.25.4 require github.com/DataDog/datadog-agent/pkg/logs/sources v0.75.4 @@ -23,6 +23,7 @@ require ( github.com/DataDog/datadog-agent/pkg/fips v0.75.4 // indirect github.com/DataDog/datadog-agent/pkg/logs/status/utils v0.75.4 // indirect github.com/DataDog/datadog-agent/pkg/logs/types v0.75.4 // indirect + github.com/DataDog/datadog-agent/pkg/logs/vrl v0.0.0-00010101000000-000000000000 // indirect github.com/DataDog/datadog-agent/pkg/template v0.75.4 // indirect github.com/DataDog/datadog-agent/pkg/util/defaultpaths v0.64.0-devel // indirect github.com/DataDog/datadog-agent/pkg/util/executable v0.75.4 // indirect @@ -34,30 +35,70 @@ require ( github.com/DataDog/datadog-agent/pkg/util/system v0.75.4 // indirect github.com/DataDog/datadog-agent/pkg/util/winutil v0.75.4 // indirect github.com/DataDog/datadog-agent/pkg/version v0.75.4 // indirect + github.com/DataDog/fastjq v0.0.0-20260506145947-c3336f252fa2 // indirect github.com/DataDog/go-acl v1.0.1 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect + github.com/alecthomas/participle/v2 v2.1.4 // indirect + github.com/antchfx/xmlquery v1.5.1 // indirect + github.com/antchfx/xpath v1.3.6 // indirect + github.com/cespare/xxhash/v2 v2.3.0 // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/ebitengine/purego v0.10.0 // indirect + github.com/elastic/go-grok v0.3.1 // indirect + github.com/elastic/lunes v0.2.2 // indirect github.com/go-ole/go-ole v1.3.0 // indirect github.com/go-viper/mapstructure/v2 v2.5.0 // indirect + github.com/gobwas/glob v0.2.3 // indirect + github.com/goccy/go-json v0.10.6 // indirect github.com/gofrs/flock v0.13.0 // indirect + github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/hashicorp/go-version v1.9.0 // indirect + github.com/hashicorp/golang-lru v1.0.2 // indirect + github.com/iancoleman/strcase v0.3.0 // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/klauspost/cpuid/v2 v2.3.0 // indirect github.com/lufia/plan9stats v0.0.0-20260330125221-c963978e514e // indirect + github.com/magefile/mage v1.15.0 // indirect github.com/mdlayher/socket v0.6.0 // indirect github.com/mdlayher/vsock v1.3.0 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.156.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0 // indirect + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect github.com/shirou/gopsutil/v4 v4.26.6 // indirect github.com/spf13/cast v1.10.0 // indirect + github.com/stretchr/testify v1.11.1 // indirect github.com/tklauser/go-sysconf v0.3.16 // indirect github.com/tklauser/numcpus v0.11.0 // indirect + github.com/twmb/murmur3 v1.1.8 // indirect + github.com/ua-parser/uap-go v0.0.0-20251207011819-db9adb27a0b8 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect + github.com/zeebo/xxh3 v1.1.0 // indirect + go.opentelemetry.io/collector/client v1.62.0 // indirect + go.opentelemetry.io/collector/component v1.62.0 // indirect + go.opentelemetry.io/collector/featuregate v1.62.0 // indirect + go.opentelemetry.io/collector/pdata v1.62.0 // indirect + go.opentelemetry.io/collector/pdata/pprofile v0.156.0 // indirect + go.opentelemetry.io/otel v1.44.1-0.20260622141720-fbe3d073ba93 // indirect + go.opentelemetry.io/otel/metric v1.44.1-0.20260622141720-fbe3d073ba93 // indirect + go.opentelemetry.io/otel/trace v1.44.1-0.20260622141720-fbe3d073ba93 // indirect go.uber.org/atomic v1.11.0 // indirect + go.uber.org/multierr v1.11.0 // indirect + go.uber.org/zap v1.28.0 // indirect go.yaml.in/yaml/v2 v2.4.4 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect + golang.org/x/exp v0.0.0-20260611194520-c48552f49976 // indirect golang.org/x/net v0.57.0 // indirect golang.org/x/sync v0.22.0 // indirect golang.org/x/sys v0.47.0 // indirect golang.org/x/text v0.40.0 // indirect golang.org/x/time v0.15.0 // indirect + google.golang.org/grpc v1.82.1 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect ) // This section was automatically added by 'dda inv modules.add-all-replace' command, do not edit manually @@ -140,6 +181,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -167,6 +209,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/statusinterface => ../../../../pkg/logs/status/statusinterface github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/pkg/logs/util/testutils/go.sum b/pkg/logs/util/testutils/go.sum index 6e6cfb0fa0f2..b077e104b1c8 100644 --- a/pkg/logs/util/testutils/go.sum +++ b/pkg/logs/util/testutils/go.sum @@ -1,36 +1,96 @@ +github.com/DataDog/fastjq v0.0.0-20260506145947-c3336f252fa2 h1:a9xjjGg5UQzUd+yliPDF9e4wQA9qq9PKT+DRDUaonOM= +github.com/DataDog/fastjq v0.0.0-20260506145947-c3336f252fa2/go.mod h1:XbWpLvPZo0LbxPhXTMIXSB98lFwfF9MnkT77iRHTXMY= github.com/DataDog/go-acl v1.0.1 h1:uRbp98YmlVZYqNNyTBFNI3Y6bnziBLyCIR4nRu0bIpU= github.com/DataDog/go-acl v1.0.1/go.mod h1:YJx333qSb3GUqCLIbqKeGaZS2pUYh2IYGI7+FsX18CU= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= +github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0= +github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k= +github.com/alecthomas/participle/v2 v2.1.4 h1:W/H79S8Sat/krZ3el6sQMvMaahJ+XcM9WSI2naI7w2U= +github.com/alecthomas/participle/v2 v2.1.4/go.mod h1:8tqVbpTX20Ru4NfYQgZf4mP18eXPTBViyMWiArNEgGI= +github.com/alecthomas/repr v0.5.2 h1:SU73FTI9D1P5UNtvseffFSGmdNci/O6RsqzeXJtP0Qs= +github.com/alecthomas/repr v0.5.2/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= +github.com/antchfx/xmlquery v1.5.1 h1:T9I4Ns1EXiWHy0IqKupGhnfTQtJwlGrpXtauYOoNv78= +github.com/antchfx/xmlquery v1.5.1/go.mod h1:bVqnl7TaDXSReKINrhZz+2E/PbCu2tUahb+wZ7WZNT8= +github.com/antchfx/xpath v1.3.6 h1:s0y+ElRRtTQdfHP609qFu0+c6bglDv20pqOViQjjdPI= +github.com/antchfx/xpath v1.3.6/go.mod h1:i54GszH55fYfBmoZXapTHN8T8tkcHfRgLyVwwqzXNcs= +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/ebitengine/purego v0.10.0 h1:QIw4xfpWT6GWTzaW5XEKy3HXoqrJGx1ijYHzTF0/ISU= github.com/ebitengine/purego v0.10.0/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= +github.com/elastic/go-grok v0.3.1 h1:WEhUxe2KrwycMnlvMimJXvzRa7DoByJB4PVUIE1ZD/U= +github.com/elastic/go-grok v0.3.1/go.mod h1:n38ls8ZgOboZRgKcjMY8eFeZFMmcL9n2lP0iHhIDk64= +github.com/elastic/lunes v0.2.2 h1:dZFEaebNg9l+mzvOQN6Nd/c9y6y8rUe3tBWsTgvM08U= +github.com/elastic/lunes v0.2.2/go.mod h1:u3W/BdONWTrh0JjNZ21C907dDc+cUZttZrGa625nf2k= github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= +github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= +github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= github.com/go-viper/mapstructure/v2 v2.5.0 h1:vM5IJoUAy3d7zRSVtIwQgBj7BiWtMPfmPEgAXnvj1Ro= github.com/go-viper/mapstructure/v2 v2.5.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= +github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= +github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= +github.com/goccy/go-json v0.10.6 h1:p8HrPJzOakx/mn/bQtjgNjdTcN+/S6FcG2CTtQOrHVU= +github.com/goccy/go-json v0.10.6/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= github.com/gofrs/flock v0.13.0 h1:95JolYOvGMqeH31+FC7D2+uULf6mG61mEZ/A8dRYMzw= github.com/gofrs/flock v0.13.0/go.mod h1:jxeyy9R1auM5S6JYDBhDt+E2TCo7DkratH4Pgi8P+Z0= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 h1:f+oWsMOmNPc8JmEHVZIycC7hBoQxHH9pNKQORJNozsQ= +github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUvekVysuuOpQKo3191zZyTpiI6se1N1ULghS0sw= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/hashicorp/go-version v1.9.0 h1:CeOIz6k+LoN3qX9Z0tyQrPtiB1DFYRPfCIBtaXPSCnA= +github.com/hashicorp/go-version v1.9.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= +github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= +github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= +github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= +github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/klauspost/cpuid/v2 v2.3.0 h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzhA9Y= +github.com/klauspost/cpuid/v2 v2.3.0/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/lufia/plan9stats v0.0.0-20260330125221-c963978e514e h1:Q6MvJtQK/iRcRtzAscm/zF23XxJlbECiGPyRicsX+Ak= github.com/lufia/plan9stats v0.0.0-20260330125221-c963978e514e/go.mod h1:autxFIvghDt3jPTLoqZ9OZ7s9qTGNAWmYCjVFWPX/zg= +github.com/magefile/mage v1.15.0 h1:BvGheCMAsG3bWUDbZ8AyXXpCNwU9u5CB6sM+HNb9HYg= +github.com/magefile/mage v1.15.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A= github.com/mdlayher/socket v0.6.0 h1:ScZPaAGyO1icQnbFrhPM8mnXyMu9qukC1K4ZoM2IQKU= github.com/mdlayher/socket v0.6.0/go.mod h1:q7vozUAnxSqnjHc12Fik5yUKIzfZ8ITCfMkhOtE9z18= github.com/mdlayher/vsock v1.3.0 h1:bqQfZ1OznI03y6YiXp2sze05RVdzLn/zsfjnjd4+ivI= github.com/mdlayher/vsock v1.3.0/go.mod h1:WsuksavOvwCnV5UqGHUkvAvCy+Dqy81y4goKQTzxxNY= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee h1:W5t00kpgFdJifH4BDsTlE89Zl93FEloxaWZfGcifgq8= +github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw= github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.156.0 h1:wca5xIy5I/8CAylZYgOYzj5P5JAAicBA8uNtiRNh2Zo= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.156.0/go.mod h1:CaT/YS8vvoNgsLewbtwDpS0mAgsHXNXceSPzlP+TeJI= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0 h1:ESNQwLZhQlKcbCzGfFNJu3MkNur35dVBbf7sE0MLDdk= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0/go.mod h1:KW8gom6sRRy60kO9SBSzBy2FGCvfgP7C3cprTqthpaA= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt9k/+g42oCprj/FisM4qX9L3sZB3upGN2ZU= @@ -45,20 +105,67 @@ github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU= github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4= github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/tklauser/go-sysconf v0.3.16 h1:frioLaCQSsF5Cy1jgRBrzr6t502KIIwQ0MArYICU0nA= github.com/tklauser/go-sysconf v0.3.16/go.mod h1:/qNL9xxDhc7tx3HSRsLWNnuzbVfh3e7gh/BmM179nYI= github.com/tklauser/numcpus v0.11.0 h1:nSTwhKH5e1dMNsCdVBukSZrURJRoHbSEQjdEbY+9RXw= github.com/tklauser/numcpus v0.11.0/go.mod h1:z+LwcLq54uWZTX0u/bGobaV34u6V7KNlTZejzM6/3MQ= +github.com/twmb/murmur3 v1.1.8 h1:8Yt9taO/WN3l08xErzjeschgZU2QSrwm1kclYq+0aRg= +github.com/twmb/murmur3 v1.1.8/go.mod h1:Qq/R7NUyOfr65zD+6Q5IHKsJLwP7exErjN6lyyq3OSQ= +github.com/ua-parser/uap-go v0.0.0-20251207011819-db9adb27a0b8 h1:yS0rzVnj7Z/ZeHzvv5erQbO2b8gyTL4CeMNodl9SJMQ= +github.com/ua-parser/uap-go v0.0.0-20251207011819-db9adb27a0b8/go.mod h1:gwANdYmo9R8LLwGnyDFWK2PMsaXXX2HhAvCnb/UhZsM= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= +github.com/zeebo/assert v1.3.0 h1:g7C04CbJuIDKNPFHmsk4hwZDO5O+kntRxzaUoNXj+IQ= +github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= +github.com/zeebo/xxh3 v1.1.0 h1:s7DLGDK45Dyfg7++yxI0khrfwq9661w9EN78eP/UZVs= +github.com/zeebo/xxh3 v1.1.0/go.mod h1:IisAie1LELR4xhVinxWS5+zf1lA4p0MW4T+w+W07F5s= +go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= +go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= +go.opentelemetry.io/collector/client v1.62.0 h1:Vud5nn4gX2TzMnHpNhuUhvAi4GGcO0RsaId0dftHAjM= +go.opentelemetry.io/collector/client v1.62.0/go.mod h1:iao8KfxMeND0zdp+PcHGPY9r1BDgS+OppY7RKLlUeUU= +go.opentelemetry.io/collector/component v1.62.0 h1:F1MHUlUEjSJgwcumsCbbH2rRmTK4dC8m/ipp9v4vFh0= +go.opentelemetry.io/collector/component v1.62.0/go.mod h1:NqdVWse4diWnlqh5WurI2KncJuBXe1zzYtxuC9Mmew0= +go.opentelemetry.io/collector/component/componenttest v0.156.0 h1:IV7xYP57kkKoBk7o9dYvToeotZ369A6/V+QIlLgnsEc= +go.opentelemetry.io/collector/component/componenttest v0.156.0/go.mod h1:YL7ByaKwuSuB+eBtm56awLXFlKJ7KI6jfrsjZd0uv8Y= +go.opentelemetry.io/collector/consumer v1.62.0 h1:nJzGs8soiciZvGhiA4OYwPRRCrTsXnNHrmzi/jaT3ck= +go.opentelemetry.io/collector/consumer v1.62.0/go.mod h1:uNbRHJ9LqgHxcWdLTvRTO4K3SSGZop1qlHKfV5lUvGg= +go.opentelemetry.io/collector/featuregate v1.62.0 h1:pYY7RlulSCTOS9mFWxasMLwYJCfNXHtnOkZlv3jg/V4= +go.opentelemetry.io/collector/featuregate v1.62.0/go.mod h1:4ga1QBMPEejXXmpyJS8lmaRpknJ3Lb9Bvk6e420bUFU= +go.opentelemetry.io/collector/internal/testutil v0.156.0 h1:Nu02vhHA2UQ3Yjyjisk3N24HHxwvw7PQiTz9O1PuiUY= +go.opentelemetry.io/collector/internal/testutil v0.156.0/go.mod h1:Jkjs6rkqs973LqgZ0Fe3zrokQRKULYXPIf4HuqStiEE= +go.opentelemetry.io/collector/pdata v1.62.0 h1:xGdwl2Cs5Rq5nKs0nYvAxm3Qq20HcySVAmUElATS8Es= +go.opentelemetry.io/collector/pdata v1.62.0/go.mod h1:WFy5R6XGpz2Q4MaekeEm+qc4GY5V3+BhQIwGPkp+fj0= +go.opentelemetry.io/collector/pdata/pprofile v0.156.0 h1:TnQzA2d5iMGH5//mGLqPjwdYqsFD/A7o2WgDdppxdVM= +go.opentelemetry.io/collector/pdata/pprofile v0.156.0/go.mod h1:3dtjs/mliblJJCCTXUE0AkpBNfBEybPruj3ml6WCOoI= +go.opentelemetry.io/otel v1.44.1-0.20260622141720-fbe3d073ba93 h1:r3rusw/U3IyJ0+r6xWXv1VF8TTUGVIAnK8tuzf/8Re0= +go.opentelemetry.io/otel v1.44.1-0.20260622141720-fbe3d073ba93/go.mod h1:BMgjTHL9WPRlRjL2oZCBTL4whCGtXch2H4BhOPIAyYc= +go.opentelemetry.io/otel/metric v1.44.1-0.20260622141720-fbe3d073ba93 h1:DCOdBzLW6tMYSutG82cKWgIX9JWNFixROrcgKm7Dn+Q= +go.opentelemetry.io/otel/metric v1.44.1-0.20260622141720-fbe3d073ba93/go.mod h1:8O7hanEPBNgEMmybD3s2VBKcgWOCsA6tzHBPODAiquo= +go.opentelemetry.io/otel/sdk v1.44.0 h1:nHYwb9lK+fJPU/dnT6s7W7Z8itMWyqrnVfbheVYrZ58= +go.opentelemetry.io/otel/sdk v1.44.0/go.mod h1:Osuydd3Se74nqjAKxid74N5eC+jfEqfTegHRnq58oK0= +go.opentelemetry.io/otel/sdk/metric v1.44.1-0.20260622141720-fbe3d073ba93 h1:BoVal+uHGOzlFZvHGq8bNR677inewlKioUjJPdPPCBE= +go.opentelemetry.io/otel/sdk/metric v1.44.1-0.20260622141720-fbe3d073ba93/go.mod h1:xZjeGP2g1Hxokmw5N6WDyiJb4OOKitlYGqGiwgu4CjM= +go.opentelemetry.io/otel/trace v1.44.1-0.20260622141720-fbe3d073ba93 h1:dNiK0YMSSGzwwgfNXkgBGmy33HyfUXNqKu9wBPafZhw= +go.opentelemetry.io/otel/trace v1.44.1-0.20260622141720-fbe3d073ba93/go.mod h1:oLl1jrMQAVo6v3GAggN+1VH9VIz9iUSvW53sW1Q8PIE= +go.opentelemetry.io/proto/slim/otlp v1.10.0 h1:iR97Vs/ZDR+y9TfuP9b1XBtdPWeC+OMslIBmhcLU7jM= +go.opentelemetry.io/proto/slim/otlp v1.10.0/go.mod h1:lV9250stpjYLPNA5viFabIgP2QlUGRT1GdTgAf8SIUk= +go.opentelemetry.io/proto/slim/otlp/collector/profiles/v1development v0.3.0 h1:RUF5rO0hAlgiJt1fzQVzcVs3vZVNHIcMLgOgG4rWNcQ= +go.opentelemetry.io/proto/slim/otlp/collector/profiles/v1development v0.3.0/go.mod h1:I89cynRj8y+383o7tEQVg2SVA6SRgDVIouWPUVXjx0U= +go.opentelemetry.io/proto/slim/otlp/profiles/v1development v0.3.0 h1:CQvJSldHRUN6Z8jsUeYv8J0lXRvygALXIzsmAeCcZE0= +go.opentelemetry.io/proto/slim/otlp/profiles/v1development v0.3.0/go.mod h1:xSQ+mEfJe/GjK1LXEyVOoSI1N9JV9ZI923X5kup43W4= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= go.uber.org/dig v1.19.0 h1:BACLhebsYdpQ7IROQ1AGPjrXcP5dF80U3gKoFzbaq/4= go.uber.org/dig v1.19.0/go.mod h1:Us0rSJiThwCv2GteUN0Q7OKvU7n5J4dxZ9JKUXozFdE= go.uber.org/fx v1.24.0 h1:wE8mruvpg2kiiL1Vqd0CC+tr0/24XIB10Iwp2lLWzkg= go.uber.org/fx v1.24.0/go.mod h1:AmDeGyS+ZARGKM4tlH4FY2Jr63VjbEDJHtqXTGP5hbo= +go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= +go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.28.0 h1:IZzaP1Fv73/T/pBMLk4VutPl36uNC+OSUh3JLG3FIjo= @@ -67,19 +174,88 @@ go.yaml.in/yaml/v2 v2.4.4 h1:tuyd0P+2Ont/d6e2rl3be67goVK4R6deVxCUX5vyPaQ= go.yaml.in/yaml/v2 v2.4.4/go.mod h1:gMZqIpDtDqOfM0uNfy0SkpRhvUryYH0Z6wdMYcacYXQ= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= +golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/exp v0.0.0-20260611194520-c48552f49976 h1:X8Hz2ImujgbmetVuW+w2YkyZChE3cBpZi2P158rTG9M= +golang.org/x/exp v0.0.0-20260611194520-c48552f49976/go.mod h1:vnf4pv9iKZXY58sQE1L86zmNWJ4159e1RkcWiLCkeEY= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= +golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= golang.org/x/net v0.57.0 h1:K5+3DljvIuDG9/Jv9rvyMywYNFCQ9RSUY6OOTTkT+tE= golang.org/x/net v0.57.0/go.mod h1:KpXc8iv+r3XplLAG/f7Jsf9RPszJzdR0f58q9vGOuEU= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.22.0 h1:SZjpbeLmrCk4xhRSZFNZW5gFUeCeFgjekvI/+gfScek= golang.org/x/sync v0.22.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.47.0 h1:o7XGOvZQCADBQQ4Y7VNq2dRWQR7JmOUW8Kxx4ZsNgWs= golang.org/x/sys v0.47.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= +golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= +golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/text v0.40.0 h1:Ub2Z6/xjgF1WrYQz2nuITOEegKFtiIy+rieRJ5lHZKs= golang.org/x/text v0.40.0/go.mod h1:hpnzDAfGV753zIKo+wk3u1bVKCGPbrnF7+7LBF/UHVY= golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/grpc v1.82.1 h1:NnAxzGRA0677vCa4BUkOAnO5+FfQqVl9iUXeD0IqcGE= +google.golang.org/grpc v1.82.1/go.mod h1:yzTZ1TB1Z3SG+LIYaI+WiE8D5+PZ3ArnrSp8zF3+/ZA= +google.golang.org/protobuf v1.36.12-0.20260116114154-8c4c4ae446ca h1:/ro7D0tSP+jEnQPzy9e1r5L6mAcEShGlE5kFsShX5O8= +google.golang.org/protobuf v1.36.12-0.20260116114154-8c4c4ae446ca/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/pkg/metrics/go.mod b/pkg/metrics/go.mod index 31fb6d51e164..4adab5dee55e 100644 --- a/pkg/metrics/go.mod +++ b/pkg/metrics/go.mod @@ -176,6 +176,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../pkg/collector/check/defaults @@ -204,6 +205,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/network/driver => ../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../pkg/network/payload github.com/DataDog/datadog-agent/pkg/networkdevice/profile => ../../pkg/networkdevice/profile diff --git a/pkg/network/driver/go.mod b/pkg/network/driver/go.mod index 229007b07ca7..f2246eb9d0ad 100644 --- a/pkg/network/driver/go.mod +++ b/pkg/network/driver/go.mod @@ -117,6 +117,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -145,6 +146,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload github.com/DataDog/datadog-agent/pkg/networkdevice/profile => ../../../pkg/networkdevice/profile diff --git a/pkg/network/payload/go.mod b/pkg/network/payload/go.mod index e82e60821504..ce4ce7243ab9 100644 --- a/pkg/network/payload/go.mod +++ b/pkg/network/payload/go.mod @@ -82,6 +82,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -110,6 +111,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/networkdevice/profile => ../../../pkg/networkdevice/profile diff --git a/pkg/networkdevice/profile/go.mod b/pkg/networkdevice/profile/go.mod index 47bca728f7b9..d2ff237e3f62 100644 --- a/pkg/networkdevice/profile/go.mod +++ b/pkg/networkdevice/profile/go.mod @@ -105,6 +105,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -133,6 +134,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/networkpath/payload/go.mod b/pkg/networkpath/payload/go.mod index 1d98a4ecd243..36cb98118ef3 100644 --- a/pkg/networkpath/payload/go.mod +++ b/pkg/networkpath/payload/go.mod @@ -96,6 +96,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -124,6 +125,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/obfuscate/go.mod b/pkg/obfuscate/go.mod index 25112827ad43..b1402eb174d0 100644 --- a/pkg/obfuscate/go.mod +++ b/pkg/obfuscate/go.mod @@ -107,6 +107,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../pkg/collector/check/defaults @@ -135,6 +136,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../pkg/network/payload diff --git a/pkg/opentelemetry-mapping-go/inframetadata/go.mod b/pkg/opentelemetry-mapping-go/inframetadata/go.mod index 7a1ac6059edd..e829a622cfb6 100644 --- a/pkg/opentelemetry-mapping-go/inframetadata/go.mod +++ b/pkg/opentelemetry-mapping-go/inframetadata/go.mod @@ -110,6 +110,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -138,6 +139,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/opentelemetry-mapping-go/inframetadata/gohai/internal/gohaitest/go.mod b/pkg/opentelemetry-mapping-go/inframetadata/gohai/internal/gohaitest/go.mod index f18c92ddacf7..278ddab07c7b 100644 --- a/pkg/opentelemetry-mapping-go/inframetadata/gohai/internal/gohaitest/go.mod +++ b/pkg/opentelemetry-mapping-go/inframetadata/gohai/internal/gohaitest/go.mod @@ -99,6 +99,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../../../pkg/collector/check/defaults @@ -127,6 +128,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../../../pkg/network/payload diff --git a/pkg/opentelemetry-mapping-go/otlp/attributes/go.mod b/pkg/opentelemetry-mapping-go/otlp/attributes/go.mod index 1172dc7981fe..e7202efcfbb7 100644 --- a/pkg/opentelemetry-mapping-go/otlp/attributes/go.mod +++ b/pkg/opentelemetry-mapping-go/otlp/attributes/go.mod @@ -118,6 +118,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -146,6 +147,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/pkg/opentelemetry-mapping-go/otlp/logs/go.mod b/pkg/opentelemetry-mapping-go/otlp/logs/go.mod index 5e1ce635dbbe..81041499f4f8 100644 --- a/pkg/opentelemetry-mapping-go/otlp/logs/go.mod +++ b/pkg/opentelemetry-mapping-go/otlp/logs/go.mod @@ -140,6 +140,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -168,6 +169,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/pkg/opentelemetry-mapping-go/otlp/metrics/go.mod b/pkg/opentelemetry-mapping-go/otlp/metrics/go.mod index 773afc1c3c39..1268c5f8fef8 100644 --- a/pkg/opentelemetry-mapping-go/otlp/metrics/go.mod +++ b/pkg/opentelemetry-mapping-go/otlp/metrics/go.mod @@ -134,6 +134,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -162,6 +163,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/pkg/opentelemetry-mapping-go/otlp/rum/go.mod b/pkg/opentelemetry-mapping-go/otlp/rum/go.mod index 3d6b2277ba53..66c8742c2cd0 100644 --- a/pkg/opentelemetry-mapping-go/otlp/rum/go.mod +++ b/pkg/opentelemetry-mapping-go/otlp/rum/go.mod @@ -105,6 +105,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -133,6 +134,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/pkg/orchestrator/model/go.mod b/pkg/orchestrator/model/go.mod index 421058d30220..78ce7e2a7057 100644 --- a/pkg/orchestrator/model/go.mod +++ b/pkg/orchestrator/model/go.mod @@ -96,6 +96,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -124,6 +125,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/orchestrator/util/go.mod b/pkg/orchestrator/util/go.mod index aa489d54087e..fddea571231c 100644 --- a/pkg/orchestrator/util/go.mod +++ b/pkg/orchestrator/util/go.mod @@ -93,6 +93,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -121,6 +122,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/process/util/api/go.mod b/pkg/process/util/api/go.mod index 15ccd4aa1a08..a1f21b607f74 100644 --- a/pkg/process/util/api/go.mod +++ b/pkg/process/util/api/go.mod @@ -162,6 +162,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -190,6 +191,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/pkg/proto/go.mod b/pkg/proto/go.mod index 11535e2be449..68582e0ab99e 100644 --- a/pkg/proto/go.mod +++ b/pkg/proto/go.mod @@ -115,6 +115,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../pkg/collector/check/defaults @@ -143,6 +144,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../pkg/network/payload diff --git a/pkg/remoteconfig/state/go.mod b/pkg/remoteconfig/state/go.mod index 933a91cfd2c8..86a9806bbeec 100644 --- a/pkg/remoteconfig/state/go.mod +++ b/pkg/remoteconfig/state/go.mod @@ -97,6 +97,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -125,6 +126,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/security/secl/go.mod b/pkg/security/secl/go.mod index 4100f45cd640..8a7bea8a68bc 100644 --- a/pkg/security/secl/go.mod +++ b/pkg/security/secl/go.mod @@ -122,6 +122,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -150,6 +151,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/security/seclwin/go.mod b/pkg/security/seclwin/go.mod index c9e487b8232e..e3e0011ee110 100644 --- a/pkg/security/seclwin/go.mod +++ b/pkg/security/seclwin/go.mod @@ -100,6 +100,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -128,6 +129,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/serializer/go.mod b/pkg/serializer/go.mod index 103f1c875f06..682a41ed9f2c 100644 --- a/pkg/serializer/go.mod +++ b/pkg/serializer/go.mod @@ -212,6 +212,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../pkg/collector/check/defaults @@ -240,6 +241,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../pkg/network/payload diff --git a/pkg/ssi/testutils/go.mod b/pkg/ssi/testutils/go.mod index 37b8e65868d1..da3874d100a3 100644 --- a/pkg/ssi/testutils/go.mod +++ b/pkg/ssi/testutils/go.mod @@ -112,6 +112,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -140,6 +141,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/status/health/go.mod b/pkg/status/health/go.mod index fe4b86e9dcbe..a99e5328233e 100644 --- a/pkg/status/health/go.mod +++ b/pkg/status/health/go.mod @@ -93,6 +93,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -121,6 +122,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/tagger/types/go.mod b/pkg/tagger/types/go.mod index 7caf5e23fc19..d89c88282a21 100644 --- a/pkg/tagger/types/go.mod +++ b/pkg/tagger/types/go.mod @@ -84,6 +84,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -112,6 +113,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/tagset/go.mod b/pkg/tagset/go.mod index eecdf467283d..a135b1ebe0b5 100644 --- a/pkg/tagset/go.mod +++ b/pkg/tagset/go.mod @@ -95,6 +95,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../pkg/collector/check/defaults @@ -123,6 +124,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../pkg/network/payload diff --git a/pkg/trace/go.mod b/pkg/trace/go.mod index 1d08969b9375..cae63c95fc91 100644 --- a/pkg/trace/go.mod +++ b/pkg/trace/go.mod @@ -203,6 +203,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../pkg/collector/check/defaults @@ -231,6 +232,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../pkg/network/payload diff --git a/pkg/trace/log/go.mod b/pkg/trace/log/go.mod index 4b33b1372024..211dcd31b5c8 100644 --- a/pkg/trace/log/go.mod +++ b/pkg/trace/log/go.mod @@ -96,6 +96,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -124,6 +125,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/trace/otel/go.mod b/pkg/trace/otel/go.mod index 833e7a2a359d..5ed4215db54b 100644 --- a/pkg/trace/otel/go.mod +++ b/pkg/trace/otel/go.mod @@ -266,6 +266,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -294,6 +295,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/trace/stats/go.mod b/pkg/trace/stats/go.mod index 558b69acf7e0..dd22741c8ac8 100644 --- a/pkg/trace/stats/go.mod +++ b/pkg/trace/stats/go.mod @@ -140,6 +140,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -168,6 +169,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/trace/traceutil/go.mod b/pkg/trace/traceutil/go.mod index 102c3608de80..7d15b9f871b0 100644 --- a/pkg/trace/traceutil/go.mod +++ b/pkg/trace/traceutil/go.mod @@ -100,6 +100,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -128,6 +129,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/util/aws/creds/go.mod b/pkg/util/aws/creds/go.mod index d28106cda6f0..0c7fa472fc41 100644 --- a/pkg/util/aws/creds/go.mod +++ b/pkg/util/aws/creds/go.mod @@ -141,6 +141,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -169,6 +170,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/pkg/util/backoff/go.mod b/pkg/util/backoff/go.mod index 1b6fd457781c..74cf8ff9258d 100644 --- a/pkg/util/backoff/go.mod +++ b/pkg/util/backoff/go.mod @@ -93,6 +93,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -121,6 +122,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/util/buf/go.mod b/pkg/util/buf/go.mod index c7ccee0be0a4..5f178e18f0bb 100644 --- a/pkg/util/buf/go.mod +++ b/pkg/util/buf/go.mod @@ -93,6 +93,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -121,6 +122,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/util/cache/go.mod b/pkg/util/cache/go.mod index 39a2d2ff6b62..32fab7ba8359 100644 --- a/pkg/util/cache/go.mod +++ b/pkg/util/cache/go.mod @@ -96,6 +96,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -124,6 +125,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/util/cgroups/go.mod b/pkg/util/cgroups/go.mod index cc5b130ac197..fdb4e014b9f5 100644 --- a/pkg/util/cgroups/go.mod +++ b/pkg/util/cgroups/go.mod @@ -109,6 +109,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -137,6 +138,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/util/common/go.mod b/pkg/util/common/go.mod index cca5832b9078..d20c0a133228 100644 --- a/pkg/util/common/go.mod +++ b/pkg/util/common/go.mod @@ -93,6 +93,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -121,6 +122,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/util/compression/go.mod b/pkg/util/compression/go.mod index 5697484b52ba..d774bf80007a 100644 --- a/pkg/util/compression/go.mod +++ b/pkg/util/compression/go.mod @@ -156,6 +156,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -184,6 +185,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/util/confmaputils/go.mod b/pkg/util/confmaputils/go.mod index a57c1e63afe2..08ca5c746c9f 100644 --- a/pkg/util/confmaputils/go.mod +++ b/pkg/util/confmaputils/go.mod @@ -107,6 +107,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -135,6 +136,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/util/containers/image/go.mod b/pkg/util/containers/image/go.mod index 8601240728f9..bf68289f061d 100644 --- a/pkg/util/containers/image/go.mod +++ b/pkg/util/containers/image/go.mod @@ -93,6 +93,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -121,6 +122,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/pkg/util/defaultpaths/go.mod b/pkg/util/defaultpaths/go.mod index c02bc6eab267..61df30d6fc8c 100644 --- a/pkg/util/defaultpaths/go.mod +++ b/pkg/util/defaultpaths/go.mod @@ -102,6 +102,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -130,6 +131,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/util/executable/go.mod b/pkg/util/executable/go.mod index f791a3f6744a..1a7923a56e6a 100644 --- a/pkg/util/executable/go.mod +++ b/pkg/util/executable/go.mod @@ -93,6 +93,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -121,6 +122,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/util/filesystem/go.mod b/pkg/util/filesystem/go.mod index e6daa421b140..e88aa9a18f40 100644 --- a/pkg/util/filesystem/go.mod +++ b/pkg/util/filesystem/go.mod @@ -109,6 +109,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -137,6 +138,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/util/flavor/go.mod b/pkg/util/flavor/go.mod index 19f633344fbc..4644cfd521c0 100644 --- a/pkg/util/flavor/go.mod +++ b/pkg/util/flavor/go.mod @@ -139,6 +139,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -167,6 +168,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/util/fxutil/go.mod b/pkg/util/fxutil/go.mod index d01bfb27978c..9fa2c0bb18ae 100644 --- a/pkg/util/fxutil/go.mod +++ b/pkg/util/fxutil/go.mod @@ -102,6 +102,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -130,6 +131,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/util/grpc/go.mod b/pkg/util/grpc/go.mod index e2d137413efa..44e6adbb6d36 100644 --- a/pkg/util/grpc/go.mod +++ b/pkg/util/grpc/go.mod @@ -183,6 +183,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -211,6 +212,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/util/hostinfo/go.mod b/pkg/util/hostinfo/go.mod index acf45265ea0a..8e4c8ae6b69d 100644 --- a/pkg/util/hostinfo/go.mod +++ b/pkg/util/hostinfo/go.mod @@ -114,6 +114,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -142,6 +143,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/util/hostname/validate/go.mod b/pkg/util/hostname/validate/go.mod index 54fcea2aefd5..fb86d59dcd7d 100644 --- a/pkg/util/hostname/validate/go.mod +++ b/pkg/util/hostname/validate/go.mod @@ -99,6 +99,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -127,6 +128,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/pkg/util/hostport/go.mod b/pkg/util/hostport/go.mod index e94e6a3b2176..19b590d95a7d 100644 --- a/pkg/util/hostport/go.mod +++ b/pkg/util/hostport/go.mod @@ -82,6 +82,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -110,6 +111,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/util/http/go.mod b/pkg/util/http/go.mod index 66853db4be04..b3d4055dc9b9 100644 --- a/pkg/util/http/go.mod +++ b/pkg/util/http/go.mod @@ -140,6 +140,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -168,6 +169,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/util/json/go.mod b/pkg/util/json/go.mod index f69a5a0de91b..0ec1c2b30645 100644 --- a/pkg/util/json/go.mod +++ b/pkg/util/json/go.mod @@ -98,6 +98,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -126,6 +127,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/util/jsonquery/go.mod b/pkg/util/jsonquery/go.mod index 02f71d0245e5..25d7b71a884b 100644 --- a/pkg/util/jsonquery/go.mod +++ b/pkg/util/jsonquery/go.mod @@ -103,6 +103,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -131,6 +132,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/util/kubernetes/apiserver/common/namespace/go.mod b/pkg/util/kubernetes/apiserver/common/namespace/go.mod index 1f22209854e9..1f9575f9a867 100644 --- a/pkg/util/kubernetes/apiserver/common/namespace/go.mod +++ b/pkg/util/kubernetes/apiserver/common/namespace/go.mod @@ -134,6 +134,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../../../pkg/collector/check/defaults @@ -162,6 +163,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../../../pkg/network/payload diff --git a/pkg/util/log/go.mod b/pkg/util/log/go.mod index ac6365748d81..4984644bddca 100644 --- a/pkg/util/log/go.mod +++ b/pkg/util/log/go.mod @@ -100,6 +100,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -128,6 +129,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/util/log/setup/go.mod b/pkg/util/log/setup/go.mod index bd7e76233d7a..c1e8690fb3a5 100644 --- a/pkg/util/log/setup/go.mod +++ b/pkg/util/log/setup/go.mod @@ -139,6 +139,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -167,6 +168,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/pkg/util/option/go.mod b/pkg/util/option/go.mod index 2ba495448c79..f16e25649d34 100644 --- a/pkg/util/option/go.mod +++ b/pkg/util/option/go.mod @@ -93,6 +93,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -121,6 +122,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/util/otel/go.mod b/pkg/util/otel/go.mod index 433c865a4af5..b2d0e939e488 100644 --- a/pkg/util/otel/go.mod +++ b/pkg/util/otel/go.mod @@ -109,6 +109,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -137,6 +138,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/util/pointer/go.mod b/pkg/util/pointer/go.mod index 36ac9c919b64..e1b3e6e35697 100644 --- a/pkg/util/pointer/go.mod +++ b/pkg/util/pointer/go.mod @@ -82,6 +82,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -110,6 +111,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/util/prometheus/go.mod b/pkg/util/prometheus/go.mod index 768c5e5a8496..3ea4d77ebb41 100644 --- a/pkg/util/prometheus/go.mod +++ b/pkg/util/prometheus/go.mod @@ -122,6 +122,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -150,6 +151,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/util/quantile/go.mod b/pkg/util/quantile/go.mod index 3f9fa10ca419..6327c0f8823b 100644 --- a/pkg/util/quantile/go.mod +++ b/pkg/util/quantile/go.mod @@ -99,6 +99,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -127,6 +128,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/util/quantile/sketchtest/go.mod b/pkg/util/quantile/sketchtest/go.mod index c844794a246b..51e159ca7cda 100644 --- a/pkg/util/quantile/sketchtest/go.mod +++ b/pkg/util/quantile/sketchtest/go.mod @@ -95,6 +95,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../../pkg/collector/check/defaults @@ -123,6 +124,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../../pkg/network/payload diff --git a/pkg/util/scrubber/go.mod b/pkg/util/scrubber/go.mod index bc1baf7182bc..9d88444888b1 100644 --- a/pkg/util/scrubber/go.mod +++ b/pkg/util/scrubber/go.mod @@ -95,6 +95,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -123,6 +124,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/util/sort/go.mod b/pkg/util/sort/go.mod index fdd3a946e016..9b45272c53ed 100644 --- a/pkg/util/sort/go.mod +++ b/pkg/util/sort/go.mod @@ -93,6 +93,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -121,6 +122,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/util/startstop/go.mod b/pkg/util/startstop/go.mod index cf4a50a7041d..7832449b2574 100644 --- a/pkg/util/startstop/go.mod +++ b/pkg/util/startstop/go.mod @@ -93,6 +93,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -121,6 +122,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/util/statstracker/go.mod b/pkg/util/statstracker/go.mod index 555b9d396bdc..d8c9f28bde42 100644 --- a/pkg/util/statstracker/go.mod +++ b/pkg/util/statstracker/go.mod @@ -93,6 +93,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -121,6 +122,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/util/system/go.mod b/pkg/util/system/go.mod index 6c1ed213ab8e..1605675c740d 100644 --- a/pkg/util/system/go.mod +++ b/pkg/util/system/go.mod @@ -119,6 +119,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -147,6 +148,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/util/testutil/go.mod b/pkg/util/testutil/go.mod index a22e8ce3c751..840973c4bb94 100644 --- a/pkg/util/testutil/go.mod +++ b/pkg/util/testutil/go.mod @@ -96,6 +96,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -124,6 +125,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/util/utilizationtracker/go.mod b/pkg/util/utilizationtracker/go.mod index bb77568b85e7..0b662c2cc803 100644 --- a/pkg/util/utilizationtracker/go.mod +++ b/pkg/util/utilizationtracker/go.mod @@ -96,6 +96,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -124,6 +125,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/util/uuid/go.mod b/pkg/util/uuid/go.mod index b3f34157612f..6d81d6a3042d 100644 --- a/pkg/util/uuid/go.mod +++ b/pkg/util/uuid/go.mod @@ -106,6 +106,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -134,6 +135,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/util/winutil/go.mod b/pkg/util/winutil/go.mod index 34860a58a330..6cc94bfebcc4 100644 --- a/pkg/util/winutil/go.mod +++ b/pkg/util/winutil/go.mod @@ -102,6 +102,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../pkg/collector/check/defaults @@ -130,6 +131,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../../pkg/network/payload diff --git a/pkg/version/go.mod b/pkg/version/go.mod index 4482ed03e37a..e879bb317700 100644 --- a/pkg/version/go.mod +++ b/pkg/version/go.mod @@ -93,6 +93,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../pkg/collector/check/defaults @@ -121,6 +122,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../pkg/network/payload diff --git a/test/e2e-framework/go.mod b/test/e2e-framework/go.mod index 1ab929da43e6..85f23c83cb36 100644 --- a/test/e2e-framework/go.mod +++ b/test/e2e-framework/go.mod @@ -367,6 +367,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../pkg/collector/check/defaults @@ -395,6 +396,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../pkg/network/payload diff --git a/test/fakeintake/go.mod b/test/fakeintake/go.mod index ed671e9b0865..62323afc6604 100644 --- a/test/fakeintake/go.mod +++ b/test/fakeintake/go.mod @@ -134,6 +134,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../pkg/collector/check/defaults @@ -162,6 +163,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../pkg/network/payload diff --git a/test/new-e2e/go.mod b/test/new-e2e/go.mod index 062d7edd66c3..571e2f17afd8 100644 --- a/test/new-e2e/go.mod +++ b/test/new-e2e/go.mod @@ -435,6 +435,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../pkg/collector/check/defaults @@ -463,6 +464,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../pkg/network/payload diff --git a/test/otel/go.mod b/test/otel/go.mod index 40c87417fd3f..c59e5524a6dd 100644 --- a/test/otel/go.mod +++ b/test/otel/go.mod @@ -1,6 +1,6 @@ module github.com/DataDog/datadog-agent/test/otel -go 1.25.0 +go 1.25.4 require ( github.com/DataDog/datadog-agent/comp/core/config v0.82.0-devel.0.20260624113434-509b872045c2 @@ -50,6 +50,7 @@ require ( github.com/DataDog/datadog-agent/pkg/logs/status/statusinterface v0.78.1 // indirect github.com/DataDog/datadog-agent/pkg/logs/status/utils v0.78.1 // indirect github.com/DataDog/datadog-agent/pkg/logs/types v0.80.2 // indirect + github.com/DataDog/datadog-agent/pkg/logs/vrl v0.0.0-00010101000000-000000000000 // indirect github.com/DataDog/datadog-agent/pkg/obfuscate v0.80.2 // indirect github.com/DataDog/datadog-agent/pkg/opentelemetry-mapping-go/inframetadata v0.82.0-devel.0.20260617134427-74e6d071eaae // indirect github.com/DataDog/datadog-agent/pkg/opentelemetry-mapping-go/otlp/attributes v0.82.0-devel.0.20260617134427-74e6d071eaae // indirect @@ -86,6 +87,7 @@ require ( github.com/DataDog/datadog-agent/pkg/version v0.80.2 // indirect github.com/DataDog/datadog-api-client-go/v2 v2.62.0 // indirect github.com/DataDog/datadog-go/v5 v5.9.0 // indirect + github.com/DataDog/fastjq v0.0.0-20260506145947-c3336f252fa2 // indirect github.com/DataDog/go-acl v1.0.1 // indirect github.com/DataDog/go-sqllexer v0.2.4 // indirect github.com/DataDog/go-tuf v1.1.1-0.5.2 // indirect @@ -94,6 +96,9 @@ require ( github.com/DataDog/zstd v1.5.8-0.20260421145859-31a7e515a571 // indirect github.com/DataDog/zstd_0 v0.0.0-20210310093942-586c1286621f // indirect github.com/Microsoft/go-winio v0.6.2 // indirect + github.com/alecthomas/participle/v2 v2.1.4 // indirect + github.com/antchfx/xmlquery v1.5.1 // indirect + github.com/antchfx/xpath v1.3.6 // indirect github.com/benbjohnson/clock v1.3.5 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/cenkalti/backoff/v7 v7.0.0 // indirect @@ -101,6 +106,8 @@ require ( github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/dustin/go-humanize v1.0.1 // indirect github.com/ebitengine/purego v0.10.0 // indirect + github.com/elastic/go-grok v0.3.1 // indirect + github.com/elastic/lunes v0.2.2 // indirect github.com/fatih/color v1.19.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/foxboron/go-tpm-keyfiles v0.0.0-20251226215517-609e4778396f // indirect @@ -113,18 +120,23 @@ require ( github.com/goccy/go-json v0.10.6 // indirect github.com/gofrs/flock v0.13.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect + github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect github.com/golang/snappy v1.0.0 // indirect github.com/google/go-tpm v0.9.8 // indirect github.com/google/uuid v1.6.0 // indirect github.com/hashicorp/go-version v1.9.0 // indirect + github.com/hashicorp/golang-lru v1.0.2 // indirect github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect + github.com/iancoleman/strcase v0.3.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/compress v1.19.0 // indirect + github.com/klauspost/cpuid/v2 v2.3.0 // indirect github.com/knadh/koanf/maps v0.1.2 // indirect github.com/knadh/koanf/providers/confmap v1.0.0 // indirect github.com/knadh/koanf/v2 v2.3.5 // indirect github.com/lufia/plan9stats v0.0.0-20260330125221-c963978e514e // indirect + github.com/magefile/mage v1.15.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.22 // indirect github.com/mdlayher/socket v0.6.0 // indirect @@ -135,6 +147,8 @@ require ( github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.156.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/pkg/sampling v0.156.0 // indirect github.com/outcaste-io/ristretto v0.2.3 // indirect github.com/patrickmn/go-cache v2.1.0+incompatible // indirect @@ -159,7 +173,9 @@ require ( github.com/tklauser/go-sysconf v0.3.16 // indirect github.com/tklauser/numcpus v0.11.0 // indirect github.com/twmb/murmur3 v1.1.8 // indirect + github.com/ua-parser/uap-go v0.0.0-20251207011819-db9adb27a0b8 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect + github.com/zeebo/xxh3 v1.1.0 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/collector/client v1.62.0 // indirect go.opentelemetry.io/collector/component v1.62.0 // indirect @@ -202,6 +218,7 @@ require ( go.yaml.in/yaml/v2 v2.4.4 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect golang.org/x/crypto v0.54.0 // indirect + golang.org/x/exp v0.0.0-20260611194520-c48552f49976 // indirect golang.org/x/net v0.57.0 // indirect golang.org/x/oauth2 v0.36.0 // indirect golang.org/x/sync v0.22.0 // indirect @@ -294,6 +311,7 @@ replace ( github.com/DataDog/datadog-agent/comp/trace/compression/def => ../../comp/trace/compression/def github.com/DataDog/datadog-agent/comp/trace/compression/impl-gzip => ../../comp/trace/compression/impl-gzip github.com/DataDog/datadog-agent/comp/trace/compression/impl-zstd => ../../comp/trace/compression/impl-zstd + github.com/DataDog/datadog-agent/otel-patches/coreinternal => ../../otel-patches/coreinternal github.com/DataDog/datadog-agent/pkg/aggregator/ckey => ../../pkg/aggregator/ckey github.com/DataDog/datadog-agent/pkg/api => ../../pkg/api github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../pkg/collector/check/defaults @@ -322,6 +340,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../pkg/logs/status/utils github.com/DataDog/datadog-agent/pkg/logs/types => ../../pkg/logs/types github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../../pkg/logs/util/testutils + github.com/DataDog/datadog-agent/pkg/logs/vrl => ../../pkg/logs/vrl github.com/DataDog/datadog-agent/pkg/metrics => ../../pkg/metrics github.com/DataDog/datadog-agent/pkg/network/driver => ../../pkg/network/driver github.com/DataDog/datadog-agent/pkg/network/payload => ../../pkg/network/payload diff --git a/test/otel/go.sum b/test/otel/go.sum index 992641c0158c..170fb59de1d7 100644 --- a/test/otel/go.sum +++ b/test/otel/go.sum @@ -4,6 +4,8 @@ github.com/DataDog/datadog-api-client-go/v2 v2.62.0 h1:AIe01Tyl5Y+kHCJskB4Vkw6AN github.com/DataDog/datadog-api-client-go/v2 v2.62.0/go.mod h1:d3tOEgUd2kfsr9uuHQdY+nXrWp4uikgTgVCPdKNK30U= github.com/DataDog/datadog-go/v5 v5.9.0 h1:0rhs5wBov9Iz+xLXLk4maaReHvOANM1ijSm2IKWtKFs= github.com/DataDog/datadog-go/v5 v5.9.0/go.mod h1:2SBt8zJu6r7sRQHZFMQ8oCukWTKj0ymwulmNgQzJ1JM= +github.com/DataDog/fastjq v0.0.0-20260506145947-c3336f252fa2 h1:a9xjjGg5UQzUd+yliPDF9e4wQA9qq9PKT+DRDUaonOM= +github.com/DataDog/fastjq v0.0.0-20260506145947-c3336f252fa2/go.mod h1:XbWpLvPZo0LbxPhXTMIXSB98lFwfF9MnkT77iRHTXMY= github.com/DataDog/go-acl v1.0.1 h1:uRbp98YmlVZYqNNyTBFNI3Y6bnziBLyCIR4nRu0bIpU= github.com/DataDog/go-acl v1.0.1/go.mod h1:YJx333qSb3GUqCLIbqKeGaZS2pUYh2IYGI7+FsX18CU= github.com/DataDog/go-sqllexer v0.2.4 h1:Ah9v8g5KX8vNV7q3t6YoA3fW4F/1OvZh/JbyfPcaySA= @@ -21,6 +23,16 @@ github.com/DataDog/zstd_0 v0.0.0-20210310093942-586c1286621f/go.mod h1:oXfOhM/Kr github.com/Microsoft/go-winio v0.5.0/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= +github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0= +github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k= +github.com/alecthomas/participle/v2 v2.1.4 h1:W/H79S8Sat/krZ3el6sQMvMaahJ+XcM9WSI2naI7w2U= +github.com/alecthomas/participle/v2 v2.1.4/go.mod h1:8tqVbpTX20Ru4NfYQgZf4mP18eXPTBViyMWiArNEgGI= +github.com/alecthomas/repr v0.5.2 h1:SU73FTI9D1P5UNtvseffFSGmdNci/O6RsqzeXJtP0Qs= +github.com/alecthomas/repr v0.5.2/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= +github.com/antchfx/xmlquery v1.5.1 h1:T9I4Ns1EXiWHy0IqKupGhnfTQtJwlGrpXtauYOoNv78= +github.com/antchfx/xmlquery v1.5.1/go.mod h1:bVqnl7TaDXSReKINrhZz+2E/PbCu2tUahb+wZ7WZNT8= +github.com/antchfx/xpath v1.3.6 h1:s0y+ElRRtTQdfHP609qFu0+c6bglDv20pqOViQjjdPI= +github.com/antchfx/xpath v1.3.6/go.mod h1:i54GszH55fYfBmoZXapTHN8T8tkcHfRgLyVwwqzXNcs= github.com/benbjohnson/clock v1.3.5 h1:VvXlSJBzZpA/zum6Sj74hxwYI2DIxRWuNIoXAzHZz5o= github.com/benbjohnson/clock v1.3.5/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= @@ -43,6 +55,10 @@ github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkp github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= github.com/ebitengine/purego v0.10.0 h1:QIw4xfpWT6GWTzaW5XEKy3HXoqrJGx1ijYHzTF0/ISU= github.com/ebitengine/purego v0.10.0/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= +github.com/elastic/go-grok v0.3.1 h1:WEhUxe2KrwycMnlvMimJXvzRa7DoByJB4PVUIE1ZD/U= +github.com/elastic/go-grok v0.3.1/go.mod h1:n38ls8ZgOboZRgKcjMY8eFeZFMmcL9n2lP0iHhIDk64= +github.com/elastic/lunes v0.2.2 h1:dZFEaebNg9l+mzvOQN6Nd/c9y6y8rUe3tBWsTgvM08U= +github.com/elastic/lunes v0.2.2/go.mod h1:u3W/BdONWTrh0JjNZ21C907dDc+cUZttZrGa625nf2k= github.com/fatih/color v1.19.0 h1:Zp3PiM21/9Ld6FzSKyL5c/BULoe/ONr9KlbYVOfG8+w= github.com/fatih/color v1.19.0/go.mod h1:zNk67I0ZUT1bEGsSGyCZYZNrHuTkJJB+r6Q9VuMi0LE= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= @@ -71,6 +87,9 @@ github.com/gofrs/flock v0.13.0 h1:95JolYOvGMqeH31+FC7D2+uULf6mG61mEZ/A8dRYMzw= github.com/gofrs/flock v0.13.0/go.mod h1:jxeyy9R1auM5S6JYDBhDt+E2TCo7DkratH4Pgi8P+Z0= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 h1:f+oWsMOmNPc8JmEHVZIycC7hBoQxHH9pNKQORJNozsQ= +github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUvekVysuuOpQKo3191zZyTpiI6se1N1ULghS0sw= github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/mock v1.7.0-rc.1 h1:YojYx61/OLFsiv6Rw1Z96LpldJIy31o+UHmwAUMJ6/U= github.com/golang/mock v1.7.0-rc.1/go.mod h1:s42URUywIqd+OcERslBJvOjepvNymP31m3q8d/GkuRs= @@ -78,6 +97,7 @@ github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/golang/snappy v1.0.0 h1:Oy607GVXHs7RtbggtPBnr2RmDArIsAefDwvrdWvRhGs= github.com/golang/snappy v1.0.0/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/go-tpm v0.9.8 h1:slArAR9Ft+1ybZu0lBwpSmpwhRXaa85hWtMinMyRAWo= @@ -91,8 +111,14 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/hashicorp/go-version v1.9.0 h1:CeOIz6k+LoN3qX9Z0tyQrPtiB1DFYRPfCIBtaXPSCnA= github.com/hashicorp/go-version v1.9.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= +github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= +github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= +github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= +github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= +github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= @@ -101,6 +127,8 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.19.0 h1:sXLILfc9jV2QYWkzFOPWStmcUVH2RHEB1JCdY2oVvCQ= github.com/klauspost/compress v1.19.0/go.mod h1:cwPg85FWrGar70rWktvGQj8/hthj3wpl0PGDogxkrSQ= +github.com/klauspost/cpuid/v2 v2.3.0 h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzhA9Y= +github.com/klauspost/cpuid/v2 v2.3.0/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= github.com/knadh/koanf/maps v0.1.2 h1:RBfmAW5CnZT+PJ1CVc1QSJKf4Xu9kxfQgYVQSu8hpbo= github.com/knadh/koanf/maps v0.1.2/go.mod h1:npD/QZY3V6ghQDdcQzl1W4ICNVTkohC8E73eI2xW4yI= github.com/knadh/koanf/providers/confmap v1.0.0 h1:mHKLJTE7iXEys6deO5p6olAiZdG5zwp8Aebir+/EaRE= @@ -117,6 +145,8 @@ github.com/lightstep/go-expohisto v1.0.0 h1:UPtTS1rGdtehbbAF7o/dhkWLTDI73UifG8Lb github.com/lightstep/go-expohisto v1.0.0/go.mod h1:xDXD0++Mu2FOaItXtdDfksfgxfV0z1TMPa+e/EUd0cs= github.com/lufia/plan9stats v0.0.0-20260330125221-c963978e514e h1:Q6MvJtQK/iRcRtzAscm/zF23XxJlbECiGPyRicsX+Ak= github.com/lufia/plan9stats v0.0.0-20260330125221-c963978e514e/go.mod h1:autxFIvghDt3jPTLoqZ9OZ7s9qTGNAWmYCjVFWPX/zg= +github.com/magefile/mage v1.15.0 h1:BvGheCMAsG3bWUDbZ8AyXXpCNwU9u5CB6sM+HNb9HYg= +github.com/magefile/mage v1.15.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A= github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= github.com/mattn/go-isatty v0.0.22 h1:j8l17JJ9i6VGPUFUYoTUKPSgKe/83EYU2zBC7YNKMw4= @@ -139,8 +169,12 @@ github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9 github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.156.0 h1:wca5xIy5I/8CAylZYgOYzj5P5JAAicBA8uNtiRNh2Zo= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.156.0/go.mod h1:CaT/YS8vvoNgsLewbtwDpS0mAgsHXNXceSPzlP+TeJI= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/datadog v0.156.0 h1:ZEw9DbPpK7r6iAL65Dj3IUCWdXF4FM8ZbGBPJa+f9GE= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/datadog v0.156.0/go.mod h1:pue+2b5alMlZ0IT1cRyCU8K6JljqtnrIyQH5EU/6eU8= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0 h1:ESNQwLZhQlKcbCzGfFNJu3MkNur35dVBbf7sE0MLDdk= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0/go.mod h1:KW8gom6sRRy60kO9SBSzBy2FGCvfgP7C3cprTqthpaA= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.156.0 h1:TaVowoyPtdhUwoQ1Q8BfKNfLR/o/uzQbqw1yXDDh+qU= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.156.0/go.mod h1:ctcl2y2QGid6re21XtVXie2vfndDeFBawU7xNLHj/nA= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.156.0 h1:K+3RiL9FC4/4xmZwgCY1Wg5fr4Wrf9OnYDf4F2tR5qY= @@ -212,6 +246,8 @@ github.com/tklauser/numcpus v0.11.0 h1:nSTwhKH5e1dMNsCdVBukSZrURJRoHbSEQjdEbY+9R github.com/tklauser/numcpus v0.11.0/go.mod h1:z+LwcLq54uWZTX0u/bGobaV34u6V7KNlTZejzM6/3MQ= github.com/twmb/murmur3 v1.1.8 h1:8Yt9taO/WN3l08xErzjeschgZU2QSrwm1kclYq+0aRg= github.com/twmb/murmur3 v1.1.8/go.mod h1:Qq/R7NUyOfr65zD+6Q5IHKsJLwP7exErjN6lyyq3OSQ= +github.com/ua-parser/uap-go v0.0.0-20251207011819-db9adb27a0b8 h1:yS0rzVnj7Z/ZeHzvv5erQbO2b8gyTL4CeMNodl9SJMQ= +github.com/ua-parser/uap-go v0.0.0-20251207011819-db9adb27a0b8/go.mod h1:gwANdYmo9R8LLwGnyDFWK2PMsaXXX2HhAvCnb/UhZsM= github.com/vmihailenco/msgpack/v5 v5.4.1 h1:cQriyiUvjTwOHg8QZaPihLWeRAAVoCpE00IUPn0Bjt8= github.com/vmihailenco/msgpack/v5 v5.4.1/go.mod h1:GaZTsDaehaPpQVyxrf5mtQlH+pc21PIudVV/E3rRQok= github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAhO7/IwNM9g= @@ -219,8 +255,13 @@ github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= +github.com/zeebo/assert v1.3.0 h1:g7C04CbJuIDKNPFHmsk4hwZDO5O+kntRxzaUoNXj+IQ= +github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= +github.com/zeebo/xxh3 v1.1.0 h1:s7DLGDK45Dyfg7++yxI0khrfwq9661w9EN78eP/UZVs= +github.com/zeebo/xxh3 v1.1.0/go.mod h1:IisAie1LELR4xhVinxWS5+zf1lA4p0MW4T+w+W07F5s= go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= go.opentelemetry.io/collector/client v1.62.0 h1:Vud5nn4gX2TzMnHpNhuUhvAi4GGcO0RsaId0dftHAjM= @@ -355,16 +396,36 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= +golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/crypto v0.54.0 h1:YLIA59K4fiNzHzjnZt2tUJQjQtUWfWbeHBqKtk3eScw= golang.org/x/crypto v0.54.0/go.mod h1:KWL8ny2AZdGR2cWmzeHrp2azQPGogOv+HeQaVEXC2dk= +golang.org/x/exp v0.0.0-20260611194520-c48552f49976 h1:X8Hz2ImujgbmetVuW+w2YkyZChE3cBpZi2P158rTG9M= +golang.org/x/exp v0.0.0-20260611194520-c48552f49976/go.mod h1:vnf4pv9iKZXY58sQE1L86zmNWJ4159e1RkcWiLCkeEY= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= +golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= golang.org/x/net v0.57.0 h1:K5+3DljvIuDG9/Jv9rvyMywYNFCQ9RSUY6OOTTkT+tE= golang.org/x/net v0.57.0/go.mod h1:KpXc8iv+r3XplLAG/f7Jsf9RPszJzdR0f58q9vGOuEU= golang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs= @@ -373,6 +434,12 @@ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.22.0 h1:SZjpbeLmrCk4xhRSZFNZW5gFUeCeFgjekvI/+gfScek= golang.org/x/sync v0.22.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -385,13 +452,37 @@ golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220627191245-f75cf1eec38b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.47.0 h1:o7XGOvZQCADBQQ4Y7VNq2dRWQR7JmOUW8Kxx4ZsNgWs= golang.org/x/sys v0.47.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= +golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= +golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/text v0.40.0 h1:Ub2Z6/xjgF1WrYQz2nuITOEegKFtiIy+rieRJ5lHZKs= golang.org/x/text v0.40.0/go.mod h1:hpnzDAfGV753zIKo+wk3u1bVKCGPbrnF7+7LBF/UHVY= golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= @@ -401,6 +492,10 @@ golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= From 35d2c7b8d47993c6954e41eac2a1856dd78f3e25 Mon Sep 17 00:00:00 2001 From: "ralph.hyacinthe" Date: Wed, 22 Jul 2026 13:34:39 -0400 Subject: [PATCH 3/4] feat(logs): add mask_ottl and mask_jq PII-masking processing rule types Extends the existing mask_vrl masking rule type to OTTL and jq, so the two other benchmark engines can redact log content the same way VRL's redact()-based mask_vrl already does: - mask_ottl compiles its pattern as an OTTL statement (e.g. replace_pattern(attributes["message"], "\d+", "[REDACTED]")) rather than a boolean condition. processor.go gains processOTTLTransform, which builds the same JSON->plog.LogRecord transform context processOTTLmsg already builds for filtering, executes the statement, and re-serializes the (possibly mutated) top-level scalar attributes back into the original document. Same attribute-flattening limitation as the existing OTTL filter rules: only top-level string/bool/number fields are visible. - mask_jq compiles the same way as the existing jq filter rules, but calls fastjq's Program.Run (which returns the transformed JSON bytes directly) instead of the boolean-only RunFunc path makeJQFilter uses. Both new rule types are fail-closed on any runtime error (non-JSON message, parse/eval error, or a jq program producing no output), mirroring mask_vrl's explicit fail-closed policy: a masking rule that can't run shouldn't fall back to shipping unredacted content. This is a deliberate divergence from the filter rule types (exclude/include_at_*), which are fail-open. Co-Authored-By: Claude Sonnet 5 --- comp/logs-library/processor/BUILD.bazel | 1 + comp/logs-library/processor/processor.go | 99 ++++++++++++++++--- comp/logs-library/processor/processor_test.go | 55 +++++++++++ comp/logs/agent/config/processing_rules.go | 92 ++++++++++++++++- .../agent/config/processing_rules_test.go | 54 ++++++++++ 5 files changed, 286 insertions(+), 15 deletions(-) diff --git a/comp/logs-library/processor/BUILD.bazel b/comp/logs-library/processor/BUILD.bazel index 4e688d123b34..3ef5270fd014 100644 --- a/comp/logs-library/processor/BUILD.bazel +++ b/comp/logs-library/processor/BUILD.bazel @@ -24,6 +24,7 @@ go_library( "//pkg/util/log", "@com_github_datadog_agent_payload_v5//pb", "@com_github_open_telemetry_opentelemetry_collector_contrib_pkg_ottl//contexts/ottllog", + "@io_opentelemetry_go_collector_pdata//pcommon", "@io_opentelemetry_go_collector_pdata//plog", ], ) diff --git a/comp/logs-library/processor/processor.go b/comp/logs-library/processor/processor.go index 9a05ae2810f6..33f6791f29b4 100644 --- a/comp/logs-library/processor/processor.go +++ b/comp/logs-library/processor/processor.go @@ -9,10 +9,12 @@ import ( "bytes" "context" "encoding/json" + "fmt" "regexp" "slices" "sync" + "go.opentelemetry.io/collector/pdata/pcommon" "go.opentelemetry.io/collector/pdata/plog" "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottllog" @@ -348,6 +350,30 @@ func (p *Processor) applyRedactingRules(msg *message.Message) bool { msg.RecordProcessingRule(rule.Type, rule.Name) } content = newContent + case config.MaskOTTLTransform: + // Fail closed, same policy as MaskVRLTransform: a masking rule that + // can't run shouldn't fall back to shipping unredacted content. + newContent, err := processOTTLTransform(content, rule) + if err != nil { + log.Errorf("%v", err) + msg.RecordProcessingRule(rule.Type, rule.Name) + return false + } + if !bytes.Equal(content, newContent) { + msg.RecordProcessingRule(rule.Type, rule.Name) + } + content = newContent + case config.MaskJQTransform: + // Fail closed, same policy as MaskVRLTransform/MaskOTTLTransform. + newContent, err := rule.JQTransform(content) + if err != nil { + msg.RecordProcessingRule(rule.Type, rule.Name) + return false + } + if !bytes.Equal(content, newContent) { + msg.RecordProcessingRule(rule.Type, rule.Name) + } + content = newContent case config.RemapSource: for _, match := range rule.Matching { if val, ok := msg.GetStructuredAttribute(match.Attribute); ok && val == match.Value { @@ -402,14 +428,39 @@ func (p *Processor) processOTTLmsg(msg *message.Message, rule *config.Processing return false } - var m map[string]any + _, transformContext, err := buildOTTLTransformContext(msg.GetContent(), rule.Name) + if err != nil { + log.Errorf("%v", err) + return false + } + defer transformContext.Close() - err := json.Unmarshal(msg.GetContent(), &m) + match, err := rule.OTTLCondition.Eval(context.Background(), transformContext) if err != nil { - log.Errorf("error unmarshalling message content for OTTL processing rule `%s`: %v", rule.Name, err) + log.Errorf("error evaluating OTTL condition for processing rule `%s`: %v", rule.Name, err) return false } + if match { + msg.RecordProcessingRule(rule.Type, rule.Name) + } + + return match + +} + +// buildOTTLTransformContext decodes content as JSON and builds an OTTL transform +// context from its top-level scalar (string/bool/number) fields; nested objects and +// arrays are not visible to OTTL rules. The returned map is the fully decoded +// document (including any fields OTTL can't see), for re-serializing after a +// MaskOTTLTransform statement mutates the visible attributes. The caller is +// responsible for calling Close() on the returned transform context. +func buildOTTLTransformContext(content []byte, ruleName string) (map[string]any, *ottllog.TransformContext, error) { + var m map[string]any + if err := json.Unmarshal(content, &m); err != nil { + return nil, nil, fmt.Errorf("error unmarshalling message content for OTTL processing rule `%s`: %w", ruleName, err) + } + pdata := plog.NewLogRecord() for k, v := range m { switch val := v.(type) { @@ -420,26 +471,50 @@ func (p *Processor) processOTTLmsg(msg *message.Message, rule *config.Processing case float64: pdata.Attributes().PutDouble(k, val) default: - log.Warnf("unsupported attribute type for key `%s` in OTTL processing rule `%s`, skipping this attribute", k, rule.Name) + log.Warnf("unsupported attribute type for key `%s` in OTTL processing rule `%s`, skipping this attribute", k, ruleName) } } rl := plog.NewResourceLogs() sl := rl.ScopeLogs().AppendEmpty() - transformContext := ottllog.NewTransformContextPtr(rl, sl, pdata) - defer transformContext.Close() + return m, ottllog.NewTransformContextPtr(rl, sl, pdata), nil +} - match, err := rule.OTTLCondition.Eval(context.Background(), transformContext) +// processOTTLTransform runs a MaskOTTLTransform rule's compiled OTTL statement +// against content and returns the resulting message. Only top-level scalar fields +// mutated by the statement are reflected in the output; the rest of the original +// document is preserved as-is. +func processOTTLTransform(content []byte, rule *config.ProcessingRule) ([]byte, error) { + if rule.OTTLStatement == nil { + return nil, fmt.Errorf("OTTL statement is not compiled for rule `%s`", rule.Name) + } + + m, transformContext, err := buildOTTLTransformContext(content, rule.Name) if err != nil { - log.Errorf("error evaluating OTTL condition for processing rule `%s`: %v", rule.Name, err) - return false + return nil, err } + defer transformContext.Close() - if match { - msg.RecordProcessingRule(rule.Type, rule.Name) + if _, _, err := rule.OTTLStatement.Execute(context.Background(), transformContext); err != nil { + return nil, fmt.Errorf("error executing OTTL statement for processing rule `%s`: %w", rule.Name, err) } - return match + transformContext.GetLogRecord().Attributes().Range(func(k string, v pcommon.Value) bool { + switch v.Type() { + case pcommon.ValueTypeStr: + m[k] = v.Str() + case pcommon.ValueTypeBool: + m[k] = v.Bool() + case pcommon.ValueTypeDouble: + m[k] = v.Double() + } + return true + }) + out, err := json.Marshal(m) + if err != nil { + return nil, fmt.Errorf("OTTL mask transform for processing rule `%s`: failed to encode output: %w", rule.Name, err) + } + return out, nil } diff --git a/comp/logs-library/processor/processor_test.go b/comp/logs-library/processor/processor_test.go index 487c47630ab0..c47ab7e9c4f9 100644 --- a/comp/logs-library/processor/processor_test.go +++ b/comp/logs-library/processor/processor_test.go @@ -793,6 +793,61 @@ func TestRemapSource_EscapedDotPath(t *testing.T) { }) } +func TestOTTLMask(t *testing.T) { + p := &Processor{} + + t.Run("redacts content and records the rule", func(t *testing.T) { + rule := newOTTLProcessingRule(config.MaskOTTLTransform, `replace_pattern(attributes["message"], "[0-9]+", "[REDACTED]")`) + src := *sources.NewLogSource("", &config.LogsConfig{ProcessingRules: []*config.ProcessingRule{rule}}) + msg := newMessage([]byte(`{"message":"id 123456"}`), &src, "") + assert.True(t, p.applyRedactingRules(msg)) + assert.JSONEq(t, `{"message":"id [REDACTED]"}`, string(msg.GetContent())) + assert.Equal(t, int64(1), msg.Origin.LogSource.ProcessingInfo.GetCount(config.MaskOTTLTransform+":"+ruleName)) + }) + + t.Run("does not record the rule when content is unchanged", func(t *testing.T) { + rule := newOTTLProcessingRule(config.MaskOTTLTransform, `replace_pattern(attributes["message"], "[0-9]+", "[REDACTED]")`) + src := *sources.NewLogSource("", &config.LogsConfig{ProcessingRules: []*config.ProcessingRule{rule}}) + msg := newMessage([]byte(`{"message":"no digits here"}`), &src, "") + assert.True(t, p.applyRedactingRules(msg)) + assert.JSONEq(t, `{"message":"no digits here"}`, string(msg.GetContent())) + assert.Equal(t, int64(0), msg.Origin.LogSource.ProcessingInfo.GetCount(config.MaskOTTLTransform+":"+ruleName)) + }) + + t.Run("fails closed and drops the message on non-JSON content", func(t *testing.T) { + rule := newOTTLProcessingRule(config.MaskOTTLTransform, `replace_pattern(attributes["message"], "[0-9]+", "[REDACTED]")`) + src := *sources.NewLogSource("", &config.LogsConfig{ProcessingRules: []*config.ProcessingRule{rule}}) + msg := newMessage([]byte("plain text log line"), &src, "") + assert.False(t, p.applyRedactingRules(msg)) + }) +} + +func TestJQMask(t *testing.T) { + p := &Processor{} + + t.Run("redacts content and records the rule", func(t *testing.T) { + src := newJQSource(config.MaskJQTransform, `.message |= gsub("[0-9]+"; "[REDACTED]")`) + msg := newMessage([]byte(`{"message":"id 123456"}`), &src, "") + assert.True(t, p.applyRedactingRules(msg)) + assert.JSONEq(t, `{"message":"id [REDACTED]"}`, string(msg.GetContent())) + assert.Equal(t, int64(1), msg.Origin.LogSource.ProcessingInfo.GetCount(config.MaskJQTransform+":"+ruleName)) + }) + + t.Run("does not record the rule when content is unchanged", func(t *testing.T) { + src := newJQSource(config.MaskJQTransform, `.message |= gsub("[0-9]+"; "[REDACTED]")`) + msg := newMessage([]byte(`{"message":"no digits here"}`), &src, "") + assert.True(t, p.applyRedactingRules(msg)) + assert.JSONEq(t, `{"message":"no digits here"}`, string(msg.GetContent())) + assert.Equal(t, int64(0), msg.Origin.LogSource.ProcessingInfo.GetCount(config.MaskJQTransform+":"+ruleName)) + }) + + t.Run("fails closed and drops the message on non-JSON content", func(t *testing.T) { + src := newJQSource(config.MaskJQTransform, `.message |= gsub("[0-9]+"; "[REDACTED]")`) + msg := newMessage([]byte("plain text log line"), &src, "") + assert.False(t, p.applyRedactingRules(msg)) + }) +} + func newJQSource(ruleType, pattern string) sources.LogSource { rule := &config.ProcessingRule{ Type: ruleType, diff --git a/comp/logs/agent/config/processing_rules.go b/comp/logs/agent/config/processing_rules.go index 625bd04b5c74..1f8f33c5e4bf 100644 --- a/comp/logs/agent/config/processing_rules.go +++ b/comp/logs/agent/config/processing_rules.go @@ -27,6 +27,13 @@ import ( const ( ExcludeAtMatchOTTL = "exclude_at_match_ottl" IncludeAtMatchOTTL = "include_at_match_ottl" + // MaskOTTLTransform mutates the log line's content using an OTTL statement + // (e.g. `replace_pattern(attributes["message"], "\d+", "[REDACTED]")`). Like + // MaskVRLTransform, the replacement logic lives entirely in the OTTL statement, + // not in a separate placeholder field. Only top-level scalar (string/bool/number) + // JSON fields are visible to the statement — the same attribute-flattening + // limitation ExcludeAtMatchOTTL/IncludeAtMatchOTTL already have. + MaskOTTLTransform = "mask_ottl" ExcludeAtMatch = "exclude_at_match" IncludeAtMatch = "include_at_match" @@ -41,6 +48,14 @@ const ( // IncludeAtJQMatch keeps only log lines for which the jq expression produces output. // Non-JSON content is passed through unchanged. IncludeAtJQMatch = "include_at_jq_match" + // MaskJQTransform mutates the log line's content using a jq program that + // transforms the whole parsed JSON document (e.g. + // `.message |= gsub("\d+"; "[REDACTED]")`), and re-serializes the result as the + // new content. Unlike ExcludeAtJQMatch/IncludeAtJQMatch, a non-JSON message, a + // jq runtime error, or a program producing no output are all treated as errors + // (fail-closed), since a masking rule that can't run shouldn't fall back to + // shipping unredacted content. + MaskJQTransform = "mask_jq" // ExcludeAtVRLMatch drops log lines for which the VRL expression evaluates to true. // The pattern must be a valid VRL boolean expression (e.g. `.status == "debug"`). ExcludeAtVRLMatch = "exclude_at_vrl_match" @@ -70,12 +85,20 @@ type ProcessingRule struct { Pattern string Regex *regexp.Regexp OTTLCondition *ottl.Condition[*ottllog.TransformContext] - Placeholder []byte - Matching []*SourceMatchEntry `mapstructure:"matching" json:"matching" yaml:"matching"` + // OTTLStatement is set for MaskOTTLTransform rules after compilation. It is + // executed directly against the message's OTTL transform context by the + // processor, mirroring how OTTLCondition is evaluated for the filter rules. + OTTLStatement *ottl.Statement[*ottllog.TransformContext] + Placeholder []byte + Matching []*SourceMatchEntry `mapstructure:"matching" json:"matching" yaml:"matching"` // JQFilter is set for ExcludeAtJQMatch and IncludeAtJQMatch rules after compilation. // It returns (true, nil) when the jq program produces output for the given input, // (false, nil) when it produces no output, and (false, err) on program error. JQFilter func(input []byte) (bool, error) `json:"-" yaml:"-" mapstructure:"-"` + // JQTransform is set for MaskJQTransform rules after compilation. It returns the + // mutated message content, or an error if the jq program failed to run or + // produced no output. + JQTransform func(input []byte) ([]byte, error) `json:"-" yaml:"-" mapstructure:"-"` // VRLFilter is set for ExcludeAtVRLMatch and IncludeAtVRLMatch rules after compilation. // It returns (true, nil) when the VRL expression matches the given input, // (false, nil) when it doesn't, and (false, err) on a compile/runtime error. @@ -114,7 +137,14 @@ func ValidateProcessingRules(rules []*ProcessingRule) error { if err != nil { return fmt.Errorf("invalid OTTL pattern %s for processing rule: %s, error: %v", rule.Pattern, rule.Name, err) } - case ExcludeAtJQMatch, IncludeAtJQMatch: + case MaskOTTLTransform: + if rule.Pattern == "" { + return fmt.Errorf("no pattern provided for processing rule: %s", rule.Name) + } + if err := validateOTTLStatementPattern(rule.Pattern); err != nil { + return fmt.Errorf("invalid OTTL statement %s for processing rule: %s, error: %v", rule.Pattern, rule.Name, err) + } + case ExcludeAtJQMatch, IncludeAtJQMatch, MaskJQTransform: if rule.Pattern == "" { return fmt.Errorf("no pattern provided for processing rule: %s", rule.Name) } @@ -168,6 +198,13 @@ func CompileProcessingRules(rules []*ProcessingRule) error { } rule.JQFilter = makeJQFilter(prog) continue + case MaskJQTransform: + prog, err := fastjq.Compile(rule.Pattern) + if err != nil { + return fmt.Errorf("invalid jq pattern %q for processing rule %s: %w", rule.Pattern, rule.Name, err) + } + rule.JQTransform = makeJQTransform(prog) + continue case ExcludeAtVRLMatch, IncludeAtVRLMatch: prog, err := vrl.Compile(rule.Pattern) if err != nil { @@ -194,6 +231,12 @@ func CompileProcessingRules(rules []*ProcessingRule) error { return err } + case MaskOTTLTransform: + err := compileOTTLMaskRule(rule) + if err != nil { + return err + } + case ExcludeAtMatch, IncludeAtMatch: re, err := regexp.Compile(rule.Pattern) if err != nil { @@ -245,6 +288,32 @@ func compileOTTLProcessingRule(rule *ProcessingRule) error { return nil } +// validateOTTLStatementPattern checks that the given OTTL statement is valid and can +// be parsed by the OTTL parser. +func validateOTTLStatementPattern(pattern string) error { + settings := component.TelemetrySettings{Logger: zap.NewNop()} // settings are only used for logging during parsing, so we can use a no-op logger here + parser, err := ottllog.NewParser(ottlfuncs.StandardFuncs[*ottllog.TransformContext](), settings) + if err != nil { + return err + } + _, err = parser.ParseStatement(pattern) + return err +} + +func compileOTTLMaskRule(rule *ProcessingRule) error { + settings := component.TelemetrySettings{Logger: zap.NewNop()} // settings are only used for logging during parsing, so we can use a no-op logger here + parser, err := ottllog.NewParser(ottlfuncs.StandardFuncs[*ottllog.TransformContext](), settings) + if err != nil { + return err + } + statement, err := parser.ParseStatement(rule.Pattern) + if err != nil { + return fmt.Errorf("error parsing OTTL statement for processing rule `%s`: %v", rule.Name, err) + } + rule.OTTLStatement = statement + return nil +} + // makeJQFilter returns a function that reports whether a jq program produces output for the given input. // Non-JSON input always returns (false, nil) — never silently dropped. func makeJQFilter(prog *fastjq.Program) func([]byte) (bool, error) { @@ -265,3 +334,20 @@ func makeJQFilter(prog *fastjq.Program) func([]byte) (bool, error) { return matched, nil } } + +// makeJQTransform returns a function that runs a jq transform program against JSON +// input and returns the resulting document as the new message content. An empty +// result (the program produced no output, e.g. a select() with no match) is treated +// as an error, since MaskJQTransform is fail-closed. +func makeJQTransform(prog *fastjq.Program) func([]byte) ([]byte, error) { + return func(input []byte) ([]byte, error) { + result, err := prog.Run(input) + if err != nil { + return nil, err + } + if len(result) == 0 { + return nil, errors.New("jq mask transform produced no output") + } + return result, nil + } +} diff --git a/comp/logs/agent/config/processing_rules_test.go b/comp/logs/agent/config/processing_rules_test.go index a9aebf671a42..8554576cecac 100644 --- a/comp/logs/agent/config/processing_rules_test.go +++ b/comp/logs/agent/config/processing_rules_test.go @@ -98,6 +98,60 @@ func TestValidateVRLRulesRequirePattern(t *testing.T) { } } +func TestValidateAndCompileMaskOTTL(t *testing.T) { + t.Run("valid statement compiles", func(t *testing.T) { + rules := []*ProcessingRule{{ + Type: MaskOTTLTransform, + Name: "mask_ottl_test", + Pattern: `replace_pattern(attributes["message"], "[0-9]+", "[REDACTED]")`, + }} + assert.NoError(t, ValidateProcessingRules(rules)) + assert.NoError(t, CompileProcessingRules(rules)) + assert.NotNil(t, rules[0].OTTLStatement) + }) + + t.Run("invalid statement is rejected", func(t *testing.T) { + rules := []*ProcessingRule{{ + Type: MaskOTTLTransform, + Name: "mask_ottl_test", + Pattern: `not a valid ottl statement (`, + }} + assert.Error(t, ValidateProcessingRules(rules)) + }) + + t.Run("empty pattern is rejected", func(t *testing.T) { + rules := []*ProcessingRule{{Type: MaskOTTLTransform, Name: "mask_ottl_test"}} + assert.ErrorContains(t, ValidateProcessingRules(rules), "no pattern provided") + }) +} + +func TestValidateAndCompileMaskJQ(t *testing.T) { + t.Run("valid program compiles", func(t *testing.T) { + rules := []*ProcessingRule{{ + Type: MaskJQTransform, + Name: "mask_jq_test", + Pattern: `.message |= gsub("[0-9]+"; "[REDACTED]")`, + }} + assert.NoError(t, ValidateProcessingRules(rules)) + assert.NoError(t, CompileProcessingRules(rules)) + assert.NotNil(t, rules[0].JQTransform) + }) + + t.Run("invalid pattern is rejected", func(t *testing.T) { + rules := []*ProcessingRule{{ + Type: MaskJQTransform, + Name: "mask_jq_test", + Pattern: `.message |= `, + }} + assert.Error(t, ValidateProcessingRules(rules)) + }) + + t.Run("empty pattern is rejected", func(t *testing.T) { + rules := []*ProcessingRule{{Type: MaskJQTransform, Name: "mask_jq_test"}} + assert.ErrorContains(t, ValidateProcessingRules(rules), "no pattern provided") + }) +} + func TestCompileSkipsRemapSource(t *testing.T) { rules := []*ProcessingRule{{ Type: RemapSource, From 7f1a93c530cc4425f598421e900251caac79a280 Mon Sep 17 00:00:00 2001 From: "ralph.hyacinthe" Date: Wed, 22 Jul 2026 14:46:03 -0400 Subject: [PATCH 4/4] feat(logs): add gojq-based include/exclude/mask processing rules MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds a second, independent jq-based log-processing implementation backed by github.com/itchyny/gojq (the standard Go port of real jqlang.org jq semantics), alongside the existing fastjq-based exclude_at_jq_match/include_at_jq_match/mask_jq rule types. New rule types: exclude_at_gojq_match, include_at_gojq_match, mask_gojq. Filter rules fail open on non-JSON input or a jq runtime error; mask_gojq is fail-closed (drops the message on error or empty output), matching mask_vrl/mask_ottl's policy of never shipping unredacted content. Unlike fastjq (byte-level, literal-only sub/gsub replacements), gojq decodes into Go values and supports real jq sub/gsub with capture-group interpolation in replacements, at the cost of a decode/encode round-trip per log line — both meaningful, intentional differences for the engine-vs-engine benchmark. Numbers are decoded via json.Decoder.UseNumber() (gojq natively supports json.Number) rather than json.Unmarshal, so large integers (IDs/timestamps beyond 2^53) survive mask_gojq's whole-document re-serialization without precision loss. All new symbols/rule-type keys are GoJQ-prefixed specifically to avoid colliding with the fastjq-based ExcludeAtJQMatch/IncludeAtJQMatch/ MaskJQTransform already on this branch. gojq/timefmt-go were already indirect dependencies (via pkg/util/jsonquery, reused here for its Parse/cache helper) with existing LICENSE-3rdparty.csv entries, so no new third-party approval was needed. Co-Authored-By: Claude Sonnet 5 --- comp/core/agenttelemetry/fx/go.mod | 3 + comp/logs-library/go.mod | 5 + comp/logs-library/go.sum | 6 + comp/logs-library/metrics/metrics.go | 3 + comp/logs-library/processor/processor.go | 31 ++++ comp/logs-library/processor/processor_test.go | 149 ++++++++++++++++++ comp/logs/agent/config/BUILD.bazel | 2 + comp/logs/agent/config/go.mod | 5 + comp/logs/agent/config/go.sum | 6 + comp/logs/agent/config/processing_rules.go | 117 ++++++++++++++ .../agent/config/processing_rules_test.go | 98 ++++++++++++ comp/otelcol/collector-contrib/impl/go.mod | 4 + comp/otelcol/collector-contrib/impl/go.sum | 4 + comp/otelcol/ddflareextension/impl/go.mod | 3 + comp/otelcol/ddflareextension/impl/go.sum | 4 + comp/otelcol/logsagentpipeline/go.mod | 5 + comp/otelcol/logsagentpipeline/go.sum | 6 + .../logsagentpipelineimpl/go.mod | 5 + .../logsagentpipelineimpl/go.sum | 6 + .../exporter/datadogexporter/go.mod | 4 + .../exporter/datadogexporter/go.sum | 4 + .../exporter/logsagentexporter/go.mod | 4 + .../exporter/logsagentexporter/go.sum | 4 + .../exporter/serializerexporter/go.mod | 4 + .../exporter/serializerexporter/go.sum | 4 + .../qbranch/anomalydetection-testbench/go.mod | 5 + .../qbranch/anomalydetection-testbench/go.sum | 6 + pkg/logs/message/go.mod | 5 + pkg/logs/message/go.sum | 6 + pkg/logs/sources/go.mod | 5 + pkg/logs/sources/go.sum | 6 + pkg/logs/util/testutils/go.mod | 5 + pkg/logs/util/testutils/go.sum | 6 + test/otel/go.mod | 4 + test/otel/go.sum | 4 + 35 files changed, 538 insertions(+) diff --git a/comp/core/agenttelemetry/fx/go.mod b/comp/core/agenttelemetry/fx/go.mod index 4b881b580804..9c605276d6c5 100644 --- a/comp/core/agenttelemetry/fx/go.mod +++ b/comp/core/agenttelemetry/fx/go.mod @@ -46,6 +46,7 @@ require ( github.com/DataDog/datadog-agent/pkg/util/filesystem v0.77.0 // indirect github.com/DataDog/datadog-agent/pkg/util/hostinfo v0.0.0-20251027120702-0e91eee9852f // indirect github.com/DataDog/datadog-agent/pkg/util/http v0.75.4 // indirect + github.com/DataDog/datadog-agent/pkg/util/jsonquery v0.0.0-20251027120702-0e91eee9852f // indirect github.com/DataDog/datadog-agent/pkg/util/log v0.77.0 // indirect github.com/DataDog/datadog-agent/pkg/util/log/setup v0.77.0 // indirect github.com/DataDog/datadog-agent/pkg/util/option v0.75.4 // indirect @@ -79,6 +80,8 @@ require ( github.com/hashicorp/golang-lru v1.0.2 // indirect github.com/iancoleman/strcase v0.3.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect + github.com/itchyny/gojq v0.12.19 // indirect + github.com/itchyny/timefmt-go v0.1.8 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/cpuid/v2 v2.3.0 // indirect github.com/lufia/plan9stats v0.0.0-20260330125221-c963978e514e // indirect diff --git a/comp/logs-library/go.mod b/comp/logs-library/go.mod index 55e4ed3c8139..7e6165ed8f47 100644 --- a/comp/logs-library/go.mod +++ b/comp/logs-library/go.mod @@ -58,9 +58,11 @@ require ( github.com/DataDog/datadog-agent/pkg/logs/types v0.75.4 // indirect github.com/DataDog/datadog-agent/pkg/logs/vrl v0.0.0-00010101000000-000000000000 // indirect github.com/DataDog/datadog-agent/pkg/template v0.75.4 // indirect + github.com/DataDog/datadog-agent/pkg/util/cache v0.69.4 // indirect github.com/DataDog/datadog-agent/pkg/util/defaultpaths v0.64.0-devel // indirect github.com/DataDog/datadog-agent/pkg/util/executable v0.75.4 // indirect github.com/DataDog/datadog-agent/pkg/util/filesystem v0.75.4 // indirect + github.com/DataDog/datadog-agent/pkg/util/jsonquery v0.0.0-00010101000000-000000000000 // indirect github.com/DataDog/datadog-agent/pkg/util/option v0.75.4 // indirect github.com/DataDog/datadog-agent/pkg/util/pointer v0.75.4 // indirect github.com/DataDog/datadog-agent/pkg/util/scrubber v0.75.4 // indirect @@ -94,6 +96,8 @@ require ( github.com/hashicorp/golang-lru v1.0.2 // indirect github.com/iancoleman/strcase v0.3.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect + github.com/itchyny/gojq v0.12.19 // indirect + github.com/itchyny/timefmt-go v0.1.8 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/cpuid/v2 v2.3.0 // indirect github.com/lufia/plan9stats v0.0.0-20260330125221-c963978e514e // indirect @@ -107,6 +111,7 @@ require ( github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.156.0 // indirect + github.com/patrickmn/go-cache v2.1.0+incompatible // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect github.com/prometheus/client_golang v1.23.3-0.20251103151724-a5ae20370e5e // indirect diff --git a/comp/logs-library/go.sum b/comp/logs-library/go.sum index 720619fae793..fbdc0f8839c1 100644 --- a/comp/logs-library/go.sum +++ b/comp/logs-library/go.sum @@ -77,6 +77,10 @@ github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSAS github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/itchyny/gojq v0.12.19 h1:ttXA0XCLEMoaLOz5lSeFOZ6u6Q3QxmG46vfgI4O0DEs= +github.com/itchyny/gojq v0.12.19/go.mod h1:5galtVPDywX8SPSOrqjGxkBeDhSxEW1gSxoy7tn1iZY= +github.com/itchyny/timefmt-go v0.1.8 h1:1YEo1JvfXeAHKdjelbYr/uCuhkybaHCeTkH8Bo791OI= +github.com/itchyny/timefmt-go v0.1.8/go.mod h1:5E46Q+zj7vbTgWY8o5YkMeYb4I6GeWLFnetPy5oBrAI= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= @@ -117,6 +121,8 @@ github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.156.0/go.mod h1:CaT/YS8vvoNgsLewbtwDpS0mAgsHXNXceSPzlP+TeJI= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0 h1:ESNQwLZhQlKcbCzGfFNJu3MkNur35dVBbf7sE0MLDdk= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0/go.mod h1:KW8gom6sRRy60kO9SBSzBy2FGCvfgP7C3cprTqthpaA= +github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc= +github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= diff --git a/comp/logs-library/metrics/metrics.go b/comp/logs-library/metrics/metrics.go index 01c3cf55103e..0933dfa5204f 100644 --- a/comp/logs-library/metrics/metrics.go +++ b/comp/logs-library/metrics/metrics.go @@ -108,6 +108,9 @@ var ( // TlmVRLEvalErrors tracks the count of VRL processing rule runtime errors (filter or transform). TlmVRLEvalErrors = telemetryimpl.GetCompatComponent().NewCounter("logs", "vrl_eval_errors", []string{"rule_type", "rule_name"}, "Count of VRL processing rule runtime errors") + // TlmGoJQEvalErrors tracks the count of mask_gojq processing rule runtime errors. + TlmGoJQEvalErrors = telemetryimpl.GetCompatComponent().NewCounter("logs", "gojq_eval_errors", []string{"rule_type", "rule_name"}, "Count of gojq mask processing rule runtime errors") + // TlmLogLineSizes is a distribution of post-framer log line sizes TlmLogLineSizes = telemetryimpl.GetCompatComponent().NewHistogram("logs", "log_line_sizes", nil, "Distribution of post-framer log line sizes before line parsers/handlers are applied", []float64{32, 128, 512, 2048, 8192, 32768, 131072, 524288, 2097152}) diff --git a/comp/logs-library/processor/processor.go b/comp/logs-library/processor/processor.go index 33f6791f29b4..92a1a887bb42 100644 --- a/comp/logs-library/processor/processor.go +++ b/comp/logs-library/processor/processor.go @@ -374,6 +374,37 @@ func (p *Processor) applyRedactingRules(msg *message.Message) bool { msg.RecordProcessingRule(rule.Type, rule.Name) } content = newContent + case config.ExcludeAtGoJQMatch: + // if this message matches, we ignore it. Fail open (keep the message) + // on a runtime error, since a filter false-negative doesn't leak data. + if matched, err := rule.GoJQFilter(content); err == nil && matched { + msg.RecordProcessingRule(rule.Type, rule.Name) + return false + } + case config.IncludeAtGoJQMatch: + // if this message doesn't match, we ignore it. Fail open (keep the + // message) on a runtime error, e.g. non-JSON content. + matched, err := rule.GoJQFilter(content) + if err != nil { + break + } + if !matched { + return false + } + msg.RecordProcessingRule(rule.Type, rule.Name) + case config.MaskGoJQTransform: + newContent, err := rule.GoJQTransform(content) + if err != nil { + // Fail closed: drop the message rather than risk leaking + // unredacted content when the jq transform can't run. + metrics.TlmGoJQEvalErrors.Inc(rule.Type, rule.Name) + msg.RecordProcessingRule(rule.Type, rule.Name) + return false + } + if !bytes.Equal(content, newContent) { + msg.RecordProcessingRule(rule.Type, rule.Name) + } + content = newContent case config.RemapSource: for _, match := range rule.Matching { if val, ok := msg.GetStructuredAttribute(match.Attribute); ok && val == match.Value { diff --git a/comp/logs-library/processor/processor_test.go b/comp/logs-library/processor/processor_test.go index c47ab7e9c4f9..9edc535cb63e 100644 --- a/comp/logs-library/processor/processor_test.go +++ b/comp/logs-library/processor/processor_test.go @@ -1107,3 +1107,152 @@ func TestVRLMaskAndExcludeOrdering(t *testing.T) { assert.False(t, maskCalled) }) } + +// GoJQ rule tests +// --------------- +// +// These exercise the github.com/itchyny/gojq-backed rule types, distinct from the +// fastjq-backed ExcludeAtJQMatch/IncludeAtJQMatch/MaskJQTransform tests above. + +func newGoJQSource(ruleType, pattern string) sources.LogSource { + rule := &config.ProcessingRule{ + Type: ruleType, + Name: ruleName, + Pattern: pattern, + } + if err := config.CompileProcessingRules([]*config.ProcessingRule{rule}); err != nil { + panic(err) + } + return *sources.NewLogSource("", &config.LogsConfig{ProcessingRules: []*config.ProcessingRule{rule}}) +} + +func TestGoJQExclusion(t *testing.T) { + p := &Processor{} + tests := []struct { + name string + pattern string + input []byte + shouldProcess bool + }{ + { + name: "drops matching JSON", + pattern: `select(.level == "debug")`, + input: []byte(`{"level":"debug","msg":"verbose"}`), + shouldProcess: false, + }, + { + name: "passes non-matching JSON", + pattern: `select(.level == "debug")`, + input: []byte(`{"level":"error","msg":"boom"}`), + shouldProcess: true, + }, + { + name: "passes non-JSON content unchanged", + pattern: `select(.level == "debug")`, + input: []byte("plain text log line"), + shouldProcess: true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + src := newGoJQSource(config.ExcludeAtGoJQMatch, tt.pattern) + msg := newMessage(tt.input, &src, "") + assert.Equal(t, tt.shouldProcess, p.applyRedactingRules(msg)) + }) + } +} + +func TestGoJQInclusion(t *testing.T) { + p := &Processor{} + tests := []struct { + name string + pattern string + input []byte + shouldProcess bool + }{ + { + name: "keeps matching JSON", + pattern: `select(.level == "error")`, + input: []byte(`{"level":"error","msg":"boom"}`), + shouldProcess: true, + }, + { + name: "drops non-matching JSON", + pattern: `select(.level == "error")`, + input: []byte(`{"level":"debug","msg":"verbose"}`), + shouldProcess: false, + }, + { + name: "passes non-JSON content unchanged", + pattern: `select(.level == "error")`, + input: []byte("plain text log line"), + shouldProcess: true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + src := newGoJQSource(config.IncludeAtGoJQMatch, tt.pattern) + msg := newMessage(tt.input, &src, "") + assert.Equal(t, tt.shouldProcess, p.applyRedactingRules(msg)) + }) + } +} + +func TestGoJQMask(t *testing.T) { + p := &Processor{} + + t.Run("masks matching content", func(t *testing.T) { + src := newGoJQSource(config.MaskGoJQTransform, `.message |= gsub("(?[0-9]+)"; "[REDACTED-\(.num)]")`) + msg := newMessage([]byte(`{"message":"user 123456 logged in"}`), &src, "") + assert.True(t, p.applyRedactingRules(msg)) + assert.JSONEq(t, `{"message":"user [REDACTED-123456] logged in"}`, string(msg.GetContent())) + }) + + t.Run("fails closed and drops the message on non-JSON input", func(t *testing.T) { + src := newGoJQSource(config.MaskGoJQTransform, `.message |= gsub("[0-9]+"; "X")`) + msg := newMessage([]byte("not json"), &src, "") + assert.False(t, p.applyRedactingRules(msg)) + }) + + t.Run("fails closed and drops the message when the program produces no output", func(t *testing.T) { + src := newGoJQSource(config.MaskGoJQTransform, `empty`) + msg := newMessage([]byte(`{"message":"hello"}`), &src, "") + assert.False(t, p.applyRedactingRules(msg)) + }) + + t.Run("mask before exclude sees the masked content", func(t *testing.T) { + var seen []byte + maskRule := &config.ProcessingRule{ + Type: config.MaskGoJQTransform, + Name: ruleName, + GoJQTransform: func([]byte) ([]byte, error) { return []byte(`{"message":"masked"}`), nil }, + } + excludeRule := &config.ProcessingRule{ + Type: config.ExcludeAtGoJQMatch, + Name: ruleName, + GoJQFilter: func(input []byte) (bool, error) { + seen = input + return false, nil + }, + } + src := *sources.NewLogSource("", &config.LogsConfig{ProcessingRules: []*config.ProcessingRule{maskRule, excludeRule}}) + msg := newMessage([]byte(`{"message":"original"}`), &src, "") + assert.True(t, p.applyRedactingRules(msg)) + assert.Equal(t, []byte(`{"message":"masked"}`), seen) + }) + + t.Run("masked output sorts object keys alphabetically", func(t *testing.T) { + src := newGoJQSource(config.MaskGoJQTransform, `.`) + msg := newMessage([]byte(`{"z":1,"a":2}`), &src, "") + assert.True(t, p.applyRedactingRules(msg)) + assert.Equal(t, []byte(`{"a":2,"z":1}`), msg.GetContent()) + }) + + t.Run("preserves large integer precision in untouched fields", func(t *testing.T) { + src := newGoJQSource(config.MaskGoJQTransform, `.message |= gsub("[0-9]+"; "X")`) + msg := newMessage([]byte(`{"id":123456789012345678,"message":"user 42 logged in"}`), &src, "") + assert.True(t, p.applyRedactingRules(msg)) + assert.JSONEq(t, `{"id":123456789012345678,"message":"user X logged in"}`, string(msg.GetContent())) + assert.Contains(t, string(msg.GetContent()), "123456789012345678") + }) +} diff --git a/comp/logs/agent/config/BUILD.bazel b/comp/logs/agent/config/BUILD.bazel index 712ab6d94396..95fb974d6a9b 100644 --- a/comp/logs/agent/config/BUILD.bazel +++ b/comp/logs/agent/config/BUILD.bazel @@ -25,9 +25,11 @@ go_library( "//pkg/config/utils", "//pkg/logs/types", "//pkg/logs/vrl", + "//pkg/util/jsonquery", "//pkg/util/log", "//pkg/util/scrubber", "@com_github_datadog_fastjq//:fastjq", + "@com_github_itchyny_gojq//:gojq", "@com_github_open_telemetry_opentelemetry_collector_contrib_pkg_ottl//:ottl", "@com_github_open_telemetry_opentelemetry_collector_contrib_pkg_ottl//contexts/ottllog", "@com_github_open_telemetry_opentelemetry_collector_contrib_pkg_ottl//ottlfuncs", diff --git a/comp/logs/agent/config/go.mod b/comp/logs/agent/config/go.mod index c898ed786817..b96426124670 100644 --- a/comp/logs/agent/config/go.mod +++ b/comp/logs/agent/config/go.mod @@ -11,10 +11,12 @@ require ( github.com/DataDog/datadog-agent/pkg/config/utils v0.75.4 github.com/DataDog/datadog-agent/pkg/logs/types v0.75.4 github.com/DataDog/datadog-agent/pkg/logs/vrl v0.0.0-00010101000000-000000000000 + github.com/DataDog/datadog-agent/pkg/util/jsonquery v0.0.0-00010101000000-000000000000 github.com/DataDog/datadog-agent/pkg/util/log v0.75.4 github.com/DataDog/datadog-agent/pkg/util/pointer v0.75.4 github.com/DataDog/datadog-agent/pkg/util/scrubber v0.75.4 github.com/DataDog/fastjq v0.0.0-20260506145947-c3336f252fa2 + github.com/itchyny/gojq v0.12.19 github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0 github.com/stretchr/testify v1.11.1 go.opentelemetry.io/collector/component v1.62.0 @@ -41,6 +43,7 @@ require ( github.com/DataDog/datadog-agent/pkg/config/nodetreemodel v0.75.4 // indirect github.com/DataDog/datadog-agent/pkg/fips v0.75.4 // indirect github.com/DataDog/datadog-agent/pkg/template v0.75.4 // indirect + github.com/DataDog/datadog-agent/pkg/util/cache v0.69.4 // indirect github.com/DataDog/datadog-agent/pkg/util/defaultpaths v0.64.0-devel // indirect github.com/DataDog/datadog-agent/pkg/util/executable v0.75.4 // indirect github.com/DataDog/datadog-agent/pkg/util/filesystem v0.75.4 // indirect @@ -71,6 +74,7 @@ require ( github.com/hashicorp/golang-lru v1.0.2 // indirect github.com/iancoleman/strcase v0.3.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect + github.com/itchyny/timefmt-go v0.1.8 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/cpuid/v2 v2.3.0 // indirect github.com/lufia/plan9stats v0.0.0-20260330125221-c963978e514e // indirect @@ -81,6 +85,7 @@ require ( github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.156.0 // indirect + github.com/patrickmn/go-cache v2.1.0+incompatible // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect github.com/shirou/gopsutil/v4 v4.26.6 // indirect diff --git a/comp/logs/agent/config/go.sum b/comp/logs/agent/config/go.sum index 52fe7f9eea4b..f4abcacfdcae 100644 --- a/comp/logs/agent/config/go.sum +++ b/comp/logs/agent/config/go.sum @@ -63,6 +63,10 @@ github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSAS github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/itchyny/gojq v0.12.19 h1:ttXA0XCLEMoaLOz5lSeFOZ6u6Q3QxmG46vfgI4O0DEs= +github.com/itchyny/gojq v0.12.19/go.mod h1:5galtVPDywX8SPSOrqjGxkBeDhSxEW1gSxoy7tn1iZY= +github.com/itchyny/timefmt-go v0.1.8 h1:1YEo1JvfXeAHKdjelbYr/uCuhkybaHCeTkH8Bo791OI= +github.com/itchyny/timefmt-go v0.1.8/go.mod h1:5E46Q+zj7vbTgWY8o5YkMeYb4I6GeWLFnetPy5oBrAI= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/klauspost/cpuid/v2 v2.3.0 h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzhA9Y= @@ -91,6 +95,8 @@ github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.156.0/go.mod h1:CaT/YS8vvoNgsLewbtwDpS0mAgsHXNXceSPzlP+TeJI= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0 h1:ESNQwLZhQlKcbCzGfFNJu3MkNur35dVBbf7sE0MLDdk= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0/go.mod h1:KW8gom6sRRy60kO9SBSzBy2FGCvfgP7C3cprTqthpaA= +github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc= +github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= diff --git a/comp/logs/agent/config/processing_rules.go b/comp/logs/agent/config/processing_rules.go index 1f8f33c5e4bf..e3377ca538d3 100644 --- a/comp/logs/agent/config/processing_rules.go +++ b/comp/logs/agent/config/processing_rules.go @@ -6,6 +6,8 @@ package config import ( + "bytes" + "encoding/json" "errors" "fmt" "regexp" @@ -19,8 +21,10 @@ import ( "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/ottlfuncs" "github.com/DataDog/fastjq" + "github.com/itchyny/gojq" "github.com/DataDog/datadog-agent/pkg/logs/vrl" + "github.com/DataDog/datadog-agent/pkg/util/jsonquery" ) // Processing rule types @@ -66,6 +70,27 @@ const ( // replacement logic lives entirely in the VRL source, not in a separate // placeholder field. MaskVRLTransform = "mask_vrl" + // ExcludeAtGoJQMatch drops log lines for which the jq expression produces output. + // This rule type is backed by github.com/itchyny/gojq (real jqlang.org semantics), + // distinct from the fastjq-based ExcludeAtJQMatch above — the "GoJQ" naming avoids + // symbol/config-key collisions between the two engines in this combined benchmark. + // The pattern must be a valid jq expression (e.g. `select(.level == "debug")`); a + // bare boolean expression like `.level == "debug"` always produces output and thus + // always "matches" — use `select(...)` for real filtering. Non-JSON content, and + // any jq runtime error, is passed through unchanged (fail-open). + ExcludeAtGoJQMatch = "exclude_at_gojq_match" + // IncludeAtGoJQMatch keeps only log lines for which the jq expression produces output. + // Same matching convention and fail-open behavior as ExcludeAtGoJQMatch. + IncludeAtGoJQMatch = "include_at_gojq_match" + // MaskGoJQTransform mutates the log line's content using a jq program that + // transforms the whole parsed JSON document (e.g. + // `.message |= gsub("(?[0-9]{4,})"; "[REDACTED-\(.n)]")`), and re-serializes the + // result as the new content. Unlike the filter rules above, this rule type is + // fail-closed: a non-JSON message, a jq runtime error, or a program producing no + // output all result in the message being dropped rather than risk leaking + // unredacted content. Re-serialization sorts object keys alphabetically, so masked + // output may not preserve the original field order. + MaskGoJQTransform = "mask_gojq" ) // SourceMatchEntry defines a single attribute-value-to-source match @@ -107,6 +132,15 @@ type ProcessingRule struct { // It returns the (possibly mutated) message content, or an error if the // VRL program failed to run. VRLTransform func(input []byte) ([]byte, error) `json:"-" yaml:"-" mapstructure:"-"` + // GoJQFilter is set for ExcludeAtGoJQMatch and IncludeAtGoJQMatch rules after + // compilation. It returns (true, nil) when the jq program produces output for the + // given input, (false, nil) when it produces no output, and (false, err) on a + // runtime error (including non-JSON input, which gojq cannot parse). + GoJQFilter func(input []byte) (bool, error) `json:"-" yaml:"-" mapstructure:"-"` + // GoJQTransform is set for MaskGoJQTransform rules after compilation. It returns + // the mutated message content, or an error if the jq program failed to run or + // produced no output. + GoJQTransform func(input []byte) ([]byte, error) `json:"-" yaml:"-" mapstructure:"-"` } // ValidateProcessingRules validates the rules and raises an error if one is misconfigured. @@ -158,6 +192,13 @@ func ValidateProcessingRules(rules []*ProcessingRule) error { if _, err := vrl.Compile(rule.Pattern); err != nil { return fmt.Errorf("invalid VRL pattern %q for processing rule %s: %w", rule.Pattern, rule.Name, err) } + case ExcludeAtGoJQMatch, IncludeAtGoJQMatch, MaskGoJQTransform: + if rule.Pattern == "" { + return fmt.Errorf("no pattern provided for processing rule: %s", rule.Name) + } + if _, err := jsonquery.Parse(rule.Pattern); err != nil { + return fmt.Errorf("invalid jq pattern %q for processing rule %s: %w", rule.Pattern, rule.Name, err) + } case ExcludeTruncated: break case RemapSource: @@ -219,6 +260,20 @@ func CompileProcessingRules(rules []*ProcessingRule) error { } rule.VRLTransform = prog.Transform continue + case ExcludeAtGoJQMatch, IncludeAtGoJQMatch: + code, err := jsonquery.Parse(rule.Pattern) + if err != nil { + return fmt.Errorf("invalid jq pattern %q for processing rule %s: %w", rule.Pattern, rule.Name, err) + } + rule.GoJQFilter = makeGoJQFilter(code) + continue + case MaskGoJQTransform: + code, err := jsonquery.Parse(rule.Pattern) + if err != nil { + return fmt.Errorf("invalid jq pattern %q for processing rule %s: %w", rule.Pattern, rule.Name, err) + } + rule.GoJQTransform = makeGoJQTransform(code) + continue } // re, err := regexp.Compile(rule.Pattern) // if err != nil { @@ -351,3 +406,65 @@ func makeJQTransform(prog *fastjq.Program) func([]byte) ([]byte, error) { return result, nil } } + +// runGoJQ decodes input as JSON and runs the compiled jq program against it, +// returning the first result. ok is false when the program produced no output. +// +// Decoding uses json.Decoder with UseNumber() rather than json.Unmarshal, so JSON +// numbers are preserved as json.Number (gojq natively supports this type) instead of +// being lowered to float64. Without this, integers beyond float64's 2^53 precision +// (common for large IDs/timestamps) would be silently rounded — and since mask_gojq +// re-serializes the *whole* document, even a mask that only touches .message would +// corrupt unrelated numeric fields. +func runGoJQ(code *gojq.Code, input []byte) (result any, ok bool, err error) { + var v any + dec := json.NewDecoder(bytes.NewReader(input)) + dec.UseNumber() + if err := dec.Decode(&v); err != nil { + return nil, false, err + } + if dec.More() { + return nil, false, errors.New("trailing data after JSON value") + } + iter := code.Run(v) + res, hasResult := iter.Next() + if !hasResult { + return nil, false, nil + } + if runErr, isErr := res.(error); isErr { + return nil, false, runErr + } + return res, true, nil +} + +// makeGoJQFilter builds the boolean-match function for ExcludeAtGoJQMatch/IncludeAtGoJQMatch +// rules: any output produced by the jq program counts as a match. +func makeGoJQFilter(code *gojq.Code) func(input []byte) (bool, error) { + return func(input []byte) (bool, error) { + _, ok, err := runGoJQ(code, input) + if err != nil { + return false, err + } + return ok, nil + } +} + +// makeGoJQTransform builds the content-mutation function for MaskGoJQTransform rules. The +// jq program is expected to output a full, transformed JSON document; the result is +// re-serialized as the new message content. +func makeGoJQTransform(code *gojq.Code) func(input []byte) ([]byte, error) { + return func(input []byte) ([]byte, error) { + result, ok, err := runGoJQ(code, input) + if err != nil { + return nil, fmt.Errorf("jq mask runtime error: %w", err) + } + if !ok { + return nil, errors.New("jq mask transform produced no output") + } + out, err := json.Marshal(result) + if err != nil { + return nil, fmt.Errorf("jq mask transform: failed to encode output: %w", err) + } + return out, nil + } +} diff --git a/comp/logs/agent/config/processing_rules_test.go b/comp/logs/agent/config/processing_rules_test.go index 8554576cecac..2f7e1697a509 100644 --- a/comp/logs/agent/config/processing_rules_test.go +++ b/comp/logs/agent/config/processing_rules_test.go @@ -11,6 +11,7 @@ import ( "testing" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestCompileShouldSucceedWithValidRules(t *testing.T) { @@ -164,3 +165,100 @@ func TestCompileSkipsRemapSource(t *testing.T) { assert.NoError(t, err) assert.Nil(t, rules[0].Regex) } + +func TestValidateGoJQRules(t *testing.T) { + t.Run("valid exclude", func(t *testing.T) { + rules := []*ProcessingRule{{Type: ExcludeAtGoJQMatch, Name: "gojq_test", Pattern: `select(.level == "debug")`}} + assert.NoError(t, ValidateProcessingRules(rules)) + }) + + t.Run("valid include", func(t *testing.T) { + rules := []*ProcessingRule{{Type: IncludeAtGoJQMatch, Name: "gojq_test", Pattern: `select(.level == "error")`}} + assert.NoError(t, ValidateProcessingRules(rules)) + }) + + t.Run("valid mask", func(t *testing.T) { + rules := []*ProcessingRule{{Type: MaskGoJQTransform, Name: "gojq_test", Pattern: `.message |= gsub("[0-9]+"; "X")`}} + assert.NoError(t, ValidateProcessingRules(rules)) + }) + + t.Run("empty pattern", func(t *testing.T) { + for _, ruleType := range []string{ExcludeAtGoJQMatch, IncludeAtGoJQMatch, MaskGoJQTransform} { + rules := []*ProcessingRule{{Type: ruleType, Name: "gojq_test"}} + assert.ErrorContains(t, ValidateProcessingRules(rules), "no pattern provided") + } + }) + + t.Run("invalid jq syntax", func(t *testing.T) { + for _, ruleType := range []string{ExcludeAtGoJQMatch, IncludeAtGoJQMatch, MaskGoJQTransform} { + rules := []*ProcessingRule{{Type: ruleType, Name: "gojq_test", Pattern: "("}} + assert.ErrorContains(t, ValidateProcessingRules(rules), "invalid jq pattern") + } + }) +} + +func TestCompileGoJQFilterRules(t *testing.T) { + rules := []*ProcessingRule{ + {Type: ExcludeAtGoJQMatch, Name: "gojq_exclude", Pattern: `select(.level == "debug")`}, + {Type: IncludeAtGoJQMatch, Name: "gojq_include", Pattern: `select(.level == "error")`}, + } + require.NoError(t, CompileProcessingRules(rules)) + require.NotNil(t, rules[0].GoJQFilter) + require.NotNil(t, rules[1].GoJQFilter) + assert.Nil(t, rules[0].GoJQTransform) + + matched, err := rules[0].GoJQFilter([]byte(`{"level":"debug"}`)) + require.NoError(t, err) + assert.True(t, matched) + + matched, err = rules[0].GoJQFilter([]byte(`{"level":"error"}`)) + require.NoError(t, err) + assert.False(t, matched) + + _, err = rules[0].GoJQFilter([]byte(`not json`)) + assert.Error(t, err) +} + +func TestCompileGoJQMaskRule(t *testing.T) { + rules := []*ProcessingRule{{ + Type: MaskGoJQTransform, + Name: "gojq_mask", + Pattern: `.message |= gsub("(?[0-9]+)"; "[REDACTED-\(.num)]")`, + }} + require.NoError(t, CompileProcessingRules(rules)) + require.NotNil(t, rules[0].GoJQTransform) + assert.Nil(t, rules[0].GoJQFilter) + + out, err := rules[0].GoJQTransform([]byte(`{"message":"user 123456 logged in"}`)) + require.NoError(t, err) + assert.JSONEq(t, `{"message":"user [REDACTED-123456] logged in"}`, string(out)) + + _, err = rules[0].GoJQTransform([]byte(`not json`)) + assert.Error(t, err) +} + +func TestCompileGoJQMaskRulePreservesNumberPrecision(t *testing.T) { + // Regression test: json.Unmarshal into `any` lowers all JSON numbers to + // float64, which loses precision beyond 2^53 (common for large IDs/timestamps). + // Since mask_gojq re-serializes the whole document, a mask that only touches + // .message must not silently corrupt unrelated large-integer fields. + rules := []*ProcessingRule{{ + Type: MaskGoJQTransform, + Name: "gojq_mask", + Pattern: `.message |= gsub("[0-9]+"; "X")`, + }} + require.NoError(t, CompileProcessingRules(rules)) + + out, err := rules[0].GoJQTransform([]byte(`{"id":123456789012345678,"message":"user 42 logged in"}`)) + require.NoError(t, err) + assert.JSONEq(t, `{"id":123456789012345678,"message":"user X logged in"}`, string(out)) + assert.Contains(t, string(out), "123456789012345678") +} + +func TestGoJQFilterRejectsTrailingData(t *testing.T) { + rules := []*ProcessingRule{{Type: IncludeAtGoJQMatch, Name: "gojq_test", Pattern: `select(.level == "error")`}} + require.NoError(t, CompileProcessingRules(rules)) + + _, err := rules[0].GoJQFilter([]byte(`{"level":"error"} garbage`)) + assert.Error(t, err) +} diff --git a/comp/otelcol/collector-contrib/impl/go.mod b/comp/otelcol/collector-contrib/impl/go.mod index de1a17b4d2dc..7c5951cfb3f4 100644 --- a/comp/otelcol/collector-contrib/impl/go.mod +++ b/comp/otelcol/collector-contrib/impl/go.mod @@ -124,6 +124,7 @@ require ( github.com/DataDog/datadog-agent/pkg/trace/traceutil v0.80.2 // indirect github.com/DataDog/datadog-agent/pkg/util/backoff v0.80.4 // indirect github.com/DataDog/datadog-agent/pkg/util/buf v0.80.4 // indirect + github.com/DataDog/datadog-agent/pkg/util/cache v0.69.4 // indirect github.com/DataDog/datadog-agent/pkg/util/compression v0.80.4 // indirect github.com/DataDog/datadog-agent/pkg/util/defaultpaths v0.81.0-devel.0.20260624113434-509b872045c2 // indirect github.com/DataDog/datadog-agent/pkg/util/executable v0.80.4 // indirect @@ -132,6 +133,7 @@ require ( github.com/DataDog/datadog-agent/pkg/util/hostname/validate v0.80.2 // indirect github.com/DataDog/datadog-agent/pkg/util/http v0.80.4 // indirect github.com/DataDog/datadog-agent/pkg/util/json v0.80.4 // indirect + github.com/DataDog/datadog-agent/pkg/util/jsonquery v0.0.0-00010101000000-000000000000 // indirect github.com/DataDog/datadog-agent/pkg/util/log v0.80.4 // indirect github.com/DataDog/datadog-agent/pkg/util/option v0.80.4 // indirect github.com/DataDog/datadog-agent/pkg/util/pointer v0.80.4 // indirect @@ -290,6 +292,8 @@ require ( github.com/iancoleman/strcase v0.3.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/ionos-cloud/sdk-go/v6 v6.3.7 // indirect + github.com/itchyny/gojq v0.12.19 // indirect + github.com/itchyny/timefmt-go v0.1.8 // indirect github.com/jaegertracing/jaeger-idl v0.9.0 // indirect github.com/jmespath/go-jmespath v0.4.1-0.20220621161143-b0104c826a24 // indirect github.com/jonboulle/clockwork v0.5.0 // indirect diff --git a/comp/otelcol/collector-contrib/impl/go.sum b/comp/otelcol/collector-contrib/impl/go.sum index 4ca4c2276081..2f52e1bdc9a1 100644 --- a/comp/otelcol/collector-contrib/impl/go.sum +++ b/comp/otelcol/collector-contrib/impl/go.sum @@ -447,6 +447,10 @@ github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2 github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/ionos-cloud/sdk-go/v6 v6.3.7 h1:t773JkC/asnyVqeQ+OvN9WCRZuosSoPtJfyM82EFCWY= github.com/ionos-cloud/sdk-go/v6 v6.3.7/go.mod h1:nUGHP4kZHAZngCVr4v6C8nuargFrtvt7GrzH/hqn7c4= +github.com/itchyny/gojq v0.12.19 h1:ttXA0XCLEMoaLOz5lSeFOZ6u6Q3QxmG46vfgI4O0DEs= +github.com/itchyny/gojq v0.12.19/go.mod h1:5galtVPDywX8SPSOrqjGxkBeDhSxEW1gSxoy7tn1iZY= +github.com/itchyny/timefmt-go v0.1.8 h1:1YEo1JvfXeAHKdjelbYr/uCuhkybaHCeTkH8Bo791OI= +github.com/itchyny/timefmt-go v0.1.8/go.mod h1:5E46Q+zj7vbTgWY8o5YkMeYb4I6GeWLFnetPy5oBrAI= github.com/jaegertracing/jaeger-idl v0.9.0 h1:dI4olA7ArW3cjXwVbic/aYKDbdlfe7V+9wPQqAdzu8Y= github.com/jaegertracing/jaeger-idl v0.9.0/go.mod h1:W+9vbcr2cVZyS6z/cbr540EOzSkKYml3hmaWEavxkB0= github.com/jarcoal/httpmock v1.4.1 h1:0Ju+VCFuARfFlhVXFc2HxlcQkfB+Xq12/EotHko+x2A= diff --git a/comp/otelcol/ddflareextension/impl/go.mod b/comp/otelcol/ddflareextension/impl/go.mod index d4d196891442..da6fd1ffa9aa 100644 --- a/comp/otelcol/ddflareextension/impl/go.mod +++ b/comp/otelcol/ddflareextension/impl/go.mod @@ -55,7 +55,10 @@ require ( require ( github.com/DataDog/datadog-agent/pkg/logs/vrl v0.0.0-00010101000000-000000000000 // indirect + github.com/DataDog/datadog-agent/pkg/util/jsonquery v0.0.0-00010101000000-000000000000 // indirect github.com/DataDog/fastjq v0.0.0-20260506145947-c3336f252fa2 // indirect + github.com/itchyny/gojq v0.12.19 // indirect + github.com/itchyny/timefmt-go v0.1.8 // indirect ) require ( diff --git a/comp/otelcol/ddflareextension/impl/go.sum b/comp/otelcol/ddflareextension/impl/go.sum index 9759d58809ee..3aeedb65e24a 100644 --- a/comp/otelcol/ddflareextension/impl/go.sum +++ b/comp/otelcol/ddflareextension/impl/go.sum @@ -430,6 +430,10 @@ github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2 github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/ionos-cloud/sdk-go/v6 v6.3.7 h1:t773JkC/asnyVqeQ+OvN9WCRZuosSoPtJfyM82EFCWY= github.com/ionos-cloud/sdk-go/v6 v6.3.7/go.mod h1:nUGHP4kZHAZngCVr4v6C8nuargFrtvt7GrzH/hqn7c4= +github.com/itchyny/gojq v0.12.19 h1:ttXA0XCLEMoaLOz5lSeFOZ6u6Q3QxmG46vfgI4O0DEs= +github.com/itchyny/gojq v0.12.19/go.mod h1:5galtVPDywX8SPSOrqjGxkBeDhSxEW1gSxoy7tn1iZY= +github.com/itchyny/timefmt-go v0.1.8 h1:1YEo1JvfXeAHKdjelbYr/uCuhkybaHCeTkH8Bo791OI= +github.com/itchyny/timefmt-go v0.1.8/go.mod h1:5E46Q+zj7vbTgWY8o5YkMeYb4I6GeWLFnetPy5oBrAI= github.com/jarcoal/httpmock v1.4.1 h1:0Ju+VCFuARfFlhVXFc2HxlcQkfB+Xq12/EotHko+x2A= github.com/jarcoal/httpmock v1.4.1/go.mod h1:ftW1xULwo+j0R0JJkJIIi7UKigZUXCLLanykgjwBXL0= github.com/jmespath/go-jmespath v0.4.1-0.20220621161143-b0104c826a24 h1:liMMTbpW34dhU4az1GN0pTPADwNmvoRSeoZ6PItiqnY= diff --git a/comp/otelcol/logsagentpipeline/go.mod b/comp/otelcol/logsagentpipeline/go.mod index 996014337686..b71374374071 100644 --- a/comp/otelcol/logsagentpipeline/go.mod +++ b/comp/otelcol/logsagentpipeline/go.mod @@ -52,12 +52,14 @@ require ( github.com/DataDog/datadog-agent/pkg/logs/vrl v0.0.0-00010101000000-000000000000 // indirect github.com/DataDog/datadog-agent/pkg/template v0.78.1 // indirect github.com/DataDog/datadog-agent/pkg/util/backoff v0.78.1 // indirect + github.com/DataDog/datadog-agent/pkg/util/cache v0.69.4 // indirect github.com/DataDog/datadog-agent/pkg/util/compression v0.64.0-rc.3 // indirect github.com/DataDog/datadog-agent/pkg/util/defaultpaths v0.64.0-devel // indirect github.com/DataDog/datadog-agent/pkg/util/executable v0.78.1 // indirect github.com/DataDog/datadog-agent/pkg/util/filesystem v0.78.1 // indirect github.com/DataDog/datadog-agent/pkg/util/hostport v0.0.0-00010101000000-000000000000 // indirect github.com/DataDog/datadog-agent/pkg/util/http v0.78.1 // indirect + github.com/DataDog/datadog-agent/pkg/util/jsonquery v0.0.0-00010101000000-000000000000 // indirect github.com/DataDog/datadog-agent/pkg/util/log v0.78.1 // indirect github.com/DataDog/datadog-agent/pkg/util/pointer v0.78.1 // indirect github.com/DataDog/datadog-agent/pkg/util/scrubber v0.78.1 // indirect @@ -93,6 +95,8 @@ require ( github.com/hashicorp/golang-lru v1.0.2 // indirect github.com/iancoleman/strcase v0.3.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect + github.com/itchyny/gojq v0.12.19 // indirect + github.com/itchyny/timefmt-go v0.1.8 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/cpuid/v2 v2.3.0 // indirect github.com/lufia/plan9stats v0.0.0-20260330125221-c963978e514e // indirect @@ -107,6 +111,7 @@ require ( github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.156.0 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0 // indirect + github.com/patrickmn/go-cache v2.1.0+incompatible // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect github.com/prometheus/client_golang v1.23.3-0.20251103151724-a5ae20370e5e // indirect diff --git a/comp/otelcol/logsagentpipeline/go.sum b/comp/otelcol/logsagentpipeline/go.sum index 720619fae793..fbdc0f8839c1 100644 --- a/comp/otelcol/logsagentpipeline/go.sum +++ b/comp/otelcol/logsagentpipeline/go.sum @@ -77,6 +77,10 @@ github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSAS github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/itchyny/gojq v0.12.19 h1:ttXA0XCLEMoaLOz5lSeFOZ6u6Q3QxmG46vfgI4O0DEs= +github.com/itchyny/gojq v0.12.19/go.mod h1:5galtVPDywX8SPSOrqjGxkBeDhSxEW1gSxoy7tn1iZY= +github.com/itchyny/timefmt-go v0.1.8 h1:1YEo1JvfXeAHKdjelbYr/uCuhkybaHCeTkH8Bo791OI= +github.com/itchyny/timefmt-go v0.1.8/go.mod h1:5E46Q+zj7vbTgWY8o5YkMeYb4I6GeWLFnetPy5oBrAI= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= @@ -117,6 +121,8 @@ github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.156.0/go.mod h1:CaT/YS8vvoNgsLewbtwDpS0mAgsHXNXceSPzlP+TeJI= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0 h1:ESNQwLZhQlKcbCzGfFNJu3MkNur35dVBbf7sE0MLDdk= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0/go.mod h1:KW8gom6sRRy60kO9SBSzBy2FGCvfgP7C3cprTqthpaA= +github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc= +github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= diff --git a/comp/otelcol/logsagentpipeline/logsagentpipelineimpl/go.mod b/comp/otelcol/logsagentpipeline/logsagentpipelineimpl/go.mod index f551b1b924f7..0146c9ea1237 100644 --- a/comp/otelcol/logsagentpipeline/logsagentpipelineimpl/go.mod +++ b/comp/otelcol/logsagentpipeline/logsagentpipelineimpl/go.mod @@ -46,12 +46,14 @@ require ( github.com/DataDog/datadog-agent/pkg/logs/vrl v0.0.0-00010101000000-000000000000 // indirect github.com/DataDog/datadog-agent/pkg/template v0.78.1 // indirect github.com/DataDog/datadog-agent/pkg/util/backoff v0.78.1 // indirect + github.com/DataDog/datadog-agent/pkg/util/cache v0.69.4 // indirect github.com/DataDog/datadog-agent/pkg/util/compression v0.64.0-rc.3 // indirect github.com/DataDog/datadog-agent/pkg/util/defaultpaths v0.64.0-devel // indirect github.com/DataDog/datadog-agent/pkg/util/executable v0.78.1 // indirect github.com/DataDog/datadog-agent/pkg/util/filesystem v0.78.1 // indirect github.com/DataDog/datadog-agent/pkg/util/hostport v0.0.0-00010101000000-000000000000 // indirect github.com/DataDog/datadog-agent/pkg/util/http v0.78.1 // indirect + github.com/DataDog/datadog-agent/pkg/util/jsonquery v0.0.0-00010101000000-000000000000 // indirect github.com/DataDog/datadog-agent/pkg/util/log v0.78.1 // indirect github.com/DataDog/datadog-agent/pkg/util/option v0.78.1 // indirect github.com/DataDog/datadog-agent/pkg/util/pointer v0.78.1 // indirect @@ -88,6 +90,8 @@ require ( github.com/hashicorp/golang-lru v1.0.2 // indirect github.com/iancoleman/strcase v0.3.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect + github.com/itchyny/gojq v0.12.19 // indirect + github.com/itchyny/timefmt-go v0.1.8 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/cpuid/v2 v2.3.0 // indirect github.com/lufia/plan9stats v0.0.0-20260330125221-c963978e514e // indirect @@ -102,6 +106,7 @@ require ( github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.156.0 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0 // indirect + github.com/patrickmn/go-cache v2.1.0+incompatible // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect github.com/prometheus/client_golang v1.23.3-0.20251103151724-a5ae20370e5e // indirect diff --git a/comp/otelcol/logsagentpipeline/logsagentpipelineimpl/go.sum b/comp/otelcol/logsagentpipeline/logsagentpipelineimpl/go.sum index 720619fae793..fbdc0f8839c1 100644 --- a/comp/otelcol/logsagentpipeline/logsagentpipelineimpl/go.sum +++ b/comp/otelcol/logsagentpipeline/logsagentpipelineimpl/go.sum @@ -77,6 +77,10 @@ github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSAS github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/itchyny/gojq v0.12.19 h1:ttXA0XCLEMoaLOz5lSeFOZ6u6Q3QxmG46vfgI4O0DEs= +github.com/itchyny/gojq v0.12.19/go.mod h1:5galtVPDywX8SPSOrqjGxkBeDhSxEW1gSxoy7tn1iZY= +github.com/itchyny/timefmt-go v0.1.8 h1:1YEo1JvfXeAHKdjelbYr/uCuhkybaHCeTkH8Bo791OI= +github.com/itchyny/timefmt-go v0.1.8/go.mod h1:5E46Q+zj7vbTgWY8o5YkMeYb4I6GeWLFnetPy5oBrAI= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= @@ -117,6 +121,8 @@ github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.156.0/go.mod h1:CaT/YS8vvoNgsLewbtwDpS0mAgsHXNXceSPzlP+TeJI= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0 h1:ESNQwLZhQlKcbCzGfFNJu3MkNur35dVBbf7sE0MLDdk= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0/go.mod h1:KW8gom6sRRy60kO9SBSzBy2FGCvfgP7C3cprTqthpaA= +github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc= +github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= diff --git a/comp/otelcol/otlp/components/exporter/datadogexporter/go.mod b/comp/otelcol/otlp/components/exporter/datadogexporter/go.mod index 55200ef474d7..1b9bc8924e5c 100644 --- a/comp/otelcol/otlp/components/exporter/datadogexporter/go.mod +++ b/comp/otelcol/otlp/components/exporter/datadogexporter/go.mod @@ -101,6 +101,7 @@ require ( github.com/DataDog/datadog-agent/pkg/trace/traceutil v0.80.2 // indirect github.com/DataDog/datadog-agent/pkg/util/backoff v0.80.2 // indirect github.com/DataDog/datadog-agent/pkg/util/buf v0.80.2 // indirect + github.com/DataDog/datadog-agent/pkg/util/cache v0.69.4 // indirect github.com/DataDog/datadog-agent/pkg/util/cgroups v0.64.0-rc.3 // indirect github.com/DataDog/datadog-agent/pkg/util/compression v0.80.2 // indirect github.com/DataDog/datadog-agent/pkg/util/defaultpaths v0.81.0-devel.0.20260624113434-509b872045c2 // indirect @@ -110,6 +111,7 @@ require ( github.com/DataDog/datadog-agent/pkg/util/hostport v0.0.0-00010101000000-000000000000 // indirect github.com/DataDog/datadog-agent/pkg/util/http v0.80.2 // indirect github.com/DataDog/datadog-agent/pkg/util/json v0.80.2 // indirect + github.com/DataDog/datadog-agent/pkg/util/jsonquery v0.0.0-00010101000000-000000000000 // indirect github.com/DataDog/datadog-agent/pkg/util/log v0.80.2 // indirect github.com/DataDog/datadog-agent/pkg/util/option v0.80.2 // indirect github.com/DataDog/datadog-agent/pkg/util/pointer v0.80.2 // indirect @@ -164,6 +166,8 @@ require ( github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/iancoleman/strcase v0.3.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect + github.com/itchyny/gojq v0.12.19 // indirect + github.com/itchyny/timefmt-go v0.1.8 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/compress v1.19.0 // indirect github.com/klauspost/cpuid/v2 v2.3.0 // indirect diff --git a/comp/otelcol/otlp/components/exporter/datadogexporter/go.sum b/comp/otelcol/otlp/components/exporter/datadogexporter/go.sum index e129ff16bb95..7b526854347b 100644 --- a/comp/otelcol/otlp/components/exporter/datadogexporter/go.sum +++ b/comp/otelcol/otlp/components/exporter/datadogexporter/go.sum @@ -124,6 +124,10 @@ github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSAS github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/itchyny/gojq v0.12.19 h1:ttXA0XCLEMoaLOz5lSeFOZ6u6Q3QxmG46vfgI4O0DEs= +github.com/itchyny/gojq v0.12.19/go.mod h1:5galtVPDywX8SPSOrqjGxkBeDhSxEW1gSxoy7tn1iZY= +github.com/itchyny/timefmt-go v0.1.8 h1:1YEo1JvfXeAHKdjelbYr/uCuhkybaHCeTkH8Bo791OI= +github.com/itchyny/timefmt-go v0.1.8/go.mod h1:5E46Q+zj7vbTgWY8o5YkMeYb4I6GeWLFnetPy5oBrAI= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= diff --git a/comp/otelcol/otlp/components/exporter/logsagentexporter/go.mod b/comp/otelcol/otlp/components/exporter/logsagentexporter/go.mod index dca460942cd4..15ad789685f7 100644 --- a/comp/otelcol/otlp/components/exporter/logsagentexporter/go.mod +++ b/comp/otelcol/otlp/components/exporter/logsagentexporter/go.mod @@ -61,10 +61,12 @@ require ( github.com/DataDog/datadog-agent/pkg/template v0.80.2 // indirect github.com/DataDog/datadog-agent/pkg/trace/log v0.80.2 // indirect github.com/DataDog/datadog-agent/pkg/trace/traceutil v0.80.2 // indirect + github.com/DataDog/datadog-agent/pkg/util/cache v0.69.4 // indirect github.com/DataDog/datadog-agent/pkg/util/defaultpaths v0.81.0-devel.0.20260624113434-509b872045c2 // indirect github.com/DataDog/datadog-agent/pkg/util/executable v0.80.2 // indirect github.com/DataDog/datadog-agent/pkg/util/filesystem v0.80.2 // indirect github.com/DataDog/datadog-agent/pkg/util/hostname/validate v0.80.2 // indirect + github.com/DataDog/datadog-agent/pkg/util/jsonquery v0.0.0-00010101000000-000000000000 // indirect github.com/DataDog/datadog-agent/pkg/util/log v0.80.2 // indirect github.com/DataDog/datadog-agent/pkg/util/pointer v0.80.2 // indirect github.com/DataDog/datadog-agent/pkg/util/quantile v0.80.2 // indirect @@ -109,6 +111,8 @@ require ( github.com/hashicorp/golang-lru v1.0.2 // indirect github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/iancoleman/strcase v0.3.0 // indirect + github.com/itchyny/gojq v0.12.19 // indirect + github.com/itchyny/timefmt-go v0.1.8 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/compress v1.19.0 // indirect github.com/klauspost/cpuid/v2 v2.3.0 // indirect diff --git a/comp/otelcol/otlp/components/exporter/logsagentexporter/go.sum b/comp/otelcol/otlp/components/exporter/logsagentexporter/go.sum index 4f6e17d42bc1..553332b7f2b5 100644 --- a/comp/otelcol/otlp/components/exporter/logsagentexporter/go.sum +++ b/comp/otelcol/otlp/components/exporter/logsagentexporter/go.sum @@ -101,6 +101,10 @@ github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSAS github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/itchyny/gojq v0.12.19 h1:ttXA0XCLEMoaLOz5lSeFOZ6u6Q3QxmG46vfgI4O0DEs= +github.com/itchyny/gojq v0.12.19/go.mod h1:5galtVPDywX8SPSOrqjGxkBeDhSxEW1gSxoy7tn1iZY= +github.com/itchyny/timefmt-go v0.1.8 h1:1YEo1JvfXeAHKdjelbYr/uCuhkybaHCeTkH8Bo791OI= +github.com/itchyny/timefmt-go v0.1.8/go.mod h1:5E46Q+zj7vbTgWY8o5YkMeYb4I6GeWLFnetPy5oBrAI= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= diff --git a/comp/otelcol/otlp/components/exporter/serializerexporter/go.mod b/comp/otelcol/otlp/components/exporter/serializerexporter/go.mod index 520c81d6d926..7d49a22c3f45 100644 --- a/comp/otelcol/otlp/components/exporter/serializerexporter/go.mod +++ b/comp/otelcol/otlp/components/exporter/serializerexporter/go.mod @@ -56,6 +56,8 @@ require ( require ( github.com/DataDog/datadog-agent/pkg/logs/vrl v0.0.0-00010101000000-000000000000 // indirect + github.com/DataDog/datadog-agent/pkg/util/cache v0.69.4 // indirect + github.com/DataDog/datadog-agent/pkg/util/jsonquery v0.0.0-00010101000000-000000000000 // indirect github.com/DataDog/fastjq v0.0.0-20260506145947-c3336f252fa2 // indirect github.com/alecthomas/participle/v2 v2.1.4 // indirect github.com/antchfx/xmlquery v1.5.1 // indirect @@ -66,6 +68,8 @@ require ( github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect github.com/hashicorp/golang-lru v1.0.2 // indirect github.com/iancoleman/strcase v0.3.0 // indirect + github.com/itchyny/gojq v0.12.19 // indirect + github.com/itchyny/timefmt-go v0.1.8 // indirect github.com/klauspost/cpuid/v2 v2.3.0 // indirect github.com/magefile/mage v1.15.0 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.156.0 // indirect diff --git a/comp/otelcol/otlp/components/exporter/serializerexporter/go.sum b/comp/otelcol/otlp/components/exporter/serializerexporter/go.sum index 0b7eb46fedee..9eaf66f1267f 100644 --- a/comp/otelcol/otlp/components/exporter/serializerexporter/go.sum +++ b/comp/otelcol/otlp/components/exporter/serializerexporter/go.sum @@ -107,6 +107,10 @@ github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSAS github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/itchyny/gojq v0.12.19 h1:ttXA0XCLEMoaLOz5lSeFOZ6u6Q3QxmG46vfgI4O0DEs= +github.com/itchyny/gojq v0.12.19/go.mod h1:5galtVPDywX8SPSOrqjGxkBeDhSxEW1gSxoy7tn1iZY= +github.com/itchyny/timefmt-go v0.1.8 h1:1YEo1JvfXeAHKdjelbYr/uCuhkybaHCeTkH8Bo791OI= +github.com/itchyny/timefmt-go v0.1.8/go.mod h1:5E46Q+zj7vbTgWY8o5YkMeYb4I6GeWLFnetPy5oBrAI= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= diff --git a/internal/qbranch/anomalydetection-testbench/go.mod b/internal/qbranch/anomalydetection-testbench/go.mod index 185f88007269..bc6fb0c95327 100644 --- a/internal/qbranch/anomalydetection-testbench/go.mod +++ b/internal/qbranch/anomalydetection-testbench/go.mod @@ -73,12 +73,14 @@ require ( github.com/DataDog/datadog-agent/pkg/tagset v0.80.4 // indirect github.com/DataDog/datadog-agent/pkg/template v0.81.0-devel.0.20260603133502-a41610237dba // indirect github.com/DataDog/datadog-agent/pkg/util/aws/creds v0.0.0-00010101000000-000000000000 // indirect + github.com/DataDog/datadog-agent/pkg/util/cache v0.69.4 // indirect github.com/DataDog/datadog-agent/pkg/util/containers/image v0.56.2 // indirect github.com/DataDog/datadog-agent/pkg/util/defaultpaths v0.81.0-devel.0.20260624113434-509b872045c2 // indirect github.com/DataDog/datadog-agent/pkg/util/executable v0.80.4 // indirect github.com/DataDog/datadog-agent/pkg/util/filesystem v0.80.4 // indirect github.com/DataDog/datadog-agent/pkg/util/flavor v0.71.0-rc.1 // indirect github.com/DataDog/datadog-agent/pkg/util/http v0.80.4 // indirect + github.com/DataDog/datadog-agent/pkg/util/jsonquery v0.0.0-20251027120702-0e91eee9852f // indirect github.com/DataDog/datadog-agent/pkg/util/log/setup v0.77.0 // indirect github.com/DataDog/datadog-agent/pkg/util/pointer v0.80.4 // indirect github.com/DataDog/datadog-agent/pkg/util/scrubber v0.81.0-devel.0.20260603133502-a41610237dba // indirect @@ -124,6 +126,8 @@ require ( github.com/hashicorp/golang-lru v1.0.2 // indirect github.com/iancoleman/strcase v0.3.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect + github.com/itchyny/gojq v0.12.19 // indirect + github.com/itchyny/timefmt-go v0.1.8 // indirect github.com/jsimonetti/rtnetlink/v2 v2.0.3 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/compress v1.19.0 // indirect @@ -143,6 +147,7 @@ require ( github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.1.1 // indirect + github.com/patrickmn/go-cache v2.1.0+incompatible // indirect github.com/philhofer/fwd v1.2.0 // indirect github.com/pierrec/lz4/v4 v4.1.27 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect diff --git a/internal/qbranch/anomalydetection-testbench/go.sum b/internal/qbranch/anomalydetection-testbench/go.sum index 45848443e239..1e7387954d6d 100644 --- a/internal/qbranch/anomalydetection-testbench/go.sum +++ b/internal/qbranch/anomalydetection-testbench/go.sum @@ -107,6 +107,10 @@ github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSAS github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/itchyny/gojq v0.12.19 h1:ttXA0XCLEMoaLOz5lSeFOZ6u6Q3QxmG46vfgI4O0DEs= +github.com/itchyny/gojq v0.12.19/go.mod h1:5galtVPDywX8SPSOrqjGxkBeDhSxEW1gSxoy7tn1iZY= +github.com/itchyny/timefmt-go v0.1.8 h1:1YEo1JvfXeAHKdjelbYr/uCuhkybaHCeTkH8Bo791OI= +github.com/itchyny/timefmt-go v0.1.8/go.mod h1:5E46Q+zj7vbTgWY8o5YkMeYb4I6GeWLFnetPy5oBrAI= github.com/jsimonetti/rtnetlink/v2 v2.0.3 h1:Jcp7GTnTPepoUAJ9+LhTa7ZiebvNS56T1GtlEUaPNFE= github.com/jsimonetti/rtnetlink/v2 v2.0.3/go.mod h1:atIkksp/9fqtf6rpAw45JnttnP2gtuH9X88WPfWfS9A= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= @@ -155,6 +159,8 @@ github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8 github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.1.1 h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJwooC2xJA040= github.com/opencontainers/image-spec v1.1.1/go.mod h1:qpqAh3Dmcf36wStyyWU+kCeDgrGnAve2nCC8+7h8Q0M= +github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc= +github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= github.com/philhofer/fwd v1.2.0 h1:e6DnBTl7vGY+Gz322/ASL4Gyp1FspeMvx1RNDoToZuM= github.com/philhofer/fwd v1.2.0/go.mod h1:RqIHx9QI14HlwKwm98g9Re5prTQ6LdeRQn+gXJFxsJM= github.com/pierrec/lz4/v4 v4.1.27 h1:+PhzhWDrjRj89TH2sw43nE3+4+W8lSxIuQadEHZyjUk= diff --git a/pkg/logs/message/go.mod b/pkg/logs/message/go.mod index 50070850fcc3..63efd940d9a7 100644 --- a/pkg/logs/message/go.mod +++ b/pkg/logs/message/go.mod @@ -29,9 +29,11 @@ require ( github.com/DataDog/datadog-agent/pkg/logs/status/utils v0.75.4 // indirect github.com/DataDog/datadog-agent/pkg/logs/vrl v0.0.0-00010101000000-000000000000 // indirect github.com/DataDog/datadog-agent/pkg/template v0.75.4 // indirect + github.com/DataDog/datadog-agent/pkg/util/cache v0.69.4 // indirect github.com/DataDog/datadog-agent/pkg/util/defaultpaths v0.64.0-devel // indirect github.com/DataDog/datadog-agent/pkg/util/executable v0.75.4 // indirect github.com/DataDog/datadog-agent/pkg/util/filesystem v0.75.4 // indirect + github.com/DataDog/datadog-agent/pkg/util/jsonquery v0.0.0-00010101000000-000000000000 // indirect github.com/DataDog/datadog-agent/pkg/util/pointer v0.75.4 // indirect github.com/DataDog/datadog-agent/pkg/util/scrubber v0.75.4 // indirect github.com/DataDog/datadog-agent/pkg/util/statstracker v0.75.4 // indirect @@ -59,6 +61,8 @@ require ( github.com/hashicorp/go-version v1.9.0 // indirect github.com/hashicorp/golang-lru v1.0.2 // indirect github.com/iancoleman/strcase v0.3.0 // indirect + github.com/itchyny/gojq v0.12.19 // indirect + github.com/itchyny/timefmt-go v0.1.8 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/cpuid/v2 v2.3.0 // indirect github.com/lufia/plan9stats v0.0.0-20260330125221-c963978e514e // indirect @@ -70,6 +74,7 @@ require ( github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.156.0 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0 // indirect + github.com/patrickmn/go-cache v2.1.0+incompatible // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect github.com/shirou/gopsutil/v4 v4.26.6 // indirect diff --git a/pkg/logs/message/go.sum b/pkg/logs/message/go.sum index b077e104b1c8..cf42cc721730 100644 --- a/pkg/logs/message/go.sum +++ b/pkg/logs/message/go.sum @@ -62,6 +62,10 @@ github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSAS github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/itchyny/gojq v0.12.19 h1:ttXA0XCLEMoaLOz5lSeFOZ6u6Q3QxmG46vfgI4O0DEs= +github.com/itchyny/gojq v0.12.19/go.mod h1:5galtVPDywX8SPSOrqjGxkBeDhSxEW1gSxoy7tn1iZY= +github.com/itchyny/timefmt-go v0.1.8 h1:1YEo1JvfXeAHKdjelbYr/uCuhkybaHCeTkH8Bo791OI= +github.com/itchyny/timefmt-go v0.1.8/go.mod h1:5E46Q+zj7vbTgWY8o5YkMeYb4I6GeWLFnetPy5oBrAI= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/klauspost/cpuid/v2 v2.3.0 h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzhA9Y= @@ -90,6 +94,8 @@ github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.156.0/go.mod h1:CaT/YS8vvoNgsLewbtwDpS0mAgsHXNXceSPzlP+TeJI= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0 h1:ESNQwLZhQlKcbCzGfFNJu3MkNur35dVBbf7sE0MLDdk= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0/go.mod h1:KW8gom6sRRy60kO9SBSzBy2FGCvfgP7C3cprTqthpaA= +github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc= +github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= diff --git a/pkg/logs/sources/go.mod b/pkg/logs/sources/go.mod index e60a46ce84cd..9c7319c84ef5 100644 --- a/pkg/logs/sources/go.mod +++ b/pkg/logs/sources/go.mod @@ -29,9 +29,11 @@ require ( github.com/DataDog/datadog-agent/pkg/logs/types v0.75.4 // indirect github.com/DataDog/datadog-agent/pkg/logs/vrl v0.0.0-00010101000000-000000000000 // indirect github.com/DataDog/datadog-agent/pkg/template v0.75.4 // indirect + github.com/DataDog/datadog-agent/pkg/util/cache v0.69.4 // indirect github.com/DataDog/datadog-agent/pkg/util/defaultpaths v0.64.0-devel // indirect github.com/DataDog/datadog-agent/pkg/util/executable v0.75.4 // indirect github.com/DataDog/datadog-agent/pkg/util/filesystem v0.75.4 // indirect + github.com/DataDog/datadog-agent/pkg/util/jsonquery v0.0.0-00010101000000-000000000000 // indirect github.com/DataDog/datadog-agent/pkg/util/pointer v0.75.4 // indirect github.com/DataDog/datadog-agent/pkg/util/scrubber v0.75.4 // indirect github.com/DataDog/datadog-agent/pkg/util/system v0.75.4 // indirect @@ -58,6 +60,8 @@ require ( github.com/hashicorp/go-version v1.9.0 // indirect github.com/hashicorp/golang-lru v1.0.2 // indirect github.com/iancoleman/strcase v0.3.0 // indirect + github.com/itchyny/gojq v0.12.19 // indirect + github.com/itchyny/timefmt-go v0.1.8 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/cpuid/v2 v2.3.0 // indirect github.com/lufia/plan9stats v0.0.0-20260330125221-c963978e514e // indirect @@ -69,6 +73,7 @@ require ( github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.156.0 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0 // indirect + github.com/patrickmn/go-cache v2.1.0+incompatible // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect github.com/shirou/gopsutil/v4 v4.26.6 // indirect diff --git a/pkg/logs/sources/go.sum b/pkg/logs/sources/go.sum index b077e104b1c8..cf42cc721730 100644 --- a/pkg/logs/sources/go.sum +++ b/pkg/logs/sources/go.sum @@ -62,6 +62,10 @@ github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSAS github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/itchyny/gojq v0.12.19 h1:ttXA0XCLEMoaLOz5lSeFOZ6u6Q3QxmG46vfgI4O0DEs= +github.com/itchyny/gojq v0.12.19/go.mod h1:5galtVPDywX8SPSOrqjGxkBeDhSxEW1gSxoy7tn1iZY= +github.com/itchyny/timefmt-go v0.1.8 h1:1YEo1JvfXeAHKdjelbYr/uCuhkybaHCeTkH8Bo791OI= +github.com/itchyny/timefmt-go v0.1.8/go.mod h1:5E46Q+zj7vbTgWY8o5YkMeYb4I6GeWLFnetPy5oBrAI= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/klauspost/cpuid/v2 v2.3.0 h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzhA9Y= @@ -90,6 +94,8 @@ github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.156.0/go.mod h1:CaT/YS8vvoNgsLewbtwDpS0mAgsHXNXceSPzlP+TeJI= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0 h1:ESNQwLZhQlKcbCzGfFNJu3MkNur35dVBbf7sE0MLDdk= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0/go.mod h1:KW8gom6sRRy60kO9SBSzBy2FGCvfgP7C3cprTqthpaA= +github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc= +github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= diff --git a/pkg/logs/util/testutils/go.mod b/pkg/logs/util/testutils/go.mod index 95d45d1c64bc..5acc95675c7e 100644 --- a/pkg/logs/util/testutils/go.mod +++ b/pkg/logs/util/testutils/go.mod @@ -25,9 +25,11 @@ require ( github.com/DataDog/datadog-agent/pkg/logs/types v0.75.4 // indirect github.com/DataDog/datadog-agent/pkg/logs/vrl v0.0.0-00010101000000-000000000000 // indirect github.com/DataDog/datadog-agent/pkg/template v0.75.4 // indirect + github.com/DataDog/datadog-agent/pkg/util/cache v0.69.4 // indirect github.com/DataDog/datadog-agent/pkg/util/defaultpaths v0.64.0-devel // indirect github.com/DataDog/datadog-agent/pkg/util/executable v0.75.4 // indirect github.com/DataDog/datadog-agent/pkg/util/filesystem v0.75.4 // indirect + github.com/DataDog/datadog-agent/pkg/util/jsonquery v0.0.0-00010101000000-000000000000 // indirect github.com/DataDog/datadog-agent/pkg/util/log v0.75.4 // indirect github.com/DataDog/datadog-agent/pkg/util/pointer v0.75.4 // indirect github.com/DataDog/datadog-agent/pkg/util/scrubber v0.75.4 // indirect @@ -56,6 +58,8 @@ require ( github.com/hashicorp/go-version v1.9.0 // indirect github.com/hashicorp/golang-lru v1.0.2 // indirect github.com/iancoleman/strcase v0.3.0 // indirect + github.com/itchyny/gojq v0.12.19 // indirect + github.com/itchyny/timefmt-go v0.1.8 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/cpuid/v2 v2.3.0 // indirect github.com/lufia/plan9stats v0.0.0-20260330125221-c963978e514e // indirect @@ -67,6 +71,7 @@ require ( github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.156.0 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0 // indirect + github.com/patrickmn/go-cache v2.1.0+incompatible // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect github.com/shirou/gopsutil/v4 v4.26.6 // indirect diff --git a/pkg/logs/util/testutils/go.sum b/pkg/logs/util/testutils/go.sum index b077e104b1c8..cf42cc721730 100644 --- a/pkg/logs/util/testutils/go.sum +++ b/pkg/logs/util/testutils/go.sum @@ -62,6 +62,10 @@ github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSAS github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/itchyny/gojq v0.12.19 h1:ttXA0XCLEMoaLOz5lSeFOZ6u6Q3QxmG46vfgI4O0DEs= +github.com/itchyny/gojq v0.12.19/go.mod h1:5galtVPDywX8SPSOrqjGxkBeDhSxEW1gSxoy7tn1iZY= +github.com/itchyny/timefmt-go v0.1.8 h1:1YEo1JvfXeAHKdjelbYr/uCuhkybaHCeTkH8Bo791OI= +github.com/itchyny/timefmt-go v0.1.8/go.mod h1:5E46Q+zj7vbTgWY8o5YkMeYb4I6GeWLFnetPy5oBrAI= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/klauspost/cpuid/v2 v2.3.0 h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzhA9Y= @@ -90,6 +94,8 @@ github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.156.0/go.mod h1:CaT/YS8vvoNgsLewbtwDpS0mAgsHXNXceSPzlP+TeJI= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0 h1:ESNQwLZhQlKcbCzGfFNJu3MkNur35dVBbf7sE0MLDdk= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.156.0/go.mod h1:KW8gom6sRRy60kO9SBSzBy2FGCvfgP7C3cprTqthpaA= +github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc= +github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= diff --git a/test/otel/go.mod b/test/otel/go.mod index c59e5524a6dd..4204c0607a3d 100644 --- a/test/otel/go.mod +++ b/test/otel/go.mod @@ -66,6 +66,7 @@ require ( github.com/DataDog/datadog-agent/pkg/trace/stats v0.80.2 // indirect github.com/DataDog/datadog-agent/pkg/trace/traceutil v0.80.2 // indirect github.com/DataDog/datadog-agent/pkg/util/backoff v0.80.2 // indirect + github.com/DataDog/datadog-agent/pkg/util/cache v0.69.4 // indirect github.com/DataDog/datadog-agent/pkg/util/cgroups v0.61.0 // indirect github.com/DataDog/datadog-agent/pkg/util/defaultpaths v0.81.0-devel.0.20260624113434-509b872045c2 // indirect github.com/DataDog/datadog-agent/pkg/util/executable v0.80.2 // indirect @@ -74,6 +75,7 @@ require ( github.com/DataDog/datadog-agent/pkg/util/hostname/validate v0.80.2 // indirect github.com/DataDog/datadog-agent/pkg/util/hostport v0.0.0-00010101000000-000000000000 // indirect github.com/DataDog/datadog-agent/pkg/util/http v0.80.2 // indirect + github.com/DataDog/datadog-agent/pkg/util/jsonquery v0.0.0-00010101000000-000000000000 // indirect github.com/DataDog/datadog-agent/pkg/util/log v0.80.2 // indirect github.com/DataDog/datadog-agent/pkg/util/option v0.80.2 // indirect github.com/DataDog/datadog-agent/pkg/util/otel v0.74.0-devel.0.20251125141836-2ae7a968751c // indirect @@ -129,6 +131,8 @@ require ( github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/iancoleman/strcase v0.3.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect + github.com/itchyny/gojq v0.12.19 // indirect + github.com/itchyny/timefmt-go v0.1.8 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/compress v1.19.0 // indirect github.com/klauspost/cpuid/v2 v2.3.0 // indirect diff --git a/test/otel/go.sum b/test/otel/go.sum index 170fb59de1d7..aac24a57d219 100644 --- a/test/otel/go.sum +++ b/test/otel/go.sum @@ -121,6 +121,10 @@ github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSAS github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/itchyny/gojq v0.12.19 h1:ttXA0XCLEMoaLOz5lSeFOZ6u6Q3QxmG46vfgI4O0DEs= +github.com/itchyny/gojq v0.12.19/go.mod h1:5galtVPDywX8SPSOrqjGxkBeDhSxEW1gSxoy7tn1iZY= +github.com/itchyny/timefmt-go v0.1.8 h1:1YEo1JvfXeAHKdjelbYr/uCuhkybaHCeTkH8Bo791OI= +github.com/itchyny/timefmt-go v0.1.8/go.mod h1:5E46Q+zj7vbTgWY8o5YkMeYb4I6GeWLFnetPy5oBrAI= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=