https://github.com/oontvoo updated https://github.com/llvm/llvm-project/pull/126588
>From c7734011094995c64137de6f8122033d2a981610 Mon Sep 17 00:00:00 2001 From: Vy Nguyen <v...@google.com> Date: Mon, 10 Feb 2025 14:44:11 -0500 Subject: [PATCH 01/15] Define TelemetryVendor plugin. Details: Upstream in LLDB, we will have a default TelemetryVendor plugin will provide a default Config and NULL TelemetryManager. Downstream vendors can extend this to provide a vendor-specific Config along with a functional TelemetryManager instance. --- lldb/include/lldb/Core/TelemetryVendor.h | 39 +++++++++++++++++++++ lldb/source/Core/TelemetryVendor.cpp | 43 ++++++++++++++++++++++++ 2 files changed, 82 insertions(+) create mode 100644 lldb/include/lldb/Core/TelemetryVendor.h create mode 100644 lldb/source/Core/TelemetryVendor.cpp diff --git a/lldb/include/lldb/Core/TelemetryVendor.h b/lldb/include/lldb/Core/TelemetryVendor.h new file mode 100644 index 0000000000000..a2ab3b69fde42 --- /dev/null +++ b/lldb/include/lldb/Core/TelemetryVendor.h @@ -0,0 +1,39 @@ +//===-- TelemetryVendor.h -------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLDB_CORE_TELEMETRYVENDOR_H +#define LLDB_CORE_TELEMETRYVENDOR_H + +#include "lldb/Core/PluginInterface.h" +#include "lldb/Core/Telemetry.h" +#include "llvm/Telemetry/Telemetry.h" + +#include <memory> + +namespace lldb_private { + +class TelemetryVendor : public PluginInterface { +public: + TelemetryVendor() = default; + + llvm::StringRef GetPluginName() override; + + static void Initialize(); + + static void Terminate(); + + static std::unique_ptr<llvm::telemetry::Config> GetTelemetryConfig(); + static void + SetTelemetryConfig(std::unique_ptr<llvm::telemetry::Config> config); + + static lldb::TelemetryManagerSP GetTelemetryManager(); + static void SetTelemetryManager(const lldb::TelemetryManagerSP &manager_sp); +}; + +} // namespace lldb_private +#endif // LLDB_CORE_TELEMETRYVENDOR_H diff --git a/lldb/source/Core/TelemetryVendor.cpp b/lldb/source/Core/TelemetryVendor.cpp new file mode 100644 index 0000000000000..520a01b9b1c7a --- /dev/null +++ b/lldb/source/Core/TelemetryVendor.cpp @@ -0,0 +1,43 @@ +//===-- TelemetryVendor.cpp -----------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#include "lldb/Core/TelemetryVendor.h" + +namespace lldb_private { + +llvm::StringRef TelemetryVendor::GetPluginName() { + return "UpstreamTelemetryVendor"; +} + +void TelemetryVendor::Initialize() { + // The default (upstream) impl will have telemetry disabled by default. + SetTelemetryConfig( + std::make_unique<llvm::telemetry::Config>(/*enable_telemetry*/ false)); + SetTelemetryManager(nullptr); +} + +static std::unique_ptr<llvm::telemetry::Config> current_config; +std::unique_ptr<llvm::telemetry::Config> TelemetryVendor::GetTelemetryConfig() { + return current_config; +} + +void TelemetryVendor::SetTelemetryConfig( + std::unique_ptr<llvm::telemetry::Config> config) { + current_config = std::move(config); +} + +lldb::TelemetryManagerSP TelemetryVendor::GetTelemetryManager() { + static TelemteryManagerSP g_telemetry_manager_sp; + return g_telemetry_manager_sp; +} + +void SetTelemetryManager(const lldb::TelemetryManagerSP &manager_sp) { + GetTelemetryManager() = manager_sp; +} + +} // namespace lldb_private >From 5f6a04de76a5bf633ca9d14d9907d535301c5c59 Mon Sep 17 00:00:00 2001 From: Vy Nguyen <v...@google.com> Date: Tue, 11 Feb 2025 10:31:00 -0500 Subject: [PATCH 02/15] use shared ptr --- lldb/include/lldb/Core/TelemetryVendor.h | 7 ++++--- lldb/include/lldb/lldb-forward.h | 5 +++++ lldb/source/Core/TelemetryVendor.cpp | 14 +++++++------- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/lldb/include/lldb/Core/TelemetryVendor.h b/lldb/include/lldb/Core/TelemetryVendor.h index a2ab3b69fde42..a55f06fb9141f 100644 --- a/lldb/include/lldb/Core/TelemetryVendor.h +++ b/lldb/include/lldb/Core/TelemetryVendor.h @@ -27,11 +27,12 @@ class TelemetryVendor : public PluginInterface { static void Terminate(); - static std::unique_ptr<llvm::telemetry::Config> GetTelemetryConfig(); - static void - SetTelemetryConfig(std::unique_ptr<llvm::telemetry::Config> config); + static lldb::TelemetryConfig GetTelemetryConfig(); + + static void SetTelemetryConfig(const lldb::TelemetryConfigSP &config); static lldb::TelemetryManagerSP GetTelemetryManager(); + static void SetTelemetryManager(const lldb::TelemetryManagerSP &manager_sp); }; diff --git a/lldb/include/lldb/lldb-forward.h b/lldb/include/lldb/lldb-forward.h index fc7456a4b9a32..2f2a4ec86a1fb 100644 --- a/lldb/include/lldb/lldb-forward.h +++ b/lldb/include/lldb/lldb-forward.h @@ -478,6 +478,11 @@ typedef std::shared_ptr<lldb_private::TypeSummaryOptions> TypeSummaryOptionsSP; typedef std::shared_ptr<lldb_private::ScriptedSyntheticChildren> ScriptedSyntheticChildrenSP; typedef std::shared_ptr<lldb_private::SupportFile> SupportFileSP; +#ifdef LLDB_BUILD_TELEMETRY +typedef std::shared_ptr<llvm::telemetry::Config> TelemetryConfigSP; +typedef std::shared_ptr<lldb_private::telemetry::TelemetryManager> + TelemetryManagerSP; +#endif // LLDB_BUILD_TELEMETRY typedef std::shared_ptr<lldb_private::UnixSignals> UnixSignalsSP; typedef std::weak_ptr<lldb_private::UnixSignals> UnixSignalsWP; typedef std::shared_ptr<lldb_private::UnwindAssembly> UnwindAssemblySP; diff --git a/lldb/source/Core/TelemetryVendor.cpp b/lldb/source/Core/TelemetryVendor.cpp index 520a01b9b1c7a..0005848981f3b 100644 --- a/lldb/source/Core/TelemetryVendor.cpp +++ b/lldb/source/Core/TelemetryVendor.cpp @@ -16,19 +16,19 @@ llvm::StringRef TelemetryVendor::GetPluginName() { void TelemetryVendor::Initialize() { // The default (upstream) impl will have telemetry disabled by default. - SetTelemetryConfig( - std::make_unique<llvm::telemetry::Config>(/*enable_telemetry*/ false)); + SetTelemetryConfig(std::make_shared<new llvm::telemetry::Config>( + /*enable_telemetry*/ false)); SetTelemetryManager(nullptr); } -static std::unique_ptr<llvm::telemetry::Config> current_config; -std::unique_ptr<llvm::telemetry::Config> TelemetryVendor::GetTelemetryConfig() { - return current_config; +lldb::TelemetryConfigSP TelemetryVendor::GetTelemetryConfig() { + static lldb::TelemetryConfigSP g_config_sp; + return g_config_sp; } void TelemetryVendor::SetTelemetryConfig( - std::unique_ptr<llvm::telemetry::Config> config) { - current_config = std::move(config); + const lldb::TelemetryConfigSP &config) { + GetTelemetryCOnfig() = config; } lldb::TelemetryManagerSP TelemetryVendor::GetTelemetryManager() { >From b0335138dc728f7edf8708184e3a414a14bebf39 Mon Sep 17 00:00:00 2001 From: Vy Nguyen <v...@google.com> Date: Tue, 11 Feb 2025 10:51:00 -0500 Subject: [PATCH 03/15] use header guard --- lldb/include/lldb/Core/TelemetryVendor.h | 3 +++ lldb/source/Core/TelemetryVendor.cpp | 3 +++ 2 files changed, 6 insertions(+) diff --git a/lldb/include/lldb/Core/TelemetryVendor.h b/lldb/include/lldb/Core/TelemetryVendor.h index a55f06fb9141f..12a214c233d6c 100644 --- a/lldb/include/lldb/Core/TelemetryVendor.h +++ b/lldb/include/lldb/Core/TelemetryVendor.h @@ -5,6 +5,7 @@ // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// +#ifdef LLDB_BUILD_TELEMETRY #ifndef LLDB_CORE_TELEMETRYVENDOR_H #define LLDB_CORE_TELEMETRYVENDOR_H @@ -38,3 +39,5 @@ class TelemetryVendor : public PluginInterface { } // namespace lldb_private #endif // LLDB_CORE_TELEMETRYVENDOR_H + +#endif // LLDB_BUILD_TELEMETRY diff --git a/lldb/source/Core/TelemetryVendor.cpp b/lldb/source/Core/TelemetryVendor.cpp index 0005848981f3b..2fc68a5fa1b28 100644 --- a/lldb/source/Core/TelemetryVendor.cpp +++ b/lldb/source/Core/TelemetryVendor.cpp @@ -5,6 +5,7 @@ // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// +#ifdef LLDB_BUILD_TELEMETRY #include "lldb/Core/TelemetryVendor.h" @@ -41,3 +42,5 @@ void SetTelemetryManager(const lldb::TelemetryManagerSP &manager_sp) { } } // namespace lldb_private + +#ifdef LLDB_BUILD_TELEMETRY >From 58e1d0f6feb72da6b77b15301c3c6c474443bd0d Mon Sep 17 00:00:00 2001 From: Vy Nguyen <v...@google.com> Date: Tue, 11 Feb 2025 10:59:52 -0500 Subject: [PATCH 04/15] fix cmake --- lldb/source/Core/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/lldb/source/Core/CMakeLists.txt b/lldb/source/Core/CMakeLists.txt index cf5f6ac9da489..db43d6132c595 100644 --- a/lldb/source/Core/CMakeLists.txt +++ b/lldb/source/Core/CMakeLists.txt @@ -58,6 +58,7 @@ add_lldb_library(lldbCore SourceManager.cpp StreamAsynchronousIO.cpp Telemetry.cpp + TelemetryVendor.cpp ThreadedCommunication.cpp UserSettingsController.cpp Value.cpp >From b767a2efb6f1d39e83523cfdf330ddd26a8cf892 Mon Sep 17 00:00:00 2001 From: Vy Nguyen <v...@google.com> Date: Tue, 11 Feb 2025 13:11:30 -0500 Subject: [PATCH 05/15] add header incl --- lldb/include/lldb/lldb-forward.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lldb/include/lldb/lldb-forward.h b/lldb/include/lldb/lldb-forward.h index 2f2a4ec86a1fb..b1696f520a55f 100644 --- a/lldb/include/lldb/lldb-forward.h +++ b/lldb/include/lldb/lldb-forward.h @@ -11,6 +11,11 @@ #include <memory> +#ifdef LLVM_BUILD_TELEMETRY +#include "llvm/Telemetry/Telemetry.h" +#include "lldb/Core/Telemetry.h" +#endif + // lldb forward declarations namespace lldb_private { >From bfc954b1b047330a80b58606193cb035dbf50e42 Mon Sep 17 00:00:00 2001 From: Vy Nguyen <v...@google.com> Date: Wed, 12 Feb 2025 10:20:36 -0500 Subject: [PATCH 06/15] review comment --- lldb/include/lldb/Core/TelemetryVendor.h | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/lldb/include/lldb/Core/TelemetryVendor.h b/lldb/include/lldb/Core/TelemetryVendor.h index 12a214c233d6c..31275a150fb7e 100644 --- a/lldb/include/lldb/Core/TelemetryVendor.h +++ b/lldb/include/lldb/Core/TelemetryVendor.h @@ -5,11 +5,13 @@ // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// -#ifdef LLDB_BUILD_TELEMETRY - #ifndef LLDB_CORE_TELEMETRYVENDOR_H #define LLDB_CORE_TELEMETRYVENDOR_H +#include "llvm/Config/llvm-config.h" + +#ifdef LLVM_BUILD_TELEMETRY + #include "lldb/Core/PluginInterface.h" #include "lldb/Core/Telemetry.h" #include "llvm/Telemetry/Telemetry.h" @@ -23,21 +25,19 @@ class TelemetryVendor : public PluginInterface { TelemetryVendor() = default; llvm::StringRef GetPluginName() override; - static void Initialize(); - static void Terminate(); - static lldb::TelemetryConfig GetTelemetryConfig(); - - static void SetTelemetryConfig(const lldb::TelemetryConfigSP &config); - static lldb::TelemetryManagerSP GetTelemetryManager(); + +protected: + static void SetTelemetryConfig(const lldb::TelemetryConfigSP &config); static void SetTelemetryManager(const lldb::TelemetryManagerSP &manager_sp); }; } // namespace lldb_private -#endif // LLDB_CORE_TELEMETRYVENDOR_H -#endif // LLDB_BUILD_TELEMETRY +#endif // LLVM_BUILD_TELEMETRY + +#endif // LLDB_CORE_TELEMETRYVENDOR_H >From b3c50f1706bacdfa8fdecfd865c0be370f6cddab Mon Sep 17 00:00:00 2001 From: Vy Nguyen <v...@google.com> Date: Wed, 12 Feb 2025 10:36:29 -0500 Subject: [PATCH 07/15] addressed review commeht --- lldb/include/lldb/Core/TelemetryVendor.h | 9 ++++---- lldb/include/lldb/lldb-forward.h | 11 +++++---- lldb/source/Core/TelemetryVendor.cpp | 29 +++++++++++++----------- 3 files changed, 26 insertions(+), 23 deletions(-) diff --git a/lldb/include/lldb/Core/TelemetryVendor.h b/lldb/include/lldb/Core/TelemetryVendor.h index 31275a150fb7e..d906a9a26ea49 100644 --- a/lldb/include/lldb/Core/TelemetryVendor.h +++ b/lldb/include/lldb/Core/TelemetryVendor.h @@ -27,13 +27,12 @@ class TelemetryVendor : public PluginInterface { llvm::StringRef GetPluginName() override; static void Initialize(); static void Terminate(); - static lldb::TelemetryConfig GetTelemetryConfig(); - static lldb::TelemetryManagerSP GetTelemetryManager(); - + static llvm::telemetry::Config *GetTelemetryConfig(); + static telemetry::TelemetryManager *GetTelemetryManager(); protected: - static void SetTelemetryConfig(const lldb::TelemetryConfigSP &config); - static void SetTelemetryManager(const lldb::TelemetryManagerSP &manager_sp); + static void SetTelemetryConfig(const lldb::TelemetryConfigUP &config); + static void SetTelemetryManager(const lldb::TelemetryManagerUP &manager_sp); }; } // namespace lldb_private diff --git a/lldb/include/lldb/lldb-forward.h b/lldb/include/lldb/lldb-forward.h index b1696f520a55f..7b5cd1e82951b 100644 --- a/lldb/include/lldb/lldb-forward.h +++ b/lldb/include/lldb/lldb-forward.h @@ -11,6 +11,7 @@ #include <memory> +#include "llvm/Config/llvm-config.h" #ifdef LLVM_BUILD_TELEMETRY #include "llvm/Telemetry/Telemetry.h" #include "lldb/Core/Telemetry.h" @@ -483,11 +484,11 @@ typedef std::shared_ptr<lldb_private::TypeSummaryOptions> TypeSummaryOptionsSP; typedef std::shared_ptr<lldb_private::ScriptedSyntheticChildren> ScriptedSyntheticChildrenSP; typedef std::shared_ptr<lldb_private::SupportFile> SupportFileSP; -#ifdef LLDB_BUILD_TELEMETRY -typedef std::shared_ptr<llvm::telemetry::Config> TelemetryConfigSP; -typedef std::shared_ptr<lldb_private::telemetry::TelemetryManager> - TelemetryManagerSP; -#endif // LLDB_BUILD_TELEMETRY +#ifdef LLVM_BUILD_TELEMETRY +typedef std::unique_ptr<llvm::telemetry::Config> TelemetryConfigUP; +typedef std::unique_ptr<lldb_private::telemetry::TelemetryManager> + TelemetryManagerUP; +#endif // LLVM_BUILD_TELEMETRY typedef std::shared_ptr<lldb_private::UnixSignals> UnixSignalsSP; typedef std::weak_ptr<lldb_private::UnixSignals> UnixSignalsWP; typedef std::shared_ptr<lldb_private::UnwindAssembly> UnwindAssemblySP; diff --git a/lldb/source/Core/TelemetryVendor.cpp b/lldb/source/Core/TelemetryVendor.cpp index 2fc68a5fa1b28..588063c2f82e0 100644 --- a/lldb/source/Core/TelemetryVendor.cpp +++ b/lldb/source/Core/TelemetryVendor.cpp @@ -5,7 +5,10 @@ // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// -#ifdef LLDB_BUILD_TELEMETRY + +#include "llvm/Config/llvm-config.h" + +#ifdef LLVM_BUILD_TELEMETRY #include "lldb/Core/TelemetryVendor.h" @@ -22,25 +25,25 @@ void TelemetryVendor::Initialize() { SetTelemetryManager(nullptr); } -lldb::TelemetryConfigSP TelemetryVendor::GetTelemetryConfig() { - static lldb::TelemetryConfigSP g_config_sp; - return g_config_sp; +static lldb::TelemetryConfigUP g_config_up = + std::make_unique<llvm::telemetry::Config>(/*enable_telemetry*/ false); +lldb::TelemetryConfig *TelemetryVendor::GetTelemetryConfig() { + return g_config_up.get(); } -void TelemetryVendor::SetTelemetryConfig( - const lldb::TelemetryConfigSP &config) { - GetTelemetryCOnfig() = config; +static lldb::TelemteryManagerUP g_telemetry_manager_up = nullptr; +lldb::TelemetryManagerSP TelemetryVendor::GetTelemetryManager() { + return g_telemetry_manager_sp.get(); } -lldb::TelemetryManagerSP TelemetryVendor::GetTelemetryManager() { - static TelemteryManagerSP g_telemetry_manager_sp; - return g_telemetry_manager_sp; +void TelemetryVendor::SetTelemetryConfig(lldb::TelemetryConfigUP config) { + g_config_up = std::move(config); } -void SetTelemetryManager(const lldb::TelemetryManagerSP &manager_sp) { - GetTelemetryManager() = manager_sp; +void SetTelemetryManager(lldb::TelemetryManagerUP &manager) { + g_telemetry_manger_up = std::move(manager); } } // namespace lldb_private -#ifdef LLDB_BUILD_TELEMETRY +#endif LLVM_BUILD_TELEMETRY >From 0a43bd9e882487d29341d9d3089c5b26d592a4fa Mon Sep 17 00:00:00 2001 From: Vy Nguyen <v...@google.com> Date: Wed, 12 Feb 2025 10:38:26 -0500 Subject: [PATCH 08/15] remove getpluginname --- lldb/include/lldb/Core/TelemetryVendor.h | 3 --- lldb/source/Core/TelemetryVendor.cpp | 4 ---- 2 files changed, 7 deletions(-) diff --git a/lldb/include/lldb/Core/TelemetryVendor.h b/lldb/include/lldb/Core/TelemetryVendor.h index d906a9a26ea49..6509f7d8536da 100644 --- a/lldb/include/lldb/Core/TelemetryVendor.h +++ b/lldb/include/lldb/Core/TelemetryVendor.h @@ -22,9 +22,6 @@ namespace lldb_private { class TelemetryVendor : public PluginInterface { public: - TelemetryVendor() = default; - - llvm::StringRef GetPluginName() override; static void Initialize(); static void Terminate(); static llvm::telemetry::Config *GetTelemetryConfig(); diff --git a/lldb/source/Core/TelemetryVendor.cpp b/lldb/source/Core/TelemetryVendor.cpp index 588063c2f82e0..7f69a93324a6a 100644 --- a/lldb/source/Core/TelemetryVendor.cpp +++ b/lldb/source/Core/TelemetryVendor.cpp @@ -14,10 +14,6 @@ namespace lldb_private { -llvm::StringRef TelemetryVendor::GetPluginName() { - return "UpstreamTelemetryVendor"; -} - void TelemetryVendor::Initialize() { // The default (upstream) impl will have telemetry disabled by default. SetTelemetryConfig(std::make_shared<new llvm::telemetry::Config>( >From 5d80f30770553772f41813493eb22d296d305f9c Mon Sep 17 00:00:00 2001 From: Vy Nguyen <v...@google.com> Date: Wed, 12 Feb 2025 10:40:16 -0500 Subject: [PATCH 09/15] simplified init/terminate --- lldb/include/lldb/Core/TelemetryVendor.h | 4 ++-- lldb/source/Core/TelemetryVendor.cpp | 7 ------- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/lldb/include/lldb/Core/TelemetryVendor.h b/lldb/include/lldb/Core/TelemetryVendor.h index 6509f7d8536da..07f45538b7457 100644 --- a/lldb/include/lldb/Core/TelemetryVendor.h +++ b/lldb/include/lldb/Core/TelemetryVendor.h @@ -22,8 +22,8 @@ namespace lldb_private { class TelemetryVendor : public PluginInterface { public: - static void Initialize(); - static void Terminate(); + static void Initialize() {} + static void Terminate() {} static llvm::telemetry::Config *GetTelemetryConfig(); static telemetry::TelemetryManager *GetTelemetryManager(); diff --git a/lldb/source/Core/TelemetryVendor.cpp b/lldb/source/Core/TelemetryVendor.cpp index 7f69a93324a6a..cc9d01cf1772f 100644 --- a/lldb/source/Core/TelemetryVendor.cpp +++ b/lldb/source/Core/TelemetryVendor.cpp @@ -14,13 +14,6 @@ namespace lldb_private { -void TelemetryVendor::Initialize() { - // The default (upstream) impl will have telemetry disabled by default. - SetTelemetryConfig(std::make_shared<new llvm::telemetry::Config>( - /*enable_telemetry*/ false)); - SetTelemetryManager(nullptr); -} - static lldb::TelemetryConfigUP g_config_up = std::make_unique<llvm::telemetry::Config>(/*enable_telemetry*/ false); lldb::TelemetryConfig *TelemetryVendor::GetTelemetryConfig() { >From 57f8e863fbafaf4b47b39a3e022ec7dedda823a6 Mon Sep 17 00:00:00 2001 From: Vy Nguyen <v...@google.com> Date: Wed, 12 Feb 2025 10:47:41 -0500 Subject: [PATCH 10/15] fix namespace --- lldb/include/lldb/Core/TelemetryVendor.h | 4 ++-- lldb/include/lldb/lldb-forward.h | 10 +++++----- lldb/source/Core/TelemetryVendor.cpp | 8 ++++---- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/lldb/include/lldb/Core/TelemetryVendor.h b/lldb/include/lldb/Core/TelemetryVendor.h index 07f45538b7457..54aba3bd14422 100644 --- a/lldb/include/lldb/Core/TelemetryVendor.h +++ b/lldb/include/lldb/Core/TelemetryVendor.h @@ -28,8 +28,8 @@ class TelemetryVendor : public PluginInterface { static telemetry::TelemetryManager *GetTelemetryManager(); protected: - static void SetTelemetryConfig(const lldb::TelemetryConfigUP &config); - static void SetTelemetryManager(const lldb::TelemetryManagerUP &manager_sp); + static void SetTelemetryConfig(const TelemetryConfigUP &config); + static void SetTelemetryManager(const TelemetryManagerUP &manager_sp); }; } // namespace lldb_private diff --git a/lldb/include/lldb/lldb-forward.h b/lldb/include/lldb/lldb-forward.h index 7b5cd1e82951b..71dd1e34ebc3b 100644 --- a/lldb/include/lldb/lldb-forward.h +++ b/lldb/include/lldb/lldb-forward.h @@ -243,6 +243,11 @@ class Progress; class Target; class TargetList; class TargetProperties; +#ifdef LLVM_BUILD_TELEMETRY +typedef std::unique_ptr<llvm::telemetry::Config> TelemetryConfigUP; +typedef std::unique_ptr<lldb_private::telemetry::TelemetryManager> + TelemetryManagerUP; +#endif // LLVM_BUILD_TELEMETRY class Thread; class ThreadCollection; class ThreadList; @@ -484,11 +489,6 @@ typedef std::shared_ptr<lldb_private::TypeSummaryOptions> TypeSummaryOptionsSP; typedef std::shared_ptr<lldb_private::ScriptedSyntheticChildren> ScriptedSyntheticChildrenSP; typedef std::shared_ptr<lldb_private::SupportFile> SupportFileSP; -#ifdef LLVM_BUILD_TELEMETRY -typedef std::unique_ptr<llvm::telemetry::Config> TelemetryConfigUP; -typedef std::unique_ptr<lldb_private::telemetry::TelemetryManager> - TelemetryManagerUP; -#endif // LLVM_BUILD_TELEMETRY typedef std::shared_ptr<lldb_private::UnixSignals> UnixSignalsSP; typedef std::weak_ptr<lldb_private::UnixSignals> UnixSignalsWP; typedef std::shared_ptr<lldb_private::UnwindAssembly> UnwindAssemblySP; diff --git a/lldb/source/Core/TelemetryVendor.cpp b/lldb/source/Core/TelemetryVendor.cpp index cc9d01cf1772f..5598526e3a55b 100644 --- a/lldb/source/Core/TelemetryVendor.cpp +++ b/lldb/source/Core/TelemetryVendor.cpp @@ -14,22 +14,22 @@ namespace lldb_private { -static lldb::TelemetryConfigUP g_config_up = +static TelemetryConfigUP g_config_up = std::make_unique<llvm::telemetry::Config>(/*enable_telemetry*/ false); lldb::TelemetryConfig *TelemetryVendor::GetTelemetryConfig() { return g_config_up.get(); } -static lldb::TelemteryManagerUP g_telemetry_manager_up = nullptr; +static TelemteryManagerUP g_telemetry_manager_up = nullptr; lldb::TelemetryManagerSP TelemetryVendor::GetTelemetryManager() { return g_telemetry_manager_sp.get(); } -void TelemetryVendor::SetTelemetryConfig(lldb::TelemetryConfigUP config) { +void TelemetryVendor::SetTelemetryConfig(TelemetryConfigUP config) { g_config_up = std::move(config); } -void SetTelemetryManager(lldb::TelemetryManagerUP &manager) { +void SetTelemetryManager(TelemetryManagerUP &manager) { g_telemetry_manger_up = std::move(manager); } >From 5f14bc53d2f9f983d14965a50d05b50b199c90c7 Mon Sep 17 00:00:00 2001 From: Vy Nguyen <v...@google.com> Date: Wed, 12 Feb 2025 11:19:38 -0500 Subject: [PATCH 11/15] remove TelemetryVendor --- lldb/include/lldb/Core/Telemetry.h | 8 ++++- lldb/include/lldb/Core/TelemetryVendor.h | 39 ------------------------ lldb/include/lldb/lldb-forward.h | 11 ------- lldb/source/Core/CMakeLists.txt | 1 - lldb/source/Core/Telemetry.cpp | 7 +++++ lldb/source/Core/TelemetryVendor.cpp | 38 ----------------------- 6 files changed, 14 insertions(+), 90 deletions(-) delete mode 100644 lldb/include/lldb/Core/TelemetryVendor.h delete mode 100644 lldb/source/Core/TelemetryVendor.cpp diff --git a/lldb/include/lldb/Core/Telemetry.h b/lldb/include/lldb/Core/Telemetry.h index 60a7097de5eee..97a654ecfba9b 100644 --- a/lldb/include/lldb/Core/Telemetry.h +++ b/lldb/include/lldb/Core/Telemetry.h @@ -61,9 +61,15 @@ struct LLDBBaseTelemetryInfo : public llvm::telemetry::TelemetryInfo { /// applicable to LLDB. class TelemetryManager : public llvm::telemetry::Manager { public: + llvm::Error preDispatch(llvm::telemetry::TelemetryInfo *entry) override; + + static TelemetryManager *getInstance(); + +protected: TelemetryManager(std::unique_ptr<llvm::telemetry::Config> config); - llvm::Error preDispatch(llvm::telemetry::TelemetryInfo *entry) override; + static std::unique_ptr<TelemetryManager> g_instance; + static void SetInstance(std::unique_ptr<TelemetryManager> manger); private: std::unique_ptr<llvm::telemetry::Config> m_config; diff --git a/lldb/include/lldb/Core/TelemetryVendor.h b/lldb/include/lldb/Core/TelemetryVendor.h deleted file mode 100644 index 54aba3bd14422..0000000000000 --- a/lldb/include/lldb/Core/TelemetryVendor.h +++ /dev/null @@ -1,39 +0,0 @@ -//===-- TelemetryVendor.h -------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// -#ifndef LLDB_CORE_TELEMETRYVENDOR_H -#define LLDB_CORE_TELEMETRYVENDOR_H - -#include "llvm/Config/llvm-config.h" - -#ifdef LLVM_BUILD_TELEMETRY - -#include "lldb/Core/PluginInterface.h" -#include "lldb/Core/Telemetry.h" -#include "llvm/Telemetry/Telemetry.h" - -#include <memory> - -namespace lldb_private { - -class TelemetryVendor : public PluginInterface { -public: - static void Initialize() {} - static void Terminate() {} - static llvm::telemetry::Config *GetTelemetryConfig(); - static telemetry::TelemetryManager *GetTelemetryManager(); - -protected: - static void SetTelemetryConfig(const TelemetryConfigUP &config); - static void SetTelemetryManager(const TelemetryManagerUP &manager_sp); -}; - -} // namespace lldb_private - -#endif // LLVM_BUILD_TELEMETRY - -#endif // LLDB_CORE_TELEMETRYVENDOR_H diff --git a/lldb/include/lldb/lldb-forward.h b/lldb/include/lldb/lldb-forward.h index 71dd1e34ebc3b..fc7456a4b9a32 100644 --- a/lldb/include/lldb/lldb-forward.h +++ b/lldb/include/lldb/lldb-forward.h @@ -11,12 +11,6 @@ #include <memory> -#include "llvm/Config/llvm-config.h" -#ifdef LLVM_BUILD_TELEMETRY -#include "llvm/Telemetry/Telemetry.h" -#include "lldb/Core/Telemetry.h" -#endif - // lldb forward declarations namespace lldb_private { @@ -243,11 +237,6 @@ class Progress; class Target; class TargetList; class TargetProperties; -#ifdef LLVM_BUILD_TELEMETRY -typedef std::unique_ptr<llvm::telemetry::Config> TelemetryConfigUP; -typedef std::unique_ptr<lldb_private::telemetry::TelemetryManager> - TelemetryManagerUP; -#endif // LLVM_BUILD_TELEMETRY class Thread; class ThreadCollection; class ThreadList; diff --git a/lldb/source/Core/CMakeLists.txt b/lldb/source/Core/CMakeLists.txt index 46f240865d565..82fb5f42f9f4b 100644 --- a/lldb/source/Core/CMakeLists.txt +++ b/lldb/source/Core/CMakeLists.txt @@ -57,7 +57,6 @@ add_lldb_library(lldbCore SourceManager.cpp StreamAsynchronousIO.cpp Telemetry.cpp - TelemetryVendor.cpp ThreadedCommunication.cpp UserSettingsController.cpp Value.cpp diff --git a/lldb/source/Core/Telemetry.cpp b/lldb/source/Core/Telemetry.cpp index 0d0d7c1df3bb9..be6cec203d758 100644 --- a/lldb/source/Core/Telemetry.cpp +++ b/lldb/source/Core/Telemetry.cpp @@ -70,6 +70,13 @@ llvm::Error TelemetryManager::preDispatch(TelemetryInfo *entry) { return Error::success(); } +std::unique_ptr<TelemetryManager> TelemetryManager::g_instance = nullptr; +TelemetryManager *TelemetryManager::getInstance() { return g_instance.get(); } + +void TelemetryManager::SetInstance(std::unique_ptr<TelemetryManager> manager) { + g_instance = std::move(manager); +} + } // namespace telemetry } // namespace lldb_private diff --git a/lldb/source/Core/TelemetryVendor.cpp b/lldb/source/Core/TelemetryVendor.cpp deleted file mode 100644 index 5598526e3a55b..0000000000000 --- a/lldb/source/Core/TelemetryVendor.cpp +++ /dev/null @@ -1,38 +0,0 @@ -//===-- TelemetryVendor.cpp -----------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "llvm/Config/llvm-config.h" - -#ifdef LLVM_BUILD_TELEMETRY - -#include "lldb/Core/TelemetryVendor.h" - -namespace lldb_private { - -static TelemetryConfigUP g_config_up = - std::make_unique<llvm::telemetry::Config>(/*enable_telemetry*/ false); -lldb::TelemetryConfig *TelemetryVendor::GetTelemetryConfig() { - return g_config_up.get(); -} - -static TelemteryManagerUP g_telemetry_manager_up = nullptr; -lldb::TelemetryManagerSP TelemetryVendor::GetTelemetryManager() { - return g_telemetry_manager_sp.get(); -} - -void TelemetryVendor::SetTelemetryConfig(TelemetryConfigUP config) { - g_config_up = std::move(config); -} - -void SetTelemetryManager(TelemetryManagerUP &manager) { - g_telemetry_manger_up = std::move(manager); -} - -} // namespace lldb_private - -#endif LLVM_BUILD_TELEMETRY >From d19a9d407bc1443a70f886e3709f04f49433419a Mon Sep 17 00:00:00 2001 From: Vy Nguyen <v...@google.com> Date: Wed, 12 Feb 2025 14:11:19 -0500 Subject: [PATCH 12/15] add unittest --- lldb/include/lldb/Core/Telemetry.h | 4 +- .../unittests/telemetry_plugin/CMakeLists.txt | 27 +++++++++++++ .../unittests/telemetry_plugin/FakePlugin.cpp | 35 +++++++++++++++++ lldb/unittests/telemetry_plugin/FakePlugin.h | 39 +++++++++++++++++++ .../telemetry_plugin/TestFakePlugin.cpp | 25 ++++++++++++ 5 files changed, 129 insertions(+), 1 deletion(-) create mode 100644 lldb/unittests/telemetry_plugin/CMakeLists.txt create mode 100644 lldb/unittests/telemetry_plugin/FakePlugin.cpp create mode 100644 lldb/unittests/telemetry_plugin/FakePlugin.h create mode 100644 lldb/unittests/telemetry_plugin/TestFakePlugin.cpp diff --git a/lldb/include/lldb/Core/Telemetry.h b/lldb/include/lldb/Core/Telemetry.h index 97a654ecfba9b..037cd9aa8f49b 100644 --- a/lldb/include/lldb/Core/Telemetry.h +++ b/lldb/include/lldb/Core/Telemetry.h @@ -9,6 +9,7 @@ #ifndef LLDB_CORE_TELEMETRY_H #define LLDB_CORE_TELEMETRY_H +#include "lldb/Core/PluginInterface.h" #include "lldb/Core/StructuredDataImpl.h" #include "lldb/Interpreter/CommandReturnObject.h" #include "lldb/Utility/StructuredData.h" @@ -59,7 +60,8 @@ struct LLDBBaseTelemetryInfo : public llvm::telemetry::TelemetryInfo { /// The base Telemetry manager instance in LLDB /// This class declares additional instrumentation points /// applicable to LLDB. -class TelemetryManager : public llvm::telemetry::Manager { +class TelemetryManager : public llvm::telemetry::Manager, + public PluginInterface { public: llvm::Error preDispatch(llvm::telemetry::TelemetryInfo *entry) override; diff --git a/lldb/unittests/telemetry_plugin/CMakeLists.txt b/lldb/unittests/telemetry_plugin/CMakeLists.txt new file mode 100644 index 0000000000000..4b8b3dc859a99 --- /dev/null +++ b/lldb/unittests/telemetry_plugin/CMakeLists.txt @@ -0,0 +1,27 @@ +if (LLVM_BUILD_TELEMETRY) + add_lldb_library(lldbPluginTelemetryFakePlugin PLUGIN + FakePlugin.cpp + + LINK_LIBS + lldbCore + lldbUtility + lldbPluginProcessUtility + LINK_COMPONENTS + Support + Telemetry + ) + + add_lldb_unittest(TestFakePlugin + TestFakePlugin.cpp + + LINK_LIBS + lldbPluginTelemetryFakePlugin + lldbCore + lldbUtilityHelpers + LLVMTestingSupport + + LINK_COMPONENTS + Support + Telemetry + ) +endif() diff --git a/lldb/unittests/telemetry_plugin/FakePlugin.cpp b/lldb/unittests/telemetry_plugin/FakePlugin.cpp new file mode 100644 index 0000000000000..7ee562da98db7 --- /dev/null +++ b/lldb/unittests/telemetry_plugin/FakePlugin.cpp @@ -0,0 +1,35 @@ +//===-- FakePlugin.cpp ------------------------------------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#include "lldb/Core/PluginInterface.h" +#include "lldb/Core/PluginManager.h" +#include "lldb/Core/Telemetry.h" +#include "llvm/ADT/StringRef.h" +#include "llvm/Support/Error.h" +#include "llvm/Telemetry/Telemetry.h" + +#include "FakePlugin.h" + +#include <memory> + +LLDB_PLUGIN_DEFINE(FakePlugin) + +llvm::Error FakePlugin::preDispatch(TelemetryInfo *entry) { + dynamic_cast<FakeTelemetryInfo>(entry)->msg = "In FakePlugin"; + return Error::success(); +} + +void FakePlugin::Initialize() { + lldb_private::telemetry::TelemetryManager::setInstance( + std::make_unique<FakePlugin>()); + // TODO: do we need all the PluginManagerL::RegisterPlugin() stuff??? +} + +void FakePlugin::Terminate() { + // nothing to do? +} diff --git a/lldb/unittests/telemetry_plugin/FakePlugin.h b/lldb/unittests/telemetry_plugin/FakePlugin.h new file mode 100644 index 0000000000000..75e4b7bf116d3 --- /dev/null +++ b/lldb/unittests/telemetry_plugin/FakePlugin.h @@ -0,0 +1,39 @@ +//===-- FakePlugin.h --------------------------------------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLDB_SOURCE_PLUGINS_TELEMETRY_FAKE_PLUGIN_H +#define LLDB_SOURCE_PLUGINS_TELEMETRY_FAKE_PLUGIN_H + +#include "lldb/Core/PluginInterface.h" +#include "lldb/Core/Telemetry.h" +#include "llvm/ADT/StringRef.h" +#include "llvm/Support/Error.h" +#include "llvm/Telemetry/Telemetry.h" + +struct FakeTelemetryInfo : public llvm::telemetry::TelemetryInfo { + std::string msg; +}; + +class FakePlugin : public lldb_private::TelemetryManager { +public: + FakePlugin() = default; + + // TelemetryManager interface + llvm::Error preDistpatch(TelemetryInfo *entry) override; + + // Plugin interface + llvm::StringRef GetPluginName() override { return GetPluginNameStatic(); } + + static void Initialize(); + + static void Terminate(); + + static llvm::StringRef GetPluginNameStatic() { return "FakeTelemetryPlugin"; } +}; + +#endif diff --git a/lldb/unittests/telemetry_plugin/TestFakePlugin.cpp b/lldb/unittests/telemetry_plugin/TestFakePlugin.cpp new file mode 100644 index 0000000000000..593599f2c46a3 --- /dev/null +++ b/lldb/unittests/telemetry_plugin/TestFakePlugin.cpp @@ -0,0 +1,25 @@ +//===-- TestFakePlugin.cpp ------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#include "FakePlugin.h" +#include "lldb/Core/PluginInterface.h" +#include "lldb/Core/PluginManager.h" +#include "lldb/Core/Telemetry.h" +#include "llvm/ADT/StringRef.h" +#include "llvm/Support/Error.h" +#include "llvm/Telemetry/Telemetry.h" +#include "gtest/gtest.h" + +#include <memory> + +TEST(SmokeTest) { + + auto ins = lldb_private::telemetry::TelemetryManager::getInstance(); + + ASSERT_NE(ins, nullptr); +} >From 7ac7268561a3907961ea6269839dd836ba35e2b9 Mon Sep 17 00:00:00 2001 From: Vy Nguyen <v...@google.com> Date: Wed, 12 Feb 2025 14:17:48 -0500 Subject: [PATCH 13/15] fixup cmake file --- lldb/unittests/CMakeLists.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lldb/unittests/CMakeLists.txt b/lldb/unittests/CMakeLists.txt index cc9d45ebf981d..1010358981fed 100644 --- a/lldb/unittests/CMakeLists.txt +++ b/lldb/unittests/CMakeLists.txt @@ -79,3 +79,7 @@ add_subdirectory(ValueObject) if(LLDB_CAN_USE_DEBUGSERVER AND LLDB_TOOL_DEBUGSERVER_BUILD AND NOT LLDB_USE_SYSTEM_DEBUGSERVER) add_subdirectory(debugserver) endif() + +if(LLVM_BUILD_TELEMETRY) + add_subdirectory(telemetry_plugin) +endif() >From 2e859c1a91f8311d09a572179553ee7d6af6c396 Mon Sep 17 00:00:00 2001 From: Vy Nguyen <v...@google.com> Date: Wed, 12 Feb 2025 14:26:15 -0500 Subject: [PATCH 14/15] reorg dir --- lldb/unittests/CMakeLists.txt | 2 +- lldb/unittests/telemetry/CMakeLists.txt | 17 +++++++++++++++++ .../TestFakePlugin.cpp | 0 .../plugin}/CMakeLists.txt | 14 -------------- .../plugin}/FakePlugin.cpp | 0 .../plugin}/FakePlugin.h | 0 6 files changed, 18 insertions(+), 15 deletions(-) create mode 100644 lldb/unittests/telemetry/CMakeLists.txt rename lldb/unittests/{telemetry_plugin => telemetry}/TestFakePlugin.cpp (100%) rename lldb/unittests/{telemetry_plugin => telemetry/plugin}/CMakeLists.txt (53%) rename lldb/unittests/{telemetry_plugin => telemetry/plugin}/FakePlugin.cpp (100%) rename lldb/unittests/{telemetry_plugin => telemetry/plugin}/FakePlugin.h (100%) diff --git a/lldb/unittests/CMakeLists.txt b/lldb/unittests/CMakeLists.txt index 1010358981fed..2023aa6d08a33 100644 --- a/lldb/unittests/CMakeLists.txt +++ b/lldb/unittests/CMakeLists.txt @@ -81,5 +81,5 @@ if(LLDB_CAN_USE_DEBUGSERVER AND LLDB_TOOL_DEBUGSERVER_BUILD AND NOT LLDB_USE_SYS endif() if(LLVM_BUILD_TELEMETRY) - add_subdirectory(telemetry_plugin) + add_subdirectory(telemetry) endif() diff --git a/lldb/unittests/telemetry/CMakeLists.txt b/lldb/unittests/telemetry/CMakeLists.txt new file mode 100644 index 0000000000000..a3fd0196e0d42 --- /dev/null +++ b/lldb/unittests/telemetry/CMakeLists.txt @@ -0,0 +1,17 @@ +if (LLVM_BUILD_TELEMETRY) + add_subdirectory(plugin) + + add_lldb_unittest(FakePluginTests + TestFakePlugin.cpp + + LINK_LIBS + lldbPluginTelemetryFakePlugin + lldbCore + lldbUtilityHelpers + LLVMTestingSupport + + LINK_COMPONENTS + Support + Telemetry + ) +endif() diff --git a/lldb/unittests/telemetry_plugin/TestFakePlugin.cpp b/lldb/unittests/telemetry/TestFakePlugin.cpp similarity index 100% rename from lldb/unittests/telemetry_plugin/TestFakePlugin.cpp rename to lldb/unittests/telemetry/TestFakePlugin.cpp diff --git a/lldb/unittests/telemetry_plugin/CMakeLists.txt b/lldb/unittests/telemetry/plugin/CMakeLists.txt similarity index 53% rename from lldb/unittests/telemetry_plugin/CMakeLists.txt rename to lldb/unittests/telemetry/plugin/CMakeLists.txt index 4b8b3dc859a99..0d515d5a5afee 100644 --- a/lldb/unittests/telemetry_plugin/CMakeLists.txt +++ b/lldb/unittests/telemetry/plugin/CMakeLists.txt @@ -10,18 +10,4 @@ if (LLVM_BUILD_TELEMETRY) Support Telemetry ) - - add_lldb_unittest(TestFakePlugin - TestFakePlugin.cpp - - LINK_LIBS - lldbPluginTelemetryFakePlugin - lldbCore - lldbUtilityHelpers - LLVMTestingSupport - - LINK_COMPONENTS - Support - Telemetry - ) endif() diff --git a/lldb/unittests/telemetry_plugin/FakePlugin.cpp b/lldb/unittests/telemetry/plugin/FakePlugin.cpp similarity index 100% rename from lldb/unittests/telemetry_plugin/FakePlugin.cpp rename to lldb/unittests/telemetry/plugin/FakePlugin.cpp diff --git a/lldb/unittests/telemetry_plugin/FakePlugin.h b/lldb/unittests/telemetry/plugin/FakePlugin.h similarity index 100% rename from lldb/unittests/telemetry_plugin/FakePlugin.h rename to lldb/unittests/telemetry/plugin/FakePlugin.h >From 2a3143d62d9139f0bf5b730674da65e734c0f595 Mon Sep 17 00:00:00 2001 From: Vy Nguyen <v...@google.com> Date: Wed, 12 Feb 2025 14:48:43 -0500 Subject: [PATCH 15/15] fix test --- lldb/unittests/telemetry/TestFakePlugin.cpp | 4 ++-- .../unittests/telemetry/plugin/FakePlugin.cpp | 24 +++++++++++++------ lldb/unittests/telemetry/plugin/FakePlugin.h | 10 +++++--- 3 files changed, 26 insertions(+), 12 deletions(-) diff --git a/lldb/unittests/telemetry/TestFakePlugin.cpp b/lldb/unittests/telemetry/TestFakePlugin.cpp index 593599f2c46a3..e337a0eaff7bd 100644 --- a/lldb/unittests/telemetry/TestFakePlugin.cpp +++ b/lldb/unittests/telemetry/TestFakePlugin.cpp @@ -6,10 +6,10 @@ // //===----------------------------------------------------------------------===// -#include "FakePlugin.h" #include "lldb/Core/PluginInterface.h" #include "lldb/Core/PluginManager.h" #include "lldb/Core/Telemetry.h" +#include "plugin/FakePlugin.h" #include "llvm/ADT/StringRef.h" #include "llvm/Support/Error.h" #include "llvm/Telemetry/Telemetry.h" @@ -17,7 +17,7 @@ #include <memory> -TEST(SmokeTest) { +TEST(SmokeTest, Test) { auto ins = lldb_private::telemetry::TelemetryManager::getInstance(); diff --git a/lldb/unittests/telemetry/plugin/FakePlugin.cpp b/lldb/unittests/telemetry/plugin/FakePlugin.cpp index 7ee562da98db7..dc91aa15132b4 100644 --- a/lldb/unittests/telemetry/plugin/FakePlugin.cpp +++ b/lldb/unittests/telemetry/plugin/FakePlugin.cpp @@ -6,30 +6,40 @@ // //===----------------------------------------------------------------------===// +#include "FakePlugin.h" #include "lldb/Core/PluginInterface.h" #include "lldb/Core/PluginManager.h" #include "lldb/Core/Telemetry.h" #include "llvm/ADT/StringRef.h" +#include "llvm/Support/Casting.h" #include "llvm/Support/Error.h" #include "llvm/Telemetry/Telemetry.h" -#include "FakePlugin.h" - #include <memory> LLDB_PLUGIN_DEFINE(FakePlugin) -llvm::Error FakePlugin::preDispatch(TelemetryInfo *entry) { - dynamic_cast<FakeTelemetryInfo>(entry)->msg = "In FakePlugin"; - return Error::success(); +namespace lldb_private { + +FakePlugin::FakePlugin() + : telemetry::TelemetryManager( + std::make_unique<llvm::telemetry::Config>(true)) {} + +llvm::Error FakePlugin::preDispatch(llvm::telemetry::TelemetryInfo *entry) { + if (auto *fake_entry = llvm::dyn_cast<FakeTelemetryInfo>(entry)) { + fake_entry->msg = "In FakePlugin"; + } + + return llvm::Error::success(); } void FakePlugin::Initialize() { - lldb_private::telemetry::TelemetryManager::setInstance( - std::make_unique<FakePlugin>()); + telemetry::TelemetryManager::setInstance(std::make_unique<FakePlugin>()); // TODO: do we need all the PluginManagerL::RegisterPlugin() stuff??? } void FakePlugin::Terminate() { // nothing to do? } + +} // namespace lldb_private diff --git a/lldb/unittests/telemetry/plugin/FakePlugin.h b/lldb/unittests/telemetry/plugin/FakePlugin.h index 75e4b7bf116d3..62bffe21ee3e6 100644 --- a/lldb/unittests/telemetry/plugin/FakePlugin.h +++ b/lldb/unittests/telemetry/plugin/FakePlugin.h @@ -15,16 +15,18 @@ #include "llvm/Support/Error.h" #include "llvm/Telemetry/Telemetry.h" +namespace lldb_private { + struct FakeTelemetryInfo : public llvm::telemetry::TelemetryInfo { std::string msg; }; -class FakePlugin : public lldb_private::TelemetryManager { +class FakePlugin : public telemetry::TelemetryManager { public: - FakePlugin() = default; + FakePlugin(); // TelemetryManager interface - llvm::Error preDistpatch(TelemetryInfo *entry) override; + llvm::Error preDispatch(llvm::telemetry::TelemetryInfo *entry) override; // Plugin interface llvm::StringRef GetPluginName() override { return GetPluginNameStatic(); } @@ -36,4 +38,6 @@ class FakePlugin : public lldb_private::TelemetryManager { static llvm::StringRef GetPluginNameStatic() { return "FakeTelemetryPlugin"; } }; +} // namespace lldb_private + #endif _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits