diff --git a/bazel/io_opentracing_cpp.patch b/bazel/io_opentracing_cpp.patch deleted file mode 100644 index e4fe4710d8521..0000000000000 --- a/bazel/io_opentracing_cpp.patch +++ /dev/null @@ -1,159 +0,0 @@ -diff --git a/mocktracer/BUILD b/mocktracer/BUILD -index 3b22bab..d425e2e 100644 ---- a/mocktracer/BUILD -+++ b/mocktracer/BUILD -@@ -7,11 +7,13 @@ cc_library( - deps = [ - "//:opentracing", - ], -+ alwayslink = 1, - ) - - cc_binary( - name = "libmocktracer_plugin.so", - linkshared = 1, -+ linkstatic = 1, - visibility = ["//visibility:public"], - deps = [ - "//mocktracer:mocktracer" -diff --git a/src/dynamic_load_unix.cpp b/src/dynamic_load_unix.cpp -index 17e08fd..7e8ac02 100644 ---- a/src/dynamic_load_unix.cpp -+++ b/src/dynamic_load_unix.cpp -@@ -35,7 +35,13 @@ DynamicallyLoadTracingLibrary(const char* shared_library, - std::string& error_message) noexcept try { - dlerror(); // Clear any existing error. - -- const auto handle = dlopen(shared_library, RTLD_NOW | RTLD_LOCAL); -+ const auto handle = dlopen(shared_library, RTLD_NOW | RTLD_LOCAL -+#if defined(__has_feature) -+#if __has_feature(address_sanitizer) -+ | RTLD_NODELETE -+#endif -+#endif -+ ); - if (handle == nullptr) { - error_message = dlerror(); - return make_unexpected(dynamic_load_failure_error); -# commit 3a6f049c123a1906c7381e824292c18fd8698293 -# Author: Christian Neumüller -# Date: Wed Feb 27 01:48:17 2019 +0100 -# -# Fix MSVC compiler flags. (#104) -# -# * All debug specific flags would be replaced by release specific on MSVC. -# * The OPENTRACING_STATIC flag would be missing from OpenTracingConfig.cmake when linking against OpenTracing::opentracing-static -# -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 1721fb3..3873b3a 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -52,7 +52,7 @@ if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") - elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra") - elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") -- set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_RELEASE} -D_SCL_SECURE_NO_WARNINGS") -+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_SCL_SECURE_NO_WARNINGS") - endif() - - # ============================================================================== -diff --git a/include/opentracing/config.h b/include/opentracing/config.h -new file mode 100755 -index 0000000..cae3e61 ---- /dev/null -+++ b/include/opentracing/config.h -@@ -0,0 +1,3 @@ -+#pragma once -+ -+#define OPENTRACING_BUILD_DYNAMIC_LOADING -diff --git a/include/opentracing/version.h b/include/opentracing/version.h -new file mode 100755 -index 0000000..25b9945 ---- /dev/null -+++ b/include/opentracing/version.h -@@ -0,0 +1,14 @@ -+#ifndef OPENTRACING_VERSION_H -+#define OPENTRACING_VERSION_H -+ -+#define OPENTRACING_VERSION "1.5.1" -+#define OPENTRACING_ABI_VERSION "2" -+ -+// clang-format off -+#define BEGIN_OPENTRACING_ABI_NAMESPACE \ -+ inline namespace v2 { -+#define END_OPENTRACING_ABI_NAMESPACE \ -+ } // namespace v2 -+// clang-format on -+ -+#endif // OPENTRACING_VERSION_H -diff --git a/BUILD.bazel b/BUILD.bazel -index c57dc9f..587bf0e 100644 ---- a/BUILD.bazel -+++ b/BUILD.bazel -@@ -1,10 +1,7 @@ - cc_library( - name = "opentracing", - srcs = glob(["src/**/*.cpp"], exclude=["src/dynamic_load_unsupported.cpp", "src/dynamic_load_windows.cpp"]), -- hdrs = glob(["include/opentracing/**/*.h"]) + [ -- ":include/opentracing/config.h", -- ":include/opentracing/version.h", -- ], -+ hdrs = glob(["include/opentracing/**/*.h"]), - strip_include_prefix = "include", - visibility = ["//visibility:public"], - deps = [ -@@ -15,27 +12,3 @@ cc_library( - "-ldl", - ], - ) -- --genrule( -- name = "generate_version_h", -- srcs = glob([ -- "*", -- "cmake/*", -- "src/**/*.cpp", -- ]), -- outs = [ -- "include/opentracing/config.h", -- "include/opentracing/version.h" -- ], -- cmd = """ -- TEMP_DIR=$$(mktemp -d) -- CONFIG_H_OUT=$${PWD}/$(location :include/opentracing/config.h) -- VERSION_H_OUT=$${PWD}/$(location :include/opentracing/version.h) -- OPENTRACING_ROOT=$$(dirname $${PWD}/$(location :CMakeLists.txt)) -- cd $$TEMP_DIR -- cmake -DBUILD_TESTING=OFF -DBUILD_MOCKTRACER=OFF -L $$OPENTRACING_ROOT -- mv include/opentracing/config.h $$CONFIG_H_OUT -- mv include/opentracing/version.h $$VERSION_H_OUT -- rm -rf $$TEMP_DIR -- """, --) -diff --git a/3rd_party/include/opentracing/variant/variant.hpp b/3rd_party/include/opentracing/variant/variant.hpp ---- a/3rd_party/include/opentracing/variant/variant.hpp 2023-07-11 17:17:48.563874883 +0000 -+++ b/3rd_party/include/opentracing/variant/variant.hpp 2023-07-11 17:45:38.558235212 +0000 -@@ -167,7 +167,11 @@ - template - struct result_of_unary_visit - { -+#if __cplusplus >= 202002L -+ using type = typename std::invoke_result::type; -+#else - using type = typename std::result_of::type; -+#endif - }; - - template -@@ -179,7 +183,11 @@ - template - struct result_of_binary_visit - { -+#if __cplusplus >= 202002L -+ using type = typename std::invoke_result::type; -+#else - using type = typename std::result_of::type; -+#endif - }; - - template \ No newline at end of file diff --git a/bazel/repositories.bzl b/bazel/repositories.bzl index 63f74b807b60a..8be7f8222117e 100644 --- a/bazel/repositories.bzl +++ b/bazel/repositories.bzl @@ -11,7 +11,6 @@ WINDOWS_SKIP_TARGETS = [ "envoy.filters.http.file_system_buffer", "envoy.filters.http.language", "envoy.filters.http.sxg", - "envoy.tracers.dynamic_ot", "envoy.tracers.datadog", "envoy.tracers.opencensus", # Extensions that require CEL. @@ -338,7 +337,6 @@ def envoy_dependencies(skip_targets = []): _com_googlesource_googleurl() _io_hyperscan() _io_vectorscan() - _io_opentracing_cpp() _io_opentelemetry_api_cpp() _net_colm_open_source_colm() _net_colm_open_source_ragel() @@ -761,18 +759,6 @@ def _io_vectorscan(): patches = ["@envoy//bazel/foreign_cc:vectorscan.patch"], ) -def _io_opentracing_cpp(): - external_http_archive( - name = "io_opentracing_cpp", - patch_args = ["-p1"], - # Workaround for LSAN false positive in https://github.com/envoyproxy/envoy/issues/7647 - patches = ["@envoy//bazel:io_opentracing_cpp.patch"], - ) - native.bind( - name = "opentracing", - actual = "@io_opentracing_cpp//:opentracing", - ) - def _io_opentelemetry_api_cpp(): external_http_archive(name = "io_opentelemetry_cpp") native.bind( diff --git a/bazel/repository_locations.bzl b/bazel/repository_locations.bzl index b4d3d606a1bba..5663412130191 100644 --- a/bazel/repository_locations.bzl +++ b/bazel/repository_locations.bzl @@ -550,24 +550,6 @@ REPOSITORY_LOCATIONS_SPEC = dict( license = "BSD-3-Clause", license_url = "https://github.com/VectorCamp/vectorscan/blob/vectorscan/{version}/LICENSE", ), - io_opentracing_cpp = dict( - project_name = "OpenTracing", - project_desc = "Vendor-neutral APIs and instrumentation for distributed tracing", - project_url = "https://opentracing.io", - version = "1.5.1", - sha256 = "015c4187f7a6426a2b5196f0ccd982aa87f010cf61f507ae3ce5c90523f92301", - strip_prefix = "opentracing-cpp-{version}", - urls = ["https://github.com/opentracing/opentracing-cpp/archive/v{version}.tar.gz"], - use_category = ["observability_ext"], - extensions = [ - "envoy.tracers.datadog", - "envoy.tracers.dynamic_ot", - ], - release_date = "2019-01-16", - cpe = "N/A", - license = "Apache-2.0", - license_url = "https://github.com/opentracing/opentracing-cpp/blob/v{version}/LICENSE", - ), io_opentelemetry_cpp = dict( project_name = "OpenTelemetry", project_desc = "Observability framework and toolkit designed to create and manage telemetry data such as traces, metrics, and logs.", diff --git a/changelogs/current.yaml b/changelogs/current.yaml index 360e829e5914a..e9e74c837b463 100644 --- a/changelogs/current.yaml +++ b/changelogs/current.yaml @@ -2,6 +2,10 @@ date: Pending behavior_changes: # *Changes that are expected to cause an incompatibility if applicable; deployment changes are likely required* +- area: tracing + change: | + Removed support for (long deprecated) opentracing. See `issue 27401 + `_ for details. minor_behavior_changes: # *Changes that may cause incompatibilities for some users, but should not for most* diff --git a/source/extensions/extensions_build_config.bzl b/source/extensions/extensions_build_config.bzl index 5977e7889e1b2..25b170a1c44ea 100644 --- a/source/extensions/extensions_build_config.bzl +++ b/source/extensions/extensions_build_config.bzl @@ -267,7 +267,6 @@ EXTENSIONS = { # Tracers # - "envoy.tracers.dynamic_ot": "//source/extensions/tracers/dynamic_ot:config", "envoy.tracers.datadog": "//source/extensions/tracers/datadog:config", "envoy.tracers.zipkin": "//source/extensions/tracers/zipkin:config", "envoy.tracers.opencensus": "//source/extensions/tracers/opencensus:config", diff --git a/source/extensions/extensions_metadata.yaml b/source/extensions/extensions_metadata.yaml index 0516e07716e91..9cd320adf6b67 100644 --- a/source/extensions/extensions_metadata.yaml +++ b/source/extensions/extensions_metadata.yaml @@ -1201,13 +1201,6 @@ envoy.tracers.datadog: status: stable type_urls: - envoy.config.trace.v3.DatadogConfig -envoy.tracers.dynamic_ot: - categories: - - envoy.tracers - security_posture: unknown - status: stable - type_urls: - - envoy.config.trace.v3.DynamicOtConfig envoy.tracers.opencensus: categories: - envoy.tracers diff --git a/source/extensions/tracers/dynamic_ot/BUILD b/source/extensions/tracers/dynamic_ot/BUILD deleted file mode 100644 index 8a3bb1937ed38..0000000000000 --- a/source/extensions/tracers/dynamic_ot/BUILD +++ /dev/null @@ -1,37 +0,0 @@ -load( - "//bazel:envoy_build_system.bzl", - "envoy_cc_extension", - "envoy_cc_library", - "envoy_extension_package", -) - -licenses(["notice"]) # Apache 2 - -# Trace driver for dynamically loadable C++ OpenTracing drivers (http://opentracing.io/). - -envoy_extension_package() - -envoy_cc_library( - name = "dynamic_opentracing_driver_lib", - srcs = [ - "dynamic_opentracing_driver_impl.cc", - ], - hdrs = [ - "dynamic_opentracing_driver_impl.h", - ], - deps = [ - "//source/common/tracing:http_tracer_lib", - "//source/extensions/tracers/common/ot:opentracing_driver_lib", - ], -) - -envoy_cc_extension( - name = "config", - srcs = ["config.cc"], - hdrs = ["config.h"], - deps = [ - ":dynamic_opentracing_driver_lib", - "//source/extensions/tracers/common:factory_base_lib", - "@envoy_api//envoy/config/trace/v3:pkg_cc_proto", - ], -) diff --git a/source/extensions/tracers/dynamic_ot/config.cc b/source/extensions/tracers/dynamic_ot/config.cc deleted file mode 100644 index 79409774522cf..0000000000000 --- a/source/extensions/tracers/dynamic_ot/config.cc +++ /dev/null @@ -1,39 +0,0 @@ -#include "source/extensions/tracers/dynamic_ot/config.h" - -#include "envoy/config/trace/v3/dynamic_ot.pb.h" -#include "envoy/config/trace/v3/dynamic_ot.pb.validate.h" -#include "envoy/registry/registry.h" - -#include "source/common/common/utility.h" -#include "source/extensions/tracers/dynamic_ot/dynamic_opentracing_driver_impl.h" - -namespace Envoy { -namespace Extensions { -namespace Tracers { -namespace DynamicOt { - -DynamicOpenTracingTracerFactory::DynamicOpenTracingTracerFactory() - : FactoryBase("envoy.tracers.dynamic_ot") {} - -Tracing::DriverSharedPtr DynamicOpenTracingTracerFactory::createTracerDriverTyped( - const envoy::config::trace::v3::DynamicOtConfig& proto_config, - Server::Configuration::TracerFactoryContext& context) { - const std::string& library = proto_config.library(); - const ProtobufWkt::Struct& config_struct = proto_config.config(); - absl::StatusOr json_or_error = MessageUtil::getJsonStringFromMessage(config_struct); - ENVOY_BUG(json_or_error.ok(), "Failed to parse json"); - const std::string config = json_or_error.ok() ? json_or_error.value() : ""; - return std::make_shared(context.serverFactoryContext().scope(), library, - config); -} - -/** - * Static registration for the dynamic opentracing tracer. @see RegisterFactory. - */ -LEGACY_REGISTER_FACTORY(DynamicOpenTracingTracerFactory, Server::Configuration::TracerFactory, - "envoy.dynamic.ot"); - -} // namespace DynamicOt -} // namespace Tracers -} // namespace Extensions -} // namespace Envoy diff --git a/source/extensions/tracers/dynamic_ot/config.h b/source/extensions/tracers/dynamic_ot/config.h deleted file mode 100644 index 61be3be55c27f..0000000000000 --- a/source/extensions/tracers/dynamic_ot/config.h +++ /dev/null @@ -1,31 +0,0 @@ -#pragma once - -#include "envoy/config/trace/v3/dynamic_ot.pb.h" -#include "envoy/config/trace/v3/dynamic_ot.pb.validate.h" - -#include "source/extensions/tracers/common/factory_base.h" - -namespace Envoy { -namespace Extensions { -namespace Tracers { -namespace DynamicOt { - -/** - * Config registration for the dynamic opentracing tracer. @see TracerFactory. - */ -class DynamicOpenTracingTracerFactory - : public Common::FactoryBase { -public: - DynamicOpenTracingTracerFactory(); - -private: - // FactoryBase - Tracing::DriverSharedPtr - createTracerDriverTyped(const envoy::config::trace::v3::DynamicOtConfig& configuration, - Server::Configuration::TracerFactoryContext& context) override; -}; - -} // namespace DynamicOt -} // namespace Tracers -} // namespace Extensions -} // namespace Envoy diff --git a/source/extensions/tracers/dynamic_ot/dynamic_opentracing_driver_impl.cc b/source/extensions/tracers/dynamic_ot/dynamic_opentracing_driver_impl.cc deleted file mode 100644 index 583fbfd6bb6fe..0000000000000 --- a/source/extensions/tracers/dynamic_ot/dynamic_opentracing_driver_impl.cc +++ /dev/null @@ -1,42 +0,0 @@ -#include "source/extensions/tracers/dynamic_ot/dynamic_opentracing_driver_impl.h" - -#include "source/common/common/assert.h" - -namespace Envoy { -namespace Extensions { -namespace Tracers { -namespace DynamicOt { - -DynamicOpenTracingDriver::DynamicOpenTracingDriver(Stats::Scope& scope, const std::string& library, - const std::string& tracer_config) - : OpenTracingDriver{scope} { - std::string error_message; - opentracing::expected library_handle_maybe = - opentracing::DynamicallyLoadTracingLibrary(library.c_str(), error_message); - if (!library_handle_maybe) { - throw EnvoyException{formatErrorMessage(library_handle_maybe.error(), error_message)}; - } - library_handle_ = std::move(*library_handle_maybe); - - opentracing::expected> tracer_maybe = - library_handle_.tracer_factory().MakeTracer(tracer_config.c_str(), error_message); - if (!tracer_maybe) { - throw EnvoyException{formatErrorMessage(tracer_maybe.error(), error_message)}; - } - tracer_ = std::move(*tracer_maybe); - RELEASE_ASSERT(tracer_ != nullptr, ""); -} - -std::string DynamicOpenTracingDriver::formatErrorMessage(std::error_code error_code, - const std::string& error_message) { - if (error_message.empty()) { - return absl::StrCat("", error_code.message()); - } else { - return fmt::format("{}: {}", error_code.message(), error_message); - } -} - -} // namespace DynamicOt -} // namespace Tracers -} // namespace Extensions -} // namespace Envoy diff --git a/source/extensions/tracers/dynamic_ot/dynamic_opentracing_driver_impl.h b/source/extensions/tracers/dynamic_ot/dynamic_opentracing_driver_impl.h deleted file mode 100644 index 712283919b365..0000000000000 --- a/source/extensions/tracers/dynamic_ot/dynamic_opentracing_driver_impl.h +++ /dev/null @@ -1,44 +0,0 @@ -#pragma once - -#include "envoy/runtime/runtime.h" -#include "envoy/thread_local/thread_local.h" -#include "envoy/upstream/cluster_manager.h" - -#include "source/extensions/tracers/common/ot/opentracing_driver_impl.h" - -#include "opentracing/dynamic_load.h" - -namespace Envoy { -namespace Extensions { -namespace Tracers { -namespace DynamicOt { - -/** - * This driver provides support for dynamically loading tracing libraries into Envoy that provide an - * implementation of the OpenTracing API (see https://github.com/opentracing/opentracing-cpp). - * TODO(rnburn): Add an example showing how to use a tracer library with this driver. - */ -class DynamicOpenTracingDriver : public Common::Ot::OpenTracingDriver { -public: - DynamicOpenTracingDriver(Stats::Scope& scope, const std::string& library, - const std::string& tracer_config); - - static std::string formatErrorMessage(std::error_code error_code, - const std::string& error_message); - - // Tracer::OpenTracingDriver - opentracing::Tracer& tracer() override { return *tracer_; } - - PropagationMode propagationMode() const override { - return OpenTracingDriver::PropagationMode::TracerNative; - } - -private: - opentracing::DynamicTracingLibraryHandle library_handle_; - std::shared_ptr tracer_; -}; - -} // namespace DynamicOt -} // namespace Tracers -} // namespace Extensions -} // namespace Envoy diff --git a/test/extensions/tracers/common/ot/BUILD b/test/extensions/tracers/common/ot/BUILD deleted file mode 100644 index e27a825efa2a7..0000000000000 --- a/test/extensions/tracers/common/ot/BUILD +++ /dev/null @@ -1,30 +0,0 @@ -load( - "//bazel:envoy_build_system.bzl", - "envoy_package", -) -load( - "//test/extensions:extensions_build_system.bzl", - "envoy_extension_cc_test", -) - -licenses(["notice"]) # Apache 2 - -envoy_package() - -envoy_extension_cc_test( - name = "opentracing_driver_impl_test", - srcs = [ - "opentracing_driver_impl_test.cc", - ], - extension_names = ["envoy.tracers.dynamic_ot"], - # TODO(wrowe): envoy_extension_ rules don't currently exclude windows extensions - tags = ["skip_on_windows"], - deps = [ - "//source/extensions/tracers/dynamic_ot:dynamic_opentracing_driver_lib", - "//test/mocks/http:http_mocks", - "//test/mocks/stats:stats_mocks", - "//test/mocks/stream_info:stream_info_mocks", - "//test/mocks/tracing:tracing_mocks", - "@io_opentracing_cpp//mocktracer", - ], -) diff --git a/test/extensions/tracers/dynamic_ot/BUILD b/test/extensions/tracers/dynamic_ot/BUILD deleted file mode 100644 index 793c9884499bb..0000000000000 --- a/test/extensions/tracers/dynamic_ot/BUILD +++ /dev/null @@ -1,54 +0,0 @@ -load( - "//bazel:envoy_build_system.bzl", - "envoy_package", -) -load( - "//test/extensions:extensions_build_system.bzl", - "envoy_extension_cc_test", -) - -licenses(["notice"]) # Apache 2 - -envoy_package() - -envoy_extension_cc_test( - name = "dynamic_opentracing_driver_impl_test", - size = "large", - srcs = [ - "dynamic_opentracing_driver_impl_test.cc", - ], - data = [ - "@io_opentracing_cpp//mocktracer:libmocktracer_plugin.so", - ], - extension_names = ["envoy.tracers.dynamic_ot"], - # TODO(wrowe): envoy_extension_ rules don't currently exclude windows extensions - tags = ["skip_on_windows"], - deps = [ - "//source/common/http:header_map_lib", - "//source/extensions/tracers/dynamic_ot:dynamic_opentracing_driver_lib", - "//test/mocks/http:http_mocks", - "//test/mocks/stats:stats_mocks", - "//test/mocks/stream_info:stream_info_mocks", - "//test/mocks/tracing:tracing_mocks", - "//test/test_common:environment_lib", - ], -) - -envoy_extension_cc_test( - name = "config_test", - size = "large", - srcs = ["config_test.cc"], - data = [ - "@io_opentracing_cpp//mocktracer:libmocktracer_plugin.so", - ], - extension_names = ["envoy.tracers.dynamic_ot"], - # TODO(wrowe): envoy_extension_ rules don't currently exclude windows extensions - tags = ["skip_on_windows"], - deps = [ - "//source/extensions/tracers/dynamic_ot:config", - "//test/mocks/server:server_mocks", - "//test/test_common:environment_lib", - "//test/test_common:utility_lib", - "@envoy_api//envoy/config/trace/v3:pkg_cc_proto", - ], -) diff --git a/test/extensions/tracers/dynamic_ot/config_test.cc b/test/extensions/tracers/dynamic_ot/config_test.cc deleted file mode 100644 index 6626f18e90373..0000000000000 --- a/test/extensions/tracers/dynamic_ot/config_test.cc +++ /dev/null @@ -1,63 +0,0 @@ -#include "envoy/config/trace/v3/dynamic_ot.pb.h" -#include "envoy/config/trace/v3/dynamic_ot.pb.validate.h" -#include "envoy/config/trace/v3/http_tracer.pb.h" - -#include "source/extensions/tracers/dynamic_ot/config.h" - -#include "test/mocks/server/tracer_factory.h" -#include "test/mocks/server/tracer_factory_context.h" -#include "test/test_common/environment.h" - -#include "fmt/printf.h" -#include "gmock/gmock.h" -#include "gtest/gtest.h" - -using testing::Eq; -using testing::NiceMock; -using testing::Return; - -namespace Envoy { -namespace Extensions { -namespace Tracers { -namespace DynamicOt { -namespace { - -// TODO(https://github.com/envoyproxy/envoy/issues/34321) -#if !__has_feature(address_sanitizer) -TEST(DynamicOtTracerConfigTest, DEPRECATED_FEATURE_TEST(DynamicOpentracingHttpTracer)) { - NiceMock context; - EXPECT_CALL(context.server_factory_context_.cluster_manager_, - getThreadLocalCluster(Eq("fake_cluster"))) - .WillRepeatedly( - Return(&context.server_factory_context_.cluster_manager_.thread_local_cluster_)); - ON_CALL(*context.server_factory_context_.cluster_manager_.thread_local_cluster_.cluster_.info_, - features()) - .WillByDefault(Return(Upstream::ClusterInfo::Features::HTTP2)); - - const std::string yaml_string = fmt::sprintf( - R"EOF( - http: - name: envoy.tracers.dynamic_ot - typed_config: - "@type": type.googleapis.com/envoy.config.trace.v3.DynamicOtConfig - library: %s - config: - output_file: fake_file - )EOF", - TestEnvironment::runfilesPath("mocktracer/libmocktracer_plugin.so", "io_opentracing_cpp")); - envoy::config::trace::v3::Tracing configuration; - TestUtility::loadFromYaml(yaml_string, configuration); - - DynamicOpenTracingTracerFactory factory; - auto message = Config::Utility::translateToFactoryConfig( - configuration.http(), ProtobufMessage::getStrictValidationVisitor(), factory); - auto tracer = factory.createTracerDriver(*message, context); - EXPECT_NE(nullptr, tracer); -} -#endif - -} // namespace -} // namespace DynamicOt -} // namespace Tracers -} // namespace Extensions -} // namespace Envoy diff --git a/test/extensions/tracers/dynamic_ot/dynamic_opentracing_driver_impl_test.cc b/test/extensions/tracers/dynamic_ot/dynamic_opentracing_driver_impl_test.cc deleted file mode 100644 index eb765feefeafd..0000000000000 --- a/test/extensions/tracers/dynamic_ot/dynamic_opentracing_driver_impl_test.cc +++ /dev/null @@ -1,105 +0,0 @@ -#include - -#include "source/common/http/header_map_impl.h" -#include "source/extensions/tracers/dynamic_ot/dynamic_opentracing_driver_impl.h" - -#include "test/mocks/http/mocks.h" -#include "test/mocks/stats/mocks.h" -#include "test/mocks/stream_info/mocks.h" -#include "test/mocks/tracing/mocks.h" -#include "test/test_common/environment.h" - -#include "fmt/printf.h" -#include "gmock/gmock.h" -#include "gtest/gtest.h" - -namespace Envoy { -namespace Extensions { -namespace Tracers { -namespace DynamicOt { -namespace { - -class DynamicOpenTracingDriverTest : public testing::Test { -public: - void setup(const std::string& library, const std::string& tracer_config) { - driver_ = - std::make_unique(*stats_.rootScope(), library, tracer_config); - } - - void setupValidDriver() { setup(library_path_, tracer_config_); } - - const std::string library_path_ = - TestEnvironment::runfilesPath("mocktracer/libmocktracer_plugin.so", "io_opentracing_cpp"); - const std::string spans_file_ = TestEnvironment::temporaryDirectory() + "/spans.json"; - const std::string tracer_config_ = fmt::sprintf(R"EOF( - { - "output_file": "%s" - } - )EOF", - spans_file_); - std::unique_ptr driver_; - Stats::IsolatedStoreImpl stats_; - - const std::string operation_name_{"test"}; - Tracing::TestTraceContextImpl request_headers_{ - {":path", "/"}, {":method", "GET"}, {"x-request-id", "foo"}}; - - NiceMock config_; - NiceMock stream_info_; -}; - -TEST_F(DynamicOpenTracingDriverTest, FormatErrorMessage) { - const std::error_code error_code = std::make_error_code(std::errc::permission_denied); - EXPECT_EQ(error_code.message(), DynamicOpenTracingDriver::formatErrorMessage(error_code, "")); - EXPECT_EQ(error_code.message() + ": abc", - DynamicOpenTracingDriver::formatErrorMessage(error_code, "abc")); -} - -// TODO(https://github.com/envoyproxy/envoy/issues/34321) -#if !__has_feature(address_sanitizer) -TEST_F(DynamicOpenTracingDriverTest, InitializeDriver) { - { - std::string invalid_library = "abc123"; - std::string invalid_config = R"EOF( - {"fake" : "fake"} - )EOF"; - - EXPECT_THROW(setup(invalid_library, invalid_config), EnvoyException); - } - - { - std::string empty_config = "{}"; - - EXPECT_THROW(setup(library_path_, empty_config), EnvoyException); - } -} - -// This test fails under gcc, please see https://github.com/envoyproxy/envoy/issues/7647 -// for more details. -#ifndef GCC_COMPILER -TEST_F(DynamicOpenTracingDriverTest, FlushSpans) { - setupValidDriver(); - - { - Tracing::SpanPtr first_span = - driver_->startSpan(config_, request_headers_, stream_info_, operation_name_, - {Tracing::Reason::Sampling, true}); - first_span->finishSpan(); - driver_->tracer().Close(); - } - - driver_ = nullptr; - - const Json::ObjectSharedPtr spans_json = - TestEnvironment::jsonLoadFromString(TestEnvironment::readFileToStringForTest(spans_file_)); - EXPECT_NE(spans_json, nullptr); - EXPECT_EQ(spans_json->asObjectArray().size(), 1); -} -#endif // GCC -#endif // ASAN - -} // namespace -} // namespace DynamicOt -} // namespace Tracers -} // namespace Extensions -} // namespace Envoy