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