1 //===-- HostTest.cpp --------------------------------------------*- C++ -*-===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 
10 #include "lldb/Host/Host.h"
11 #include "lldb/Host/HostInfo.h"
12 #include "lldb/Target/Process.h"
13 #include "gtest/gtest.h"
14 
15 using namespace lldb_private;
16 
17 namespace {
18 class HostTest : public testing::Test {
19 public:
20   static void SetUpTestCase() { HostInfo::Initialize(); }
21   static void TearDownTestCase() { HostInfo::Terminate(); }
22 };
23 } // namespace
24 
25 TEST_F(HostTest, GetProcessInfo) {
26   ProcessInstanceInfo Info;
27   ASSERT_FALSE(Host::GetProcessInfo(0, Info));
28 
29   ASSERT_TRUE(Host::GetProcessInfo(getpid(), Info));
30 
31   ASSERT_TRUE(Info.ProcessIDIsValid());
32   EXPECT_EQ(lldb::pid_t(getpid()), Info.GetProcessID());
33 
34   ASSERT_TRUE(Info.ParentProcessIDIsValid());
35   EXPECT_EQ(lldb::pid_t(getppid()), Info.GetParentProcessID());
36 
37   ASSERT_TRUE(Info.EffectiveUserIDIsValid());
38   EXPECT_EQ(geteuid(), Info.GetEffectiveUserID());
39 
40   ASSERT_TRUE(Info.EffectiveGroupIDIsValid());
41   EXPECT_EQ(getegid(), Info.GetEffectiveGroupID());
42 
43   ASSERT_TRUE(Info.UserIDIsValid());
44   EXPECT_EQ(geteuid(), Info.GetUserID());
45 
46   ASSERT_TRUE(Info.GroupIDIsValid());
47   EXPECT_EQ(getegid(), Info.GetGroupID());
48 
49   EXPECT_TRUE(Info.GetArchitecture().IsValid());
50   EXPECT_EQ(HostInfo::GetArchitecture(HostInfo::eArchKindDefault),
51             Info.GetArchitecture());
52 }
53