forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			62 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
	
| from __future__ import print_function
 | |
| 
 | |
| 
 | |
| 
 | |
| import gdbremote_testcase
 | |
| import lldbgdbserverutils
 | |
| from lldbsuite.test.decorators import *
 | |
| from lldbsuite.test.lldbtest import *
 | |
| from lldbsuite.test import lldbutil
 | |
| 
 | |
| class TestGdbRemoteAttach(gdbremote_testcase.GdbRemoteTestCaseBase):
 | |
| 
 | |
|     mydir = TestBase.compute_mydir(__file__)
 | |
| 
 | |
|     def attach_with_vAttach(self):
 | |
|         # Start the inferior, start the debug monitor, nothing is attached yet.
 | |
|         procs = self.prep_debug_monitor_and_inferior(inferior_args=["sleep:60"])
 | |
|         self.assertIsNotNone(procs)
 | |
| 
 | |
|         # Make sure the target process has been launched.
 | |
|         inferior = procs.get("inferior")
 | |
|         self.assertIsNotNone(inferior)
 | |
|         self.assertTrue(inferior.pid > 0)
 | |
|         self.assertTrue(lldbgdbserverutils.process_is_running(inferior.pid, True))
 | |
| 
 | |
|         # Add attach packets.
 | |
|         self.test_sequence.add_log_lines([
 | |
|             # Do the attach.
 | |
|             "read packet: $vAttach;{:x}#00".format(inferior.pid),
 | |
|             # Expect a stop notification from the attach.
 | |
|             { "direction":"send", "regex":r"^\$T([0-9a-fA-F]{2})[^#]*#[0-9a-fA-F]{2}$", "capture":{1:"stop_signal_hex"} },
 | |
|             ], True)
 | |
|         self.add_process_info_collection_packets()
 | |
| 
 | |
|         # Run the stream
 | |
|         context = self.expect_gdbremote_sequence()
 | |
|         self.assertIsNotNone(context)
 | |
| 
 | |
|         # Gather process info response
 | |
|         process_info = self.parse_process_info_response(context)
 | |
|         self.assertIsNotNone(process_info)
 | |
| 
 | |
|         # Ensure the process id matches what we expected.
 | |
|         pid_text = process_info.get('pid', None)
 | |
|         self.assertIsNotNone(pid_text)
 | |
|         reported_pid = int(pid_text, base=16)
 | |
|         self.assertEqual(reported_pid, inferior.pid)
 | |
| 
 | |
|     @debugserver_test
 | |
|     def test_attach_with_vAttach_debugserver(self):
 | |
|         self.init_debugserver_test()
 | |
|         self.build()
 | |
|         self.set_inferior_startup_attach_manually()
 | |
|         self.attach_with_vAttach()
 | |
| 
 | |
|     @llgs_test
 | |
|     def test_attach_with_vAttach_llgs(self):
 | |
|         self.init_llgs_test()
 | |
|         self.build()
 | |
|         self.set_inferior_startup_attach_manually()
 | |
|         self.attach_with_vAttach()
 |