xref: /llvm-project/lldb/test/API/functionalities/gdb_remote_client/TestMultiprocess.py (revision 33c0f93f6c10acff885fe11b9897943313cd5c26)
1from __future__ import print_function
2import lldb
3import unittest
4from lldbsuite.test.lldbtest import *
5from lldbsuite.test.decorators import *
6from lldbsuite.test.gdbclientutils import *
7from lldbsuite.test.lldbgdbclient import GDBRemoteTestBase
8
9
10class TestMultiprocess(GDBRemoteTestBase):
11
12    mydir = TestBase.compute_mydir(__file__)
13
14    def test_qfThreadInfo(self):
15        class MyResponder(MockGDBServerResponder):
16            def qfThreadInfo(self):
17                return "mp400.10200,p400.10204,p401.10300,p400.10208"
18
19        self.server.responder = MyResponder()
20        target = self.dbg.CreateTarget('')
21        if self.TraceOn():
22          self.runCmd("log enable gdb-remote packets")
23          self.addTearDownHook(
24                lambda: self.runCmd("log disable gdb-remote packets"))
25        process = self.connect(target)
26        self.assertEqual(process.id, 0x400)
27        self.assertEqual(
28            [process.threads[i].id for i in range(process.num_threads)],
29            [0x10200, 0x10204, 0x10208])
30
31    def test_stop_reason(self):
32        class MyResponder(MockGDBServerResponder):
33            def qfThreadInfo(self):
34                return "mp400.10200,p400.10204"
35
36            def cont(self):
37                return "S02thread:p400.10200;"
38
39        self.server.responder = MyResponder()
40        target = self.dbg.CreateTarget('')
41        if self.TraceOn():
42          self.runCmd("log enable gdb-remote packets")
43          self.addTearDownHook(
44                lambda: self.runCmd("log disable gdb-remote packets"))
45        process = self.connect(target)
46        process.Continue()
47        self.assertEqual(process.GetThreadByID(0x10200).stop_reason,
48                         lldb.eStopReasonSignal)
49        self.assertEqual(process.GetThreadByID(0x10204).stop_reason,
50                         lldb.eStopReasonNone)
51