summaryrefslogtreecommitdiffstats
path: root/lldb/unittests/Utility/ProcessInstanceInfoTest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/unittests/Utility/ProcessInstanceInfoTest.cpp')
-rw-r--r--lldb/unittests/Utility/ProcessInstanceInfoTest.cpp93
1 files changed, 93 insertions, 0 deletions
diff --git a/lldb/unittests/Utility/ProcessInstanceInfoTest.cpp b/lldb/unittests/Utility/ProcessInstanceInfoTest.cpp
new file mode 100644
index 00000000000..334bab143c5
--- /dev/null
+++ b/lldb/unittests/Utility/ProcessInstanceInfoTest.cpp
@@ -0,0 +1,93 @@
+//===-- ProcessInstanceInfoTest.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/Target/Process.h"
+#include "gtest/gtest.h"
+
+using namespace lldb_private;
+
+namespace {
+/// A very simple resolver which fails for even ids and returns a simple string
+/// for odd ones.
+class DummyUserIDResolver : public UserIDResolver {
+protected:
+ llvm::Optional<std::string> DoGetUserName(id_t uid) override {
+ if (uid % 2)
+ return ("user" + llvm::Twine(uid)).str();
+ return llvm::None;
+ }
+
+ llvm::Optional<std::string> DoGetGroupName(id_t gid) override {
+ if (gid % 2)
+ return ("group" + llvm::Twine(gid)).str();
+ return llvm::None;
+ }
+};
+} // namespace
+
+TEST(ProcessInstanceInfo, Dump) {
+ ProcessInstanceInfo info("a.out", ArchSpec("x86_64-pc-linux"), 47);
+ info.SetUserID(1);
+ info.SetEffectiveUserID(2);
+ info.SetGroupID(3);
+ info.SetEffectiveGroupID(4);
+
+ DummyUserIDResolver resolver;
+ StreamString s;
+ info.Dump(s, resolver);
+ EXPECT_STREQ(R"( pid = 47
+ name = a.out
+ file = a.out
+ arch = x86_64-pc-linux
+ uid = 1 (user1)
+ gid = 3 (group3)
+ euid = 2 ()
+ egid = 4 ()
+)",
+ s.GetData());
+}
+
+TEST(ProcessInstanceInfo, DumpTable) {
+ ProcessInstanceInfo info("a.out", ArchSpec("x86_64-pc-linux"), 47);
+ info.SetUserID(1);
+ info.SetEffectiveUserID(2);
+ info.SetGroupID(3);
+ info.SetEffectiveGroupID(4);
+
+ DummyUserIDResolver resolver;
+ StreamString s;
+
+ const bool show_args = false;
+ const bool verbose = true;
+ ProcessInstanceInfo::DumpTableHeader(s, show_args, verbose);
+ info.DumpAsTableRow(s, resolver, show_args, verbose);
+ EXPECT_STREQ(
+ R"(PID PARENT USER GROUP EFF USER EFF GROUP TRIPLE ARGUMENTS
+====== ====== ========== ========== ========== ========== ======================== ============================
+47 0 user1 group3 2 4 x86_64-pc-linux
+)",
+ s.GetData());
+}
+
+TEST(ProcessInstanceInfo, DumpTable_invalidUID) {
+ ProcessInstanceInfo info("a.out", ArchSpec("x86_64-pc-linux"), 47);
+
+ DummyUserIDResolver resolver;
+ StreamString s;
+
+ const bool show_args = false;
+ const bool verbose = false;
+ ProcessInstanceInfo::DumpTableHeader(s, show_args, verbose);
+ info.DumpAsTableRow(s, resolver, show_args, verbose);
+ EXPECT_STREQ(
+ R"(PID PARENT USER TRIPLE NAME
+====== ====== ========== ======================== ============================
+47 0 x86_64-pc-linux a.out
+)",
+ s.GetData());
+}
OpenPOWER on IntegriCloud