brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.6 KiB · 430f187 Raw
50 lines · python
1import lldb2import time3from lldbsuite.test.lldbtest import *4from lldbsuite.test.decorators import *5from lldbsuite.test.gdbclientutils import *6from lldbsuite.test.lldbgdbclient import GDBRemoteTestBase7 8 9class TestPlatformKill(GDBRemoteTestBase):10    @skipIfRemote11    def test_kill_different_platform(self):12        """Test connecting to a remote linux platform"""13 14        self.build(dictionary={"CXX_SOURCES": "sleep.cpp"})15        host_process = self.spawnSubprocess(self.getBuildArtifact())16 17        # Create a fake remote process with the same PID as host_process18        class MyResponder(MockGDBServerResponder):19            def __init__(self):20                MockGDBServerResponder.__init__(self)21                self.got_kill = False22 23            def qC(self):24                return "QC%x" % host_process.pid25 26            def k(self):27                self.got_kill = True28                return "X09"29 30        self.server.responder = MyResponder()31 32        error = lldb.SBError()33        target = self.dbg.CreateTarget(34            "", "x86_64-pc-linux", "remote-linux", False, error35        )36        self.assertSuccess(error)37        process = self.connect(target)38        self.assertEqual(process.GetProcessID(), host_process.pid)39 40        host_platform = lldb.SBPlatform("host")41        self.assertSuccess(host_platform.Kill(host_process.pid))42 43        # Host dies, remote process lives.44        self.assertFalse(self.server.responder.got_kill)45        self.assertIsNotNone(host_process.wait(timeout=10))46 47        # Now kill the remote one as well48        self.assertSuccess(process.Kill())49        self.assertTrue(self.server.responder.got_kill)50