xref: /llvm-project/lldb/test/API/functionalities/gdb_remote_client/TestPlatformListProcesses.py (revision 8f378ff7a0a36137619a446b0bb13b8bc0ef6721)
1import lldb
2from lldbsuite.test.lldbtest import *
3from lldbsuite.test.decorators import *
4from lldbsuite.test.gdbclientutils import *
5from lldbsuite.test.lldbgdbclient import GDBRemoteTestBase
6
7
8class TestPlatformListProcesses(GDBRemoteTestBase):
9    @skipIfRemote
10    @skipIfWindows
11    def test_get_all_processes(self):
12        """Test listing processes"""
13
14        class MyPlatformResponder(MockGDBServerResponder):
15            def __init__(self):
16                MockGDBServerResponder.__init__(self)
17                self.done = False
18
19            def qfProcessInfo(self, packet):
20                return "pid:95117;name:666f6f;"
21
22            def qsProcessInfo(self):
23                if not self.done:
24                    self.done = True
25                    return "pid:95126;name:666f6f;"
26                return "E10"
27
28        self.server.responder = MyPlatformResponder()
29
30        error = lldb.SBError()
31        platform = lldb.SBPlatform("remote-linux")
32        self.dbg.SetSelectedPlatform(platform)
33
34        error = platform.ConnectRemote(
35            lldb.SBPlatformConnectOptions(self.server.get_connect_url())
36        )
37        self.assertSuccess(error)
38        self.assertTrue(platform.IsConnected())
39
40        processes = platform.GetAllProcesses(error)
41        self.assertSuccess(error)
42        self.assertEqual(processes.GetSize(), 2)
43        self.assertEqual(len(processes), 2)
44
45        process_info = lldb.SBProcessInfo()
46        processes.GetProcessInfoAtIndex(0, process_info)
47        self.assertEqual(process_info.GetProcessID(), 95117)
48        self.assertEqual(process_info.GetName(), "foo")
49
50        processes.GetProcessInfoAtIndex(1, process_info)
51        self.assertEqual(process_info.GetProcessID(), 95126)
52        self.assertEqual(process_info.GetName(), "foo")
53
54        platform.DisconnectRemote()
55