[Lldb-commits] [lldb] r297812 - Remove lldb streams from the Log class completely
Pavel Labath via lldb-commits
lldb-commits at lists.llvm.org
Wed Mar 15 02:06:59 PDT 2017
Author: labath
Date: Wed Mar 15 04:06:58 2017
New Revision: 297812
URL: http://llvm.org/viewvc/llvm-project?rev=297812&view=rev
Log:
Remove lldb streams from the Log class completely
Summary:
previously we switched to llvm streams for log output, this completes
the switch for the error streams.
I also clean up the includes and remove the unused argument from
DisableAllLogChannels().
This required adding a bit of boiler plate to convert the output in the
command interpreter, but that should go away when we switch command
results to use llvm streams as well.
Reviewers: zturner, eugene
Subscribers: lldb-commits, emaste
Differential Revision: https://reviews.llvm.org/D30894
Modified:
lldb/trunk/include/lldb/Core/Debugger.h
lldb/trunk/include/lldb/Utility/Log.h
lldb/trunk/include/lldb/Utility/Logging.h
lldb/trunk/source/API/SBDebugger.cpp
lldb/trunk/source/Commands/CommandObjectLog.cpp
lldb/trunk/source/Core/Debugger.cpp
lldb/trunk/source/Host/posix/ProcessLauncherPosixFork.cpp
lldb/trunk/source/Initialization/SystemInitializerCommon.cpp
lldb/trunk/source/Plugins/Process/POSIX/ProcessPOSIXLog.cpp
lldb/trunk/source/Plugins/SymbolFile/DWARF/LogChannelDWARF.cpp
lldb/trunk/source/Utility/Log.cpp
lldb/trunk/source/Utility/Logging.cpp
lldb/trunk/tools/lldb-server/LLDBServerUtilities.cpp
lldb/trunk/unittests/Utility/LogTest.cpp
Modified: lldb/trunk/include/lldb/Core/Debugger.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Core/Debugger.h?rev=297812&r1=297811&r2=297812&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Core/Debugger.h (original)
+++ lldb/trunk/include/lldb/Core/Debugger.h Wed Mar 15 04:06:58 2017
@@ -195,7 +195,7 @@ public:
bool EnableLog(llvm::StringRef channel,
llvm::ArrayRef<const char *> categories,
llvm::StringRef log_file, uint32_t log_options,
- Stream &error_stream);
+ llvm::raw_ostream &error_stream);
void SetLoggingCallback(lldb::LogOutputCallback log_callback, void *baton);
Modified: lldb/trunk/include/lldb/Utility/Log.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Utility/Log.h?rev=297812&r1=297811&r2=297812&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Utility/Log.h (original)
+++ lldb/trunk/include/lldb/Utility/Log.h Wed Mar 15 04:06:58 2017
@@ -13,9 +13,9 @@
// Project includes
#include "lldb/Utility/Flags.h"
#include "lldb/Utility/Logging.h"
-#include "lldb/lldb-private.h"
// Other libraries and framework includes
+#include "llvm/ADT/ArrayRef.h"
#include "llvm/Support/FormatVariadic.h"
#include "llvm/Support/ManagedStatic.h"
#include "llvm/Support/RWMutex.h"
@@ -100,17 +100,17 @@ public:
EnableLogChannel(const std::shared_ptr<llvm::raw_ostream> &log_stream_sp,
uint32_t log_options, llvm::StringRef channel,
llvm::ArrayRef<const char *> categories,
- Stream &error_stream);
+ llvm::raw_ostream &error_stream);
static bool DisableLogChannel(llvm::StringRef channel,
llvm::ArrayRef<const char *> categories,
- Stream &error_stream);
+ llvm::raw_ostream &error_stream);
- static bool ListChannelCategories(llvm::StringRef channel, Stream &stream);
+ static bool ListChannelCategories(llvm::StringRef channel, llvm::raw_ostream &stream);
- static void DisableAllLogChannels(Stream *feedback_strm);
+ static void DisableAllLogChannels();
- static void ListAllLogChannels(Stream *strm);
+ static void ListAllLogChannels(llvm::raw_ostream &stream);
//------------------------------------------------------------------
// Member functions
@@ -131,7 +131,6 @@ public:
Format(file, function, llvm::formatv(format, std::forward<Args>(args)...));
}
- // CLEANUP: Add llvm::raw_ostream &Stream() function.
void Printf(const char *format, ...) __attribute__((format(printf, 2, 3)));
void VAPrintf(const char *format, va_list args);
@@ -183,12 +182,13 @@ private:
typedef llvm::StringMap<Log> ChannelMap;
static llvm::ManagedStatic<ChannelMap> g_channel_map;
- static void ListCategories(Stream &stream,
+ static void ListCategories(llvm::raw_ostream &stream,
const ChannelMap::value_type &entry);
- static uint32_t GetFlags(Stream &stream, const ChannelMap::value_type &entry,
+ static uint32_t GetFlags(llvm::raw_ostream &stream, const ChannelMap::value_type &entry,
llvm::ArrayRef<const char *> categories);
- DISALLOW_COPY_AND_ASSIGN(Log);
+ Log(const Log &) = delete;
+ void operator=(const Log &) = delete;
};
} // namespace lldb_private
Modified: lldb/trunk/include/lldb/Utility/Logging.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Utility/Logging.h?rev=297812&r1=297811&r2=297812&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Utility/Logging.h (original)
+++ lldb/trunk/include/lldb/Utility/Logging.h Wed Mar 15 04:06:58 2017
@@ -10,10 +10,7 @@
#ifndef LLDB_UTILITY_LOGGING_H
#define LLDB_UTILITY_LOGGING_H
-// Project includes
-#include "lldb/lldb-private.h"
-// Other libraries and framework includes
-#include "llvm/Support/raw_ostream.h"
+#include <cstdint>
//----------------------------------------------------------------------
// Log Bits specific to logging in lldb
@@ -56,6 +53,8 @@
namespace lldb_private {
+class Log;
+
void LogIfAnyCategoriesSet(uint32_t mask, const char *format, ...);
Log *GetLogIfAllCategoriesSet(uint32_t mask);
Modified: lldb/trunk/source/API/SBDebugger.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/API/SBDebugger.cpp?rev=297812&r1=297811&r2=297812&view=diff
==============================================================================
--- lldb/trunk/source/API/SBDebugger.cpp (original)
+++ lldb/trunk/source/API/SBDebugger.cpp Wed Mar 15 04:06:58 2017
@@ -1133,9 +1133,10 @@ bool SBDebugger::EnableLog(const char *c
if (m_opaque_sp) {
uint32_t log_options =
LLDB_LOG_OPTION_PREPEND_TIMESTAMP | LLDB_LOG_OPTION_PREPEND_THREAD_NAME;
- StreamString errors;
+ std::string error;
+ llvm::raw_string_ostream error_stream(error);
return m_opaque_sp->EnableLog(channel, GetCategoryArray(categories), "",
- log_options, errors);
+ log_options, error_stream);
} else
return false;
}
Modified: lldb/trunk/source/Commands/CommandObjectLog.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Commands/CommandObjectLog.cpp?rev=297812&r1=297811&r2=297812&view=diff
==============================================================================
--- lldb/trunk/source/Commands/CommandObjectLog.cpp (original)
+++ lldb/trunk/source/Commands/CommandObjectLog.cpp Wed Mar 15 04:06:58 2017
@@ -170,9 +170,14 @@ protected:
m_options.log_file.GetPath(log_file, sizeof(log_file));
else
log_file[0] = '\0';
+
+ std::string error;
+ llvm::raw_string_ostream error_stream(error);
bool success = m_interpreter.GetDebugger().EnableLog(
channel, args.GetArgumentArrayRef(), log_file, m_options.log_options,
- result.GetErrorStream());
+ error_stream);
+ result.GetErrorStream() << error_stream.str();
+
if (success)
result.SetStatus(eReturnStatusSuccessFinishNoResult);
else
@@ -229,12 +234,15 @@ protected:
const std::string channel = args[0].ref;
args.Shift(); // Shift off the channel
if (channel == "all") {
- Log::DisableAllLogChannels(&result.GetErrorStream());
+ Log::DisableAllLogChannels();
result.SetStatus(eReturnStatusSuccessFinishNoResult);
} else {
+ std::string error;
+ llvm::raw_string_ostream error_stream(error);
if (Log::DisableLogChannel(channel, args.GetArgumentArrayRef(),
- result.GetErrorStream()))
+ error_stream))
result.SetStatus(eReturnStatusSuccessFinishNoResult);
+ result.GetErrorStream() << error_stream.str();
}
return result.Succeeded();
}
@@ -269,17 +277,20 @@ public:
protected:
bool DoExecute(Args &args, CommandReturnObject &result) override {
+ std::string output;
+ llvm::raw_string_ostream output_stream(output);
if (args.empty()) {
- Log::ListAllLogChannels(&result.GetOutputStream());
+ Log::ListAllLogChannels(output_stream);
result.SetStatus(eReturnStatusSuccessFinishResult);
} else {
bool success = true;
for (const auto &entry : args.entries())
- success = success && Log::ListChannelCategories(
- entry.ref, result.GetOutputStream());
+ success =
+ success && Log::ListChannelCategories(entry.ref, output_stream);
if (success)
result.SetStatus(eReturnStatusSuccessFinishResult);
}
+ result.GetOutputStream() << output_stream.str();
return result.Succeeded();
}
};
Modified: lldb/trunk/source/Core/Debugger.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/Debugger.cpp?rev=297812&r1=297811&r2=297812&view=diff
==============================================================================
--- lldb/trunk/source/Core/Debugger.cpp (original)
+++ lldb/trunk/source/Core/Debugger.cpp Wed Mar 15 04:06:58 2017
@@ -1242,7 +1242,7 @@ void Debugger::SetLoggingCallback(lldb::
bool Debugger::EnableLog(llvm::StringRef channel,
llvm::ArrayRef<const char *> categories,
llvm::StringRef log_file, uint32_t log_options,
- Stream &error_stream) {
+ llvm::raw_ostream &error_stream) {
const bool should_close = true;
const bool unbuffered = true;
@@ -1266,7 +1266,7 @@ bool Debugger::EnableLog(llvm::StringRef
int FD;
if (std::error_code ec =
llvm::sys::fs::openFileForWrite(log_file, FD, flags)) {
- error_stream.Format("Unable to open log file: {0}", ec.message());
+ error_stream << "Unable to open log file: " << ec.message();
return false;
}
log_stream_sp.reset(
Modified: lldb/trunk/source/Host/posix/ProcessLauncherPosixFork.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Host/posix/ProcessLauncherPosixFork.cpp?rev=297812&r1=297811&r2=297812&view=diff
==============================================================================
--- lldb/trunk/source/Host/posix/ProcessLauncherPosixFork.cpp (original)
+++ lldb/trunk/source/Host/posix/ProcessLauncherPosixFork.cpp Wed Mar 15 04:06:58 2017
@@ -93,9 +93,8 @@ static void DupDescriptor(int error_fd,
static void LLVM_ATTRIBUTE_NORETURN ChildFunc(int error_fd,
const ProcessLaunchInfo &info) {
// First, make sure we disable all logging. If we are logging to stdout, our
- // logs can be
- // mistaken for inferior output.
- Log::DisableAllLogChannels(nullptr);
+ // logs can be mistaken for inferior output.
+ Log::DisableAllLogChannels();
// Do not inherit setgid powers.
if (setgid(getgid()) != 0)
Modified: lldb/trunk/source/Initialization/SystemInitializerCommon.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Initialization/SystemInitializerCommon.cpp?rev=297812&r1=297811&r2=297812&view=diff
==============================================================================
--- lldb/trunk/source/Initialization/SystemInitializerCommon.cpp (original)
+++ lldb/trunk/source/Initialization/SystemInitializerCommon.cpp Wed Mar 15 04:06:58 2017
@@ -121,5 +121,5 @@ void SystemInitializerCommon::Terminate(
#endif
HostInfo::Terminate();
- Log::DisableAllLogChannels(nullptr);
+ Log::DisableAllLogChannels();
}
Modified: lldb/trunk/source/Plugins/Process/POSIX/ProcessPOSIXLog.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/POSIX/ProcessPOSIXLog.cpp?rev=297812&r1=297811&r2=297812&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/Process/POSIX/ProcessPOSIXLog.cpp (original)
+++ lldb/trunk/source/Plugins/Process/POSIX/ProcessPOSIXLog.cpp Wed Mar 15 04:06:58 2017
@@ -12,7 +12,6 @@
#include "llvm/Support/Threading.h"
-using namespace lldb;
using namespace lldb_private;
static constexpr Log::Category g_categories[] = {
Modified: lldb/trunk/source/Plugins/SymbolFile/DWARF/LogChannelDWARF.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/SymbolFile/DWARF/LogChannelDWARF.cpp?rev=297812&r1=297811&r2=297812&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/SymbolFile/DWARF/LogChannelDWARF.cpp (original)
+++ lldb/trunk/source/Plugins/SymbolFile/DWARF/LogChannelDWARF.cpp Wed Mar 15 04:06:58 2017
@@ -9,7 +9,6 @@
#include "LogChannelDWARF.h"
-using namespace lldb;
using namespace lldb_private;
static constexpr Log::Category g_categories[] = {
Modified: lldb/trunk/source/Utility/Log.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Utility/Log.cpp?rev=297812&r1=297811&r2=297812&view=diff
==============================================================================
--- lldb/trunk/source/Utility/Log.cpp (original)
+++ lldb/trunk/source/Utility/Log.cpp Wed Mar 15 04:06:58 2017
@@ -9,10 +9,8 @@
// Project includes
#include "lldb/Utility/Log.h"
-
-#include "lldb/Utility/NameMatches.h"
-#include "lldb/Utility/StreamString.h"
#include "lldb/Utility/VASPrintf.h"
+#include "lldb/lldb-types.h"
// Other libraries and framework includes
#include "llvm/ADT/STLExtras.h"
@@ -32,20 +30,20 @@
#include <mutex>
#include <string>
-using namespace lldb;
using namespace lldb_private;
llvm::ManagedStatic<Log::ChannelMap> Log::g_channel_map;
-void Log::ListCategories(Stream &stream, const ChannelMap::value_type &entry) {
- stream.Format("Logging categories for '{0}':\n", entry.first());
- stream.Format(" all - all available logging categories\n");
- stream.Format(" default - default set of logging categories\n");
+void Log::ListCategories(llvm::raw_ostream &stream, const ChannelMap::value_type &entry) {
+ stream << llvm::formatv("Logging categories for '{0}':\n", entry.first());
+ stream << " all - all available logging categories\n";
+ stream << " default - default set of logging categories\n";
for (const auto &category : entry.second.m_channel.categories)
- stream.Format(" {0} - {1}\n", category.name, category.description);
+ stream << llvm::formatv(" {0} - {1}\n", category.name,
+ category.description);
}
-uint32_t Log::GetFlags(Stream &stream, const ChannelMap::value_type &entry,
+uint32_t Log::GetFlags(llvm::raw_ostream &stream, const ChannelMap::value_type &entry,
llvm::ArrayRef<const char *> categories) {
bool list_categories = false;
uint32_t flags = 0;
@@ -65,7 +63,8 @@ uint32_t Log::GetFlags(Stream &stream, c
flags |= cat->flag;
continue;
}
- stream.Format("error: unrecognized log category '{0}'\n", category);
+ stream << llvm::formatv("error: unrecognized log category '{0}'\n",
+ category);
list_categories = true;
}
if (list_categories)
@@ -194,10 +193,10 @@ void Log::Unregister(llvm::StringRef nam
bool Log::EnableLogChannel(
const std::shared_ptr<llvm::raw_ostream> &log_stream_sp,
uint32_t log_options, llvm::StringRef channel,
- llvm::ArrayRef<const char *> categories, Stream &error_stream) {
+ llvm::ArrayRef<const char *> categories, llvm::raw_ostream &error_stream) {
auto iter = g_channel_map->find(channel);
if (iter == g_channel_map->end()) {
- error_stream.Format("Invalid log channel '{0}'.\n", channel);
+ error_stream << llvm::formatv("Invalid log channel '{0}'.\n", channel);
return false;
}
uint32_t flags = categories.empty()
@@ -209,10 +208,10 @@ bool Log::EnableLogChannel(
bool Log::DisableLogChannel(llvm::StringRef channel,
llvm::ArrayRef<const char *> categories,
- Stream &error_stream) {
+ llvm::raw_ostream &error_stream) {
auto iter = g_channel_map->find(channel);
if (iter == g_channel_map->end()) {
- error_stream.Format("Invalid log channel '{0}'.\n", channel);
+ error_stream << llvm::formatv("Invalid log channel '{0}'.\n", channel);
return false;
}
uint32_t flags = categories.empty()
@@ -222,30 +221,32 @@ bool Log::DisableLogChannel(llvm::String
return true;
}
-bool Log::ListChannelCategories(llvm::StringRef channel, Stream &stream) {
+bool Log::ListChannelCategories(llvm::StringRef channel,
+ llvm::raw_ostream &stream) {
auto ch = g_channel_map->find(channel);
if (ch == g_channel_map->end()) {
- stream.Format("Invalid log channel '{0}'.\n", channel);
+ stream << llvm::formatv("Invalid log channel '{0}'.\n", channel);
return false;
}
ListCategories(stream, *ch);
return true;
}
-void Log::DisableAllLogChannels(Stream *feedback_strm) {
+void Log::DisableAllLogChannels() {
for (auto &entry : *g_channel_map)
entry.second.Disable(UINT32_MAX);
}
-void Log::ListAllLogChannels(Stream *strm) {
+void Log::ListAllLogChannels(llvm::raw_ostream &stream) {
if (g_channel_map->empty()) {
- strm->PutCString("No logging channels are currently registered.\n");
+ stream << "No logging channels are currently registered.\n";
return;
}
for (const auto &channel : *g_channel_map)
- ListCategories(*strm, channel);
+ ListCategories(stream, channel);
}
+
bool Log::GetVerbose() const {
return m_options.load(std::memory_order_relaxed) & LLDB_LOG_OPTION_VERBOSE;
}
Modified: lldb/trunk/source/Utility/Logging.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Utility/Logging.cpp?rev=297812&r1=297811&r2=297812&view=diff
==============================================================================
--- lldb/trunk/source/Utility/Logging.cpp (original)
+++ lldb/trunk/source/Utility/Logging.cpp Wed Mar 15 04:06:58 2017
@@ -8,17 +8,8 @@
//===----------------------------------------------------------------------===//
#include "lldb/Utility/Logging.h"
-
-// C Includes
-// C++ Includes
-#include <atomic>
-#include <cstring>
-
-// Other libraries and framework includes
-// Project includes
#include "lldb/Utility/Log.h"
-using namespace lldb;
using namespace lldb_private;
static constexpr Log::Category g_categories[] = {
Modified: lldb/trunk/tools/lldb-server/LLDBServerUtilities.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/lldb-server/LLDBServerUtilities.cpp?rev=297812&r1=297811&r2=297812&view=diff
==============================================================================
--- lldb/trunk/tools/lldb-server/LLDBServerUtilities.cpp (original)
+++ lldb/trunk/tools/lldb-server/LLDBServerUtilities.cpp Wed Mar 15 04:06:58 2017
@@ -46,7 +46,8 @@ bool LLDBServerUtilities::SetupLogging(c
SmallVector<StringRef, 32> channel_array;
log_channels.split(channel_array, ":", /*MaxSplit*/ -1, /*KeepEmpty*/ false);
for (auto channel_with_categories : channel_array) {
- StreamString error_stream;
+ std::string error;
+ llvm::raw_string_ostream error_stream(error);
Args channel_then_categories(channel_with_categories);
std::string channel(channel_then_categories.GetArgumentAtIndex(0));
channel_then_categories.Shift(); // Shift off the channel
@@ -55,8 +56,8 @@ bool LLDBServerUtilities::SetupLogging(c
log_stream_sp, log_options, channel,
channel_then_categories.GetArgumentArrayRef(), error_stream);
if (!success) {
- fprintf(stderr, "Unable to open log file '%s' for channel \"%s\"\n",
- log_file.c_str(), channel_with_categories.str().c_str());
+ errs() << formatv("Unable to setup logging for channel \"{0}\": {1}",
+ channel, error_stream.str());
return false;
}
}
Modified: lldb/trunk/unittests/Utility/LogTest.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/unittests/Utility/LogTest.cpp?rev=297812&r1=297811&r2=297812&view=diff
==============================================================================
--- lldb/trunk/unittests/Utility/LogTest.cpp (original)
+++ lldb/trunk/unittests/Utility/LogTest.cpp Wed Mar 15 04:06:58 2017
@@ -27,7 +27,7 @@ static constexpr uint32_t default_flags
static Log::Channel test_channel(test_categories, default_flags);
struct LogChannelTest : public ::testing::Test {
- void TearDown() override { Log::DisableAllLogChannels(nullptr); }
+ void TearDown() override { Log::DisableAllLogChannels(); }
static void SetUpTestCase() {
Log::Register("chan", test_channel);
@@ -39,6 +39,31 @@ struct LogChannelTest : public ::testing
}
};
+// Wrap enable, disable and list functions to make them easier to test.
+static bool EnableChannel(std::shared_ptr<llvm::raw_ostream> stream_sp,
+ uint32_t log_options, llvm::StringRef channel,
+ llvm::ArrayRef<const char *> categories,
+ std::string &error) {
+ error.clear();
+ llvm::raw_string_ostream error_stream(error);
+ return Log::EnableLogChannel(stream_sp, log_options, channel, categories,
+ error_stream);
+}
+
+static bool DisableChannel(llvm::StringRef channel,
+ llvm::ArrayRef<const char *> categories,
+ std::string &error) {
+ error.clear();
+ llvm::raw_string_ostream error_stream(error);
+ return Log::DisableLogChannel(channel, categories, error_stream);
+}
+
+static bool ListCategories(llvm::StringRef channel, std::string &result) {
+ result.clear();
+ llvm::raw_string_ostream result_stream(result);
+ return Log::ListChannelCategories(channel, result_stream);
+}
+
TEST(LogTest, LLDB_LOG_nullptr) {
Log *log = nullptr;
LLDB_LOG(log, "{0}", 0); // Shouldn't crash
@@ -56,12 +81,10 @@ TEST(LogTest, Unregister) {
llvm::llvm_shutdown_obj obj;
Log::Register("chan", test_channel);
EXPECT_EQ(nullptr, test_channel.GetLogIfAny(FOO));
- const char *cat1[] = {"foo"};
std::string message;
std::shared_ptr<llvm::raw_string_ostream> stream_sp(
new llvm::raw_string_ostream(message));
- StreamString err;
- EXPECT_TRUE(Log::EnableLogChannel(stream_sp, 0, "chan", cat1, err));
+ EXPECT_TRUE(Log::EnableLogChannel(stream_sp, 0, "chan", {"foo"}, llvm::nulls()));
EXPECT_NE(nullptr, test_channel.GetLogIfAny(FOO));
Log::Unregister("chan");
EXPECT_EQ(nullptr, test_channel.GetLogIfAny(FOO));
@@ -72,24 +95,20 @@ TEST_F(LogChannelTest, Enable) {
std::string message;
std::shared_ptr<llvm::raw_string_ostream> stream_sp(
new llvm::raw_string_ostream(message));
- StreamString err;
- EXPECT_FALSE(Log::EnableLogChannel(stream_sp, 0, "chanchan", {}, err));
- EXPECT_EQ("Invalid log channel 'chanchan'.\n", err.GetString());
- err.Clear();
+ std::string error;
+ ASSERT_FALSE(EnableChannel(stream_sp, 0, "chanchan", {}, error));
+ EXPECT_EQ("Invalid log channel 'chanchan'.\n", error);
- EXPECT_TRUE(Log::EnableLogChannel(stream_sp, 0, "chan", {}, err));
- EXPECT_EQ("", err.GetString()) << "err: " << err.GetString().str();
+ EXPECT_TRUE(EnableChannel(stream_sp, 0, "chan", {}, error));
EXPECT_NE(nullptr, test_channel.GetLogIfAll(FOO));
EXPECT_EQ(nullptr, test_channel.GetLogIfAll(BAR));
- const char *cat2[] = {"bar"};
- EXPECT_TRUE(Log::EnableLogChannel(stream_sp, 0, "chan", cat2, err));
+ EXPECT_TRUE(EnableChannel(stream_sp, 0, "chan", {"bar"}, error));
EXPECT_NE(nullptr, test_channel.GetLogIfAll(FOO | BAR));
- const char *cat3[] = {"baz"};
- EXPECT_TRUE(Log::EnableLogChannel(stream_sp, 0, "chan", cat3, err));
- EXPECT_TRUE(err.GetString().contains("unrecognized log category 'baz'"))
- << "err: " << err.GetString().str();
+ EXPECT_TRUE(EnableChannel(stream_sp, 0, "chan", {"baz"}, error));
+ EXPECT_NE(std::string::npos, error.find("unrecognized log category 'baz'"))
+ << "error: " << error;
EXPECT_NE(nullptr, test_channel.GetLogIfAll(FOO | BAR));
}
@@ -98,9 +117,9 @@ TEST_F(LogChannelTest, EnableOptions) {
std::string message;
std::shared_ptr<llvm::raw_string_ostream> stream_sp(
new llvm::raw_string_ostream(message));
- StreamString err;
- EXPECT_TRUE(Log::EnableLogChannel(stream_sp, LLDB_LOG_OPTION_VERBOSE, "chan",
- {}, err));
+ std::string error;
+ EXPECT_TRUE(
+ EnableChannel(stream_sp, LLDB_LOG_OPTION_VERBOSE, "chan", {}, error));
Log *log = test_channel.GetLogIfAll(FOO);
ASSERT_NE(nullptr, log);
@@ -109,34 +128,30 @@ TEST_F(LogChannelTest, EnableOptions) {
TEST_F(LogChannelTest, Disable) {
EXPECT_EQ(nullptr, test_channel.GetLogIfAll(FOO));
- const char *cat12[] = {"foo", "bar"};
std::string message;
std::shared_ptr<llvm::raw_string_ostream> stream_sp(
new llvm::raw_string_ostream(message));
- StreamString err;
- EXPECT_TRUE(Log::EnableLogChannel(stream_sp, 0, "chan", cat12, err));
+ std::string error;
+ EXPECT_TRUE(EnableChannel(stream_sp, 0, "chan", {"foo", "bar"}, error));
EXPECT_NE(nullptr, test_channel.GetLogIfAll(FOO | BAR));
- const char *cat2[] = {"bar"};
- EXPECT_TRUE(Log::DisableLogChannel("chan", cat2, err));
+ EXPECT_TRUE(DisableChannel("chan", {"bar"}, error));
EXPECT_NE(nullptr, test_channel.GetLogIfAll(FOO));
EXPECT_EQ(nullptr, test_channel.GetLogIfAll(BAR));
- const char *cat3[] = {"baz"};
- EXPECT_TRUE(Log::DisableLogChannel("chan", cat3, err));
- EXPECT_TRUE(err.GetString().contains("unrecognized log category 'baz'"))
- << "err: " << err.GetString().str();
+ EXPECT_TRUE(DisableChannel("chan", {"baz"}, error));
+ EXPECT_NE(std::string::npos, error.find("unrecognized log category 'baz'"))
+ << "error: " << error;
EXPECT_NE(nullptr, test_channel.GetLogIfAll(FOO));
EXPECT_EQ(nullptr, test_channel.GetLogIfAll(BAR));
- err.Clear();
- EXPECT_TRUE(Log::DisableLogChannel("chan", {}, err));
+ EXPECT_TRUE(DisableChannel("chan", {}, error));
EXPECT_EQ(nullptr, test_channel.GetLogIfAny(FOO | BAR));
}
TEST_F(LogChannelTest, List) {
- StreamString str;
- EXPECT_TRUE(Log::ListChannelCategories("chan", str));
+ std::string list;
+ EXPECT_TRUE(ListCategories("chan", list));
std::string expected =
R"(Logging categories for 'chan':
all - all available logging categories
@@ -144,11 +159,10 @@ TEST_F(LogChannelTest, List) {
foo - log foo
bar - log bar
)";
- EXPECT_EQ(expected, str.GetString().str());
- str.Clear();
+ EXPECT_EQ(expected, list);
- EXPECT_FALSE(Log::ListChannelCategories("chanchan", str));
- EXPECT_EQ("Invalid log channel 'chanchan'.\n", str.GetString().str());
+ EXPECT_FALSE(ListCategories("chanchan", list));
+ EXPECT_EQ("Invalid log channel 'chanchan'.\n", list);
}
static std::string GetLogString(uint32_t log_options, const char *format,
@@ -156,14 +170,16 @@ static std::string GetLogString(uint32_t
std::string message;
std::shared_ptr<llvm::raw_string_ostream> stream_sp(
new llvm::raw_string_ostream(message));
- StreamString err;
- EXPECT_TRUE(Log::EnableLogChannel(stream_sp, log_options, "chan", {}, err));
+ std::string error;
+ llvm::raw_string_ostream error_stream(error);
+ EXPECT_TRUE(
+ Log::EnableLogChannel(stream_sp, log_options, "chan", {}, error_stream));
Log *log = test_channel.GetLogIfAll(FOO);
EXPECT_NE(nullptr, log);
LLDB_LOG(log, format, arg);
- EXPECT_TRUE(Log::DisableLogChannel("chan", {}, err));
+ EXPECT_TRUE(Log::DisableLogChannel("chan", {}, error_stream));
return stream_sp->str();
}
@@ -198,14 +214,14 @@ TEST_F(LogChannelTest, LogThread) {
std::string message;
std::shared_ptr<llvm::raw_string_ostream> stream_sp(
new llvm::raw_string_ostream(message));
- StreamString err;
- EXPECT_TRUE(Log::EnableLogChannel(stream_sp, 0, "chan", {}, err));
+ std::string err;
+ EXPECT_TRUE(EnableChannel(stream_sp, 0, "chan", {}, err));
Log *log = test_channel.GetLogIfAll(FOO);
// Start logging on one thread. Concurrently, try disabling the log channel.
std::thread log_thread([log] { LLDB_LOG(log, "Hello World"); });
- EXPECT_TRUE(Log::DisableLogChannel("chan", {}, err));
+ EXPECT_TRUE(DisableChannel("chan", {}, err));
log_thread.join();
// The log thread either managed to write to the log in time, or it didn't. In
@@ -221,18 +237,18 @@ TEST_F(LogChannelTest, LogVerboseThread)
std::string message;
std::shared_ptr<llvm::raw_string_ostream> stream_sp(
new llvm::raw_string_ostream(message));
- StreamString err;
- EXPECT_TRUE(Log::EnableLogChannel(stream_sp, 0, "chan", {}, err));
+ std::string err;
+ EXPECT_TRUE(EnableChannel(stream_sp, 0, "chan", {}, err));
Log *log = test_channel.GetLogIfAll(FOO);
// Start logging on one thread. Concurrently, try enabling the log channel
// (with different log options).
std::thread log_thread([log] { LLDB_LOGV(log, "Hello World"); });
- EXPECT_TRUE(Log::EnableLogChannel(stream_sp, LLDB_LOG_OPTION_VERBOSE, "chan",
+ EXPECT_TRUE(EnableChannel(stream_sp, LLDB_LOG_OPTION_VERBOSE, "chan",
{}, err));
log_thread.join();
- EXPECT_TRUE(Log::DisableLogChannel("chan", {}, err));
+ EXPECT_TRUE(DisableChannel("chan", {}, err));
// The log thread either managed to write to the log, or it didn't. In either
// case, we should not trip any undefined behavior (run the test under TSAN to
@@ -247,15 +263,15 @@ TEST_F(LogChannelTest, LogGetLogThread)
std::string message;
std::shared_ptr<llvm::raw_string_ostream> stream_sp(
new llvm::raw_string_ostream(message));
- StreamString err;
- EXPECT_TRUE(Log::EnableLogChannel(stream_sp, 0, "chan", {}, err));
+ std::string err;
+ EXPECT_TRUE(EnableChannel(stream_sp, 0, "chan", {}, err));
Log *log = test_channel.GetLogIfAll(FOO);
// Try fetching the log on one thread. Concurrently, try disabling the log
// channel.
uint32_t mask;
std::thread log_thread([log, &mask] { mask = log->GetMask().Get(); });
- EXPECT_TRUE(Log::DisableLogChannel("chan", {}, err));
+ EXPECT_TRUE(DisableChannel("chan", {}, err));
log_thread.join();
// The mask should be either zero of "FOO". In either case, we should not trip
More information about the lldb-commits
mailing list