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