From 5617e973dfc44e841fda89ad3f02432c9b4b7a4f Mon Sep 17 00:00:00 2001 From: Marc Alff Date: Tue, 23 Sep 2025 23:15:05 +0200 Subject: [PATCH 1/2] [CONFIGURATION] File configuration - bazel build --- MODULE.bazel | 1 + ci/do_ci.sh | 11 +- examples/configuration/BUILD | 43 ++++ exporters/ostream/BUILD | 48 +++++ exporters/otlp/BUILD | 186 ++++++++++++++++++ exporters/prometheus/BUILD | 15 ++ exporters/zipkin/BUILD | 15 ++ .../integer_attribute_value_configuration.h | 4 +- sdk/src/configuration/BUILD | 15 ++ sdk/src/configuration/sdk_builder.cc | 4 +- sdk/test/configuration/BUILD | 122 ++++++++++++ 11 files changed, 456 insertions(+), 8 deletions(-) create mode 100644 examples/configuration/BUILD create mode 100644 sdk/src/configuration/BUILD create mode 100644 sdk/test/configuration/BUILD diff --git a/MODULE.bazel b/MODULE.bazel index ba0213eb25..c810f74902 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -18,6 +18,7 @@ bazel_dep(name = "opentracing-cpp", version = "1.6.0", repo_name = "com_github_o bazel_dep(name = "platforms", version = "0.0.11") bazel_dep(name = "prometheus-cpp", version = "1.3.0", repo_name = "com_github_jupp0r_prometheus_cpp") bazel_dep(name = "protobuf", version = "29.0", repo_name = "com_google_protobuf") +bazel_dep(name = "rapidyaml", version = "0.9.0") bazel_dep(name = "rules_proto", version = "7.0.2") bazel_dep(name = "zlib", version = "1.3.1.bcr.5") diff --git a/ci/do_ci.sh b/ci/do_ci.sh index 71a9a82cbd..91975cb426 100755 --- a/ci/do_ci.sh +++ b/ci/do_ci.sh @@ -511,8 +511,11 @@ EOF examples/plugin/load/load_plugin_example ${PLUGIN_DIR}/libexample_plugin.so /dev/null exit 0 elif [[ "$1" == "bazel.no_bzlmod.test" ]]; then - bazel $BAZEL_STARTUP_OPTIONS build --enable_bzlmod=false $BAZEL_OPTIONS //... - bazel $BAZEL_STARTUP_OPTIONS test --enable_bzlmod=false $BAZEL_TEST_OPTIONS //... + # Rapidyaml 0.9.0 as is does not support bazel, + # modules in bazel central repository required + # to build configuration. + bazel $BAZEL_STARTUP_OPTIONS build --enable_bzlmod=false $BAZEL_OPTIONS -- //... -//examples/configuration/... -//sdk/src/configuration/... -//sdk/test/configuration/... + bazel $BAZEL_STARTUP_OPTIONS test --enable_bzlmod=false $BAZEL_TEST_OPTIONS -- //... -//examples/configuration/... -//sdk/src/configuration/... -//sdk/test/configuration/... exit 0 elif [[ "$1" == "bazel.test" ]]; then bazel $BAZEL_STARTUP_OPTIONS build $BAZEL_OPTIONS $BAZEL_WITH_PREVIEW //... @@ -539,8 +542,8 @@ elif [[ "$1" == "bazel.noexcept" ]]; then # there are some exceptions and error handling code from the Prometheus Client # as well as Opentracing shim (due to some third party code in its Opentracing dependency) # that make this test always fail. Ignore these packages in the noexcept test here. - bazel $BAZEL_STARTUP_OPTIONS build --copt=-fno-exceptions $BAZEL_OPTIONS_ASYNC -- //... -//exporters/prometheus/... -//examples/prometheus/... -//opentracing-shim/... - bazel $BAZEL_STARTUP_OPTIONS test --copt=-fno-exceptions $BAZEL_TEST_OPTIONS_ASYNC -- //... -//exporters/prometheus/... -//examples/prometheus/... -//opentracing-shim/... + bazel $BAZEL_STARTUP_OPTIONS build --copt=-fno-exceptions $BAZEL_OPTIONS_ASYNC -- //... -//exporters/prometheus/... -//examples/prometheus/... -//opentracing-shim/... -//examples/configuration/... -//sdk/src/configuration/... -//sdk/test/configuration/... + bazel $BAZEL_STARTUP_OPTIONS test --copt=-fno-exceptions $BAZEL_TEST_OPTIONS_ASYNC -- //... -//exporters/prometheus/... -//examples/prometheus/... -//opentracing-shim/... -//examples/configuration/... -//sdk/src/configuration/... -//sdk/test/configuration/... exit 0 elif [[ "$1" == "bazel.nortti" ]]; then # there are some exceptions and error handling code from the Prometheus Client diff --git a/examples/configuration/BUILD b/examples/configuration/BUILD new file mode 100644 index 0000000000..7c2245ca9c --- /dev/null +++ b/examples/configuration/BUILD @@ -0,0 +1,43 @@ +# Copyright The OpenTelemetry Authors +# SPDX-License-Identifier: Apache-2.0 + +cc_binary( + name = "example_yaml", + srcs = glob(["*.cc"]) + glob(["*.h"]), + defines = [ + "OTEL_HAVE_OTLP_HTTP", + "OTEL_HAVE_OTLP_GRPC", + "OTEL_HAVE_OTLP_FILE", + "OTEL_HAVE_ZIPKIN", + "OTEL_HAVE_PROMETHEUS", + ], + tags = [ + "test", + "yaml", + ], + deps = [ + "//api", + "//examples/common/logs_foo_library:common_logs_foo_library", + "//examples/common/metrics_foo_library:common_metrics_foo_library", + "//exporters/ostream:ostream_log_record_exporter_builder", + "//exporters/ostream:ostream_metric_exporter_builder", + "//exporters/ostream:ostream_span_exporter_builder", + "//exporters/otlp:otlp_file_log_record_exporter_builder", + "//exporters/otlp:otlp_file_metric_exporter_builder", + "//exporters/otlp:otlp_file_span_exporter_builder", + "//exporters/otlp:otlp_grpc_log_record_exporter_builder", + "//exporters/otlp:otlp_grpc_metric_exporter_builder", + "//exporters/otlp:otlp_grpc_span_exporter_builder", + "//exporters/otlp:otlp_http_log_record_exporter_builder", + "//exporters/otlp:otlp_http_metric_exporter_builder", + "//exporters/otlp:otlp_http_span_exporter_builder", + "//exporters/prometheus:prometheus_exporter_builder", + "//exporters/zipkin:zipkin_exporter_builder", + "//sdk:headers", + "//sdk/src/configuration", + "//sdk/src/logs", + "//sdk/src/metrics", + "//sdk/src/trace", + "@com_google_googletest//:gtest_main", + ], +) diff --git a/exporters/ostream/BUILD b/exporters/ostream/BUILD index 177bf6a968..a5bd1e2384 100644 --- a/exporters/ostream/BUILD +++ b/exporters/ostream/BUILD @@ -21,6 +21,21 @@ cc_library( ], ) +cc_library( + name = "ostream_log_record_exporter_builder", + srcs = [ + "src/console_log_record_builder.cc", + ], + hdrs = [ + "include/opentelemetry/exporters/ostream/console_log_record_builder.h", + ], + strip_include_prefix = "include", + tags = ["ostream"], + deps = [ + ":ostream_log_record_exporter", + ], +) + cc_test( name = "ostream_log_test", srcs = ["test/ostream_log_test.cc"], @@ -55,6 +70,24 @@ cc_library( ], ) +cc_library( + name = "ostream_metric_exporter_builder", + srcs = [ + "src/console_push_metric_builder.cc", + ], + hdrs = [ + "include/opentelemetry/exporters/ostream/console_push_metric_builder.h", + ], + strip_include_prefix = "include", + tags = [ + "metrics", + "ostream", + ], + deps = [ + ":ostream_metric_exporter", + ], +) + cc_test( name = "ostream_metric_test", srcs = ["test/ostream_metric_test.cc"], @@ -86,6 +119,21 @@ cc_library( ], ) +cc_library( + name = "ostream_span_exporter_builder", + srcs = [ + "src/console_span_builder.cc", + ], + hdrs = [ + "include/opentelemetry/exporters/ostream/console_span_builder.h", + ], + strip_include_prefix = "include", + tags = ["ostream"], + deps = [ + ":ostream_span_exporter", + ], +) + cc_library( name = "ostream_capture", hdrs = [ diff --git a/exporters/otlp/BUILD b/exporters/otlp/BUILD index 2b841954a6..7c1128d7b2 100644 --- a/exporters/otlp/BUILD +++ b/exporters/otlp/BUILD @@ -39,6 +39,22 @@ cc_library( ], ) +cc_library( + name = "otlp_builder_utils", + srcs = [ + "src/otlp_builder_utils.cc", + ], + hdrs = [ + "include/opentelemetry/exporters/otlp/otlp_builder_utils.h", + ], + strip_include_prefix = "include", + tags = ["otlp"], + deps = [ + ":otlp_http_client", + ":otlp_recordable", + ], +) + cc_library( name = "otlp_grpc_client", srcs = [ @@ -120,6 +136,25 @@ cc_library( ], ) +cc_library( + name = "otlp_grpc_span_exporter_builder", + srcs = [ + "src/otlp_grpc_span_builder.cc", + ], + hdrs = [ + "include/opentelemetry/exporters/otlp/otlp_grpc_span_builder.h", + ], + strip_include_prefix = "include", + tags = [ + "otlp", + "otlp_grpc", + ], + deps = [ + ":otlp_builder_utils", + ":otlp_grpc_exporter", + ], +) + cc_library( name = "otlp_http_client", srcs = [ @@ -189,6 +224,25 @@ cc_library( ], ) +cc_library( + name = "otlp_http_span_exporter_builder", + srcs = [ + "src/otlp_http_span_builder.cc", + ], + hdrs = [ + "include/opentelemetry/exporters/otlp/otlp_http_span_builder.h", + ], + strip_include_prefix = "include", + tags = [ + "otlp", + "otlp_http", + ], + deps = [ + ":otlp_builder_utils", + ":otlp_http_exporter", + ], +) + cc_library( name = "otlp_file_client", srcs = [ @@ -246,6 +300,24 @@ cc_library( ], ) +cc_library( + name = "otlp_file_span_exporter_builder", + srcs = [ + "src/otlp_file_span_builder.cc", + ], + hdrs = [ + "include/opentelemetry/exporters/otlp/otlp_file_span_builder.h", + ], + strip_include_prefix = "include", + tags = [ + "otlp", + "otlp_file", + ], + deps = [ + ":otlp_file_exporter", + ], +) + cc_library( name = "otlp_grpc_metric_exporter", srcs = [ @@ -278,6 +350,25 @@ cc_library( ], ) +cc_library( + name = "otlp_grpc_metric_exporter_builder", + srcs = [ + "src/otlp_grpc_push_metric_builder.cc", + ], + hdrs = [ + "include/opentelemetry/exporters/otlp/otlp_grpc_push_metric_builder.h", + ], + strip_include_prefix = "include", + tags = [ + "otlp", + "otlp_grpc_metric", + ], + deps = [ + ":otlp_builder_utils", + ":otlp_grpc_metric_exporter", + ], +) + cc_library( name = "otlp_http_metric_exporter", srcs = [ @@ -307,6 +398,25 @@ cc_library( ], ) +cc_library( + name = "otlp_http_metric_exporter_builder", + srcs = [ + "src/otlp_http_push_metric_builder.cc", + ], + hdrs = [ + "include/opentelemetry/exporters/otlp/otlp_http_push_metric_builder.h", + ], + strip_include_prefix = "include", + tags = [ + "otlp", + "otlp_http_metric", + ], + deps = [ + ":otlp_builder_utils", + ":otlp_http_metric_exporter", + ], +) + cc_library( name = "otlp_file_metric_exporter", srcs = [ @@ -336,6 +446,25 @@ cc_library( ], ) +cc_library( + name = "otlp_file_metric_exporter_builder", + srcs = [ + "src/otlp_file_push_metric_builder.cc", + ], + hdrs = [ + "include/opentelemetry/exporters/otlp/otlp_file_push_metric_builder.h", + ], + strip_include_prefix = "include", + tags = [ + "otlp", + "otlp_file_metric", + ], + deps = [ + ":otlp_builder_utils", + ":otlp_file_metric_exporter", + ], +) + cc_library( name = "otlp_http_log_record_exporter", srcs = [ @@ -365,6 +494,25 @@ cc_library( ], ) +cc_library( + name = "otlp_http_log_record_exporter_builder", + srcs = [ + "src/otlp_http_log_record_builder.cc", + ], + hdrs = [ + "include/opentelemetry/exporters/otlp/otlp_http_log_record_builder.h", + ], + strip_include_prefix = "include", + tags = [ + "otlp", + "otlp_http_log", + ], + deps = [ + ":otlp_builder_utils", + ":otlp_http_log_record_exporter", + ], +) + cc_library( name = "otlp_file_log_record_exporter", srcs = [ @@ -394,6 +542,25 @@ cc_library( ], ) +cc_library( + name = "otlp_file_log_record_exporter_builder", + srcs = [ + "src/otlp_file_log_record_builder.cc", + ], + hdrs = [ + "include/opentelemetry/exporters/otlp/otlp_file_log_record_builder.h", + ], + strip_include_prefix = "include", + tags = [ + "otlp", + "otlp_file_log", + ], + deps = [ + ":otlp_builder_utils", + ":otlp_file_log_record_exporter", + ], +) + cc_library( name = "otlp_grpc_log_record_exporter", srcs = [ @@ -425,6 +592,25 @@ cc_library( ], ) +cc_library( + name = "otlp_grpc_log_record_exporter_builder", + srcs = [ + "src/otlp_grpc_log_record_builder.cc", + ], + hdrs = [ + "include/opentelemetry/exporters/otlp/otlp_grpc_log_record_builder.h", + ], + strip_include_prefix = "include", + tags = [ + "otlp", + "otlp_grpc_log", + ], + deps = [ + ":otlp_builder_utils", + ":otlp_grpc_log_record_exporter", + ], +) + cc_test( name = "otlp_recordable_test", srcs = ["test/otlp_recordable_test.cc"], diff --git a/exporters/prometheus/BUILD b/exporters/prometheus/BUILD index fc981921d9..ef4da55a33 100644 --- a/exporters/prometheus/BUILD +++ b/exporters/prometheus/BUILD @@ -27,6 +27,21 @@ cc_library( ], ) +cc_library( + name = "prometheus_exporter_builder", + srcs = [ + "src/prometheus_pull_builder.cc", + ], + hdrs = [ + "include/opentelemetry/exporters/prometheus/prometheus_pull_builder.h", + ], + strip_include_prefix = "include", + tags = ["prometheus"], + deps = [ + ":prometheus_exporter", + ], +) + cc_library( name = "prometheus_exporter_utils", srcs = [ diff --git a/exporters/zipkin/BUILD b/exporters/zipkin/BUILD index 16774e80df..aad6ebd4a4 100644 --- a/exporters/zipkin/BUILD +++ b/exporters/zipkin/BUILD @@ -42,6 +42,21 @@ cc_library( ], ) +cc_library( + name = "zipkin_exporter_builder", + srcs = [ + "src/zipkin_builder.cc", + ], + hdrs = [ + "include/opentelemetry/exporters/zipkin/zipkin_builder.h", + ], + strip_include_prefix = "include", + tags = ["zipkin"], + deps = [ + ":zipkin_exporter", + ], +) + cc_test( name = "zipkin_recordable_test", srcs = ["test/zipkin_recordable_test.cc"], diff --git a/sdk/include/opentelemetry/sdk/configuration/integer_attribute_value_configuration.h b/sdk/include/opentelemetry/sdk/configuration/integer_attribute_value_configuration.h index 4fa558157d..0b72fd7afc 100644 --- a/sdk/include/opentelemetry/sdk/configuration/integer_attribute_value_configuration.h +++ b/sdk/include/opentelemetry/sdk/configuration/integer_attribute_value_configuration.h @@ -3,8 +3,6 @@ #pragma once -#include - #include "opentelemetry/sdk/configuration/attribute_value_configuration.h" #include "opentelemetry/sdk/configuration/attribute_value_configuration_visitor.h" #include "opentelemetry/version.h" @@ -25,7 +23,7 @@ class IntegerAttributeValueConfiguration : public AttributeValueConfiguration visitor->VisitInteger(this); } - std::size_t value; + long long value; }; } // namespace configuration diff --git a/sdk/src/configuration/BUILD b/sdk/src/configuration/BUILD new file mode 100644 index 0000000000..bdf45a3af1 --- /dev/null +++ b/sdk/src/configuration/BUILD @@ -0,0 +1,15 @@ +# Copyright The OpenTelemetry Authors +# SPDX-License-Identifier: Apache-2.0 + +package(default_visibility = ["//visibility:public"]) + +cc_library( + name = "configuration", + srcs = glob(["**/*.cc"]), + include_prefix = "src/configuration", + deps = [ + "//api", + "//sdk:headers", + "@rapidyaml", + ], +) diff --git a/sdk/src/configuration/sdk_builder.cc b/sdk/src/configuration/sdk_builder.cc index 0da1af86dc..ecbf9c4165 100644 --- a/sdk/src/configuration/sdk_builder.cc +++ b/sdk/src/configuration/sdk_builder.cc @@ -187,7 +187,9 @@ class ResourceAttributeValueSetter void VisitInteger( const opentelemetry::sdk::configuration::IntegerAttributeValueConfiguration *model) override { - opentelemetry::common::AttributeValue attribute_value(model->value); + /* Provide exact type to opentelemetry::common::AttributeValue variant. */ + int64_t value = model->value; + opentelemetry::common::AttributeValue attribute_value(value); resource_attributes_.SetAttribute(name_, attribute_value); } diff --git a/sdk/test/configuration/BUILD b/sdk/test/configuration/BUILD new file mode 100644 index 0000000000..ec14533b71 --- /dev/null +++ b/sdk/test/configuration/BUILD @@ -0,0 +1,122 @@ +# Copyright The OpenTelemetry Authors +# SPDX-License-Identifier: Apache-2.0 + +cc_test( + name = "yaml_logs_test", + srcs = [ + "yaml_logs_test.cc", + ], + tags = [ + "test", + "yaml", + ], + deps = [ + "//api", + "//sdk:headers", + "//sdk/src/configuration", + "//sdk/src/logs", + "//sdk/src/metrics", + "//sdk/src/trace", + "@com_google_googletest//:gtest_main", + ], +) + +cc_test( + name = "yaml_metrics_test", + srcs = [ + "yaml_metrics_test.cc", + ], + tags = [ + "test", + "yaml", + ], + deps = [ + "//api", + "//sdk:headers", + "//sdk/src/configuration", + "//sdk/src/logs", + "//sdk/src/metrics", + "//sdk/src/trace", + "@com_google_googletest//:gtest_main", + ], +) + +cc_test( + name = "yaml_propagator_test", + srcs = [ + "yaml_propagator_test.cc", + ], + tags = [ + "test", + "yaml", + ], + deps = [ + "//api", + "//sdk:headers", + "//sdk/src/configuration", + "//sdk/src/logs", + "//sdk/src/metrics", + "//sdk/src/trace", + "@com_google_googletest//:gtest_main", + ], +) + +cc_test( + name = "yaml_resource_test", + srcs = [ + "yaml_resource_test.cc", + ], + tags = [ + "test", + "yaml", + ], + deps = [ + "//api", + "//sdk:headers", + "//sdk/src/configuration", + "//sdk/src/logs", + "//sdk/src/metrics", + "//sdk/src/trace", + "@com_google_googletest//:gtest_main", + ], +) + +cc_test( + name = "yaml_test", + srcs = [ + "yaml_test.cc", + ], + tags = [ + "test", + "yaml", + ], + deps = [ + "//api", + "//sdk:headers", + "//sdk/src/configuration", + "//sdk/src/logs", + "//sdk/src/metrics", + "//sdk/src/trace", + "@com_google_googletest//:gtest_main", + ], +) + +cc_test( + name = "yaml_trace_test", + srcs = [ + "yaml_trace_test.cc", + ], + tags = [ + "test", + "yaml", + ], + deps = [ + "//api", + "//sdk:headers", + "//sdk/src/configuration", + "//sdk/src/logs", + "//sdk/src/metrics", + "//sdk/src/trace", + "@com_google_googletest//:gtest_main", + ], +) From 61aed7463b4e318b79cf90621500383531d01a80 Mon Sep 17 00:00:00 2001 From: Marc Alff Date: Wed, 24 Sep 2025 00:26:48 +0200 Subject: [PATCH 2/2] cleanup --- sdk/test/configuration/yaml_test.cc | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/sdk/test/configuration/yaml_test.cc b/sdk/test/configuration/yaml_test.cc index 6a62f65429..12c391892a 100644 --- a/sdk/test/configuration/yaml_test.cc +++ b/sdk/test/configuration/yaml_test.cc @@ -12,6 +12,12 @@ #include "opentelemetry/sdk/configuration/tracer_provider_configuration.h" #include "opentelemetry/sdk/configuration/yaml_configuration_parser.h" +#if defined(_MSC_VER) +# include "opentelemetry/sdk/common/env_variables.h" +using opentelemetry::sdk::common::setenv; +using opentelemetry::sdk::common::unsetenv; +#endif + static std::unique_ptr DoParse( const std::string &yaml) {