| import lldb |
| from lldbsuite.test.lldbtest import * |
| from lldbsuite.test.decorators import * |
| from lldbsuite.test.gdbclientutils import * |
| from lldbsuite.test.lldbgdbclient import GDBRemoteTestBase |
| |
| |
| class TestPlatformListProcesses(GDBRemoteTestBase): |
| @skipIfRemote |
| @skipIfWindows |
| def test_get_all_processes(self): |
| """Test listing processes""" |
| |
| class MyPlatformResponder(MockGDBServerResponder): |
| def __init__(self): |
| MockGDBServerResponder.__init__(self) |
| self.done = False |
| |
| def qfProcessInfo(self, packet): |
| return "pid:95117;name:666f6f;" |
| |
| def qsProcessInfo(self): |
| if not self.done: |
| self.done = True |
| return "pid:95126;name:666f6f;" |
| return "E10" |
| |
| self.server.responder = MyPlatformResponder() |
| |
| error = lldb.SBError() |
| platform = lldb.SBPlatform("remote-linux") |
| self.dbg.SetSelectedPlatform(platform) |
| |
| error = platform.ConnectRemote( |
| lldb.SBPlatformConnectOptions(self.server.get_connect_url()) |
| ) |
| self.assertSuccess(error) |
| self.assertTrue(platform.IsConnected()) |
| |
| processes = platform.GetAllProcesses(error) |
| self.assertSuccess(error) |
| self.assertEqual(processes.GetSize(), 2) |
| self.assertEqual(len(processes), 2) |
| |
| process_info = lldb.SBProcessInfo() |
| processes.GetProcessInfoAtIndex(0, process_info) |
| self.assertEqual(process_info.GetProcessID(), 95117) |
| self.assertEqual(process_info.GetName(), "foo") |
| |
| processes.GetProcessInfoAtIndex(1, process_info) |
| self.assertEqual(process_info.GetProcessID(), 95126) |
| self.assertEqual(process_info.GetName(), "foo") |
| |
| platform.DisconnectRemote() |