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/27] 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/27] 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/27] 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/27] 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/27] 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/27] 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/27] 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/27] 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/27] 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/27] 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/27] 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/27] 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/27] 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/27] 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/27] 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 >From be5670f8a1ec285d013d9c5f0e52696b8e45d1b0 Mon Sep 17 00:00:00 2001 From: Vy Nguyen <v...@google.com> Date: Wed, 12 Feb 2025 15:02:07 -0500 Subject: [PATCH 16/27] rename test for using with gunit filter --- lldb/include/lldb/Core/Telemetry.h | 5 ++++- lldb/source/Core/Telemetry.cpp | 2 +- lldb/unittests/telemetry/TestFakePlugin.cpp | 9 +++++++-- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/lldb/include/lldb/Core/Telemetry.h b/lldb/include/lldb/Core/Telemetry.h index 037cd9aa8f49b..8e370f0ffefd1 100644 --- a/lldb/include/lldb/Core/Telemetry.h +++ b/lldb/include/lldb/Core/Telemetry.h @@ -65,13 +65,16 @@ class TelemetryManager : public llvm::telemetry::Manager, public: llvm::Error preDispatch(llvm::telemetry::TelemetryInfo *entry) override; + // Plugin interface + llvm::StringRef GetPluginName() override { return "TelemetryManager"; } + static TelemetryManager *getInstance(); protected: TelemetryManager(std::unique_ptr<llvm::telemetry::Config> config); static std::unique_ptr<TelemetryManager> g_instance; - static void SetInstance(std::unique_ptr<TelemetryManager> manger); + static void setInstance(std::unique_ptr<TelemetryManager> manger); private: std::unique_ptr<llvm::telemetry::Config> m_config; diff --git a/lldb/source/Core/Telemetry.cpp b/lldb/source/Core/Telemetry.cpp index be6cec203d758..f2a9d4bd00dad 100644 --- a/lldb/source/Core/Telemetry.cpp +++ b/lldb/source/Core/Telemetry.cpp @@ -73,7 +73,7 @@ llvm::Error TelemetryManager::preDispatch(TelemetryInfo *entry) { std::unique_ptr<TelemetryManager> TelemetryManager::g_instance = nullptr; TelemetryManager *TelemetryManager::getInstance() { return g_instance.get(); } -void TelemetryManager::SetInstance(std::unique_ptr<TelemetryManager> manager) { +void TelemetryManager::setInstance(std::unique_ptr<TelemetryManager> manager) { g_instance = std::move(manager); } diff --git a/lldb/unittests/telemetry/TestFakePlugin.cpp b/lldb/unittests/telemetry/TestFakePlugin.cpp index e337a0eaff7bd..c86c6da67ecdd 100644 --- a/lldb/unittests/telemetry/TestFakePlugin.cpp +++ b/lldb/unittests/telemetry/TestFakePlugin.cpp @@ -17,9 +17,14 @@ #include <memory> -TEST(SmokeTest, Test) { - +TEST(TelemetryTest, PluginTest) { auto ins = lldb_private::telemetry::TelemetryManager::getInstance(); ASSERT_NE(ins, nullptr); + lldb_private::FakeTelemetryInfo entry; + entry.msg = ""; + + auto stat = ins->preDispatch(&entry); + ASSERT_FALSE(stat); + ASSERT_EQ("In FakePlugin", entry.msg); } >From e7f425f66862ee2486916cfba9d62d290e140b39 Mon Sep 17 00:00:00 2001 From: Vy Nguyen <v...@google.com> Date: Wed, 12 Feb 2025 15:48:22 -0500 Subject: [PATCH 17/27] call Init directly --- lldb/unittests/telemetry/TestFakePlugin.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lldb/unittests/telemetry/TestFakePlugin.cpp b/lldb/unittests/telemetry/TestFakePlugin.cpp index c86c6da67ecdd..d8bf4b35139e3 100644 --- a/lldb/unittests/telemetry/TestFakePlugin.cpp +++ b/lldb/unittests/telemetry/TestFakePlugin.cpp @@ -18,6 +18,10 @@ #include <memory> TEST(TelemetryTest, PluginTest) { + // This would have been called by the plugin reg in a "real" plugin + // For tests, we just call it directly. + lldb_private::FakePlugin::Initialize(); + auto ins = lldb_private::telemetry::TelemetryManager::getInstance(); ASSERT_NE(ins, nullptr); >From 17338f1894ab334a85575982bd5ea3273a625941 Mon Sep 17 00:00:00 2001 From: Vy Nguyen <v...@google.com> Date: Thu, 13 Feb 2025 09:27:53 -0500 Subject: [PATCH 18/27] fixed test --- lldb/include/lldb/Core/Telemetry.h | 4 +- lldb/unittests/CMakeLists.txt | 4 - lldb/unittests/Core/CMakeLists.txt | 6 ++ lldb/unittests/Core/TelemetryTest.cpp | 74 +++++++++++++++++++ lldb/unittests/telemetry/CMakeLists.txt | 17 ----- lldb/unittests/telemetry/TestFakePlugin.cpp | 34 --------- .../unittests/telemetry/plugin/CMakeLists.txt | 13 ---- .../unittests/telemetry/plugin/FakePlugin.cpp | 45 ----------- lldb/unittests/telemetry/plugin/FakePlugin.h | 43 ----------- 9 files changed, 81 insertions(+), 159 deletions(-) create mode 100644 lldb/unittests/Core/TelemetryTest.cpp delete mode 100644 lldb/unittests/telemetry/CMakeLists.txt delete mode 100644 lldb/unittests/telemetry/TestFakePlugin.cpp delete mode 100644 lldb/unittests/telemetry/plugin/CMakeLists.txt delete mode 100644 lldb/unittests/telemetry/plugin/FakePlugin.cpp delete mode 100644 lldb/unittests/telemetry/plugin/FakePlugin.h diff --git a/lldb/include/lldb/Core/Telemetry.h b/lldb/include/lldb/Core/Telemetry.h index 8e370f0ffefd1..0445a4a0a0c3f 100644 --- a/lldb/include/lldb/Core/Telemetry.h +++ b/lldb/include/lldb/Core/Telemetry.h @@ -66,18 +66,16 @@ class TelemetryManager : public llvm::telemetry::Manager, llvm::Error preDispatch(llvm::telemetry::TelemetryInfo *entry) override; // Plugin interface - llvm::StringRef GetPluginName() override { return "TelemetryManager"; } - static TelemetryManager *getInstance(); protected: TelemetryManager(std::unique_ptr<llvm::telemetry::Config> config); - static std::unique_ptr<TelemetryManager> g_instance; static void setInstance(std::unique_ptr<TelemetryManager> manger); private: std::unique_ptr<llvm::telemetry::Config> m_config; + static std::unique_ptr<TelemetryManager> g_instance; }; } // namespace telemetry diff --git a/lldb/unittests/CMakeLists.txt b/lldb/unittests/CMakeLists.txt index 2023aa6d08a33..cc9d45ebf981d 100644 --- a/lldb/unittests/CMakeLists.txt +++ b/lldb/unittests/CMakeLists.txt @@ -79,7 +79,3 @@ 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) -endif() diff --git a/lldb/unittests/Core/CMakeLists.txt b/lldb/unittests/Core/CMakeLists.txt index 949963fd40346..d4d3764b67ae3 100644 --- a/lldb/unittests/Core/CMakeLists.txt +++ b/lldb/unittests/Core/CMakeLists.txt @@ -1,3 +1,7 @@ +if (LLVM_BUILD_TELEMETRY) + set(TELEMETRY_DEPS Telemetry) +endif() + add_lldb_unittest(LLDBCoreTests CommunicationTest.cpp DiagnosticEventTest.cpp @@ -10,6 +14,7 @@ add_lldb_unittest(LLDBCoreTests RichManglingContextTest.cpp SourceLocationSpecTest.cpp SourceManagerTest.cpp + TelemetryTest.cpp UniqueCStringMapTest.cpp LINK_LIBS @@ -26,4 +31,5 @@ add_lldb_unittest(LLDBCoreTests LLVMTestingSupport LINK_COMPONENTS Support + ${TELEMETRY_DEPS} ) diff --git a/lldb/unittests/Core/TelemetryTest.cpp b/lldb/unittests/Core/TelemetryTest.cpp new file mode 100644 index 0000000000000..7e1911c9fe1b5 --- /dev/null +++ b/lldb/unittests/Core/TelemetryTest.cpp @@ -0,0 +1,74 @@ +//===-- TelemetryTest.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/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> + +namespace lldb_private { + +struct FakeTelemetryInfo : public llvm::telemetry::TelemetryInfo { + std::string msg; +}; + +class FakePlugin : public telemetry::TelemetryManager { +public: + FakePlugin() + : telemetry::TelemetryManager( + std::make_unique<llvm::telemetry::Config>(true)) {} + + // TelemetryManager interface + llvm::Error dispatch(llvm::telemetry::TelemetryInfo *entry) override { + if (auto *fake_entry = llvm::dyn_cast<FakeTelemetryInfo>(entry)) { + fake_entry->msg = "In FakePlugin"; + } + + return llvm::Error::success(); + } + + // Plugin interface + llvm::StringRef GetPluginName() override { return "FakeTelemetryPlugin"; } + + static void Initialize() { + telemetry::TelemetryManager::setInstance(std::make_unique<FakePlugin>()); + } + + static void Terminate() { telemetry::TelemetryManager::setInstance(nullptr); } +}; + +} // namespace lldb_private + +TEST(TelemetryTest, PluginTest) { + // This would have been called by the plugin reg in a "real" plugin + // For tests, we just call it directly. + lldb_private::FakePlugin::Initialize(); + + auto ins = lldb_private::telemetry::TelemetryManager::getInstance(); + + ASSERT_NE(ins, nullptr); + lldb_private::FakeTelemetryInfo entry; + entry.msg = ""; + + auto stat = ins->dispatch(&entry); + ASSERT_FALSE(stat); + ASSERT_EQ("In FakePlugin", entry.msg); + + ASSERT_EQ("FakeTelemetryPlugin", ins->GetPluginName()); +} + +#endif // LLVM_BUILD_TELEMETRY diff --git a/lldb/unittests/telemetry/CMakeLists.txt b/lldb/unittests/telemetry/CMakeLists.txt deleted file mode 100644 index a3fd0196e0d42..0000000000000 --- a/lldb/unittests/telemetry/CMakeLists.txt +++ /dev/null @@ -1,17 +0,0 @@ -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/TestFakePlugin.cpp b/lldb/unittests/telemetry/TestFakePlugin.cpp deleted file mode 100644 index d8bf4b35139e3..0000000000000 --- a/lldb/unittests/telemetry/TestFakePlugin.cpp +++ /dev/null @@ -1,34 +0,0 @@ -//===-- 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 "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" -#include "gtest/gtest.h" - -#include <memory> - -TEST(TelemetryTest, PluginTest) { - // This would have been called by the plugin reg in a "real" plugin - // For tests, we just call it directly. - lldb_private::FakePlugin::Initialize(); - - auto ins = lldb_private::telemetry::TelemetryManager::getInstance(); - - ASSERT_NE(ins, nullptr); - lldb_private::FakeTelemetryInfo entry; - entry.msg = ""; - - auto stat = ins->preDispatch(&entry); - ASSERT_FALSE(stat); - ASSERT_EQ("In FakePlugin", entry.msg); -} diff --git a/lldb/unittests/telemetry/plugin/CMakeLists.txt b/lldb/unittests/telemetry/plugin/CMakeLists.txt deleted file mode 100644 index 0d515d5a5afee..0000000000000 --- a/lldb/unittests/telemetry/plugin/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -if (LLVM_BUILD_TELEMETRY) - add_lldb_library(lldbPluginTelemetryFakePlugin PLUGIN - FakePlugin.cpp - - LINK_LIBS - lldbCore - lldbUtility - lldbPluginProcessUtility - LINK_COMPONENTS - Support - Telemetry - ) -endif() diff --git a/lldb/unittests/telemetry/plugin/FakePlugin.cpp b/lldb/unittests/telemetry/plugin/FakePlugin.cpp deleted file mode 100644 index dc91aa15132b4..0000000000000 --- a/lldb/unittests/telemetry/plugin/FakePlugin.cpp +++ /dev/null @@ -1,45 +0,0 @@ -//===-- 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 "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 <memory> - -LLDB_PLUGIN_DEFINE(FakePlugin) - -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() { - 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 deleted file mode 100644 index 62bffe21ee3e6..0000000000000 --- a/lldb/unittests/telemetry/plugin/FakePlugin.h +++ /dev/null @@ -1,43 +0,0 @@ -//===-- 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" - -namespace lldb_private { - -struct FakeTelemetryInfo : public llvm::telemetry::TelemetryInfo { - std::string msg; -}; - -class FakePlugin : public telemetry::TelemetryManager { -public: - FakePlugin(); - - // TelemetryManager interface - llvm::Error preDispatch(llvm::telemetry::TelemetryInfo *entry) override; - - // Plugin interface - llvm::StringRef GetPluginName() override { return GetPluginNameStatic(); } - - static void Initialize(); - - static void Terminate(); - - static llvm::StringRef GetPluginNameStatic() { return "FakeTelemetryPlugin"; } -}; - -} // namespace lldb_private - -#endif >From c3df4c80f96091431b543df640c230098424feb8 Mon Sep 17 00:00:00 2001 From: Vy Nguyen <v...@google.com> Date: Thu, 13 Feb 2025 10:40:06 -0500 Subject: [PATCH 19/27] Update lldb/unittests/Core/TelemetryTest.cpp Co-authored-by: Pavel Labath <pa...@labath.sk> --- lldb/unittests/Core/TelemetryTest.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lldb/unittests/Core/TelemetryTest.cpp b/lldb/unittests/Core/TelemetryTest.cpp index 7e1911c9fe1b5..72617932b08ac 100644 --- a/lldb/unittests/Core/TelemetryTest.cpp +++ b/lldb/unittests/Core/TelemetryTest.cpp @@ -64,8 +64,7 @@ TEST(TelemetryTest, PluginTest) { lldb_private::FakeTelemetryInfo entry; entry.msg = ""; - auto stat = ins->dispatch(&entry); - ASSERT_FALSE(stat); + ASSERT_THAT_ERROR(ins->dispatch(&entry), llvm::Succeeded()); ASSERT_EQ("In FakePlugin", entry.msg); ASSERT_EQ("FakeTelemetryPlugin", ins->GetPluginName()); >From 189af049ffbff0008793d971bcd6a532f106612e Mon Sep 17 00:00:00 2001 From: Vy Nguyen <v...@google.com> Date: Thu, 13 Feb 2025 10:40:17 -0500 Subject: [PATCH 20/27] Update lldb/unittests/Core/TelemetryTest.cpp Co-authored-by: Pavel Labath <pa...@labath.sk> --- lldb/unittests/Core/TelemetryTest.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/lldb/unittests/Core/TelemetryTest.cpp b/lldb/unittests/Core/TelemetryTest.cpp index 72617932b08ac..af138110b6662 100644 --- a/lldb/unittests/Core/TelemetryTest.cpp +++ b/lldb/unittests/Core/TelemetryTest.cpp @@ -17,7 +17,6 @@ #include "llvm/Support/Error.h" #include "llvm/Telemetry/Telemetry.h" #include "gtest/gtest.h" - #include <memory> namespace lldb_private { >From 8b84a5e213786ea87690b53255e0c20406217c09 Mon Sep 17 00:00:00 2001 From: Vy Nguyen <v...@google.com> Date: Thu, 13 Feb 2025 10:41:02 -0500 Subject: [PATCH 21/27] Update lldb/unittests/Core/TelemetryTest.cpp Co-authored-by: Pavel Labath <pa...@labath.sk> --- lldb/unittests/Core/TelemetryTest.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lldb/unittests/Core/TelemetryTest.cpp b/lldb/unittests/Core/TelemetryTest.cpp index af138110b6662..ccc3b26c61dd4 100644 --- a/lldb/unittests/Core/TelemetryTest.cpp +++ b/lldb/unittests/Core/TelemetryTest.cpp @@ -57,7 +57,7 @@ TEST(TelemetryTest, PluginTest) { // For tests, we just call it directly. lldb_private::FakePlugin::Initialize(); - auto ins = lldb_private::telemetry::TelemetryManager::getInstance(); + auto *ins = lldb_private::telemetry::TelemetryManager::getInstance(); ASSERT_NE(ins, nullptr); lldb_private::FakeTelemetryInfo entry; >From 96d02bf5522e24ec365250cbd61570baed7126f7 Mon Sep 17 00:00:00 2001 From: Vy Nguyen <v...@google.com> Date: Thu, 13 Feb 2025 10:41:10 -0500 Subject: [PATCH 22/27] Update lldb/unittests/Core/TelemetryTest.cpp Co-authored-by: Pavel Labath <pa...@labath.sk> --- lldb/unittests/Core/TelemetryTest.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lldb/unittests/Core/TelemetryTest.cpp b/lldb/unittests/Core/TelemetryTest.cpp index ccc3b26c61dd4..5e2cea7e4be11 100644 --- a/lldb/unittests/Core/TelemetryTest.cpp +++ b/lldb/unittests/Core/TelemetryTest.cpp @@ -33,9 +33,8 @@ class FakePlugin : public telemetry::TelemetryManager { // TelemetryManager interface llvm::Error dispatch(llvm::telemetry::TelemetryInfo *entry) override { - if (auto *fake_entry = llvm::dyn_cast<FakeTelemetryInfo>(entry)) { + if (auto *fake_entry = llvm::dyn_cast<FakeTelemetryInfo>(entry)) fake_entry->msg = "In FakePlugin"; - } return llvm::Error::success(); } >From 7405add2c6e297e3d6954773f50e0c72e0dfb733 Mon Sep 17 00:00:00 2001 From: Vy Nguyen <v...@google.com> Date: Thu, 13 Feb 2025 13:40:30 -0500 Subject: [PATCH 23/27] added include --- lldb/unittests/Core/TelemetryTest.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lldb/unittests/Core/TelemetryTest.cpp b/lldb/unittests/Core/TelemetryTest.cpp index 5e2cea7e4be11..340c1c85c843e 100644 --- a/lldb/unittests/Core/TelemetryTest.cpp +++ b/lldb/unittests/Core/TelemetryTest.cpp @@ -16,6 +16,7 @@ #include "llvm/ADT/StringRef.h" #include "llvm/Support/Error.h" #include "llvm/Telemetry/Telemetry.h" +#include "llvm/Testing/Support/Error.h" #include "gtest/gtest.h" #include <memory> @@ -62,7 +63,7 @@ TEST(TelemetryTest, PluginTest) { lldb_private::FakeTelemetryInfo entry; entry.msg = ""; - ASSERT_THAT_ERROR(ins->dispatch(&entry), llvm::Succeeded()); + ASSERT_THAT_ERROR(ins->dispatch(&entry), ::llvm::Succeeded()); ASSERT_EQ("In FakePlugin", entry.msg); ASSERT_EQ("FakeTelemetryPlugin", ins->GetPluginName()); >From cf180bb595e03982979121817fa728a8fee33e23 Mon Sep 17 00:00:00 2001 From: Vy Nguyen <v...@google.com> Date: Thu, 13 Feb 2025 14:02:34 -0500 Subject: [PATCH 24/27] add Destination test --- lldb/unittests/Core/TelemetryTest.cpp | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/lldb/unittests/Core/TelemetryTest.cpp b/lldb/unittests/Core/TelemetryTest.cpp index 340c1c85c843e..8cf42033aa4ed 100644 --- a/lldb/unittests/Core/TelemetryTest.cpp +++ b/lldb/unittests/Core/TelemetryTest.cpp @@ -19,6 +19,7 @@ #include "llvm/Testing/Support/Error.h" #include "gtest/gtest.h" #include <memory> +#include <vector> namespace lldb_private { @@ -26,6 +27,22 @@ struct FakeTelemetryInfo : public llvm::telemetry::TelemetryInfo { std::string msg; }; +class TestDestination : public llvm::telemetry::Destination { + public: + TestDestination(std::vector<const llvm::telemetry::TelemetryInfo*>* entries): + received_entries(entries) {} + + llvm::Error receiveEntry(const llvm::telemetry::TelemetryInfo *entry) override { + received_entries->push_back(entry); + return llvm::Error::success(); + } + + llvm::StringLiteral name() const override { return "TestDestination";} + + private: + std::vector<const llvm::telemetry::TelemetryInfo*>* received_entries; +}; + class FakePlugin : public telemetry::TelemetryManager { public: FakePlugin() @@ -33,7 +50,7 @@ class FakePlugin : public telemetry::TelemetryManager { std::make_unique<llvm::telemetry::Config>(true)) {} // TelemetryManager interface - llvm::Error dispatch(llvm::telemetry::TelemetryInfo *entry) override { + llvm::Error preDispatch(llvm::telemetry::TelemetryInfo *entry) override { if (auto *fake_entry = llvm::dyn_cast<FakeTelemetryInfo>(entry)) fake_entry->msg = "In FakePlugin"; @@ -58,13 +75,17 @@ TEST(TelemetryTest, PluginTest) { lldb_private::FakePlugin::Initialize(); auto *ins = lldb_private::telemetry::TelemetryManager::getInstance(); - ASSERT_NE(ins, nullptr); + + std::vector<const ::llvm::telemetry::TelemetryInfo*> expected_entries; + ins->addDestination(std::make_unique<lldb_private::TestDestination>(&expected_entries)); + lldb_private::FakeTelemetryInfo entry; entry.msg = ""; ASSERT_THAT_ERROR(ins->dispatch(&entry), ::llvm::Succeeded()); - ASSERT_EQ("In FakePlugin", entry.msg); + ASSERT_EQ(1, expected_entries.size()); + EXPECT_EQ("In FakePlugin", llvm::dyn_cast<lldb_private::FakeTelemetryInfo>(expected_entries[0])->msg); ASSERT_EQ("FakeTelemetryPlugin", ins->GetPluginName()); } >From 9a361d1698f523d793fe08e00620fc7d882225d5 Mon Sep 17 00:00:00 2001 From: Vy Nguyen <v...@google.com> Date: Thu, 13 Feb 2025 14:41:34 -0500 Subject: [PATCH 25/27] reformat code --- lldb/unittests/Core/TelemetryTest.cpp | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/lldb/unittests/Core/TelemetryTest.cpp b/lldb/unittests/Core/TelemetryTest.cpp index 8cf42033aa4ed..a640ef4666f90 100644 --- a/lldb/unittests/Core/TelemetryTest.cpp +++ b/lldb/unittests/Core/TelemetryTest.cpp @@ -28,19 +28,20 @@ struct FakeTelemetryInfo : public llvm::telemetry::TelemetryInfo { }; class TestDestination : public llvm::telemetry::Destination { - public: - TestDestination(std::vector<const llvm::telemetry::TelemetryInfo*>* entries): - received_entries(entries) {} +public: + TestDestination(std::vector<const llvm::telemetry::TelemetryInfo *> *entries) + : received_entries(entries) {} - llvm::Error receiveEntry(const llvm::telemetry::TelemetryInfo *entry) override { + llvm::Error + receiveEntry(const llvm::telemetry::TelemetryInfo *entry) override { received_entries->push_back(entry); return llvm::Error::success(); } - llvm::StringLiteral name() const override { return "TestDestination";} + llvm::StringLiteral name() const override { return "TestDestination"; } - private: - std::vector<const llvm::telemetry::TelemetryInfo*>* received_entries; +private: + std::vector<const llvm::telemetry::TelemetryInfo *> *received_entries; }; class FakePlugin : public telemetry::TelemetryManager { @@ -77,15 +78,18 @@ TEST(TelemetryTest, PluginTest) { auto *ins = lldb_private::telemetry::TelemetryManager::getInstance(); ASSERT_NE(ins, nullptr); - std::vector<const ::llvm::telemetry::TelemetryInfo*> expected_entries; - ins->addDestination(std::make_unique<lldb_private::TestDestination>(&expected_entries)); + std::vector<const ::llvm::telemetry::TelemetryInfo *> expected_entries; + ins->addDestination( + std::make_unique<lldb_private::TestDestination>(&expected_entries)); lldb_private::FakeTelemetryInfo entry; entry.msg = ""; ASSERT_THAT_ERROR(ins->dispatch(&entry), ::llvm::Succeeded()); ASSERT_EQ(1, expected_entries.size()); - EXPECT_EQ("In FakePlugin", llvm::dyn_cast<lldb_private::FakeTelemetryInfo>(expected_entries[0])->msg); + EXPECT_EQ("In FakePlugin", + llvm::dyn_cast<lldb_private::FakeTelemetryInfo>(expected_entries[0]) + ->msg); ASSERT_EQ("FakeTelemetryPlugin", ins->GetPluginName()); } >From b05f7d42ee62711fe62e9b554c01ffc0b6f923c6 Mon Sep 17 00:00:00 2001 From: Vy Nguyen <v...@google.com> Date: Tue, 18 Feb 2025 10:01:02 -0500 Subject: [PATCH 26/27] remove inhertiance from PluginInterface --- lldb/include/lldb/Core/Telemetry.h | 12 +++++------- lldb/unittests/Core/TelemetryTest.cpp | 5 +++-- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/lldb/include/lldb/Core/Telemetry.h b/lldb/include/lldb/Core/Telemetry.h index 0445a4a0a0c3f..ee9c111abe942 100644 --- a/lldb/include/lldb/Core/Telemetry.h +++ b/lldb/include/lldb/Core/Telemetry.h @@ -9,7 +9,6 @@ #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" @@ -60,13 +59,12 @@ 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, - public PluginInterface { -public: - llvm::Error preDispatch(llvm::telemetry::TelemetryInfo *entry) override; +class TelemetryManager : public llvm::telemetry::Manager public + : llvm::Error + preDispatch(llvm::telemetry::TelemetryInfo *entry) override; - // Plugin interface - static TelemetryManager *getInstance(); +virtual llvm::StringRef GetInstanceName() const = 0; +static TelemetryManager *getInstance(); protected: TelemetryManager(std::unique_ptr<llvm::telemetry::Config> config); diff --git a/lldb/unittests/Core/TelemetryTest.cpp b/lldb/unittests/Core/TelemetryTest.cpp index a640ef4666f90..0b5bd32383b1c 100644 --- a/lldb/unittests/Core/TelemetryTest.cpp +++ b/lldb/unittests/Core/TelemetryTest.cpp @@ -58,8 +58,9 @@ class FakePlugin : public telemetry::TelemetryManager { return llvm::Error::success(); } - // Plugin interface - llvm::StringRef GetPluginName() override { return "FakeTelemetryPlugin"; } + llvm::StringRef GetInstanceName() const override { + return "FakeTelemetryPlugin"; + } static void Initialize() { telemetry::TelemetryManager::setInstance(std::make_unique<FakePlugin>()); >From ef78de77967860e506a74e0782b53ff3f4b03901 Mon Sep 17 00:00:00 2001 From: Vy Nguyen <v...@google.com> Date: Tue, 18 Feb 2025 10:12:54 -0500 Subject: [PATCH 27/27] format --- lldb/include/lldb/Core/Telemetry.h | 10 +++++----- lldb/unittests/Core/TelemetryTest.cpp | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lldb/include/lldb/Core/Telemetry.h b/lldb/include/lldb/Core/Telemetry.h index ee9c111abe942..7923b208e3b48 100644 --- a/lldb/include/lldb/Core/Telemetry.h +++ b/lldb/include/lldb/Core/Telemetry.h @@ -59,12 +59,12 @@ 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 public - : llvm::Error - preDispatch(llvm::telemetry::TelemetryInfo *entry) override; +class TelemetryManager : public llvm::telemetry::Manager { +public: + llvm::Error preDispatch(llvm::telemetry::TelemetryInfo *entry) override; -virtual llvm::StringRef GetInstanceName() const = 0; -static TelemetryManager *getInstance(); + virtual llvm::StringRef GetInstanceName() const = 0; + static TelemetryManager *getInstance(); protected: TelemetryManager(std::unique_ptr<llvm::telemetry::Config> config); diff --git a/lldb/unittests/Core/TelemetryTest.cpp b/lldb/unittests/Core/TelemetryTest.cpp index 0b5bd32383b1c..03bd8a59ba7dc 100644 --- a/lldb/unittests/Core/TelemetryTest.cpp +++ b/lldb/unittests/Core/TelemetryTest.cpp @@ -92,7 +92,7 @@ TEST(TelemetryTest, PluginTest) { llvm::dyn_cast<lldb_private::FakeTelemetryInfo>(expected_entries[0]) ->msg); - ASSERT_EQ("FakeTelemetryPlugin", ins->GetPluginName()); + ASSERT_EQ("FakeTelemetryPlugin", ins->GetInstanceName()); } #endif // LLVM_BUILD_TELEMETRY _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits