blob: 4f5c5b526a97b1d6bf681bbf267cacc093265140 [file] [log] [blame]
Todd Fialaf76a8912014-08-26 17:19:10 +00001import unittest2
2
3import gdbremote_testcase
4import lldbgdbserverutils
5
6from lldbtest import *
7
8class TestGdbRemoteProcessInfo(gdbremote_testcase.GdbRemoteTestCaseBase):
9
10 def qProcessInfo_returns_running_process(self):
11 procs = self.prep_debug_monitor_and_inferior()
12 self.add_process_info_collection_packets()
13
14 # Run the stream
15 context = self.expect_gdbremote_sequence()
16 self.assertIsNotNone(context)
17
18 # Gather process info response
19 process_info = self.parse_process_info_response(context)
20 self.assertIsNotNone(process_info)
21
22 # Ensure the process id looks reasonable.
23 pid_text = process_info.get("pid")
24 self.assertIsNotNone(pid_text)
25 pid = int(pid_text, base=16)
26 self.assertNotEqual(0, pid)
27
28 # If possible, verify that the process is running.
29 self.assertTrue(lldbgdbserverutils.process_is_running(pid, True))
30
31 @debugserver_test
32 @dsym_test
33 def test_qProcessInfo_returns_running_process_debugserver_dsym(self):
34 self.init_debugserver_test()
35 self.buildDsym()
36 self.qProcessInfo_returns_running_process()
37
38 @llgs_test
39 @dwarf_test
40 def test_qProcessInfo_returns_running_process_llgs_dwarf(self):
41 self.init_llgs_test()
42 self.buildDwarf()
43 self.qProcessInfo_returns_running_process()
44
45 def attach_commandline_qProcessInfo_reports_correct_pid(self):
46 procs = self.prep_debug_monitor_and_inferior()
47 self.assertIsNotNone(procs)
48 self.add_process_info_collection_packets()
49
50 # Run the stream
51 context = self.expect_gdbremote_sequence()
52 self.assertIsNotNone(context)
53
54 # Gather process info response
55 process_info = self.parse_process_info_response(context)
56 self.assertIsNotNone(process_info)
57
58 # Ensure the process id matches what we expected.
59 pid_text = process_info.get('pid', None)
60 self.assertIsNotNone(pid_text)
61 reported_pid = int(pid_text, base=16)
62 self.assertEqual(reported_pid, procs["inferior"].pid)
63
64 @debugserver_test
65 @dsym_test
66 def test_attach_commandline_qProcessInfo_reports_correct_pid_debugserver_dsym(self):
67 self.init_debugserver_test()
68 self.buildDsym()
69 self.set_inferior_startup_attach()
70 self.attach_commandline_qProcessInfo_reports_correct_pid()
71
72 @llgs_test
73 @dwarf_test
74 def test_attach_commandline_qProcessInfo_reports_correct_pid_llgs_dwarf(self):
75 self.init_llgs_test()
76 self.buildDwarf()
77 self.set_inferior_startup_attach()
78 self.attach_commandline_qProcessInfo_reports_correct_pid()
79
80 def qProcessInfo_reports_valid_endian(self):
81 procs = self.prep_debug_monitor_and_inferior()
82 self.add_process_info_collection_packets()
83
84 # Run the stream
85 context = self.expect_gdbremote_sequence()
86 self.assertIsNotNone(context)
87
88 # Gather process info response
89 process_info = self.parse_process_info_response(context)
90 self.assertIsNotNone(process_info)
91
92 # Ensure the process id looks reasonable.
93 endian = process_info.get("endian")
94 self.assertIsNotNone(endian)
95 self.assertTrue(endian in ["little", "big", "pdp"])
96
97 @debugserver_test
98 @dsym_test
99 def test_qProcessInfo_reports_valid_endian_debugserver_dsym(self):
100 self.init_debugserver_test()
101 self.buildDsym()
102 self.qProcessInfo_reports_valid_endian()
103
104 @llgs_test
105 @dwarf_test
106 def test_qProcessInfo_reports_valid_endian_llgs_dwarf(self):
107 self.init_llgs_test()
108 self.buildDwarf()
109 self.qProcessInfo_reports_valid_endian()
110
111
112if __name__ == '__main__':
113 unittest2.main()