199451b44SJordan Rupprechtimport gdbremote_testcase 299451b44SJordan Rupprechtimport lldbgdbserverutils 399451b44SJordan Rupprechtfrom lldbsuite.test.decorators import * 499451b44SJordan Rupprechtfrom lldbsuite.test.lldbtest import * 599451b44SJordan Rupprechtfrom lldbsuite.test import lldbutil 699451b44SJordan Rupprecht 799451b44SJordan Rupprecht 899451b44SJordan Rupprechtclass TestGdbRemoteKill(gdbremote_testcase.GdbRemoteTestCaseBase): 90a8a2453SPavel Labath def test_attach_commandline_kill_after_initial_stop(self): 100a8a2453SPavel Labath self.build() 110a8a2453SPavel Labath self.set_inferior_startup_attach() 1299451b44SJordan Rupprecht reg_expr = r"^\$[XW][0-9a-fA-F]+([^#]*)#[0-9A-Fa-f]{2}" 1399451b44SJordan Rupprecht procs = self.prep_debug_monitor_and_inferior() 14*2238dcc3SJonas Devlieghere self.test_sequence.add_log_lines( 15*2238dcc3SJonas Devlieghere [ 1699451b44SJordan Rupprecht "read packet: $k#6b", 1799451b44SJordan Rupprecht {"direction": "send", "regex": reg_expr}, 18*2238dcc3SJonas Devlieghere ], 19*2238dcc3SJonas Devlieghere True, 20*2238dcc3SJonas Devlieghere ) 2199451b44SJordan Rupprecht 2299451b44SJordan Rupprecht if self.stub_sends_two_stop_notifications_on_kill: 2399451b44SJordan Rupprecht # Add an expectation for a second X result for stubs that send two 2499451b44SJordan Rupprecht # of these. 25*2238dcc3SJonas Devlieghere self.test_sequence.add_log_lines( 26*2238dcc3SJonas Devlieghere [ 2799451b44SJordan Rupprecht {"direction": "send", "regex": reg_expr}, 28*2238dcc3SJonas Devlieghere ], 29*2238dcc3SJonas Devlieghere True, 30*2238dcc3SJonas Devlieghere ) 3199451b44SJordan Rupprecht 3299451b44SJordan Rupprecht self.expect_gdbremote_sequence() 3399451b44SJordan Rupprecht 3499451b44SJordan Rupprecht # Wait a moment for completed and now-detached inferior process to 3599451b44SJordan Rupprecht # clear. 360fbbf3a9SJonas Devlieghere time.sleep(self.DEFAULT_SLEEP) 3799451b44SJordan Rupprecht 3899451b44SJordan Rupprecht if not lldb.remote_platform: 3999451b44SJordan Rupprecht # Process should be dead now. Reap results. 4099451b44SJordan Rupprecht poll_result = procs["inferior"].poll() 4199451b44SJordan Rupprecht self.assertIsNotNone(poll_result) 4299451b44SJordan Rupprecht 4399451b44SJordan Rupprecht # Where possible, verify at the system level that the process is not 4499451b44SJordan Rupprecht # running. 4599451b44SJordan Rupprecht self.assertFalse( 46*2238dcc3SJonas Devlieghere lldbgdbserverutils.process_is_running(procs["inferior"].pid, False) 47*2238dcc3SJonas Devlieghere ) 48