xref: /llvm-project/lldb/test/API/api/multiple-debuggers/TestMultipleDebuggers.py (revision 0b2550f8ab77a53f560f6a7a1b401c4803a36d48)
199451b44SJordan Rupprecht"""Test the lldb public C++ api when doing multiple debug sessions simultaneously."""
299451b44SJordan Rupprecht
399451b44SJordan Rupprechtimport os
40da0966dSJonas Devlieghereimport subprocess
599451b44SJordan Rupprecht
699451b44SJordan Rupprechtimport lldb
799451b44SJordan Rupprechtfrom lldbsuite.test.decorators import *
899451b44SJordan Rupprechtfrom lldbsuite.test.lldbtest import *
999451b44SJordan Rupprechtfrom lldbsuite.test import lldbutil
1099451b44SJordan Rupprecht
1199451b44SJordan Rupprecht
1299451b44SJordan Rupprechtclass TestMultipleSimultaneousDebuggers(TestBase):
13a0a328edSJonas Devlieghere    NO_DEBUG_INFO_TESTCASE = True
14a0a328edSJonas Devlieghere
15aa07282aSDavid Spickett    # Sometimes times out on Linux, see https://github.com/llvm/llvm-project/issues/101162.
16*0b2550f8SDavid Spickett    @skipIfLinux
1799451b44SJordan Rupprecht    @skipIfNoSBHeaders
185a7b61b1SJonas Devlieghere    @skipIfWindows
19bf93f4b8SJonas Devlieghere    @skipIfHostIncompatibleWithTarget
2099451b44SJordan Rupprecht    def test_multiple_debuggers(self):
2199451b44SJordan Rupprecht        self.driver_exe = self.getBuildArtifact("multi-process-driver")
22aa07282aSDavid Spickett        self.buildDriver(
23aa07282aSDavid Spickett            "multi-process-driver.cpp",
24aa07282aSDavid Spickett            self.driver_exe,
25aa07282aSDavid Spickett            defines=[("LLDB_HOST_ARCH", lldbplatformutil.getArchitecture())],
26aa07282aSDavid Spickett        )
2799451b44SJordan Rupprecht        self.addTearDownHook(lambda: os.remove(self.driver_exe))
2899451b44SJordan Rupprecht
2999451b44SJordan Rupprecht        self.inferior_exe = self.getBuildArtifact("testprog")
302238dcc3SJonas Devlieghere        self.buildDriver("testprog.cpp", self.inferior_exe)
3199451b44SJordan Rupprecht        self.addTearDownHook(lambda: os.remove(self.inferior_exe))
3299451b44SJordan Rupprecht
330da0966dSJonas Devlieghere        # check_call will raise a CalledProcessError if the executable doesn't
340da0966dSJonas Devlieghere        # return exit code 0 to indicate success.  We can let this exception go
350da0966dSJonas Devlieghere        # - the test harness will recognize it as a test failure.
360da0966dSJonas Devlieghere        subprocess.check_call([self.driver_exe, self.inferior_exe])
37